Name: series-workflow72z2t Phase: Failed StartedAt: 2026-09-11 21:31:34 +0000 UTC FinishedAt: 2026-09-11 21:51:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow72z2t[0] Phase: Succeeded StartedAt: 2026-09-11 21:31:34 +0000 UTC FinishedAt: 2026-09-11 21:51:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow72z2t[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 21:31:34 +0000 UTC FinishedAt: 2026-09-11 21:51:10 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGExZGQ5NzFmMTVjOTBjYzNjMmFjZDA3NmU5NWNhYWYyZDMyNmNmOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAyMTo0OTo1NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggNjJjMzQ0MTkxMWU3MS4uMjliOTcwNTc0YTM4MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0xNTM2LDE3ICYjNDM7MTUzNiwxNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0cmV0dXJuIE5FVF9TS0JfUEFEICYjNDM7IE5FVF9JUF9BTElHTjtcbiB9XG4gXG4tc3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbXR1KVxuJiM0MztzdGF0aWMgaW50IHN0bW1hY19zZXRfYmZzaXplKGludCBsZW4pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmIChtdHUgXHUwMDNlPSBCVUZfU0laRV84S2lCKVxuJiM0MztcdGlmIChsZW4gXHUwMDNlIEJVRl9TSVpFXzhLaUIpXG4gXHRcdHJldCA9IEJVRl9TSVpFXzE2S2lCO1xuLVx0ZWxzZSBpZiAobXR1IFx1MDAzZT0gQlVGX1NJWkVfNEtpQilcbiYjNDM7XHRlbHNlIGlmIChsZW4gXHUwMDNlIEJVRl9TSVpFXzRLaUIpXG4gXHRcdHJldCA9IEJVRl9TSVpFXzhLaUI7XG4tXHRlbHNlIGlmIChtdHUgXHUwMDNlPSBCVUZfU0laRV8yS2lCKVxuJiM0MztcdGVsc2UgaWYgKGxlbiBcdTAwM2UgQlVGX1NJWkVfMktpQilcbiBcdFx0cmV0ID0gQlVGX1NJWkVfNEtpQjtcbi1cdGVsc2UgaWYgKG10dSBcdTAwM2UgREVGQVVMVF9CVUZTSVpFKVxuJiM0MztcdGVsc2UgaWYgKGxlbiBcdTAwM2UgREVGQVVMVF9CVUZTSVpFKVxuIFx0XHRyZXQgPSBCVUZfU0laRV8yS2lCO1xuIFx0ZWxzZVxuIFx0XHRyZXQgPSBERUZBVUxUX0JVRlNJWkU7XG5AQCAtNDA2Myw3ICYjNDM7NDA2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpcbiBzdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KVxuIHtcbiBcdHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mO1xuLVx0aW50IGJmc2l6ZSwgcmV0O1xuJiM0MztcdGludCBiZnNpemUsIGxlbiwgcmV0O1xuIFx0dTggY2hhbjtcbiBcbiBcdGRtYV9jb25mID0ga3phbGxvY19vYmooKmRtYV9jb25mKTtcbkBAIC00MDczLDEzICYjNDM7NDA3MywxNSBAQCBzdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiBcdH1cbiBcbi1cdC8qIFJldHVybnMgMCBvciBCVUZfU0laRV8xNktpQiBpZiBtdHUgXHUwMDNlIDhLaUIgYW5kIGR3bWFjNCBvciByaW5nIG1vZGUgKi9cbi1cdGJmc2l6ZSA9IHN0bW1hY19zZXRfMTZraWJfYmZzaXplKHByaXYsIG10dSk7XG4mIzQzO1x0bGVuID0gbXR1ICYjNDM7IEVUSF9ITEVOICYjNDM7IDIgKiBWTEFOX0hMRU4gJiM0MzsgRVRIX0ZDU19MRU4gJiM0MzsgTkVUX0lQX0FMSUdOO1xuJiM0MztcbiYjNDM7XHQvKiBSZXR1cm5zIDAgb3IgQlVGX1NJWkVfMTZLaUIgaWYgbGVuIFx1MDAzZSA4S2lCIGFuZCBkd21hYzQgb3IgcmluZyBtb2RlICovXG4mIzQzO1x0YmZzaXplID0gc3RtbWFjX3NldF8xNmtpYl9iZnNpemUocHJpdiwgbGVuKTtcbiBcdGlmIChiZnNpemUgXHUwMDNjIDApXG4gXHRcdGJmc2l6ZSA9IDA7XG4gXG4gXHRpZiAoYmZzaXplIFx1MDAzYyBCVUZfU0laRV8xNktpQilcbi1cdFx0YmZzaXplID0gc3RtbWFjX3NldF9iZnNpemUobXR1KTtcbiYjNDM7XHRcdGJmc2l6ZSA9IHN0bW1hY19zZXRfYmZzaXplKGxlbik7XG4gXG4gXHRkbWFfY29uZi1cdTAwM2VkbWFfYnVmX3N6ID0gYmZzaXplO1xuIFx0LyogQ2hvc2UgdGhlIHR4L3J4IHNpemUgZnJvbSB0aGUgYWxyZWFkeSBkZWZpbmVkIG9uZSBpbiB0aGVcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcbmluZGV4IDYzNzJlYzdjM2YzMTcuLmNkN2RjOTkwOTVhMDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY1xuQEAgLTEyLDYgJiM0MzsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VkcC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9kc2EuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wa3RfY2xzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGt0X3NjaGVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvdGNwLmhcdTAwM2VcbkBAIC0yOSw2ICYjNDM7MzAsNyBAQCBzdHJ1Y3Qgc3RtbWFjaGRyIHtcbiBcdFx0XHQgICAgICBzaXplb2Yoc3RydWN0IHN0bW1hY2hkcikpXG4gI2RlZmluZSBTVE1NQUNfVEVTVF9QS1RfTUFHSUNcdDB4ZGVhZGNhZmVjYWZlZGVhZFVMTFxuICNkZWZpbmUgU1RNTUFDX0xCX1RJTUVPVVRcdG1zZWNzX3RvX2ppZmZpZXMoMjAwKVxuJiM0MzsjZGVmaW5lIFNUTU1BQ19TRlRfTUFYX0xQSVx0KDUgKiBVU0VDX1BFUl9TRUMpXG4gXG4gc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMge1xuIFx0aW50IHZsYW47XG5AQCAtMjM3LDYgJiM0MzsyMzksMTAgQEAgc3RydWN0IHN0bW1hY190ZXN0X3ByaXYge1xuIFx0c3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMgKnBhY2tldDtcbiBcdHN0cnVjdCBwYWNrZXRfdHlwZSBwdDtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXA7XG4mIzQzO1x0X19iZTE2IHBhY2tldF90eXBlO1xuJiM0MztcdGludCAoKmZ1bmMpKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuJiM0MztcdFx0ICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX25kZXYpO1xuJiM0MztcdGJvb2wgY2FwdHVyZV9hbGw7XG4gXHRpbnQgZG91YmxlX3ZsYW47XG4gXHRpbnQgdmxhbl9pZDtcbiBcdGludCBvaztcbkBAIC0zMTYsNiAmIzQzOzMyMiw1MCBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2xvb3BiYWNrX3ZhbGlkYXRlKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgc3RtbWFjX3NmdF9maWx0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4mIzQzO1x0XHRcdCAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19uZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHN0bW1hY190ZXN0X3ByaXYgKnRwcml2ID0gcHQtXHUwMDNlYWZfcGFja2V0X3ByaXY7XG4mIzQzO1x0c3RydWN0IGV0aGhkciAqaGRyID0gZXRoX2hkcihza2IpO1xuJiM0MztcdGludCByZXQgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoaGRyLVx1MDAzZWhfcHJvdG8gPT0gdHByaXYtXHUwMDNlcGFja2V0X3R5cGUpIHtcbiYjNDM7XHRcdHN0cnVjdCBza19idWZmICpuc2tiID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKG5za2IpXG4mIzQzO1x0XHRcdHJldCA9IHRwcml2LVx1MDAzZWZ1bmMobnNrYiwgbmRldiwgcHQsIG9yaWdfbmRldik7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRrZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfc2Z0X2FkZF9wYWNrKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiAqdHByaXYgPSBwdC1cdTAwM2VhZl9wYWNrZXRfcHJpdjtcbiYjNDM7XG4mIzQzO1x0aWYgKG5ldGRldl91c2VzX2RzYSh0cHJpdi1cdTAwM2VwdC5kZXYpIHx8IHRwcml2LVx1MDAzZWNhcHR1cmVfYWxsKSB7XG4mIzQzO1x0XHR0cHJpdi1cdTAwM2VwYWNrZXRfdHlwZSA9IHRwcml2LVx1MDAzZXB0LnR5cGU7XG4mIzQzO1x0XHR0cHJpdi1cdTAwM2VmdW5jID0gdHByaXYtXHUwMDNlcHQuZnVuYztcbiYjNDM7XG4mIzQzO1x0XHQvKiBEU0EgY29uZHVpdCB3aWxsIHJlcG9ydCBFVEhfUF9YRFNBLCBzbyBvdXIgcGFja2V0IGhhbmRsZXJcbiYjNDM7XHRcdCAqIHdvbiYjMzk7dCBtYXRjaC4gTGV0JiMzOTtzIHJlZ2lzdGVyIGEgRVRIX1BfQUxMIG1hdGNoIGFuZCBmaWx0ZXJcbiYjNDM7XHRcdCAqIG1hbnVhbGx5IGluIHN0bW1hY19zZnRfZmlsdGVyLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHR0cHJpdi1cdTAwM2VwdC50eXBlID0gaHRvbnMoRVRIX1BfQUxMKTtcbiYjNDM7XHRcdHRwcml2LVx1MDAzZXB0LmZ1bmMgPSBzdG1tYWNfc2Z0X2ZpbHRlcjtcbiYjNDM7XHRcdHRwcml2LVx1MDAzZXB0Lmlnbm9yZV9vdXRnb2luZyA9IHRydWU7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRkZXZfYWRkX3BhY2socHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpXG4mIzQzO3tcbiYjNDM7XHRkZXZfcmVtb3ZlX3BhY2socHQpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHQgIHN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzICphdHRyKVxuIHtcbkBAIC0zMzcsNyAmIzQzOzM4Nyw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHR0cHJpdi1cdTAwM2VwYWNrZXQgPSBhdHRyO1xuIFxuIFx0aWYgKCFhdHRyLVx1MDAzZWRvbnRfd2FpdClcbi1cdFx0ZGV2X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiYjNDM7XHRcdHN0bW1hY19zZnRfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFxuIFx0c2tiID0gc3RtbWFjX3Rlc3RfZ2V0X3VkcF9za2IocHJpdiwgYXR0cik7XG4gXHRpZiAoIXNrYikge1xuQEAgLTM2MCw3ICYjNDM7NDEwLDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcbiBjbGVhbnVwOlxuIFx0aWYgKCFhdHRyLVx1MDAzZWRvbnRfd2FpdClcbi1cdFx0ZGV2X3JlbW92ZV9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiYjNDM7XHRcdHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFx0a2ZyZWUodHByaXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtNDE0LDEyICYjNDM7NDY0LDE2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbW1jKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqaW5pdGlhbCwgKmZpbmFsO1xuLVx0aW50IHJldHJpZXMgPSAxMDtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIHRpbWVvdXQsIG1heF9kdXJhdGlvbjtcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoIXByaXYtXHUwMDNlZG1hX2NhcC5lZWUgfHwgIXByaXYtXHUwMDNlZWVlX2FjdGl2ZSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuJiM0MztcdC8qIEJhaWwgb3V0IGlmIHRoZSBjb25maWd1cmVkIExQSSB0aW1lciBpcyB0b28gbG9uZyAqL1xuJiM0MztcdGlmIChwcml2LVx1MDAzZXR4X2xwaV90aW1lciBcdTAwM2UgU1RNTUFDX1NGVF9NQVhfTFBJKVxuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcbiBcdGluaXRpYWwgPSBremFsbG9jX29iaigqaW5pdGlhbCk7XG4gXHRpZiAoIWluaXRpYWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuQEAgLTQzMCwxNCAmIzQzOzQ4NCwyMSBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfaW5pdGlhbDtcbiBcdH1cbiBcbiYjNDM7XHQvKiBTbmFwc2hvdCBzdGF0cywgd2Ugd2FudCB0byBjb3VudCB0aGUgaW5fbHBpIGV2ZW50cy4gV2UgbWF5IGVudGVyXG4mIzQzO1x0ICogTFBJIGp1c3QgYWZ0ZXIgdGhlIHBhY2tldCB3YXMgc2VudC5cbiYjNDM7XHQgKi9cbiBcdG1lbWNweShpbml0aWFsLCBcdTAwMjZwcml2LVx1MDAzZXhzdGF0cywgc2l6ZW9mKCppbml0aWFsKSk7XG4gXG4mIzQzO1x0LyogU2VuZCBhIGZyYW1lLCB0aGVuIHdhaXQgdG8gZW50ZXIgTFBJICovXG4gXHRyZXQgPSBzdG1tYWNfdGVzdF9tYWNfbG9vcGJhY2socHJpdik7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dF9mcmVlX2ZpbmFsO1xuIFxuJiM0MztcdG1heF9kdXJhdGlvbiA9IHVzZWNzX3RvX2ppZmZpZXMoMiAqIHByaXYtXHUwMDNldHhfbHBpX3RpbWVyKTtcbiYjNDM7XG4gXHQvKiBXZSBoYXZlIG5vIHRyYWZmaWMgaW4gdGhlIGxpbmUgc28sIHNvb25lciBvciBsYXRlciBpdCB3aWxsIGdvIExQSSAqL1xuLVx0d2hpbGUgKC0tcmV0cmllcykge1xuJiM0MztcdHRpbWVvdXQgPSBqaWZmaWVzICYjNDM7IG1heF9kdXJhdGlvbjtcbiYjNDM7XHR3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHtcbiBcdFx0bWVtY3B5KGZpbmFsLCBcdTAwMjZwcml2LVx1MDAzZXhzdGF0cywgc2l6ZW9mKCpmaW5hbCkpO1xuIFxuIFx0XHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcdTAwM2VcbkBAIC00NDYsMjAgJiM0Mzs1MDcsMzggQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9lZWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0XHRtc2xlZXAoMTAwKTtcbiBcdH1cbiBcbi1cdGlmICghcmV0cmllcykge1xuJiM0MztcdG1lbWNweShmaW5hbCwgXHUwMDI2cHJpdi1cdTAwM2V4c3RhdHMsIHNpemVvZigqZmluYWwpKTtcbiYjNDM7XHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcdTAwM2M9XG4mIzQzO1x0ICAgIGluaXRpYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbikge1xuIFx0XHRyZXQgPSAtRVRJTUVET1VUO1xuIFx0XHRnb3RvIG91dF9mcmVlX2ZpbmFsO1xuIFx0fVxuIFxuLVx0aWYgKGZpbmFsLVx1MDAzZWlycV90eF9wYXRoX2luX2xwaV9tb2RlX24gXHUwMDNjPVxuLVx0ICAgIGluaXRpYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbikge1xuLVx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdC8qIFJlLXNuYXBzaG90LCBhcyB3ZSB3YW50IHRvIG1lYXN1cmUgZXhpdF9scGkgZXZlbnRzLiBXZSBzaG91bGQgYmVcbiYjNDM7XHQgKiBpbiBMUEkgcmlnaHQgbm93LlxuJiM0MztcdCAqL1xuJiM0MztcdG1lbWNweShpbml0aWFsLCBcdTAwMjZwcml2LVx1MDAzZXhzdGF0cywgc2l6ZW9mKCppbml0aWFsKSk7XG4mIzQzO1xuJiM0MztcdC8qIFRYIHNvbWV0aGluZyBzbyB3ZSBnbyBvdXQgb2YgTFBJICovXG4mIzQzO1x0cmV0ID0gc3RtbWFjX3Rlc3RfbWFjX2xvb3BiYWNrKHByaXYpO1xuJiM0MztcdGlmIChyZXQpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfZmluYWw7XG4mIzQzO1xuJiM0MztcdC8qIFdhaXQgZm9yIHRoZSBleGl0IExQSSBpbnRlcnJ1cHQgKi9cbiYjNDM7XHR0aW1lb3V0ID0gamlmZmllcyAmIzQzOyBtYXhfZHVyYXRpb247XG4mIzQzO1x0d2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7XG4mIzQzO1x0XHRtZW1jcHkoZmluYWwsIFx1MDAyNnByaXYtXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGZpbmFsLVx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbiBcdTAwM2VcbiYjNDM7XHRcdCAgICBpbml0aWFsLVx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbilcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRtc2xlZXAoMTAwKTtcbiBcdH1cbiBcbiYjNDM7XHRtZW1jcHkoZmluYWwsIFx1MDAyNnByaXYtXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XG4gXHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfZXhpdF9scGlfbW9kZV9uIFx1MDAzYz1cbiBcdCAgICBpbml0aWFsLVx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbikge1xuLVx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0cmV0ID0gLUVUSU1FRE9VVDtcbiBcdFx0Z290byBvdXRfZnJlZV9maW5hbDtcbiBcdH1cbiBcbkBAIC03NjcsNyAmIzQzOzg0Niw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfZmxvd2N0cmwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0dHByaXYtXHUwMDNlcHQuZnVuYyA9IHN0bW1hY190ZXN0X2Zsb3djdHJsX3ZhbGlkYXRlO1xuIFx0dHByaXYtXHUwMDNlcHQuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4gXHR0cHJpdi1cdTAwM2VwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2O1xuLVx0ZGV2X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiYjNDM7XHRzdG1tYWNfc2Z0X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcbiBcdC8qIENvbXB1dGUgbWluaW11bSBudW1iZXIgb2YgcGFja2V0cyB0byBtYWtlIEZJRk8gZnVsbCAqL1xuIFx0cGt0X2NvdW50ID0gcnhfZmlmb19zaXplO1xuQEAgLTgyMyw3ICYjNDM7OTAyLDcgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9mbG93Y3RybChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gY2xlYW51cDpcbiBcdGRldl9tY19kZWwocHJpdi1cdTAwM2VkZXYsIHBhZGRyKTtcbiBcdGRldl9zZXRfcHJvbWlzY3VpdHkocHJpdi1cdTAwM2VkZXYsIC0xKTtcbi1cdGRldl9yZW1vdmVfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4mIzQzO1x0c3RtbWFjX3NmdF9yZW1vdmVfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4gXHRrZnJlZSh0cHJpdik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC05MjEsNiAmIzQzOzEwMDAsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0dHByaXYtXHUwMDNlcHQuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4gXHR0cHJpdi1cdTAwM2VwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2O1xuIFx0dHByaXYtXHUwMDNlcGFja2V0ID0gXHUwMDI2YXR0cjtcbiYjNDM7XHR0cHJpdi1cdTAwM2VjYXB0dXJlX2FsbCA9IHRydWU7XG4gXG4gXHQvKlxuIFx0ICogQXMgd2UgdXNlIEhBU0ggZmlsdGVyaW5nLCBmYWxzZSBwb3NpdGl2ZXMgbWF5IGFwcGVhci4gVGhpcyBpcyBhXG5AQCAtOTI4LDcgJiM0MzsxMDA4LDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X3ZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdCAqIEhBU0ggdmFsdWVzLlxuIFx0ICovXG4gXHR0cHJpdi1cdTAwM2V2bGFuX2lkID0gMHgxMjM7XG4tXHRkZXZfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuJiM0MztcdHN0bW1hY19zZnRfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFxuIFx0cmV0ID0gdmxhbl92aWRfYWRkKHByaXYtXHUwMDNlZGV2LCBodG9ucyhFVEhfUF84MDIxUSksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIFx0aWYgKHJldClcbkBAIC05NjgsNyAmIzQzOzEwNDgsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHZsYW5fZGVsOlxuIFx0dmxhbl92aWRfZGVsKHByaXYtXHUwMDNlZGV2LCBodG9ucyhFVEhfUF84MDIxUSksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIGNsZWFudXA6XG4tXHRkZXZfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuJiM0MztcdHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFx0a2ZyZWUodHByaXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTAxNSw2ICYjNDM7MTA5NSw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0dHByaXYtXHUwMDNlcHQuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4gXHR0cHJpdi1cdTAwM2VwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2O1xuIFx0dHByaXYtXHUwMDNlcGFja2V0ID0gXHUwMDI2YXR0cjtcbiYjNDM7XHR0cHJpdi1cdTAwM2VjYXB0dXJlX2FsbCA9IHRydWU7XG4gXG4gXHQvKlxuIFx0ICogQXMgd2UgdXNlIEhBU0ggZmlsdGVyaW5nLCBmYWxzZSBwb3NpdGl2ZXMgbWF5IGFwcGVhci4gVGhpcyBpcyBhXG5AQCAtMTAyMiw3ICYjNDM7MTEwMyw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0ICogSEFTSCB2YWx1ZXMuXG4gXHQgKi9cbiBcdHRwcml2LVx1MDAzZXZsYW5faWQgPSAweDEyMztcbi1cdGRldl9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4mIzQzO1x0c3RtbWFjX3NmdF9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4gXG4gXHRyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi1cdTAwM2VkZXYsIGh0b25zKEVUSF9QXzgwMjFBRCksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIFx0aWYgKHJldClcbkBAIC0xMDYyLDcgJiM0MzsxMTQzLDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2R2bGFuZmlsdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gdmxhbl9kZWw6XG4gXHR2bGFuX3ZpZF9kZWwocHJpdi1cdTAwM2VkZXYsIGh0b25zKEVUSF9QXzgwMjFBRCksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIGNsZWFudXA6XG4tXHRkZXZfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuJiM0MztcdHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFx0a2ZyZWUodHByaXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTI5Myw3ICYjNDM7MTM3NCw4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHN2bGFuKVxuIFx0dHByaXYtXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcbiBcdHRwcml2LVx1MDAzZXBhY2tldCA9IFx1MDAyNmF0dHI7XG4gXHR0cHJpdi1cdTAwM2V2bGFuX2lkID0gMHgxMjM7XG4tXHRkZXZfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuJiM0MztcdHRwcml2LVx1MDAzZWNhcHR1cmVfYWxsID0gdHJ1ZTtcbiYjNDM7XHRzdG1tYWNfc2Z0X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcbiBcdHJldCA9IHZsYW5fdmlkX2FkZChwcml2LVx1MDAzZWRldiwgaHRvbnMocHJvdG8pLCB0cHJpdi1cdTAwM2V2bGFuX2lkKTtcbiBcdGlmIChyZXQpXG5AQCAtMTMyMCw3ICYjNDM7MTQwMiw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHN2bGFuKVxuIHZsYW5fZGVsOlxuIFx0dmxhbl92aWRfZGVsKHByaXYtXHUwMDNlZGV2LCBodG9ucyhwcm90byksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIGNsZWFudXA6XG4tXHRkZXZfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuJiM0MztcdHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFx0a2ZyZWUodHByaXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTMzMiw3ICYjNDM7MTQxNCw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIGludCBzdG1tYWNfdGVzdF9zdmxhbm9mZihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKCFwcml2LVx1MDAzZWRtYV9jYXAuZHZsYW4pXG4mIzQzO1x0aWYgKCEocHJpdi1cdTAwM2VkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1RYKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0cmV0dXJuIHN0bW1hY190ZXN0X3ZsYW5vZmZfY29tbW9uKHByaXYsIHRydWUpO1xuIH1cbkBAIC0xNjk5LDYgJiM0MzsxNzgxLDkgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2p1bWJvKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKVxuIFx0c3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMgYXR0ciA9IHsgfTtcbiBcdGludCBzaXplID0gcHJpdi1cdTAwM2VkbWFfY29uZi5kbWFfYnVmX3N6O1xuIFxuJiM0MztcdGlmICghZHdtYWNfaXNfeG1hYyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlKSlcbiYjNDM7XHRcdHNpemUgLT0gTkVUX0lQX0FMSUdOO1xuJiM0MztcbiBcdGF0dHIuZHN0ID0gcHJpdi1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHI7XG4gXHRhdHRyLm1heF9zaXplID0gc2l6ZSAtIEVUSF9GQ1NfTEVOO1xuIFx0YXR0ci5xdWV1ZV9tYXBwaW5nID0gcXVldWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGExZGQ5NzFmMTVjOTBjYzNjMmFjZDA3NmU5NWNhYWYyZDMyNmNmOTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCAxMSAyMTo0OTo1NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IDYyYzM0NDE5MTFlNzEuLjI5Yjk3MDU3NGEzODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtMTUzNiwxNyAmIzQzOzE1MzYsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAlyZXR1cm4gTkVUX1NLQl9QQUQgJiM0MzsgTkVUX0lQX0FMSUdOOwogfQogCi1zdGF0aWMgaW50IHN0bW1hY19zZXRfYmZzaXplKGludCBtdHUpCiYjNDM7c3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbGVuKQogewogCWludCByZXQ7CiAKLQlpZiAobXR1ICZndDs9IEJVRl9TSVpFXzhLaUIpCiYjNDM7CWlmIChsZW4gJmd0OyBCVUZfU0laRV84S2lCKQogCQlyZXQgPSBCVUZfU0laRV8xNktpQjsKLQllbHNlIGlmIChtdHUgJmd0Oz0gQlVGX1NJWkVfNEtpQikKJiM0MzsJZWxzZSBpZiAobGVuICZndDsgQlVGX1NJWkVfNEtpQikKIAkJcmV0ID0gQlVGX1NJWkVfOEtpQjsKLQllbHNlIGlmIChtdHUgJmd0Oz0gQlVGX1NJWkVfMktpQikKJiM0MzsJZWxzZSBpZiAobGVuICZndDsgQlVGX1NJWkVfMktpQikKIAkJcmV0ID0gQlVGX1NJWkVfNEtpQjsKLQllbHNlIGlmIChtdHUgJmd0OyBERUZBVUxUX0JVRlNJWkUpCiYjNDM7CWVsc2UgaWYgKGxlbiAmZ3Q7IERFRkFVTFRfQlVGU0laRSkKIAkJcmV0ID0gQlVGX1NJWkVfMktpQjsKIAllbHNlCiAJCXJldCA9IERFRkFVTFRfQlVGU0laRTsKQEAgLTQwNjMsNyAmIzQzOzQwNjMsNyBAQCBzdGF0aWMgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqCiBzdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KQogewogCXN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mOwotCWludCBiZnNpemUsIHJldDsKJiM0MzsJaW50IGJmc2l6ZSwgbGVuLCByZXQ7CiAJdTggY2hhbjsKIAogCWRtYV9jb25mID0ga3phbGxvY19vYmooKmRtYV9jb25mKTsKQEAgLTQwNzMsMTMgJiM0Mzs0MDczLDE1IEBAIHN0bW1hY19zZXR1cF9kbWFfZGVzYyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBtdHUpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCX0KIAotCS8qIFJldHVybnMgMCBvciBCVUZfU0laRV8xNktpQiBpZiBtdHUgJmd0OyA4S2lCIGFuZCBkd21hYzQgb3IgcmluZyBtb2RlICovCi0JYmZzaXplID0gc3RtbWFjX3NldF8xNmtpYl9iZnNpemUocHJpdiwgbXR1KTsKJiM0MzsJbGVuID0gbXR1ICYjNDM7IEVUSF9ITEVOICYjNDM7IDIgKiBWTEFOX0hMRU4gJiM0MzsgRVRIX0ZDU19MRU4gJiM0MzsgTkVUX0lQX0FMSUdOOwomIzQzOwomIzQzOwkvKiBSZXR1cm5zIDAgb3IgQlVGX1NJWkVfMTZLaUIgaWYgbGVuICZndDsgOEtpQiBhbmQgZHdtYWM0IG9yIHJpbmcgbW9kZSAqLwomIzQzOwliZnNpemUgPSBzdG1tYWNfc2V0XzE2a2liX2Jmc2l6ZShwcml2LCBsZW4pOwogCWlmIChiZnNpemUgJmx0OyAwKQogCQliZnNpemUgPSAwOwogCiAJaWYgKGJmc2l6ZSAmbHQ7IEJVRl9TSVpFXzE2S2lCKQotCQliZnNpemUgPSBzdG1tYWNfc2V0X2Jmc2l6ZShtdHUpOwomIzQzOwkJYmZzaXplID0gc3RtbWFjX3NldF9iZnNpemUobGVuKTsKIAogCWRtYV9jb25mLSZndDtkbWFfYnVmX3N6ID0gYmZzaXplOwogCS8qIENob3NlIHRoZSB0eC9yeCBzaXplIGZyb20gdGhlIGFscmVhZHkgZGVmaW5lZCBvbmUgaW4gdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMKaW5kZXggNjM3MmVjN2MzZjMxNy4uY2Q3ZGM5OTA5NWEwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYwpAQCAtMTIsNiAmIzQzOzEyLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9ldGh0b29sLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91ZHAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2RzYS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9wa3RfY2xzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3BrdF9zY2hlZC5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC90Y3AuaCZndDsKQEAgLTI5LDYgJiM0MzszMCw3IEBAIHN0cnVjdCBzdG1tYWNoZHIgewogCQkJICAgICAgc2l6ZW9mKHN0cnVjdCBzdG1tYWNoZHIpKQogI2RlZmluZSBTVE1NQUNfVEVTVF9QS1RfTUFHSUMJMHhkZWFkY2FmZWNhZmVkZWFkVUxMCiAjZGVmaW5lIFNUTU1BQ19MQl9USU1FT1VUCW1zZWNzX3RvX2ppZmZpZXMoMjAwKQomIzQzOyNkZWZpbmUgU1RNTUFDX1NGVF9NQVhfTFBJCSg1ICogVVNFQ19QRVJfU0VDKQogCiBzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyB7CiAJaW50IHZsYW47CkBAIC0yMzcsNiAmIzQzOzIzOSwxMCBAQCBzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiB7CiAJc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMgKnBhY2tldDsKIAlzdHJ1Y3QgcGFja2V0X3R5cGUgcHQ7CiAJc3RydWN0IGNvbXBsZXRpb24gY29tcDsKJiM0MzsJX19iZTE2IHBhY2tldF90eXBlOwomIzQzOwlpbnQgKCpmdW5jKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCSAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19uZGV2KTsKJiM0MzsJYm9vbCBjYXB0dXJlX2FsbDsKIAlpbnQgZG91YmxlX3ZsYW47CiAJaW50IHZsYW5faWQ7CiAJaW50IG9rOwpAQCAtMzE2LDYgJiM0MzszMjIsNTAgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9sb29wYmFja192YWxpZGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBzdG1tYWNfc2Z0X2ZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsCiYjNDM7CQkJICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19uZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHN0bW1hY190ZXN0X3ByaXYgKnRwcml2ID0gcHQtJmd0O2FmX3BhY2tldF9wcml2OwomIzQzOwlzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7CiYjNDM7CWludCByZXQgPSAwOwomIzQzOwomIzQzOwlpZiAoaGRyLSZndDtoX3Byb3RvID09IHRwcml2LSZndDtwYWNrZXRfdHlwZSkgewomIzQzOwkJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTsKJiM0MzsKJiM0MzsJCWlmIChuc2tiKQomIzQzOwkJCXJldCA9IHRwcml2LSZndDtmdW5jKG5za2IsIG5kZXYsIHB0LCBvcmlnX25kZXYpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWtmcmVlX3NrYihza2IpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfc2Z0X2FkZF9wYWNrKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiAqdHByaXYgPSBwdC0mZ3Q7YWZfcGFja2V0X3ByaXY7CiYjNDM7CiYjNDM7CWlmIChuZXRkZXZfdXNlc19kc2EodHByaXYtJmd0O3B0LmRldikgfHwgdHByaXYtJmd0O2NhcHR1cmVfYWxsKSB7CiYjNDM7CQl0cHJpdi0mZ3Q7cGFja2V0X3R5cGUgPSB0cHJpdi0mZ3Q7cHQudHlwZTsKJiM0MzsJCXRwcml2LSZndDtmdW5jID0gdHByaXYtJmd0O3B0LmZ1bmM7CiYjNDM7CiYjNDM7CQkvKiBEU0EgY29uZHVpdCB3aWxsIHJlcG9ydCBFVEhfUF9YRFNBLCBzbyBvdXIgcGFja2V0IGhhbmRsZXIKJiM0MzsJCSAqIHdvbiYjMzk7dCBtYXRjaC4gTGV0JiMzOTtzIHJlZ2lzdGVyIGEgRVRIX1BfQUxMIG1hdGNoIGFuZCBmaWx0ZXIKJiM0MzsJCSAqIG1hbnVhbGx5IGluIHN0bW1hY19zZnRfZmlsdGVyLgomIzQzOwkJICovCiYjNDM7CQl0cHJpdi0mZ3Q7cHQudHlwZSA9IGh0b25zKEVUSF9QX0FMTCk7CiYjNDM7CQl0cHJpdi0mZ3Q7cHQuZnVuYyA9IHN0bW1hY19zZnRfZmlsdGVyOwomIzQzOwkJdHByaXYtJmd0O3B0Lmlnbm9yZV9vdXRnb2luZyA9IHRydWU7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZGV2X2FkZF9wYWNrKHB0KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgc3RtbWFjX3NmdF9yZW1vdmVfcGFjayhzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0KQomIzQzO3sKJiM0MzsJZGV2X3JlbW92ZV9wYWNrKHB0KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQkJCSAgc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMgKmF0dHIpCiB7CkBAIC0zMzcsNyAmIzQzOzM4Nyw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJdHByaXYtJmd0O3BhY2tldCA9IGF0dHI7CiAKIAlpZiAoIWF0dHItJmd0O2RvbnRfd2FpdCkKLQkJZGV2X2FkZF9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJCXN0bW1hY19zZnRfYWRkX3BhY2soJmFtcDt0cHJpdi0mZ3Q7cHQpOwogCiAJc2tiID0gc3RtbWFjX3Rlc3RfZ2V0X3VkcF9za2IocHJpdiwgYXR0cik7CiAJaWYgKCFza2IpIHsKQEAgLTM2MCw3ICYjNDM7NDEwLDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAogY2xlYW51cDoKIAlpZiAoIWF0dHItJmd0O2RvbnRfd2FpdCkKLQkJZGV2X3JlbW92ZV9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJCXN0bW1hY19zZnRfcmVtb3ZlX3BhY2soJmFtcDt0cHJpdi0mZ3Q7cHQpOwogCWtmcmVlKHRwcml2KTsKIAlyZXR1cm4gcmV0OwogfQpAQCAtNDE0LDEyICYjNDM7NDY0LDE2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbW1jKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfZWVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHsKIAlzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICppbml0aWFsLCAqZmluYWw7Ci0JaW50IHJldHJpZXMgPSAxMDsKJiM0MzsJdW5zaWduZWQgbG9uZyB0aW1lb3V0LCBtYXhfZHVyYXRpb247CiAJaW50IHJldDsKIAogCWlmICghcHJpdi0mZ3Q7ZG1hX2NhcC5lZWUgfHwgIXByaXYtJmd0O2VlZV9hY3RpdmUpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAomIzQzOwkvKiBCYWlsIG91dCBpZiB0aGUgY29uZmlndXJlZCBMUEkgdGltZXIgaXMgdG9vIGxvbmcgKi8KJiM0MzsJaWYgKHByaXYtJmd0O3R4X2xwaV90aW1lciAmZ3Q7IFNUTU1BQ19TRlRfTUFYX0xQSSkKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsKIAlpbml0aWFsID0ga3phbGxvY19vYmooKmluaXRpYWwpOwogCWlmICghaW5pdGlhbCkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC00MzAsMTQgJiM0Mzs0ODQsMjEgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9lZWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCQlnb3RvIG91dF9mcmVlX2luaXRpYWw7CiAJfQogCiYjNDM7CS8qIFNuYXBzaG90IHN0YXRzLCB3ZSB3YW50IHRvIGNvdW50IHRoZSBpbl9scGkgZXZlbnRzLiBXZSBtYXkgZW50ZXIKJiM0MzsJICogTFBJIGp1c3QgYWZ0ZXIgdGhlIHBhY2tldCB3YXMgc2VudC4KJiM0MzsJICovCiAJbWVtY3B5KGluaXRpYWwsICZhbXA7cHJpdi0mZ3Q7eHN0YXRzLCBzaXplb2YoKmluaXRpYWwpKTsKIAomIzQzOwkvKiBTZW5kIGEgZnJhbWUsIHRoZW4gd2FpdCB0byBlbnRlciBMUEkgKi8KIAlyZXQgPSBzdG1tYWNfdGVzdF9tYWNfbG9vcGJhY2socHJpdik7CiAJaWYgKHJldCkKIAkJZ290byBvdXRfZnJlZV9maW5hbDsKIAomIzQzOwltYXhfZHVyYXRpb24gPSB1c2Vjc190b19qaWZmaWVzKDIgKiBwcml2LSZndDt0eF9scGlfdGltZXIpOwomIzQzOwogCS8qIFdlIGhhdmUgbm8gdHJhZmZpYyBpbiB0aGUgbGluZSBzbywgc29vbmVyIG9yIGxhdGVyIGl0IHdpbGwgZ28gTFBJICovCi0Jd2hpbGUgKC0tcmV0cmllcykgewomIzQzOwl0aW1lb3V0ID0gamlmZmllcyAmIzQzOyBtYXhfZHVyYXRpb247CiYjNDM7CXdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgewogCQltZW1jcHkoZmluYWwsICZhbXA7cHJpdi0mZ3Q7eHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7CiAKIAkJaWYgKGZpbmFsLSZndDtpcnFfdHhfcGF0aF9pbl9scGlfbW9kZV9uICZndDsKQEAgLTQ0NiwyMCAmIzQzOzUwNywzOCBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiAJCW1zbGVlcCgxMDApOwogCX0KIAotCWlmICghcmV0cmllcykgewomIzQzOwltZW1jcHkoZmluYWwsICZhbXA7cHJpdi0mZ3Q7eHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7CiYjNDM7CWlmIChmaW5hbC0mZ3Q7aXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiAmbHQ7PQomIzQzOwkgICAgaW5pdGlhbC0mZ3Q7aXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbikgewogCQlyZXQgPSAtRVRJTUVET1VUOwogCQlnb3RvIG91dF9mcmVlX2ZpbmFsOwogCX0KIAotCWlmIChmaW5hbC0mZ3Q7aXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiAmbHQ7PQotCSAgICBpbml0aWFsLSZndDtpcnFfdHhfcGF0aF9pbl9scGlfbW9kZV9uKSB7Ci0JCXJldCA9IC1FSU5WQUw7CiYjNDM7CS8qIFJlLXNuYXBzaG90LCBhcyB3ZSB3YW50IHRvIG1lYXN1cmUgZXhpdF9scGkgZXZlbnRzLiBXZSBzaG91bGQgYmUKJiM0MzsJICogaW4gTFBJIHJpZ2h0IG5vdy4KJiM0MzsJICovCiYjNDM7CW1lbWNweShpbml0aWFsLCAmYW1wO3ByaXYtJmd0O3hzdGF0cywgc2l6ZW9mKCppbml0aWFsKSk7CiYjNDM7CiYjNDM7CS8qIFRYIHNvbWV0aGluZyBzbyB3ZSBnbyBvdXQgb2YgTFBJICovCiYjNDM7CXJldCA9IHN0bW1hY190ZXN0X21hY19sb29wYmFjayhwcml2KTsKJiM0MzsJaWYgKHJldCkKIAkJZ290byBvdXRfZnJlZV9maW5hbDsKJiM0MzsKJiM0MzsJLyogV2FpdCBmb3IgdGhlIGV4aXQgTFBJIGludGVycnVwdCAqLwomIzQzOwl0aW1lb3V0ID0gamlmZmllcyAmIzQzOyBtYXhfZHVyYXRpb247CiYjNDM7CXdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgewomIzQzOwkJbWVtY3B5KGZpbmFsLCAmYW1wO3ByaXYtJmd0O3hzdGF0cywgc2l6ZW9mKCpmaW5hbCkpOwomIzQzOwomIzQzOwkJaWYgKGZpbmFsLSZndDtpcnFfdHhfcGF0aF9leGl0X2xwaV9tb2RlX24gJmd0OwomIzQzOwkJICAgIGluaXRpYWwtJmd0O2lycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbikKJiM0MzsJCQlicmVhazsKJiM0MzsJCW1zbGVlcCgxMDApOwogCX0KIAomIzQzOwltZW1jcHkoZmluYWwsICZhbXA7cHJpdi0mZ3Q7eHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7CiAJaWYgKGZpbmFsLSZndDtpcnFfdHhfcGF0aF9leGl0X2xwaV9tb2RlX24gJmx0Oz0KIAkgICAgaW5pdGlhbC0mZ3Q7aXJxX3R4X3BhdGhfZXhpdF9scGlfbW9kZV9uKSB7Ci0JCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlyZXQgPSAtRVRJTUVET1VUOwogCQlnb3RvIG91dF9mcmVlX2ZpbmFsOwogCX0KIApAQCAtNzY3LDcgJiM0Mzs4NDYsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2Zsb3djdHJsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAl0cHJpdi0mZ3Q7cHQuZnVuYyA9IHN0bW1hY190ZXN0X2Zsb3djdHJsX3ZhbGlkYXRlOwogCXRwcml2LSZndDtwdC5kZXYgPSBwcml2LSZndDtkZXY7CiAJdHByaXYtJmd0O3B0LmFmX3BhY2tldF9wcml2ID0gdHByaXY7Ci0JZGV2X2FkZF9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJc3RtbWFjX3NmdF9hZGRfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiAKIAkvKiBDb21wdXRlIG1pbmltdW0gbnVtYmVyIG9mIHBhY2tldHMgdG8gbWFrZSBGSUZPIGZ1bGwgKi8KIAlwa3RfY291bnQgPSByeF9maWZvX3NpemU7CkBAIC04MjMsNyAmIzQzOzkwMiw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfZmxvd2N0cmwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogY2xlYW51cDoKIAlkZXZfbWNfZGVsKHByaXYtJmd0O2RldiwgcGFkZHIpOwogCWRldl9zZXRfcHJvbWlzY3VpdHkocHJpdi0mZ3Q7ZGV2LCAtMSk7Ci0JZGV2X3JlbW92ZV9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJc3RtbWFjX3NmdF9yZW1vdmVfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiAJa2ZyZWUodHByaXYpOwogCXJldHVybiByZXQ7CiB9CkBAIC05MjEsNiAmIzQzOzEwMDAsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCXRwcml2LSZndDtwdC5kZXYgPSBwcml2LSZndDtkZXY7CiAJdHByaXYtJmd0O3B0LmFmX3BhY2tldF9wcml2ID0gdHByaXY7CiAJdHByaXYtJmd0O3BhY2tldCA9ICZhbXA7YXR0cjsKJiM0MzsJdHByaXYtJmd0O2NhcHR1cmVfYWxsID0gdHJ1ZTsKIAogCS8qCiAJICogQXMgd2UgdXNlIEhBU0ggZmlsdGVyaW5nLCBmYWxzZSBwb3NpdGl2ZXMgbWF5IGFwcGVhci4gVGhpcyBpcyBhCkBAIC05MjgsNyAmIzQzOzEwMDgsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCSAqIEhBU0ggdmFsdWVzLgogCSAqLwogCXRwcml2LSZndDt2bGFuX2lkID0gMHgxMjM7Ci0JZGV2X2FkZF9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJc3RtbWFjX3NmdF9hZGRfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiAKIAlyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi0mZ3Q7ZGV2LCBodG9ucyhFVEhfUF84MDIxUSksIHRwcml2LSZndDt2bGFuX2lkKTsKIAlpZiAocmV0KQpAQCAtOTY4LDcgJiM0MzsxMDQ4LDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X3ZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHZsYW5fZGVsOgogCXZsYW5fdmlkX2RlbChwcml2LSZndDtkZXYsIGh0b25zKEVUSF9QXzgwMjFRKSwgdHByaXYtJmd0O3ZsYW5faWQpOwogY2xlYW51cDoKLQlkZXZfcmVtb3ZlX3BhY2soJmFtcDt0cHJpdi0mZ3Q7cHQpOwomIzQzOwlzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKIAlrZnJlZSh0cHJpdik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTEwMTUsNiAmIzQzOzEwOTUsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfZHZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAl0cHJpdi0mZ3Q7cHQuZGV2ID0gcHJpdi0mZ3Q7ZGV2OwogCXRwcml2LSZndDtwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2OwogCXRwcml2LSZndDtwYWNrZXQgPSAmYW1wO2F0dHI7CiYjNDM7CXRwcml2LSZndDtjYXB0dXJlX2FsbCA9IHRydWU7CiAKIAkvKgogCSAqIEFzIHdlIHVzZSBIQVNIIGZpbHRlcmluZywgZmFsc2UgcG9zaXRpdmVzIG1heSBhcHBlYXIuIFRoaXMgaXMgYQpAQCAtMTAyMiw3ICYjNDM7MTEwMyw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCSAqIEhBU0ggdmFsdWVzLgogCSAqLwogCXRwcml2LSZndDt2bGFuX2lkID0gMHgxMjM7Ci0JZGV2X2FkZF9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJc3RtbWFjX3NmdF9hZGRfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiAKIAlyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi0mZ3Q7ZGV2LCBodG9ucyhFVEhfUF84MDIxQUQpLCB0cHJpdi0mZ3Q7dmxhbl9pZCk7CiAJaWYgKHJldCkKQEAgLTEwNjIsNyAmIzQzOzExNDMsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfZHZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHZsYW5fZGVsOgogCXZsYW5fdmlkX2RlbChwcml2LSZndDtkZXYsIGh0b25zKEVUSF9QXzgwMjFBRCksIHRwcml2LSZndDt2bGFuX2lkKTsKIGNsZWFudXA6Ci0JZGV2X3JlbW92ZV9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJc3RtbWFjX3NmdF9yZW1vdmVfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiAJa2ZyZWUodHByaXYpOwogCXJldHVybiByZXQ7CiB9CkBAIC0xMjkzLDcgJiM0MzsxMzc0LDggQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF92bGFub2ZmX2NvbW1vbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGJvb2wgc3ZsYW4pCiAJdHByaXYtJmd0O3B0LmFmX3BhY2tldF9wcml2ID0gdHByaXY7CiAJdHByaXYtJmd0O3BhY2tldCA9ICZhbXA7YXR0cjsKIAl0cHJpdi0mZ3Q7dmxhbl9pZCA9IDB4MTIzOwotCWRldl9hZGRfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiYjNDM7CXRwcml2LSZndDtjYXB0dXJlX2FsbCA9IHRydWU7CiYjNDM7CXN0bW1hY19zZnRfYWRkX3BhY2soJmFtcDt0cHJpdi0mZ3Q7cHQpOwogCiAJcmV0ID0gdmxhbl92aWRfYWRkKHByaXYtJmd0O2RldiwgaHRvbnMocHJvdG8pLCB0cHJpdi0mZ3Q7dmxhbl9pZCk7CiAJaWYgKHJldCkKQEAgLTEzMjAsNyAmIzQzOzE0MDIsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X3ZsYW5vZmZfY29tbW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgYm9vbCBzdmxhbikKIHZsYW5fZGVsOgogCXZsYW5fdmlkX2RlbChwcml2LSZndDtkZXYsIGh0b25zKHByb3RvKSwgdHByaXYtJmd0O3ZsYW5faWQpOwogY2xlYW51cDoKLQlkZXZfcmVtb3ZlX3BhY2soJmFtcDt0cHJpdi0mZ3Q7cHQpOwomIzQzOwlzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKIAlrZnJlZSh0cHJpdik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTEzMzIsNyAmIzQzOzE0MTQsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X3ZsYW5vZmYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCiBzdGF0aWMgaW50IHN0bW1hY190ZXN0X3N2bGFub2ZmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHsKLQlpZiAoIXByaXYtJmd0O2RtYV9jYXAuZHZsYW4pCiYjNDM7CWlmICghKHByaXYtJmd0O2Rldi0mZ3Q7ZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9IV19WTEFOX1NUQUdfVFgpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJcmV0dXJuIHN0bW1hY190ZXN0X3ZsYW5vZmZfY29tbW9uKHByaXYsIHRydWUpOwogfQpAQCAtMTY5OSw2ICYjNDM7MTc4MSw5IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9qdW1ibyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSkKIAlzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyBhdHRyID0geyB9OwogCWludCBzaXplID0gcHJpdi0mZ3Q7ZG1hX2NvbmYuZG1hX2J1Zl9zejsKIAomIzQzOwlpZiAoIWR3bWFjX2lzX3htYWMocHJpdi0mZ3Q7cGxhdC0mZ3Q7Y29yZV90eXBlKSkKJiM0MzsJCXNpemUgLT0gTkVUX0lQX0FMSUdOOwomIzQzOwogCWF0dHIuZHN0ID0gcHJpdi0mZ3Q7ZGV2LSZndDtkZXZfYWRkcjsKIAlhdHRyLm1heF9zaXplID0gc2l6ZSAtIEVUSF9GQ1NfTEVOOwogCWF0dHIucXVldWVfbWFwcGluZyA9IHF1ZXVlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTU1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgdGhlIFByb3Bvc2VkIFBhdGNoIFNlcmllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0aW5nIHRoZSBMaW51eCBrZXJuZWwuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIHNlZSB3aGF0IGl0IGFjdHVhbGx5IHRvdWNoZXM6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY2AuIFJpZ2h0LCBgc3RtbWFjYC4uLiB0aGF0JiMzOTtzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlci4gSXQgc3VwcG9ydHMgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgYW5kIHJlbGF0ZWQgaGFyZHdhcmUuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gSSByZWFsaXN0aWNhbGx5IHRlc3QgdGhpcyBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yLCBtb3JlIGxpa2VseSwgUUVNVT8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSByZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcy4gSG9sZCBvbi4uLiAqbmVnYXRpdmUgY3JpdGVyaWEqLCBtZWFuaW5nLCB3aGVuIHNob3VsZCBJIE5PVCBmdXp6IHRoaXM/IEFoLCByaWdodDogc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyDigJMgdGhpbmdzIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCB3ZWxsIGluIHN0YW5kYXJkIFFFTVUuIE9uIHRoZSBmbGlwIHNpZGUsIHdoYXQgKmlzKiByZWFjaGFibGU/IFZpcnR1YWwgYnVzZXM6IHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLgoKU28sICppcyogYHN0bW1hY2AgYSBQQ0kgZGV2aWNlLCBvciBpcyBpdCBhIHBsYXRmb3JtIGRldmljZSB0aGF0ICpjb3VsZCogYmUgZW11bGF0ZWQgaW4gUUVNVT8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIFFFTVUgZW11bGF0ZXMgZHdtYWMgb3Igc3RtbWFjIGRpcmVjdGx5LCBvciBpZiBpdCB1c2VzIFBDSSBiaW5kaW5ncy4gVGltZSB0byBicmVhayBvdXQgdGhlIGBncmVwYCBhbmQgc2VlIHdoYXQgaGFyZHdhcmUgdGhpcyBgc3RtbWFjYCBkcml2ZXIgYWN0dWFsbHkgc3VwcG9ydHMgd2l0aGluIHRoZSBrZXJuZWwuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19wY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcdCYjNDM7PSBkd21hYy1tb3RvcmNvbW0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTQ6c3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0yNT1zdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTM5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00MS1cdHVuc2lnbmVkIGludCBmdW5jO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ1OnN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDY6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ3LVx0c2l6ZV90IG5mdW5jcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTEtXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MT1zdGF0aWMgY29uc3QgaW50IGFkbG5fdHNuX2xhbmVfcmVnc1tdID0gezZ9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTM6c3RhdGljIGludCBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk0LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkICpkbWlfbGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSAqZnVuY19kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NzpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhICpkbWlfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTgtXHRjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2lkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9Nzg2PXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgwNjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfc2dtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDctXHQuc2V0dXAgPSBlaGxfc2dtaWlfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgxMD1zdGF0aWMgaW50IGVobF9yZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MjE6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3JnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIyLVx0LnNldHVwID0gZWhsX3JnbWlpX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDE9c3RhdGljIGludCBlaGxfcHNlMF9yZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg0ODpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9yZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0OS1cdC5zZXR1cCA9IGVobF9wc2UwX3JnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg1Mj1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODcwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UwX3NnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODcxLVx0LnNldHVwID0gZWhsX3BzZTBfc2dtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODkwPXN0YXRpYyBpbnQgZWhsX3BzZTFfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4OTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfcmdtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTgtXHQuc2V0dXAgPSBlaGxfcHNlMV9yZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MDE9c3RhdGljIGludCBlaGxfcHNlMV9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkxOTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMV9zZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyMC1cdC5zZXR1cCA9IGVobF9wc2UxX3NnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk0ND1zdGF0aWMgaW50IHRnbF9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk1MzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyB0Z2xfc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1NC1cdC5zZXR1cCA9IHRnbF9zZ21paV9waHkwX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NTc9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjctXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTcwPXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk4MDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05ODEtXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk4ND1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5OTQ6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTFfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTk1LVx0LnNldHVwID0gYWRsc19zZ21paV9waHkxX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDIzPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbG5fc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDMtXHQuc2V0dXAgPSBhZGxuX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNDY6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0Ny1cdHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNTM6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGdhbGlsZW9fc3RtbWFjX2RtaV9kYXRhID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU0LVx0LmZ1bmMgPSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDU4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTktXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDY5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSBpb3QyMDQwX3N0bW1hY19kbWlfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA3MC1cdC5mdW5jID0gaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTEwOT1zdGF0aWMgaW50IHF1YXJrX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMTktXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTEyMDpcdHJldCA9IHN0bW1hY19wY2lfZmluZF9waHlfYWRkcihwZGV2LCBxdWFya19wY2lfZG1pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTEyMS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExNDU6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gcXVhcmtfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE0Ni1cdC5zZXR1cCA9IHF1YXJrX2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjY6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2Ny1cdHN0cnVjdCBpbnRlbF9wcml2X2RhdGEgKmludGVsX3ByaXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz03Nj1zdHJ1Y3QgbG9vbmdzb25fZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6ODI6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgzLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTMyPXN0YXRpYyBpbnQgbG9vbmdzb25fZ21hY19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ21hY19wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQzLVx0LnNldHVwID0gbG9vbmdzb25fZ21hY19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTY1PXN0YXRpYyBpbnQgbG9vbmdzb25fZ25ldF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNzc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ25ldF9wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc4LVx0LnNldHVwID0gbG9vbmdzb25fZ25ldF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMS1cdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MDI6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDMtXHRzdHJ1Y3QgbG9vbmdzb25fZGF0YSAqbGQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MzctXHRwbGF0LVx1MDAzZWZpeF9zb2NfcmVzZXQgPSBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzODpcdHBsYXQtXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1Mzk6XHRwbGF0LVx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0MC1cdGxkLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XHRpbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVx0cmV0ID0gaW5mby1cdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0xODg9c3RhdGljIGludCBtb3RvcmNvbW1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTkzOlx0cmV0ID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShkZXYsIGJzcF9wcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjA4PW1vdG9yY29tbV9kZWZhdWx0X3BsYXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDgtXHRwbGF0LVx1MDAzZWNvcmVfdHlwZVx0XHQ9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNDk6XHRwbGF0LVx1MDAzZXN1c3BlbmRcdFx0PSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1MC1cdHBsYXQtXHUwMDNlcmVzdW1lXHRcdD0gbW90b3Jjb21tX3Jlc3VtZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MTI6aW50IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yNS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MjY6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjI4OmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy00My19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6NDQ6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6OTppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6MTA6aW50IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtMTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5OnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDMtXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTg6c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTIxOlx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIyLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgwOlx0cGxhdC1cdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgxOlx0cGxhdC1cdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4NzogKiBzdG1tYWNfcGNpX3JlbW92ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4OC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTkyOnN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA0Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDU6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDYtXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNC1cdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTU6XHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNjpcdC5yZW1vdmUgPSBzdG1tYWNfcGNpX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTctXHQuZHJpdmVyICAgICAgICAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTUxNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDU2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFNUTU1BQyBhbmQgRGVzaWduV2FyZSBNQUMgRW11bGF0aW9uIGluIFFFTVUgZm9yIEFNRDY0KioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLiBJJiMzOTttIHNlZWluZyByZWZlcmVuY2VzIHRvIFNUTU1BQyBhbmQgRGVzaWduV2FyZSBNQUMgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBzdG1tYWNfcGNpLmNgLCBgZHdtYWMtaW50ZWwuY2AsIGFuZCBzaW1pbGFyIGZpbGVzLiBUaGUgYFBDSV9ERVZJQ0VfREFUQWAgZW50cmllcyBzdWdnZXN0IHRoZXNlIGFyZSBQQ0ktYmFzZWQgZXRoZXJuZXQgY29udHJvbGxlcnMsIHdoaWNoIHJhaXNlcyBhIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kOiBBcmUgdGhlc2UgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCBvciBhbnl3aGVyZSBlYXNpbHkgYWNjZXNzaWJsZSBmb3IgZnV6emluZz8gSSBuZWVkIHRvIGNoZWNrLgoKVGhlIFdvcnRoRnV6emluZyBjcml0ZXJpYSBnaXZlIHNvbWUgbmVnYXRpdmUgZXhhbXBsZXMgd2hpY2ggbGVhZHMgbWUgdG8gdW5kZXJzdGFuZCB0aGUgY3JpdGVyaWEuIExvb2tpbmcgYXQgdGhlIGRvY3VtZW50YXRpb24sIGl0IHNlZW1zIGxpa2UgcGh5c2ljYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcyBhbmQgU21hcnROSUNzLCBhcmUgYSBuby1nbyBmb3IgdGhpcyBwcm9qZWN0LiBEcml2ZXJzIHJlYWNoYWJsZSB0aHJvdWdoIHZpcnR1YWwgYnVzZXMgYXJlIHRoZSBmb2N1cy4KClNvLCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciBRRU1VIHByb3ZpZGVzIGFuICplbXVsYXRlZCogdmVyc2lvbiBvZiBlaXRoZXIgU1RNTUFDIG9yIERlc2lnbldhcmUgTUFDLiBUaGUgZG9jdW1lbnRhdGlvbiBpbmRpY2F0ZXMgdGhhdCBRRU1VIGRvZXMgZW11bGF0ZSBEZXNpZ25XYXJlIE1BQ3MsIGJ1dCB0aGlzIGlzIHByaW1hcmlseSBmb3IgQVJNIGJvYXJkcyBsaWtlIEFsbHdpbm5lciBhbmQgU3VueGksIGJ1dCBub3Qgb24geDg2IHBsYXRmb3Jtcy4gT24geDg2L2FtZDY0LCBRRU1VIHVzZXMgZTEwMDAsIGUxMDAwZSwgdm14bmV0MywgcnRsODEzOSwgdmlydGlvLW5ldCwgYW5kIGEgaGFuZGZ1bCBvZiBvdGhlciBOSUMgZW11bGF0aW9ucy4KCkkmIzM5O20gbm93IGludmVzdGlnYXRpbmcsIGRvZXMgUUVNVSBlbXVsYXRlIGR3bWFjIG9yIHN0bW1hYyBhcyBQQ0kgZGV2aWNlcywgb3IgaXMgdGhlcmUgYSAmIzM0O2R3bWFjLXBjaSYjMzQ7IG9yICYjMzQ7c3RtbWFjLXBjaSYjMzQ7IGRldmljZT8KCkNoZWNraW5nIHRoZSBRRU1VIGRldmljZSBsaXN0LCBJIHNlZSBzcGVjaWZpYyBBUk0gU29DIGJvYXJkLXNwZWNpZmljIGVtdWxhdGVkIE1BQ3MsIGJ1dCBub3RoaW5nIGV4cGxpY2l0bHkgbGFiZWxlZCBhcyAmIzM0O2R3bWFjLXBjaSYjMzQ7IG9yICYjMzQ7c3RtbWFjLXBjaSYjMzQ7LiBJIHNlZSBgYWxsd2lubmVyX2VtYWNgLCBldGMsIGJ1dCBub3RoaW5nIHRoYXQgd291bGQgZml0IGEgZ2VuZXJhbCB4ODYvYW1kNjQgUENJIHNldHVwLgoKR2l2ZW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHRoaXMgbmFycm93cyB0aGUgcG9zc2liaWxpdGllcyBmdXJ0aGVyLiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGZvciBTVE1NQUMsIFNUTU1BQ19FVEgsIGFuZCBTVE1NQUNfUENJIHRvIHNlZSBpZiB0aGVyZSBpcyBjb25kaXRpb25hbCBidWlsZCBzdXBwb3J0IG9yIGNsdWVzIGFzIHRvIHRoZSBlbXVsYXRlZCBhdmFpbGFiaWxpdHkgb2YgdGhlc2UgZGV2aWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxMzMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSByZWFkaW5nIGFuZCB0aGlua2luZyBhYm91dCB0aGUgS2NvbmZpZyBmaWxlOgoKKipJbnZlc3RpZ2F0aW5nIFNUTU1BQyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIDQwMCB0byA0MzAgbGluZSByYW5nZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRoZXJlLiBJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGZlYXR1cmVzIHRoYXQgY2FuIGJlIHR1cm5lZCBvbiBvciBvZmYgZm9yIHRoZSBNQUMgaXRzZWxmLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG5ldyBvcHRpb25zIGFkZGVkIGluIHRoZSByZWNlbnQgdmVyc2lvbnMuIExldCBtZSBzZWUgd2hhdCBraW5kIG9mIGN1c3RvbWl6YXRpb25zIHRoZXkgc3VwcG9ydCBoZXJlLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhlcmUgYXJlIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCBvciBvdGhlciBkZXZpY2UgdHJlZXMuIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkLiBUaW1lIHRvIGdldCB0byB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQwMDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MDE6XHRcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXG4gNDAyOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQwMzpcdFx0aGVscFxuIDQwNDpcdFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcbiA0MDU6XHRcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXG4gNDA2Olx0XG4gNDA3Olx0Y29uZmlnIFNUTU1BQ19QQ0lcbiA0MDg6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gUENJXG4gNDEwOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiA0MTE6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDEyOlx0XHRoZWxwXG4gNDEzOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDQxNDpcdFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiA0MTU6XHRcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxuIDQxNjpcdFxuIDQxNzpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuIDQxODpcdFxuIDQxOTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDQyMDpcdGVuZGlmICMgU1RNTUFDX0VUSFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NzI2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBsaW5lcyBmcm9tIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uIGFzIGlmIHRoZXkgd2VyZSBteSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBzdG1tYWMgS2NvbmZpZyAtIExpbmVzIDEtNDAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIuIEZvY3VzaW5nIG9uIGxpbmVzIDEtNDAsIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIHRoaXMgZHJpdmVyLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwgZGVwZW5kZW5jaWVzLCB0aGluZ3MgbGlrZSB0aGUgZGV2aWNlIHRyZWUgc3VwcG9ydCwgbWF5YmUgUEhZIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2VydGFpbmx5LCB0aGUgZnVuZGFtZW50YWwgZW5hYmxlL2Rpc2FibGUgdG9nZ2xlcyBmb3IgdGhlIGRyaXZlciBpdHNlbGYuCgpGaXJzdCwgSSYjMzk7bSBzY2FubmluZyBmb3IgdGhlIGdlbmVyYWwgYGNvbmZpZyBTVE1NQUNgIGVudHJ5LiBUaGlzIGlzIHRoZSBiaWcgb25lLCB0aGUgbWFzdGVyIHN3aXRjaC4gSXQmIzM5O3MgdGhlIGdhdGVrZWVwZXIuIFRoZW4sIEkgZXhwZWN0IHRvIHNlZSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4gVGhlc2UgYXJlIGNydWNpYWw7IHRoZXkgZGljdGF0ZSB0aGUgZW52aXJvbm1lbnQgdGhlIGRyaXZlciBuZWVkcy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzcGVjaWZpYyBhcmNoaXRlY3R1cmU/IEEgcGFydGljdWxhciBwbGF0Zm9ybSB0aGF0ICptdXN0KiBiZSBwcmVzZW50PyBUaGF0JiMzOTtzIHdoYXQgSSYjMzk7bGwgYmUgbG9va2luZyBmb3Ig4oCTIHRoZSBhcmNoaXRlY3R1cmFsIGRlcGVuZGVuY2llcy4KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IHN5bWJvbCB0aGF0IG1pZ2h0IGVuYWJsZSBvciBkaXNhYmxlIGZlYXR1cmVzIGJhc2VkIG9uIGhhcmR3YXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgc3BlY2lmaWMgY2hpcHMgb3IgZmFtaWxpZXMuIEZvciBleGFtcGxlLCBzb21lIGhhcmR3YXJlIHJldmlzaW9ucyBtaWdodCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcuIEFueSBgc2VsZWN0YCBzdGF0ZW1lbnRzIGFyZSBhbHNvIGNyaXRpY2FsLCBiZWNhdXNlIHRoZXkgaW1wbGljaXRseSBzZXQgb3RoZXIgY29uZmlndXJhdGlvbnMuCgpGaW5hbGx5LCBJJiMzOTtsbCBiZSBjaGVja2luZyBpZiB0aGVyZSBhcmUgYW55IG9wdGlvbnMgdGhhdCBoZWxwIG1lIHRvIGNvbmZpZ3VyZSBkZWJ1Z2dpbmcgb3Igb3B0aW9uYWwgZmVhdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuICAyMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMjM6XHRcdGRlZmF1bHQgblxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xuICAyNjpcdFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4gIDI3Olx0XHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICAzNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XG4gIDM2Olx0XHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2NDMKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgYHN0bW1hY2AgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGNhbiBJIGFjdHVhbGx5IGludGVyYWN0IHdpdGggYHN0bW1hY2Agd2l0aG91dCByZWFsIGhhcmR3YXJlPyBJcyBpdCBzdHJpY3RseSBhIGhhcmR3YXJlLWRlcGVuZGVudCBkcml2ZXI/IExldCYjMzk7cyBjbGFyaWZ5LiAqWWVzKiwgaXQmIzM5O3MgYSBkcml2ZXIgZm9yIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgdGhlIFN5bm9wc3lzIElQIENvcmUuIFJpZ2h0LCBhbmQgaXQmIzM5O3MgdXNlZCBvbiBhIGJ1bmNoIG9mIFNvQ3MgbGlrZSBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgYW5kIEFsdGVyYSBTT0NGUEdBLiBUaGV5IGV2ZW4gdGVzdGVkIGl0IG9uIGEgWGlsaW54IFZpcnRleCBGUEdBIGFuZCBhIFN5bm9wc3lzIHByb3RvdHlwaW5nIGtpdCwgd2hpY2ggcmVpbmZvcmNlcyB0aGUgcGh5c2ljYWwgbmF0dXJlLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIHRoaXMgdGhpbmcgYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggYSBkdW1teSBvciBwbGF0Zm9ybSBkZXZpY2Ugc29tZWhvdz8gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0byBtb2NrIG9yIHZpcnR1YWxpemUgaXQuIE15IG5leHQgc3RlcDogbGV0IG1lIGdyZXAgdGhlIGNvZGViYXNlIOKAkyBzcGVjaWZpY2FsbHksIEkmIzM5O20gbG9va2luZyBmb3IgdXNhZ2VzIG9mIGBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJgIG9yIGFueXRoaW5nIHNpbWlsYXIsIGVpdGhlciB3aXRoaW4gdGhlIGBzdG1tYWNgIGNvZGUgaXRzZWxmIG9yIGFueXdoZXJlIHJlbGV2YW50LiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBoaW50IG9mIGEgc29mdHdhcmUtYmFzZWQgaW50ZXJmYWNlIG9yIGlmIGl0JiMzOTtzIHB1cmVseSB0aWVkIHRvIHBoeXNpY2FsIE5JQ3MuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW5zdGFudGlhdGlvbiBjYXBhYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hYy4qcGxhdGZvcm1fZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY4PXN0YXRpYyBpbnQgZHdtYWMxMDAwX3ZhbGlkYXRlX3VjYXN0X2VudHJpZXMoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTkzLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6OTQ6c3RhdGljIHN0cnVjdCBzdG1tYWNfYXhpICpzdG1tYWNfYXhpX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy05NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtMTI5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6MTMwOnN0YXRpYyBpbnQgc3RtbWFjX210bF9zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtMTMxLVx0XHRcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NDEzPXN0YXRpYyBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NDE0OnN0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTQxNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NjU3PXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NTg6ZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02NTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY3NT1zdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6Njc2OmRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjc3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz02OTI9RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy03MDMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo3MDQ6c3RhdGljIGludCBzdG1tYWNfcGx0ZnJfZ2V0X2lycV9hcnJheShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNzA1LVx0XHRcdFx0ICAgICAgY29uc3QgY2hhciAqZm10LCBpbnQgKmlycXMsIHNpemVfdCBudW0pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNzI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NzMwOmludCBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNzMxLVx0XHRcdFx0ICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqc3RtbWFjX3Jlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04MzE9c3RhdGljIGludCBzdG1tYWNfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NDY6aW50IHN0bW1hY19wbHRmcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODQ3LVx0XHQgICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg1OT1zdGF0aWMgdm9pZCBkZXZtX3N0bW1hY19wbHRmcl9yZW1vdmUodm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NzQ6aW50IGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzUtXHRcdFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04ODc9RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg5NC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg5NTp2b2lkIHN0bW1hY19wbHRmcl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg5Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MTQ9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oOjE1OmRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MTc9c3RydWN0IGNsayAqc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMDppbnQgc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTIxLVx0XHRcdFx0ICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqc3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oOjIzOmludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTI0LVx0XHQgICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjUtXHRcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oOjI2OmludCBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjctXHRcdFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTI4LVx0XHRcdCAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oOjI5OnZvaWQgc3RtbWFjX3BsdGZyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTMwLWV4dGVybiBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBzdG1tYWNfcGx0ZnJfcG1fb3BzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE2MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDg2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBzdG1tYWNgIERyaXZlciYjMzk7cyBFbXVsYXRpb24gYW5kIFRlc3RhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgc3RtbWFjYCwgYW4gRXRoZXJuZXQgTUFDIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBhbmQgU3lub3BzeXMgRGVzaWduV2FyZSBNQUNzLiBUaGUgY29yZSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgb3Igbm90IHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIGVtdWxhdGVzIGFueSBoYXJkd2FyZSByZWxhdGVkIHRvIGBzdG1tYWNgIG9yIGEgU3lub3BzeXMgRFdNQUMgZGV2aWNlIG9uIGFuIGFtZDY0IGFyY2hpdGVjdHVyZS4KCkxldCBtZSB0aGlua+KApiB0aGUgcHJvdmlkZWQgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc3RhdGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGluY2x1ZGVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMuIFRoaW5ncyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuIFNpbmNlIHRoZSB0ZXh0IGNhbGxzIG91dCB0aGUgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIGZvciB0aG9zZSBkZXZpY2VzLCBJIHNob3VsZCBjaGVjayB3aGF0IGlzIGF2YWlsYWJsZSBpbiBRRU1VLgoKQWxyaWdodCwgd2hhdCBFdGhlcm5ldCBOSUNzICphcmUqIGVtdWxhdGVkIGluIFFFTVUgb24geDg2L2FtZDY0PyBJIGtub3cgdGhlcmUmIzM5O3MgYGUxMDAwYCwgYGUxMDAwZWAsIGFuZCBgaWdiYCwgYWxzbyBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGB2bXhuZXQzYCwgYHZpcnRpby1uZXQtcGNpYCwgYW5kIHNvbWV0aW1lcyBgcm9ja2VyYCwgYW5kIFVTQi1iYXNlZCBOSUNzIGxpa2UgYHJ0bDgxNTBgIGFuZCBgYXNpeGAuCgpOb3csIGRvZXMgUUVNVSBoYXZlIHN1cHBvcnQgZm9yIGBzdG1tYWNgIG9yIGBkd21hY2A/IExldCBtZSBzZWXigKYgSSBzaG91bGQgY2hlY2sgdGhlIGBody9uZXQvYCBkaXJlY3RvcnkgaW4gdGhlIFFFTVUgc291cmNlLiBPa2F5LCB0aGUgbGlzdCBpbmNsdWRlcyBhIGxvdCBvZiBkaWZmZXJlbnQgZW11bGF0ZWQgTklDcyDigJMgYGFsbHdpbm5lcl9zdW44aV9lbWFjYCwgYGNhZGVuY2VfZ2VtYCwgYGRwODM5M3hgLCBgZTEwMDBgLCBgZTEwMDBlYCwgYW5kIG1hbnkgb3RoZXJzLiBCdXQsIHdhaXQsIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZyBleHBsaWNpdGx5IG5hbWVkIGBzdG1tYWNgIG9yIGBkd21hY2AgaW4gdGhlcmUuIFRoaXMgc3VnZ2VzdHMgdGhhdCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIGBzdG1tYWNgIGRyaXZlciBvciBhbnkgRFdNQUMsIGV2ZW4gaWYgSSB3YXMgcnVubmluZyBhIFFFTVUgQVJNIG9yIEFBcmNoNjQgaW5zdGFuY2UuIE9uIGFtZDY0LCBpdCYjMzk7cyBkZWZpbml0ZWx5IG5vdCBlbXVsYXRlZC4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIGEgZGlmZmVyZW50IGF2ZW51ZSwgY2FuIHN5emthbGxlciBldmVuIGludGVyYWN0IHdpdGggdGhpcz8gRG9lcyBzeXprYWxsZXIgaGF2ZSB0aGUgY2FwYWNpdHkgdG8gaW5zdGFudGlhdGUgYHN0bW1hY2A/IEl0IGxvb2tzIGxpa2UgYHN0bW1hY2AgKnJlcXVpcmVzKiBwaHlzaWNhbCBoYXJkd2FyZTogUENJIGRldmljZXMgZnJvbSBTVE1NQUMsIFNUTUlDUk8sIFNZTk9QU1lTLCBJbnRlbCwgTG9vbmdzb24sIG9yIE1vdG9yY29tbSwgb3IgcGxhdGZvcm0gZGV2aWNlcyBmcm9tIERldmljZSBUcmVlIG9yIEFDUEkuIFNpbmNlIHN5emthbGxlciBydW5zIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIFZNcywgaXQgY2FuJiMzOTt0IHByb2JlIG9yIGV4ZWN1dGUgYHN0bW1hY2AgYmVjYXVzZSBpdCBjYW5ub3QgaW50ZXJhY3Qgd2l0aCB0aGUgcmVxdWlyZWQgcGh5c2ljYWwgaGFyZHdhcmUuCgpOb3csIGxldCYjMzk7cyBtb3ZlIG9uIHRvIHRoZSBjb2RlIGNoYW5nZXM6IHRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX3NldF9iZnNpemVgIGFuZCBgc3RtbWFjX3NldHVwX2RtYV9kZXNjYCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLCBhbmQgYWxzbyBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCB3aGljaCBpbmNsdWRlcyBldGh0b29sIHNlbGZ0ZXN0cyBmb3IgYHN0bW1hY2AuCgpUaGUga2V5IHF1ZXN0aW9uIGlzLCBhcmUgYHN0bW1hY19zZWxmdGVzdHNgIG9yIGNhbGxzIHRvIGBzdG1tYWNfc2V0dXBfZG1hX2Rlc2NgIHJlYWNoYWJsZSBmcm9tICphbnkqIHZpcnR1YWwgZHJpdmVyIG9yIHRoZSBjb3JlIHN1YnN5c3RlbT8gTGV0IG1lIHNlZS4gSSYjMzk7bGwgc2VhcmNoIGZvciBjYWxscyB0byBgc3RtbWFjX3NldHVwX2RtYV9kZXNjYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3NldHVwX2RtYV9kZXNjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDAzOT1zdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA1My0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDA1NDogKiAgc3RtbWFjX3NldHVwX2RtYV9kZXNjIC0gR2VuZXJhdGUgYSBkbWFfY29uZiBhbmQgYWxsb2NhdGUgRE1BIHF1ZXVlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNTUtICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjI9c3RhdGljIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDYzOnN0bW1hY19zZXR1cF9kbWFfZGVzYyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBtdHUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDE5OD1zdGF0aWMgaW50IHN0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjA4Olx0ZG1hX2NvbmYgPSBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MocHJpdiwgZGV2LVx1MDAzZW10dSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMDktXHRpZiAoSVNfRVJSKGRtYV9jb25mKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMzk9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNjUtXHRcdC8qIFRyeSB0byBhbGxvY2F0ZSB0aGUgbmV3IERNQSBjb25mIHdpdGggdGhlIG5ldyBtdHUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjE2NjpcdFx0ZG1hX2NvbmYgPSBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MocHJpdiwgbXR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE2Ny1cdFx0aWYgKElTX0VSUihkbWFfY29uZikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0NzIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWxhdGlvbnNoaXAgQmV0d2VlbiBETUEgRGVzY3JpcHRvciBTZXR1cCBhbmQgU2VsZi1UZXN0cyBpbiB0aGUgU1RNTUFDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBzdG1tYWNgIEV0aGVybmV0IGRyaXZlciwgYW5kIHR3byBrZXkgcGFydHMgYXJlIGp1bXBpbmcgb3V0IGF0IG1lOiBgc3RtbWFjX3NldHVwX2RtYV9kZXNjYCBhbmQgdGhlIHNlbGYtdGVzdHMgaW1wbGVtZW50ZWQgaW4gYHN0bW1hY19zZWxmdGVzdHMuY2AuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IHRoZXkmIzM5O3JlIGJvdGggaW50ZWdyYWwgY29tcG9uZW50cyB3aXRoaW4gdGhpcyBkcml2ZXIuIEkmIzM5O20gbm90aW5nIHRoYXQgYHN0bW1hY19zZXR1cF9kbWFfZGVzY2AgcGxheXMgYSBjcnVjaWFsIHJvbGUgaW4gaW5pdGlhbGl6aW5nIG9yIHJlY29uZmlndXJpbmcgdGhlIERNQSBkZXNjcmlwdG9ycywgYXMgaXQmIzM5O3MgY2FsbGVkIGJ5IHRoZSBgc3RtbWFjX29wZW4oKWAgZnVuY3Rpb24sIHdoaWNoIGlzLCBvYnZpb3VzbHksIHVzZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgYW5kIGBzdG1tYWNfY2hhbmdlX210dSgpYCwgd2hpY2ggaXMgdXNlZCwgdW5zdXJwcmlzaW5nbHksIHdoZW4gdGhlIE1UVSAoTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCkgaXMgbW9kaWZpZWQsIHJlcXVpcmluZyBhIHJlLXNldHVwIG9mIHRoZSBkZXNjcmlwdG9ycy4KCk5vdywgdGhlIHNlbGYtdGVzdCBhc3BlY3QsIHRoYXQmIzM5O3MgcmVzaWRpbmcgd2l0aGluIGBzdG1tYWNfc2VsZnRlc3RzLmNgIHdoaWNoLCBpdCYjMzk7cyBjbGVhciwgaW1wbGVtZW50cyB0aGUgc2VsZi10ZXN0IGZ1bmN0aW9uYWxpdHkuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2tlZCBieSBgc3RtbWFjX3NlbGZ0ZXN0X3J1bigpYCwgd2hpY2ggaXMgZGlyZWN0bHkgdGllZCB0byB0aGUgYGV0aHRvb2xfb3BzLSZndDtzZWxmX3Rlc3RgIGhvb2sgZm9yIGBzdG1tYWNgLiBTbywgdGhlIGVudGlyZSBzZWxmLXRlc3QgbWVjaGFuaXNtIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIHN0YW5kYXJkIGV0aHRvb2wgaW50ZXJmYWNlLiBHaXZlbiB0aGUgY29udGV4dCwgaXQgbWlnaHQgYmUgaW5zdHJ1Y3RpdmUgdG8gY2hlY2sgb3V0IGBzdG1tYWNfc2VsZnRlc3RfcnVuYCwgaW4gdGhlIGNvZGViYXNlLCB0byB2ZXJpZnkgdGhlIGFjdHVhbCBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19zZWxmdGVzdF9ydW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDMyPXN0cnVjdCB0aW1lc3BlYzY0IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShrdGltZV90IG9sZF9iYXNlX3RpbWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDM2LSNpZiBJU19FTkFCTEVEKENPTkZJR19TVE1NQUNfU0VMRlRFU1RTKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDM3OnZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDM4LVx0XHRcdCBzdHJ1Y3QgZXRodG9vbF90ZXN0ICpldGVzdCwgdTY0ICpidWYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQ0MD1pbnQgc3RtbWFjX3NlbGZ0ZXN0X2dldF9jb3VudChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDQxLSNlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0NDI6c3RhdGljIGlubGluZSB2b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQ0My1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF90ZXN0ICpldGVzdCwgdTY0ICpidWYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0xMDk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgc3RtbWFjX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMTEwOC1cdC5zZXRfcGF1c2VwYXJhbSA9IHN0bW1hY19zZXRfcGF1c2VwYXJhbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MTEwOTpcdC5zZWxmX3Rlc3QgPSBzdG1tYWNfc2VsZnRlc3RfcnVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0xMTEwLVx0LmdldF9ldGh0b29sX3N0YXRzID0gc3RtbWFjX2dldF9ldGh0b29sX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xOTE2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3Rlc3Qge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjIwMTc6dm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjAxOC1cdFx0XHQgc3RydWN0IGV0aHRvb2xfdGVzdCAqZXRlc3QsIHU2NCAqYnVmKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDY4MQoJCQkJCQkJb3V0cHV0OiAxMjYKCQkJCQkJCXRob3VnaHRzOiA1OTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBWZXJkaWN0OiBXb3J0aEZ1enppbmcgPSBmYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIG15IHVuZGVyc3RhbmRpbmcsIGBzdG1tYWNfc2VsZnRlc3RfcnVuYCBpcyBleGNsdXNpdmVseSB0cmlnZ2VyZWQgYnkgZXRodG9vbCYjMzk7cyBgc2VsZl90ZXN0YCBvbiBhIG5ldGRldiBpbml0aWFsaXplZCBieSB0aGUgYHN0bW1hY2AgZHJpdmVyLiBgc3RtbWFjYCwgYXMgSSBrbm93IGl0LCBpcyBhIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBJUCBvciBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGhhcmR3YXJlLiBTbywgdG8gZXZlbiAqZ2V0KiB0byB0aGlzIGNvZGUsIHlvdSAqbmVlZCogYSBwaHlzaWNhbCBkZXZpY2UgdGhhdCBgc3RtbWFjYCBzdXBwb3J0cywgb3IsIGFuIGVtdWxhdGVkIG9uZSwgd2hpY2ggaXNuJiMzOTt0IHByZXNlbnQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGVudmlyb25tZW50cy4KCk5vdywgbGV0JiMzOTtzIHF1aWNrbHkgcmUtY2hlY2sgU2VjdGlvbiAyIG9mIHRoZSB0cmlhZ2UgaW5zdHJ1Y3Rpb25zLiBJdCBleHBsaWNpdGx5IHNheXMgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBpZiB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIGNlcnRhaW4gbmVnYXRpdmUgY2F0ZWdvcmllcywgYW5kIG9uZSBvZiB0aGVtIGlzICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsuIFNwZWNpZmljYWxseSwgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIG1lbnRpb24gdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmluZyBwaHlzaWNhbCBjYXJkcyB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyAqZXhhY3RseSogd2hhdCB0aGlzIGlzOiB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0aGUgcGh5c2ljYWwgYHN0bW1hY2AgaGFyZHdhcmUsIG5vdCBzb21ldGhpbmcgeW91IGNhbiBlYXNpbHkgc3Bvb2YuCgpBbGwgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNgLiBUaGlzIGNvbmZpcm1zIGl0OiB0aGlzIGlzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBtZWFucyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlICh0aGUgU3lub3BzeXMgSVAgY29yZSkgaXMgcmVxdWlyZWQuIFRoYXQmIzM5O3Mgbm90IGVtdWxhdGVkIGluIHRoZSB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIGNvZGUgKmlzKiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIHN5emthbGxlciBmdXp6aW5nLgoKVGh1cywgYmFzZWQgb24gdGhlIHRyaWFnZSBpbnN0cnVjdGlvbnMgYW5kIG15IGV4cGVydCBrbm93bGVkZ2UsIGBXb3J0aEZ1enppbmdgIG11c3QgYmUgZmFsc2UuCgpMZXQmIzM5O3MgZ2V0IHJlYWR5IGZvciB0aGUgYHNldC1yZXN1bHRzYCBjYWxsOiBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc6IGZhbHNlYCwgYEZvY3VzU3ltYm9sczogW11gLCBhbmQgYEVuYWJsZUNvbmZpZ3M6IFtdYC4KCk5vdyBJIG5lZWQgYSBjb25jaXNlIHJlYXNvbmluZyBleHBsYW5hdGlvbi4gSGVyZSBpcyB3aGF0IEkgd2lsbCBnbyB3aXRoOiAmIzM0O1RoZSBjaGFuZ2VzIG1vZGlmeSBidWZmZXIgc2l6ZSBjYWxjdWxhdGlvbnMgYW5kIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlIChTeW5vcHN5cyBJUCBjb3JlKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7CgpMZXQgbWUganVzdCB2ZXJpZnkgdGhhdCB0aGUgcmVhc29uaW5nIGlzIGNvcnJlY3QuIFllcywgdGhlIGNoYW5nZXMgYXJlIHRvIHRoZSBidWZmZXIgc2l6ZSBhbmQgc2VsZnRlc3RzLCBhbmQgdGhlIHJvb3QgaXNzdWUgaXMgdGhhdCB5b3UgKm5lZWQqIGEgc3BlY2lmaWMgU3lub3BzeXMgaGFyZHdhcmUgYW5kIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkLiBQZXJmZWN0IQoKQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ5OjU4LjY2ODUzMzY3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODQxNzI5OTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDk6NTguNjY4NTM5ODEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTg5NDQ2NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMWRkOTcxZjE1YzkwY2MzYzJhY2QwNzZlOTVjYWFmMmQzMjZjZjk2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDIxOjQ5OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggNjJjMzQ0MTkxMWU3MS4uMjliOTcwNTc0YTM4MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC0xNTM2LDE3ICsxNTM2LDE3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3RtbWFjX3J4X29mZnNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcdHJldHVybiBORVRfU0tCX1BBRCArIE5FVF9JUF9BTElHTjtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbXR1KVxcbitzdGF0aWMgaW50IHN0bW1hY19zZXRfYmZzaXplKGludCBsZW4pXFxuIHtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdGlmIChtdHUgXFx1MDAzZT0gQlVGX1NJWkVfOEtpQilcXG4rXFx0aWYgKGxlbiBcXHUwMDNlIEJVRl9TSVpFXzhLaUIpXFxuIFxcdFxcdHJldCA9IEJVRl9TSVpFXzE2S2lCO1xcbi1cXHRlbHNlIGlmIChtdHUgXFx1MDAzZT0gQlVGX1NJWkVfNEtpQilcXG4rXFx0ZWxzZSBpZiAobGVuIFxcdTAwM2UgQlVGX1NJWkVfNEtpQilcXG4gXFx0XFx0cmV0ID0gQlVGX1NJWkVfOEtpQjtcXG4tXFx0ZWxzZSBpZiAobXR1IFxcdTAwM2U9IEJVRl9TSVpFXzJLaUIpXFxuK1xcdGVsc2UgaWYgKGxlbiBcXHUwMDNlIEJVRl9TSVpFXzJLaUIpXFxuIFxcdFxcdHJldCA9IEJVRl9TSVpFXzRLaUI7XFxuLVxcdGVsc2UgaWYgKG10dSBcXHUwMDNlIERFRkFVTFRfQlVGU0laRSlcXG4rXFx0ZWxzZSBpZiAobGVuIFxcdTAwM2UgREVGQVVMVF9CVUZTSVpFKVxcbiBcXHRcXHRyZXQgPSBCVUZfU0laRV8yS2lCO1xcbiBcXHRlbHNlXFxuIFxcdFxcdHJldCA9IERFRkFVTFRfQlVGU0laRTtcXG5AQCAtNDA2Myw3ICs0MDYzLDcgQEAgc3RhdGljIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKlxcbiBzdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mO1xcbi1cXHRpbnQgYmZzaXplLCByZXQ7XFxuK1xcdGludCBiZnNpemUsIGxlbiwgcmV0O1xcbiBcXHR1OCBjaGFuO1xcbiBcXG4gXFx0ZG1hX2NvbmYgPSBremFsbG9jX29iaigqZG1hX2NvbmYpO1xcbkBAIC00MDczLDEzICs0MDczLDE1IEBAIHN0bW1hY19zZXR1cF9kbWFfZGVzYyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBtdHUpXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBSZXR1cm5zIDAgb3IgQlVGX1NJWkVfMTZLaUIgaWYgbXR1IFxcdTAwM2UgOEtpQiBhbmQgZHdtYWM0IG9yIHJpbmcgbW9kZSAqL1xcbi1cXHRiZnNpemUgPSBzdG1tYWNfc2V0XzE2a2liX2Jmc2l6ZShwcml2LCBtdHUpO1xcbitcXHRsZW4gPSBtdHUgKyBFVEhfSExFTiArIDIgKiBWTEFOX0hMRU4gKyBFVEhfRkNTX0xFTiArIE5FVF9JUF9BTElHTjtcXG4rXFxuK1xcdC8qIFJldHVybnMgMCBvciBCVUZfU0laRV8xNktpQiBpZiBsZW4gXFx1MDAzZSA4S2lCIGFuZCBkd21hYzQgb3IgcmluZyBtb2RlICovXFxuK1xcdGJmc2l6ZSA9IHN0bW1hY19zZXRfMTZraWJfYmZzaXplKHByaXYsIGxlbik7XFxuIFxcdGlmIChiZnNpemUgXFx1MDAzYyAwKVxcbiBcXHRcXHRiZnNpemUgPSAwO1xcbiBcXG4gXFx0aWYgKGJmc2l6ZSBcXHUwMDNjIEJVRl9TSVpFXzE2S2lCKVxcbi1cXHRcXHRiZnNpemUgPSBzdG1tYWNfc2V0X2Jmc2l6ZShtdHUpO1xcbitcXHRcXHRiZnNpemUgPSBzdG1tYWNfc2V0X2Jmc2l6ZShsZW4pO1xcbiBcXG4gXFx0ZG1hX2NvbmYtXFx1MDAzZWRtYV9idWZfc3ogPSBiZnNpemU7XFxuIFxcdC8qIENob3NlIHRoZSB0eC9yeCBzaXplIGZyb20gdGhlIGFscmVhZHkgZGVmaW5lZCBvbmUgaW4gdGhlXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY1xcbmluZGV4IDYzNzJlYzdjM2YzMTcuLmNkN2RjOTkwOTVhMDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXFxuQEAgLTEyLDYgKzEyLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2wuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91ZHAuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9kc2EuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9wa3RfY2xzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcGt0X3NjaGVkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvdGNwLmhcXHUwMDNlXFxuQEAgLTI5LDYgKzMwLDcgQEAgc3RydWN0IHN0bW1hY2hkciB7XFxuIFxcdFxcdFxcdCAgICAgIHNpemVvZihzdHJ1Y3Qgc3RtbWFjaGRyKSlcXG4gI2RlZmluZSBTVE1NQUNfVEVTVF9QS1RfTUFHSUNcXHQweGRlYWRjYWZlY2FmZWRlYWRVTExcXG4gI2RlZmluZSBTVE1NQUNfTEJfVElNRU9VVFxcdG1zZWNzX3RvX2ppZmZpZXMoMjAwKVxcbisjZGVmaW5lIFNUTU1BQ19TRlRfTUFYX0xQSVxcdCg1ICogVVNFQ19QRVJfU0VDKVxcbiBcXG4gc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMge1xcbiBcXHRpbnQgdmxhbjtcXG5AQCAtMjM3LDYgKzIzOSwxMCBAQCBzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzICpwYWNrZXQ7XFxuIFxcdHN0cnVjdCBwYWNrZXRfdHlwZSBwdDtcXG4gXFx0c3RydWN0IGNvbXBsZXRpb24gY29tcDtcXG4rXFx0X19iZTE2IHBhY2tldF90eXBlO1xcbitcXHRpbnQgKCpmdW5jKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4rXFx0XFx0ICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX25kZXYpO1xcbitcXHRib29sIGNhcHR1cmVfYWxsO1xcbiBcXHRpbnQgZG91YmxlX3ZsYW47XFxuIFxcdGludCB2bGFuX2lkO1xcbiBcXHRpbnQgb2s7XFxuQEAgLTMxNiw2ICszMjIsNTAgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9sb29wYmFja192YWxpZGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBzdG1tYWNfc2Z0X2ZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX25kZXYpXFxuK3tcXG4rXFx0c3RydWN0IHN0bW1hY190ZXN0X3ByaXYgKnRwcml2ID0gcHQtXFx1MDAzZWFmX3BhY2tldF9wcml2O1xcbitcXHRzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7XFxuK1xcdGludCByZXQgPSAwO1xcbitcXG4rXFx0aWYgKGhkci1cXHUwMDNlaF9wcm90byA9PSB0cHJpdi1cXHUwMDNlcGFja2V0X3R5cGUpIHtcXG4rXFx0XFx0c3RydWN0IHNrX2J1ZmYgKm5za2IgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTtcXG4rXFxuK1xcdFxcdGlmIChuc2tiKVxcbitcXHRcXHRcXHRyZXQgPSB0cHJpdi1cXHUwMDNlZnVuYyhuc2tiLCBuZGV2LCBwdCwgb3JpZ19uZGV2KTtcXG4rXFx0fVxcbitcXG4rXFx0a2ZyZWVfc2tiKHNrYik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHN0bW1hY19zZnRfYWRkX3BhY2soc3RydWN0IHBhY2tldF90eXBlICpwdClcXG4re1xcbitcXHRzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiAqdHByaXYgPSBwdC1cXHUwMDNlYWZfcGFja2V0X3ByaXY7XFxuK1xcbitcXHRpZiAobmV0ZGV2X3VzZXNfZHNhKHRwcml2LVxcdTAwM2VwdC5kZXYpIHx8IHRwcml2LVxcdTAwM2VjYXB0dXJlX2FsbCkge1xcbitcXHRcXHR0cHJpdi1cXHUwMDNlcGFja2V0X3R5cGUgPSB0cHJpdi1cXHUwMDNlcHQudHlwZTtcXG4rXFx0XFx0dHByaXYtXFx1MDAzZWZ1bmMgPSB0cHJpdi1cXHUwMDNlcHQuZnVuYztcXG4rXFxuK1xcdFxcdC8qIERTQSBjb25kdWl0IHdpbGwgcmVwb3J0IEVUSF9QX1hEU0EsIHNvIG91ciBwYWNrZXQgaGFuZGxlclxcbitcXHRcXHQgKiB3b24ndCBtYXRjaC4gTGV0J3MgcmVnaXN0ZXIgYSBFVEhfUF9BTEwgbWF0Y2ggYW5kIGZpbHRlclxcbitcXHRcXHQgKiBtYW51YWxseSBpbiBzdG1tYWNfc2Z0X2ZpbHRlci5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHRwcml2LVxcdTAwM2VwdC50eXBlID0gaHRvbnMoRVRIX1BfQUxMKTtcXG4rXFx0XFx0dHByaXYtXFx1MDAzZXB0LmZ1bmMgPSBzdG1tYWNfc2Z0X2ZpbHRlcjtcXG4rXFx0XFx0dHByaXYtXFx1MDAzZXB0Lmlnbm9yZV9vdXRnb2luZyA9IHRydWU7XFxuK1xcdH1cXG4rXFxuK1xcdGRldl9hZGRfcGFjayhwdCk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soc3RydWN0IHBhY2tldF90eXBlICpwdClcXG4re1xcbitcXHRkZXZfcmVtb3ZlX3BhY2socHQpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzICphdHRyKVxcbiB7XFxuQEAgLTMzNyw3ICszODcsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHR0cHJpdi1cXHUwMDNlcGFja2V0ID0gYXR0cjtcXG4gXFxuIFxcdGlmICghYXR0ci1cXHUwMDNlZG9udF93YWl0KVxcbi1cXHRcXHRkZXZfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuK1xcdFxcdHN0bW1hY19zZnRfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuIFxcbiBcXHRza2IgPSBzdG1tYWNfdGVzdF9nZXRfdWRwX3NrYihwcml2LCBhdHRyKTtcXG4gXFx0aWYgKCFza2IpIHtcXG5AQCAtMzYwLDcgKzQxMCw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcbiBjbGVhbnVwOlxcbiBcXHRpZiAoIWF0dHItXFx1MDAzZWRvbnRfd2FpdClcXG4tXFx0XFx0ZGV2X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbitcXHRcXHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbiBcXHRrZnJlZSh0cHJpdik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtNDE0LDEyICs0NjQsMTYgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9tbWMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0c3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqaW5pdGlhbCwgKmZpbmFsO1xcbi1cXHRpbnQgcmV0cmllcyA9IDEwO1xcbitcXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQsIG1heF9kdXJhdGlvbjtcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdGlmICghcHJpdi1cXHUwMDNlZG1hX2NhcC5lZWUgfHwgIXByaXYtXFx1MDAzZWVlZV9hY3RpdmUpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuK1xcdC8qIEJhaWwgb3V0IGlmIHRoZSBjb25maWd1cmVkIExQSSB0aW1lciBpcyB0b28gbG9uZyAqL1xcbitcXHRpZiAocHJpdi1cXHUwMDNldHhfbHBpX3RpbWVyIFxcdTAwM2UgU1RNTUFDX1NGVF9NQVhfTFBJKVxcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcbiBcXHRpbml0aWFsID0ga3phbGxvY19vYmooKmluaXRpYWwpO1xcbiBcXHRpZiAoIWluaXRpYWwpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbkBAIC00MzAsMTQgKzQ4NCwyMSBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcdFxcdGdvdG8gb3V0X2ZyZWVfaW5pdGlhbDtcXG4gXFx0fVxcbiBcXG4rXFx0LyogU25hcHNob3Qgc3RhdHMsIHdlIHdhbnQgdG8gY291bnQgdGhlIGluX2xwaSBldmVudHMuIFdlIG1heSBlbnRlclxcbitcXHQgKiBMUEkganVzdCBhZnRlciB0aGUgcGFja2V0IHdhcyBzZW50LlxcbitcXHQgKi9cXG4gXFx0bWVtY3B5KGluaXRpYWwsIFxcdTAwMjZwcml2LVxcdTAwM2V4c3RhdHMsIHNpemVvZigqaW5pdGlhbCkpO1xcbiBcXG4rXFx0LyogU2VuZCBhIGZyYW1lLCB0aGVuIHdhaXQgdG8gZW50ZXIgTFBJICovXFxuIFxcdHJldCA9IHN0bW1hY190ZXN0X21hY19sb29wYmFjayhwcml2KTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBvdXRfZnJlZV9maW5hbDtcXG4gXFxuK1xcdG1heF9kdXJhdGlvbiA9IHVzZWNzX3RvX2ppZmZpZXMoMiAqIHByaXYtXFx1MDAzZXR4X2xwaV90aW1lcik7XFxuK1xcbiBcXHQvKiBXZSBoYXZlIG5vIHRyYWZmaWMgaW4gdGhlIGxpbmUgc28sIHNvb25lciBvciBsYXRlciBpdCB3aWxsIGdvIExQSSAqL1xcbi1cXHR3aGlsZSAoLS1yZXRyaWVzKSB7XFxuK1xcdHRpbWVvdXQgPSBqaWZmaWVzICsgbWF4X2R1cmF0aW9uO1xcbitcXHR3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHtcXG4gXFx0XFx0bWVtY3B5KGZpbmFsLCBcXHUwMDI2cHJpdi1cXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XFxuIFxcbiBcXHRcXHRpZiAoZmluYWwtXFx1MDAzZWlycV90eF9wYXRoX2luX2xwaV9tb2RlX24gXFx1MDAzZVxcbkBAIC00NDYsMjAgKzUwNywzOCBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcdFxcdG1zbGVlcCgxMDApO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXJldHJpZXMpIHtcXG4rXFx0bWVtY3B5KGZpbmFsLCBcXHUwMDI2cHJpdi1cXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XFxuK1xcdGlmIChmaW5hbC1cXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcXHUwMDNjPVxcbitcXHQgICAgaW5pdGlhbC1cXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbikge1xcbiBcXHRcXHRyZXQgPSAtRVRJTUVET1VUO1xcbiBcXHRcXHRnb3RvIG91dF9mcmVlX2ZpbmFsO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZmluYWwtXFx1MDAzZWlycV90eF9wYXRoX2luX2xwaV9tb2RlX24gXFx1MDAzYz1cXG4tXFx0ICAgIGluaXRpYWwtXFx1MDAzZWlycV90eF9wYXRoX2luX2xwaV9tb2RlX24pIHtcXG4tXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0LyogUmUtc25hcHNob3QsIGFzIHdlIHdhbnQgdG8gbWVhc3VyZSBleGl0X2xwaSBldmVudHMuIFdlIHNob3VsZCBiZVxcbitcXHQgKiBpbiBMUEkgcmlnaHQgbm93LlxcbitcXHQgKi9cXG4rXFx0bWVtY3B5KGluaXRpYWwsIFxcdTAwMjZwcml2LVxcdTAwM2V4c3RhdHMsIHNpemVvZigqaW5pdGlhbCkpO1xcbitcXG4rXFx0LyogVFggc29tZXRoaW5nIHNvIHdlIGdvIG91dCBvZiBMUEkgKi9cXG4rXFx0cmV0ID0gc3RtbWFjX3Rlc3RfbWFjX2xvb3BiYWNrKHByaXYpO1xcbitcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIG91dF9mcmVlX2ZpbmFsO1xcbitcXG4rXFx0LyogV2FpdCBmb3IgdGhlIGV4aXQgTFBJIGludGVycnVwdCAqL1xcbitcXHR0aW1lb3V0ID0gamlmZmllcyArIG1heF9kdXJhdGlvbjtcXG4rXFx0d2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7XFxuK1xcdFxcdG1lbWNweShmaW5hbCwgXFx1MDAyNnByaXYtXFx1MDAzZXhzdGF0cywgc2l6ZW9mKCpmaW5hbCkpO1xcbitcXG4rXFx0XFx0aWYgKGZpbmFsLVxcdTAwM2VpcnFfdHhfcGF0aF9leGl0X2xwaV9tb2RlX24gXFx1MDAzZVxcbitcXHRcXHQgICAgaW5pdGlhbC1cXHUwMDNlaXJxX3R4X3BhdGhfZXhpdF9scGlfbW9kZV9uKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0bXNsZWVwKDEwMCk7XFxuIFxcdH1cXG4gXFxuK1xcdG1lbWNweShmaW5hbCwgXFx1MDAyNnByaXYtXFx1MDAzZXhzdGF0cywgc2l6ZW9mKCpmaW5hbCkpO1xcbiBcXHRpZiAoZmluYWwtXFx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbiBcXHUwMDNjPVxcbiBcXHQgICAgaW5pdGlhbC1cXHUwMDNlaXJxX3R4X3BhdGhfZXhpdF9scGlfbW9kZV9uKSB7XFxuLVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdHJldCA9IC1FVElNRURPVVQ7XFxuIFxcdFxcdGdvdG8gb3V0X2ZyZWVfZmluYWw7XFxuIFxcdH1cXG4gXFxuQEAgLTc2Nyw3ICs4NDYsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2Zsb3djdHJsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0dHByaXYtXFx1MDAzZXB0LmZ1bmMgPSBzdG1tYWNfdGVzdF9mbG93Y3RybF92YWxpZGF0ZTtcXG4gXFx0dHByaXYtXFx1MDAzZXB0LmRldiA9IHByaXYtXFx1MDAzZWRldjtcXG4gXFx0dHByaXYtXFx1MDAzZXB0LmFmX3BhY2tldF9wcml2ID0gdHByaXY7XFxuLVxcdGRldl9hZGRfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4rXFx0c3RtbWFjX3NmdF9hZGRfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4gXFxuIFxcdC8qIENvbXB1dGUgbWluaW11bSBudW1iZXIgb2YgcGFja2V0cyB0byBtYWtlIEZJRk8gZnVsbCAqL1xcbiBcXHRwa3RfY291bnQgPSByeF9maWZvX3NpemU7XFxuQEAgLTgyMyw3ICs5MDIsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2Zsb3djdHJsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gY2xlYW51cDpcXG4gXFx0ZGV2X21jX2RlbChwcml2LVxcdTAwM2VkZXYsIHBhZGRyKTtcXG4gXFx0ZGV2X3NldF9wcm9taXNjdWl0eShwcml2LVxcdTAwM2VkZXYsIC0xKTtcXG4tXFx0ZGV2X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbitcXHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbiBcXHRrZnJlZSh0cHJpdik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtOTIxLDYgKzEwMDAsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHR0cHJpdi1cXHUwMDNlcHQuZGV2ID0gcHJpdi1cXHUwMDNlZGV2O1xcbiBcXHR0cHJpdi1cXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcXG4gXFx0dHByaXYtXFx1MDAzZXBhY2tldCA9IFxcdTAwMjZhdHRyO1xcbitcXHR0cHJpdi1cXHUwMDNlY2FwdHVyZV9hbGwgPSB0cnVlO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogQXMgd2UgdXNlIEhBU0ggZmlsdGVyaW5nLCBmYWxzZSBwb3NpdGl2ZXMgbWF5IGFwcGVhci4gVGhpcyBpcyBhXFxuQEAgLTkyOCw3ICsxMDA4LDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X3ZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0ICogSEFTSCB2YWx1ZXMuXFxuIFxcdCAqL1xcbiBcXHR0cHJpdi1cXHUwMDNldmxhbl9pZCA9IDB4MTIzO1xcbi1cXHRkZXZfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuK1xcdHN0bW1hY19zZnRfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuIFxcbiBcXHRyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi1cXHUwMDNlZGV2LCBodG9ucyhFVEhfUF84MDIxUSksIHRwcml2LVxcdTAwM2V2bGFuX2lkKTtcXG4gXFx0aWYgKHJldClcXG5AQCAtOTY4LDcgKzEwNDgsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB2bGFuX2RlbDpcXG4gXFx0dmxhbl92aWRfZGVsKHByaXYtXFx1MDAzZWRldiwgaHRvbnMoRVRIX1BfODAyMVEpLCB0cHJpdi1cXHUwMDNldmxhbl9pZCk7XFxuIGNsZWFudXA6XFxuLVxcdGRldl9yZW1vdmVfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4rXFx0c3RtbWFjX3NmdF9yZW1vdmVfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4gXFx0a2ZyZWUodHByaXYpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTEwMTUsNiArMTA5NSw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHR0cHJpdi1cXHUwMDNlcHQuZGV2ID0gcHJpdi1cXHUwMDNlZGV2O1xcbiBcXHR0cHJpdi1cXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcXG4gXFx0dHByaXYtXFx1MDAzZXBhY2tldCA9IFxcdTAwMjZhdHRyO1xcbitcXHR0cHJpdi1cXHUwMDNlY2FwdHVyZV9hbGwgPSB0cnVlO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogQXMgd2UgdXNlIEhBU0ggZmlsdGVyaW5nLCBmYWxzZSBwb3NpdGl2ZXMgbWF5IGFwcGVhci4gVGhpcyBpcyBhXFxuQEAgLTEwMjIsNyArMTEwMyw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHQgKiBIQVNIIHZhbHVlcy5cXG4gXFx0ICovXFxuIFxcdHRwcml2LVxcdTAwM2V2bGFuX2lkID0gMHgxMjM7XFxuLVxcdGRldl9hZGRfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4rXFx0c3RtbWFjX3NmdF9hZGRfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4gXFxuIFxcdHJldCA9IHZsYW5fdmlkX2FkZChwcml2LVxcdTAwM2VkZXYsIGh0b25zKEVUSF9QXzgwMjFBRCksIHRwcml2LVxcdTAwM2V2bGFuX2lkKTtcXG4gXFx0aWYgKHJldClcXG5AQCAtMTA2Miw3ICsxMTQzLDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2R2bGFuZmlsdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHZsYW5fZGVsOlxcbiBcXHR2bGFuX3ZpZF9kZWwocHJpdi1cXHUwMDNlZGV2LCBodG9ucyhFVEhfUF84MDIxQUQpLCB0cHJpdi1cXHUwMDNldmxhbl9pZCk7XFxuIGNsZWFudXA6XFxuLVxcdGRldl9yZW1vdmVfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4rXFx0c3RtbWFjX3NmdF9yZW1vdmVfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4gXFx0a2ZyZWUodHByaXYpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTEyOTMsNyArMTM3NCw4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHN2bGFuKVxcbiBcXHR0cHJpdi1cXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcXG4gXFx0dHByaXYtXFx1MDAzZXBhY2tldCA9IFxcdTAwMjZhdHRyO1xcbiBcXHR0cHJpdi1cXHUwMDNldmxhbl9pZCA9IDB4MTIzO1xcbi1cXHRkZXZfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuK1xcdHRwcml2LVxcdTAwM2VjYXB0dXJlX2FsbCA9IHRydWU7XFxuK1xcdHN0bW1hY19zZnRfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuIFxcbiBcXHRyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi1cXHUwMDNlZGV2LCBodG9ucyhwcm90byksIHRwcml2LVxcdTAwM2V2bGFuX2lkKTtcXG4gXFx0aWYgKHJldClcXG5AQCAtMTMyMCw3ICsxNDAyLDcgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF92bGFub2ZmX2NvbW1vbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGJvb2wgc3ZsYW4pXFxuIHZsYW5fZGVsOlxcbiBcXHR2bGFuX3ZpZF9kZWwocHJpdi1cXHUwMDNlZGV2LCBodG9ucyhwcm90byksIHRwcml2LVxcdTAwM2V2bGFuX2lkKTtcXG4gY2xlYW51cDpcXG4tXFx0ZGV2X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbitcXHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbiBcXHRrZnJlZSh0cHJpdik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtMTMzMiw3ICsxNDE0LDcgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF92bGFub2ZmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFxuIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfc3ZsYW5vZmYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuLVxcdGlmICghcHJpdi1cXHUwMDNlZG1hX2NhcC5kdmxhbilcXG4rXFx0aWYgKCEocHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1RYKSlcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRyZXR1cm4gc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24ocHJpdiwgdHJ1ZSk7XFxuIH1cXG5AQCAtMTY5OSw2ICsxNzgxLDkgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2p1bWJvKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKVxcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyBhdHRyID0geyB9O1xcbiBcXHRpbnQgc2l6ZSA9IHByaXYtXFx1MDAzZWRtYV9jb25mLmRtYV9idWZfc3o7XFxuIFxcbitcXHRpZiAoIWR3bWFjX2lzX3htYWMocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlKSlcXG4rXFx0XFx0c2l6ZSAtPSBORVRfSVBfQUxJR047XFxuK1xcbiBcXHRhdHRyLmRzdCA9IHByaXYtXFx1MDAzZWRldi1cXHUwMDNlZGV2X2FkZHI7XFxuIFxcdGF0dHIubWF4X3NpemUgPSBzaXplIC0gRVRIX0ZDU19MRU47XFxuIFxcdGF0dHIucXVldWVfbWFwcGluZyA9IHF1ZXVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0OTo1OS41Mjg0MDQ0MjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU4OTgxODQ2MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBETUEgYnVmZmVyIHNpemUgaGFuZGxpbmcgYW5kIGV0aHRvb2wgc2VsZnRlc3RzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgU29DIGFuZCBQQ0kgRXRoZXJuZXQgY29udHJvbGxlcnMgKFN5bm9wc3lzIElQIGNvcmVzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KS4gQmVjYXVzZSB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIGluIHRoZSB0ZXN0IGVudmlyb25tZW50LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGExZGQ5NzFmMTVjOTBjYzNjMmFjZDA3NmU5NWNhYWYyZDMyNmNmOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAyMTo0OTo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCA2MmMzNDQxOTExZTcxLi4yOWI5NzA1NzRhMzgwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTE1MzYsMTcgKzE1MzYsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdHJldHVybiBORVRfU0tCX1BBRCArIE5FVF9JUF9BTElHTjtcbiB9XG4gXG4tc3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbXR1KVxuK3N0YXRpYyBpbnQgc3RtbWFjX3NldF9iZnNpemUoaW50IGxlbilcbiB7XG4gXHRpbnQgcmV0O1xuIFxuLVx0aWYgKG10dSBcdTAwM2U9IEJVRl9TSVpFXzhLaUIpXG4rXHRpZiAobGVuIFx1MDAzZSBCVUZfU0laRV84S2lCKVxuIFx0XHRyZXQgPSBCVUZfU0laRV8xNktpQjtcbi1cdGVsc2UgaWYgKG10dSBcdTAwM2U9IEJVRl9TSVpFXzRLaUIpXG4rXHRlbHNlIGlmIChsZW4gXHUwMDNlIEJVRl9TSVpFXzRLaUIpXG4gXHRcdHJldCA9IEJVRl9TSVpFXzhLaUI7XG4tXHRlbHNlIGlmIChtdHUgXHUwMDNlPSBCVUZfU0laRV8yS2lCKVxuK1x0ZWxzZSBpZiAobGVuIFx1MDAzZSBCVUZfU0laRV8yS2lCKVxuIFx0XHRyZXQgPSBCVUZfU0laRV80S2lCO1xuLVx0ZWxzZSBpZiAobXR1IFx1MDAzZSBERUZBVUxUX0JVRlNJWkUpXG4rXHRlbHNlIGlmIChsZW4gXHUwMDNlIERFRkFVTFRfQlVGU0laRSlcbiBcdFx0cmV0ID0gQlVGX1NJWkVfMktpQjtcbiBcdGVsc2VcbiBcdFx0cmV0ID0gREVGQVVMVF9CVUZTSVpFO1xuQEAgLTQwNjMsNyArNDA2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpcbiBzdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KVxuIHtcbiBcdHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mO1xuLVx0aW50IGJmc2l6ZSwgcmV0O1xuK1x0aW50IGJmc2l6ZSwgbGVuLCByZXQ7XG4gXHR1OCBjaGFuO1xuIFxuIFx0ZG1hX2NvbmYgPSBremFsbG9jX29iaigqZG1hX2NvbmYpO1xuQEAgLTQwNzMsMTMgKzQwNzMsMTUgQEAgc3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gXHR9XG4gXG4tXHQvKiBSZXR1cm5zIDAgb3IgQlVGX1NJWkVfMTZLaUIgaWYgbXR1IFx1MDAzZSA4S2lCIGFuZCBkd21hYzQgb3IgcmluZyBtb2RlICovXG4tXHRiZnNpemUgPSBzdG1tYWNfc2V0XzE2a2liX2Jmc2l6ZShwcml2LCBtdHUpO1xuK1x0bGVuID0gbXR1ICsgRVRIX0hMRU4gKyAyICogVkxBTl9ITEVOICsgRVRIX0ZDU19MRU4gKyBORVRfSVBfQUxJR047XG4rXG4rXHQvKiBSZXR1cm5zIDAgb3IgQlVGX1NJWkVfMTZLaUIgaWYgbGVuIFx1MDAzZSA4S2lCIGFuZCBkd21hYzQgb3IgcmluZyBtb2RlICovXG4rXHRiZnNpemUgPSBzdG1tYWNfc2V0XzE2a2liX2Jmc2l6ZShwcml2LCBsZW4pO1xuIFx0aWYgKGJmc2l6ZSBcdTAwM2MgMClcbiBcdFx0YmZzaXplID0gMDtcbiBcbiBcdGlmIChiZnNpemUgXHUwMDNjIEJVRl9TSVpFXzE2S2lCKVxuLVx0XHRiZnNpemUgPSBzdG1tYWNfc2V0X2Jmc2l6ZShtdHUpO1xuK1x0XHRiZnNpemUgPSBzdG1tYWNfc2V0X2Jmc2l6ZShsZW4pO1xuIFxuIFx0ZG1hX2NvbmYtXHUwMDNlZG1hX2J1Zl9zeiA9IGJmc2l6ZTtcbiBcdC8qIENob3NlIHRoZSB0eC9yeCBzaXplIGZyb20gdGhlIGFscmVhZHkgZGVmaW5lZCBvbmUgaW4gdGhlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXG5pbmRleCA2MzcyZWM3YzNmMzE3Li5jZDdkYzk5MDk1YTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VkcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbmV0L2RzYS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3BrdF9jbHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wa3Rfc2NoZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC90Y3AuaFx1MDAzZVxuQEAgLTI5LDYgKzMwLDcgQEAgc3RydWN0IHN0bW1hY2hkciB7XG4gXHRcdFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBzdG1tYWNoZHIpKVxuICNkZWZpbmUgU1RNTUFDX1RFU1RfUEtUX01BR0lDXHQweGRlYWRjYWZlY2FmZWRlYWRVTExcbiAjZGVmaW5lIFNUTU1BQ19MQl9USU1FT1VUXHRtc2Vjc190b19qaWZmaWVzKDIwMClcbisjZGVmaW5lIFNUTU1BQ19TRlRfTUFYX0xQSVx0KDUgKiBVU0VDX1BFUl9TRUMpXG4gXG4gc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMge1xuIFx0aW50IHZsYW47XG5AQCAtMjM3LDYgKzIzOSwxMCBAQCBzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiB7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyAqcGFja2V0O1xuIFx0c3RydWN0IHBhY2tldF90eXBlIHB0O1xuIFx0c3RydWN0IGNvbXBsZXRpb24gY29tcDtcbitcdF9fYmUxNiBwYWNrZXRfdHlwZTtcbitcdGludCAoKmZ1bmMpKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuK1x0XHQgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfbmRldik7XG4rXHRib29sIGNhcHR1cmVfYWxsO1xuIFx0aW50IGRvdWJsZV92bGFuO1xuIFx0aW50IHZsYW5faWQ7XG4gXHRpbnQgb2s7XG5AQCAtMzE2LDYgKzMyMiw1MCBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2xvb3BiYWNrX3ZhbGlkYXRlKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBzdG1tYWNfc2Z0X2ZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbitcdFx0XHQgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsXG4rXHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19uZGV2KVxuK3tcbitcdHN0cnVjdCBzdG1tYWNfdGVzdF9wcml2ICp0cHJpdiA9IHB0LVx1MDAzZWFmX3BhY2tldF9wcml2O1xuK1x0c3RydWN0IGV0aGhkciAqaGRyID0gZXRoX2hkcihza2IpO1xuK1x0aW50IHJldCA9IDA7XG4rXG4rXHRpZiAoaGRyLVx1MDAzZWhfcHJvdG8gPT0gdHByaXYtXHUwMDNlcGFja2V0X3R5cGUpIHtcbitcdFx0c3RydWN0IHNrX2J1ZmYgKm5za2IgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTtcbitcbitcdFx0aWYgKG5za2IpXG4rXHRcdFx0cmV0ID0gdHByaXYtXHUwMDNlZnVuYyhuc2tiLCBuZGV2LCBwdCwgb3JpZ19uZGV2KTtcbitcdH1cbitcbitcdGtmcmVlX3NrYihza2IpO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIHZvaWQgc3RtbWFjX3NmdF9hZGRfcGFjayhzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0KVxuK3tcbitcdHN0cnVjdCBzdG1tYWNfdGVzdF9wcml2ICp0cHJpdiA9IHB0LVx1MDAzZWFmX3BhY2tldF9wcml2O1xuK1xuK1x0aWYgKG5ldGRldl91c2VzX2RzYSh0cHJpdi1cdTAwM2VwdC5kZXYpIHx8IHRwcml2LVx1MDAzZWNhcHR1cmVfYWxsKSB7XG4rXHRcdHRwcml2LVx1MDAzZXBhY2tldF90eXBlID0gdHByaXYtXHUwMDNlcHQudHlwZTtcbitcdFx0dHByaXYtXHUwMDNlZnVuYyA9IHRwcml2LVx1MDAzZXB0LmZ1bmM7XG4rXG4rXHRcdC8qIERTQSBjb25kdWl0IHdpbGwgcmVwb3J0IEVUSF9QX1hEU0EsIHNvIG91ciBwYWNrZXQgaGFuZGxlclxuK1x0XHQgKiB3b24ndCBtYXRjaC4gTGV0J3MgcmVnaXN0ZXIgYSBFVEhfUF9BTEwgbWF0Y2ggYW5kIGZpbHRlclxuK1x0XHQgKiBtYW51YWxseSBpbiBzdG1tYWNfc2Z0X2ZpbHRlci5cbitcdFx0ICovXG4rXHRcdHRwcml2LVx1MDAzZXB0LnR5cGUgPSBodG9ucyhFVEhfUF9BTEwpO1xuK1x0XHR0cHJpdi1cdTAwM2VwdC5mdW5jID0gc3RtbWFjX3NmdF9maWx0ZXI7XG4rXHRcdHRwcml2LVx1MDAzZXB0Lmlnbm9yZV9vdXRnb2luZyA9IHRydWU7XG4rXHR9XG4rXG4rXHRkZXZfYWRkX3BhY2socHQpO1xuK31cbitcbitzdGF0aWMgdm9pZCBzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpXG4re1xuK1x0ZGV2X3JlbW92ZV9wYWNrKHB0KTtcbit9XG4rXG4gc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHRcdCAgc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMgKmF0dHIpXG4ge1xuQEAgLTMzNyw3ICszODcsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0dHByaXYtXHUwMDNlcGFja2V0ID0gYXR0cjtcbiBcbiBcdGlmICghYXR0ci1cdTAwM2Vkb250X3dhaXQpXG4tXHRcdGRldl9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4rXHRcdHN0bW1hY19zZnRfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFxuIFx0c2tiID0gc3RtbWFjX3Rlc3RfZ2V0X3VkcF9za2IocHJpdiwgYXR0cik7XG4gXHRpZiAoIXNrYikge1xuQEAgLTM2MCw3ICs0MTAsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFxuIGNsZWFudXA6XG4gXHRpZiAoIWF0dHItXHUwMDNlZG9udF93YWl0KVxuLVx0XHRkZXZfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuK1x0XHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcdGtmcmVlKHRwcml2KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTQxNCwxMiArNDY0LDE2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbW1jKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqaW5pdGlhbCwgKmZpbmFsO1xuLVx0aW50IHJldHJpZXMgPSAxMDtcbitcdHVuc2lnbmVkIGxvbmcgdGltZW91dCwgbWF4X2R1cmF0aW9uO1xuIFx0aW50IHJldDtcbiBcbiBcdGlmICghcHJpdi1cdTAwM2VkbWFfY2FwLmVlZSB8fCAhcHJpdi1cdTAwM2VlZWVfYWN0aXZlKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4rXHQvKiBCYWlsIG91dCBpZiB0aGUgY29uZmlndXJlZCBMUEkgdGltZXIgaXMgdG9vIGxvbmcgKi9cbitcdGlmIChwcml2LVx1MDAzZXR4X2xwaV90aW1lciBcdTAwM2UgU1RNTUFDX1NGVF9NQVhfTFBJKVxuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXG4gXHRpbml0aWFsID0ga3phbGxvY19vYmooKmluaXRpYWwpO1xuIFx0aWYgKCFpbml0aWFsKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC00MzAsMTQgKzQ4NCwyMSBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfaW5pdGlhbDtcbiBcdH1cbiBcbitcdC8qIFNuYXBzaG90IHN0YXRzLCB3ZSB3YW50IHRvIGNvdW50IHRoZSBpbl9scGkgZXZlbnRzLiBXZSBtYXkgZW50ZXJcbitcdCAqIExQSSBqdXN0IGFmdGVyIHRoZSBwYWNrZXQgd2FzIHNlbnQuXG4rXHQgKi9cbiBcdG1lbWNweShpbml0aWFsLCBcdTAwMjZwcml2LVx1MDAzZXhzdGF0cywgc2l6ZW9mKCppbml0aWFsKSk7XG4gXG4rXHQvKiBTZW5kIGEgZnJhbWUsIHRoZW4gd2FpdCB0byBlbnRlciBMUEkgKi9cbiBcdHJldCA9IHN0bW1hY190ZXN0X21hY19sb29wYmFjayhwcml2KTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfZmluYWw7XG4gXG4rXHRtYXhfZHVyYXRpb24gPSB1c2Vjc190b19qaWZmaWVzKDIgKiBwcml2LVx1MDAzZXR4X2xwaV90aW1lcik7XG4rXG4gXHQvKiBXZSBoYXZlIG5vIHRyYWZmaWMgaW4gdGhlIGxpbmUgc28sIHNvb25lciBvciBsYXRlciBpdCB3aWxsIGdvIExQSSAqL1xuLVx0d2hpbGUgKC0tcmV0cmllcykge1xuK1x0dGltZW91dCA9IGppZmZpZXMgKyBtYXhfZHVyYXRpb247XG4rXHR3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHtcbiBcdFx0bWVtY3B5KGZpbmFsLCBcdTAwMjZwcml2LVx1MDAzZXhzdGF0cywgc2l6ZW9mKCpmaW5hbCkpO1xuIFxuIFx0XHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcdTAwM2VcbkBAIC00NDYsMjAgKzUwNywzOCBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRcdG1zbGVlcCgxMDApO1xuIFx0fVxuIFxuLVx0aWYgKCFyZXRyaWVzKSB7XG4rXHRtZW1jcHkoZmluYWwsIFx1MDAyNnByaXYtXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XG4rXHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcdTAwM2M9XG4rXHQgICAgaW5pdGlhbC1cdTAwM2VpcnFfdHhfcGF0aF9pbl9scGlfbW9kZV9uKSB7XG4gXHRcdHJldCA9IC1FVElNRURPVVQ7XG4gXHRcdGdvdG8gb3V0X2ZyZWVfZmluYWw7XG4gXHR9XG4gXG4tXHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcdTAwM2M9XG4tXHQgICAgaW5pdGlhbC1cdTAwM2VpcnFfdHhfcGF0aF9pbl9scGlfbW9kZV9uKSB7XG4tXHRcdHJldCA9IC1FSU5WQUw7XG4rXHQvKiBSZS1zbmFwc2hvdCwgYXMgd2Ugd2FudCB0byBtZWFzdXJlIGV4aXRfbHBpIGV2ZW50cy4gV2Ugc2hvdWxkIGJlXG4rXHQgKiBpbiBMUEkgcmlnaHQgbm93LlxuK1x0ICovXG4rXHRtZW1jcHkoaW5pdGlhbCwgXHUwMDI2cHJpdi1cdTAwM2V4c3RhdHMsIHNpemVvZigqaW5pdGlhbCkpO1xuK1xuK1x0LyogVFggc29tZXRoaW5nIHNvIHdlIGdvIG91dCBvZiBMUEkgKi9cbitcdHJldCA9IHN0bW1hY190ZXN0X21hY19sb29wYmFjayhwcml2KTtcbitcdGlmIChyZXQpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfZmluYWw7XG4rXG4rXHQvKiBXYWl0IGZvciB0aGUgZXhpdCBMUEkgaW50ZXJydXB0ICovXG4rXHR0aW1lb3V0ID0gamlmZmllcyArIG1heF9kdXJhdGlvbjtcbitcdHdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkge1xuK1x0XHRtZW1jcHkoZmluYWwsIFx1MDAyNnByaXYtXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XG4rXG4rXHRcdGlmIChmaW5hbC1cdTAwM2VpcnFfdHhfcGF0aF9leGl0X2xwaV9tb2RlX24gXHUwMDNlXG4rXHRcdCAgICBpbml0aWFsLVx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbilcbitcdFx0XHRicmVhaztcbitcdFx0bXNsZWVwKDEwMCk7XG4gXHR9XG4gXG4rXHRtZW1jcHkoZmluYWwsIFx1MDAyNnByaXYtXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XG4gXHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfZXhpdF9scGlfbW9kZV9uIFx1MDAzYz1cbiBcdCAgICBpbml0aWFsLVx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbikge1xuLVx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRyZXQgPSAtRVRJTUVET1VUO1xuIFx0XHRnb3RvIG91dF9mcmVlX2ZpbmFsO1xuIFx0fVxuIFxuQEAgLTc2Nyw3ICs4NDYsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2Zsb3djdHJsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdHRwcml2LVx1MDAzZXB0LmZ1bmMgPSBzdG1tYWNfdGVzdF9mbG93Y3RybF92YWxpZGF0ZTtcbiBcdHRwcml2LVx1MDAzZXB0LmRldiA9IHByaXYtXHUwMDNlZGV2O1xuIFx0dHByaXYtXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcbi1cdGRldl9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4rXHRzdG1tYWNfc2Z0X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcbiBcdC8qIENvbXB1dGUgbWluaW11bSBudW1iZXIgb2YgcGFja2V0cyB0byBtYWtlIEZJRk8gZnVsbCAqL1xuIFx0cGt0X2NvdW50ID0gcnhfZmlmb19zaXplO1xuQEAgLTgyMyw3ICs5MDIsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2Zsb3djdHJsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBjbGVhbnVwOlxuIFx0ZGV2X21jX2RlbChwcml2LVx1MDAzZWRldiwgcGFkZHIpO1xuIFx0ZGV2X3NldF9wcm9taXNjdWl0eShwcml2LVx1MDAzZWRldiwgLTEpO1xuLVx0ZGV2X3JlbW92ZV9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbitcdHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFx0a2ZyZWUodHByaXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtOTIxLDYgKzEwMDAsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0dHByaXYtXHUwMDNlcHQuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4gXHR0cHJpdi1cdTAwM2VwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2O1xuIFx0dHByaXYtXHUwMDNlcGFja2V0ID0gXHUwMDI2YXR0cjtcbitcdHRwcml2LVx1MDAzZWNhcHR1cmVfYWxsID0gdHJ1ZTtcbiBcbiBcdC8qXG4gXHQgKiBBcyB3ZSB1c2UgSEFTSCBmaWx0ZXJpbmcsIGZhbHNlIHBvc2l0aXZlcyBtYXkgYXBwZWFyLiBUaGlzIGlzIGFcbkBAIC05MjgsNyArMTAwOCw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF92bGFuZmlsdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHQgKiBIQVNIIHZhbHVlcy5cbiBcdCAqL1xuIFx0dHByaXYtXHUwMDNldmxhbl9pZCA9IDB4MTIzO1xuLVx0ZGV2X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbitcdHN0bW1hY19zZnRfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFxuIFx0cmV0ID0gdmxhbl92aWRfYWRkKHByaXYtXHUwMDNlZGV2LCBodG9ucyhFVEhfUF84MDIxUSksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIFx0aWYgKHJldClcbkBAIC05NjgsNyArMTA0OCw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF92bGFuZmlsdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gdmxhbl9kZWw6XG4gXHR2bGFuX3ZpZF9kZWwocHJpdi1cdTAwM2VkZXYsIGh0b25zKEVUSF9QXzgwMjFRKSwgdHByaXYtXHUwMDNldmxhbl9pZCk7XG4gY2xlYW51cDpcbi1cdGRldl9yZW1vdmVfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4rXHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcdGtmcmVlKHRwcml2KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTEwMTUsNiArMTA5NSw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0dHByaXYtXHUwMDNlcHQuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4gXHR0cHJpdi1cdTAwM2VwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2O1xuIFx0dHByaXYtXHUwMDNlcGFja2V0ID0gXHUwMDI2YXR0cjtcbitcdHRwcml2LVx1MDAzZWNhcHR1cmVfYWxsID0gdHJ1ZTtcbiBcbiBcdC8qXG4gXHQgKiBBcyB3ZSB1c2UgSEFTSCBmaWx0ZXJpbmcsIGZhbHNlIHBvc2l0aXZlcyBtYXkgYXBwZWFyLiBUaGlzIGlzIGFcbkBAIC0xMDIyLDcgKzExMDMsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfZHZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdCAqIEhBU0ggdmFsdWVzLlxuIFx0ICovXG4gXHR0cHJpdi1cdTAwM2V2bGFuX2lkID0gMHgxMjM7XG4tXHRkZXZfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuK1x0c3RtbWFjX3NmdF9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4gXG4gXHRyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi1cdTAwM2VkZXYsIGh0b25zKEVUSF9QXzgwMjFBRCksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIFx0aWYgKHJldClcbkBAIC0xMDYyLDcgKzExNDMsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfZHZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB2bGFuX2RlbDpcbiBcdHZsYW5fdmlkX2RlbChwcml2LVx1MDAzZWRldiwgaHRvbnMoRVRIX1BfODAyMUFEKSwgdHByaXYtXHUwMDNldmxhbl9pZCk7XG4gY2xlYW51cDpcbi1cdGRldl9yZW1vdmVfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4rXHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcdGtmcmVlKHRwcml2KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTEyOTMsNyArMTM3NCw4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHN2bGFuKVxuIFx0dHByaXYtXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcbiBcdHRwcml2LVx1MDAzZXBhY2tldCA9IFx1MDAyNmF0dHI7XG4gXHR0cHJpdi1cdTAwM2V2bGFuX2lkID0gMHgxMjM7XG4tXHRkZXZfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuK1x0dHByaXYtXHUwMDNlY2FwdHVyZV9hbGwgPSB0cnVlO1xuK1x0c3RtbWFjX3NmdF9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4gXG4gXHRyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi1cdTAwM2VkZXYsIGh0b25zKHByb3RvKSwgdHByaXYtXHUwMDNldmxhbl9pZCk7XG4gXHRpZiAocmV0KVxuQEAgLTEzMjAsNyArMTQwMiw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHN2bGFuKVxuIHZsYW5fZGVsOlxuIFx0dmxhbl92aWRfZGVsKHByaXYtXHUwMDNlZGV2LCBodG9ucyhwcm90byksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIGNsZWFudXA6XG4tXHRkZXZfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuK1x0c3RtbWFjX3NmdF9yZW1vdmVfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4gXHRrZnJlZSh0cHJpdik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC0xMzMyLDcgKzE0MTQsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X3ZsYW5vZmYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFxuIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfc3ZsYW5vZmYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbi1cdGlmICghcHJpdi1cdTAwM2VkbWFfY2FwLmR2bGFuKVxuK1x0aWYgKCEocHJpdi1cdTAwM2VkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1RYKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0cmV0dXJuIHN0bW1hY190ZXN0X3ZsYW5vZmZfY29tbW9uKHByaXYsIHRydWUpO1xuIH1cbkBAIC0xNjk5LDYgKzE3ODEsOSBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfanVtYm8oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4gXHRzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyBhdHRyID0geyB9O1xuIFx0aW50IHNpemUgPSBwcml2LVx1MDAzZWRtYV9jb25mLmRtYV9idWZfc3o7XG4gXG4rXHRpZiAoIWR3bWFjX2lzX3htYWMocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSkpXG4rXHRcdHNpemUgLT0gTkVUX0lQX0FMSUdOO1xuK1xuIFx0YXR0ci5kc3QgPSBwcml2LVx1MDAzZWRldi1cdTAwM2VkZXZfYWRkcjtcbiBcdGF0dHIubWF4X3NpemUgPSBzaXplIC0gRVRIX0ZDU19MRU47XG4gXHRhdHRyLnF1ZXVlX21hcHBpbmcgPSBxdWV1ZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ5OjU5LjUyODQwNzQxOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI0MDEzNjQ0MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgdGhlIFByb3Bvc2VkIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggc2VyaWVzIHRhcmdldGluZyB0aGUgTGludXgga2VybmVsLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIHNlZSB3aGF0IGl0IGFjdHVhbGx5IHRvdWNoZXM6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY2AuIFJpZ2h0LCBgc3RtbWFjYC4uLiB0aGF0J3MgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBNQUMgZHJpdmVyLiBJdCBzdXBwb3J0cyBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyBhbmQgcmVsYXRlZCBoYXJkd2FyZS5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIEkgcmVhbGlzdGljYWxseSB0ZXN0IHRoaXMgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciwgbW9yZSBsaWtlbHksIFFFTVU/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgcmVhY2hhYmlsaXR5IGd1aWRlbGluZXMuIEhvbGQgb24uLi4gKm5lZ2F0aXZlIGNyaXRlcmlhKiwgbWVhbmluZywgd2hlbiBzaG91bGQgSSBOT1QgZnV6eiB0aGlzPyBBaCwgcmlnaHQ6IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4gVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMg4oCTIHRoaW5ncyByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgd2VsbCBpbiBzdGFuZGFyZCBRRU1VLiBPbiB0aGUgZmxpcCBzaWRlLCB3aGF0ICppcyogcmVhY2hhYmxlPyBWaXJ0dWFsIGJ1c2VzOiB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy5cblxuU28sICppcyogYHN0bW1hY2AgYSBQQ0kgZGV2aWNlLCBvciBpcyBpdCBhIHBsYXRmb3JtIGRldmljZSB0aGF0ICpjb3VsZCogYmUgZW11bGF0ZWQgaW4gUUVNVT8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIFFFTVUgZW11bGF0ZXMgZHdtYWMgb3Igc3RtbWFjIGRpcmVjdGx5LCBvciBpZiBpdCB1c2VzIFBDSSBiaW5kaW5ncy4gVGltZSB0byBicmVhayBvdXQgdGhlIGBncmVwYCBhbmQgc2VlIHdoYXQgaGFyZHdhcmUgdGhpcyBgc3RtbWFjYCBkcml2ZXIgYWN0dWFsbHkgc3VwcG9ydHMgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU1NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjUwOjIzLjU0MjA1NDU4M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTIyNDcyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01Mz1vYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVxcdCs9IGR3bWFjLW1vdG9yY29tbS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTQ6c3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTI1PXN0cnVjdCBpbnRlbF9wcml2X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQwOnN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00MS1cXHR1bnNpZ25lZCBpbnQgZnVuYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTpzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NjpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00Ny1cXHRzaXplX3QgbmZ1bmNzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjUwOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTEtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MT1zdGF0aWMgY29uc3QgaW50IGFkbG5fdHNuX2xhbmVfcmVnc1tdID0gezZ9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MzpzdGF0aWMgaW50IHN0bW1hY19wY2lfZmluZF9waHlfYWRkcihzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk0LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2xpc3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmNfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk3OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhICpkbWlfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4LVxcdGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkICpkbWlfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc4Nj1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MDY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3NnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgwNy1cXHQuc2V0dXAgPSBlaGxfc2dtaWlfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODEwPXN0YXRpYyBpbnQgZWhsX3JnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgyMTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIyLVxcdC5zZXR1cCA9IGVobF9yZ21paV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDE9c3RhdGljIGludCBlaGxfcHNlMF9yZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg0ODpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9yZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDktXFx0LnNldHVwID0gZWhsX3BzZTBfcmdtaWkxZ19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NTI9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg3MDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9zZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NzEtXFx0LnNldHVwID0gZWhsX3BzZTBfc2dtaWkxZ19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04OTA9c3RhdGljIGludCBlaGxfcHNlMV9yZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg5NzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMV9yZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTgtXFx0LnNldHVwID0gZWhsX3BzZTFfcmdtaWkxZ19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MDE9c3RhdGljIGludCBlaGxfcHNlMV9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkxOTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMV9zZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MjAtXFx0LnNldHVwID0gZWhsX3BzZTFfc2dtaWkxZ19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NDQ9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NTM6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTU0LVxcdC5zZXR1cCA9IHRnbF9zZ21paV9waHkwX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk1Nz1zdGF0aWMgaW50IHRnbF9zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk2NjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyB0Z2xfc2dtaWkxZ19waHkxX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjctXFx0LnNldHVwID0gdGdsX3NnbWlpX3BoeTFfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTcwPXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk4MDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTgxLVxcdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05ODQ9c3RhdGljIGludCBhZGxzX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTk0OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbHNfc2dtaWkxZ19waHkxX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OTUtXFx0LnNldHVwID0gYWRsc19zZ21paV9waHkxX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMjM9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsbl9zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDMtXFx0LnNldHVwID0gYWRsbl9zZ21paV9waHkwX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgZ2FsaWxlb19zdG1tYWNfZnVuY19kYXRhW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQ3LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNTM6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGdhbGlsZW9fc3RtbWFjX2RtaV9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1NC1cXHQuZnVuYyA9IGdhbGlsZW9fc3RtbWFjX2Z1bmNfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNTg6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBpb3QyMDQwX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTktXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA2OTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgaW90MjA0MF9zdG1tYWNfZG1pX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDcwLVxcdC5mdW5jID0gaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMTA5PXN0YXRpYyBpbnQgcXVhcmtfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTE5LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTEyMDpcXHRyZXQgPSBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIocGRldiwgcXVhcmtfcGNpX2RtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTIxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTQ1OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHF1YXJrX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ2LVxcdC5zZXR1cCA9IHF1YXJrX2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTI2NjpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjY3LVxcdHN0cnVjdCBpbnRlbF9wcml2X2RhdGEgKmludGVsX3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTc2PXN0cnVjdCBsb29uZ3Nvbl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo4MjpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgzLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTMyPXN0YXRpYyBpbnQgbG9vbmdzb25fZ21hY19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ21hY19wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0My1cXHQuc2V0dXAgPSBsb29uZ3Nvbl9nbWFjX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTE2NT1zdGF0aWMgaW50IGxvb25nc29uX2duZXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTc3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2duZXRfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNzgtXFx0LnNldHVwID0gbG9vbmdzb25fZ25ldF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDEtXFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MDI6XFx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMy1cXHRzdHJ1Y3QgbG9vbmdzb25fZGF0YSAqbGQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUzNy1cXHRwbGF0LVxcdTAwM2VmaXhfc29jX3Jlc2V0ID0gbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTM4OlxcdHBsYXQtXFx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzOTpcXHRwbGF0LVxcdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQwLVxcdGxkLVxcdTAwM2VkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XFx0aW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVxcdHJldCA9IGluZm8tXFx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MTg4PXN0YXRpYyBpbnQgbW90b3Jjb21tX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE5MzpcXHRyZXQgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKGRldiwgYnNwX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjA4PW1vdG9yY29tbV9kZWZhdWx0X3BsYXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI0OC1cXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGVcXHRcXHQ9IERXTUFDX0NPUkVfR01BQzQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ5OlxcdHBsYXQtXFx1MDAzZXN1c3BlbmRcXHRcXHQ9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1MC1cXHRwbGF0LVxcdTAwM2VyZXN1bWVcXHRcXHQ9IG1vdG9yY29tbV9yZXN1bWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjEyOmludCBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0xMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyNjpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyODppbnQgc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzo0NDpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6OTppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oOjEwOmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaC0xMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTEtXFx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01ND1zdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE4OnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODA6XFx0cGxhdC1cXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODE6XFx0cGxhdC1cXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTg3OiAqIHN0bW1hY19wY2lfcmVtb3ZlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTkyOnN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNDpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA1OlxcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA2LVxcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXFx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTU6XFx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE2OlxcdC5yZW1vdmUgPSBzdG1tYWNfcGNpX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE3LVxcdC5kcml2ZXIgICAgICAgICA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6MjMuNTkxMjg1NzIzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDgxMjM0NTI4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFNUTU1BQyBhbmQgRGVzaWduV2FyZSBNQUMgRW11bGF0aW9uIGluIFFFTVUgZm9yIEFNRDY0KipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLiBJJ20gc2VlaW5nIHJlZmVyZW5jZXMgdG8gU1RNTUFDIGFuZCBEZXNpZ25XYXJlIE1BQyBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYHN0bW1hY19wY2kuY2AsIGBkd21hYy1pbnRlbC5jYCwgYW5kIHNpbWlsYXIgZmlsZXMuIFRoZSBgUENJX0RFVklDRV9EQVRBYCBlbnRyaWVzIHN1Z2dlc3QgdGhlc2UgYXJlIFBDSS1iYXNlZCBldGhlcm5ldCBjb250cm9sbGVycywgd2hpY2ggcmFpc2VzIGEga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQ6IEFyZSB0aGVzZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIG9yIGFueXdoZXJlIGVhc2lseSBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nPyBJIG5lZWQgdG8gY2hlY2suXG5cblRoZSBXb3J0aEZ1enppbmcgY3JpdGVyaWEgZ2l2ZSBzb21lIG5lZ2F0aXZlIGV4YW1wbGVzIHdoaWNoIGxlYWRzIG1lIHRvIHVuZGVyc3RhbmQgdGhlIGNyaXRlcmlhLiBMb29raW5nIGF0IHRoZSBkb2N1bWVudGF0aW9uLCBpdCBzZWVtcyBsaWtlIHBoeXNpY2FsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgYW5kIFNtYXJ0TklDcywgYXJlIGEgbm8tZ28gZm9yIHRoaXMgcHJvamVjdC4gRHJpdmVycyByZWFjaGFibGUgdGhyb3VnaCB2aXJ0dWFsIGJ1c2VzIGFyZSB0aGUgZm9jdXMuXG5cblNvLCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciBRRU1VIHByb3ZpZGVzIGFuICplbXVsYXRlZCogdmVyc2lvbiBvZiBlaXRoZXIgU1RNTUFDIG9yIERlc2lnbldhcmUgTUFDLiBUaGUgZG9jdW1lbnRhdGlvbiBpbmRpY2F0ZXMgdGhhdCBRRU1VIGRvZXMgZW11bGF0ZSBEZXNpZ25XYXJlIE1BQ3MsIGJ1dCB0aGlzIGlzIHByaW1hcmlseSBmb3IgQVJNIGJvYXJkcyBsaWtlIEFsbHdpbm5lciBhbmQgU3VueGksIGJ1dCBub3Qgb24geDg2IHBsYXRmb3Jtcy4gT24geDg2L2FtZDY0LCBRRU1VIHVzZXMgZTEwMDAsIGUxMDAwZSwgdm14bmV0MywgcnRsODEzOSwgdmlydGlvLW5ldCwgYW5kIGEgaGFuZGZ1bCBvZiBvdGhlciBOSUMgZW11bGF0aW9ucy5cblxuSSdtIG5vdyBpbnZlc3RpZ2F0aW5nLCBkb2VzIFFFTVUgZW11bGF0ZSBkd21hYyBvciBzdG1tYWMgYXMgUENJIGRldmljZXMsIG9yIGlzIHRoZXJlIGEgXCJkd21hYy1wY2lcIiBvciBcInN0bW1hYy1wY2lcIiBkZXZpY2U/XG5cbkNoZWNraW5nIHRoZSBRRU1VIGRldmljZSBsaXN0LCBJIHNlZSBzcGVjaWZpYyBBUk0gU29DIGJvYXJkLXNwZWNpZmljIGVtdWxhdGVkIE1BQ3MsIGJ1dCBub3RoaW5nIGV4cGxpY2l0bHkgbGFiZWxlZCBhcyBcImR3bWFjLXBjaVwiIG9yIFwic3RtbWFjLXBjaVwiLiBJIHNlZSBgYWxsd2lubmVyX2VtYWNgLCBldGMsIGJ1dCBub3RoaW5nIHRoYXQgd291bGQgZml0IGEgZ2VuZXJhbCB4ODYvYW1kNjQgUENJIHNldHVwLlxuXG5HaXZlbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhpcyBuYXJyb3dzIHRoZSBwb3NzaWJpbGl0aWVzIGZ1cnRoZXIuIE5vdyBJIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBLY29uZmlnIGZpbGVzLCBzcGVjaWZpY2FsbHkgZm9yIFNUTU1BQywgU1RNTUFDX0VUSCwgYW5kIFNUTU1BQ19QQ0kgdG8gc2VlIGlmIHRoZXJlIGlzIGNvbmRpdGlvbmFsIGJ1aWxkIHN1cHBvcnQgb3IgY2x1ZXMgYXMgdG8gdGhlIGVtdWxhdGVkIGF2YWlsYWJpbGl0eSBvZiB0aGVzZSBkZXZpY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTUxNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDoyOC40MDM2MzMzNzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3OTUyNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDpjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3Mzpjb25maWcgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDoyOC40NTA0MzU2MzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMDA4MjI5MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCB0aGlua2luZyBhYm91dCB0aGUgS2NvbmZpZyBmaWxlOlxuXG4qKkludmVzdGlnYXRpbmcgU1RNTUFDIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSA0MDAgdG8gNDMwIGxpbmUgcmFuZ2UuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB0aGVyZS4gSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZmVhdHVyZXMgdGhhdCBjYW4gYmUgdHVybmVkIG9uIG9yIG9mZiBmb3IgdGhlIE1BQyBpdHNlbGYuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgbmV3IG9wdGlvbnMgYWRkZWQgaW4gdGhlIHJlY2VudCB2ZXJzaW9ucy4gTGV0IG1lIHNlZSB3aGF0IGtpbmQgb2YgY3VzdG9taXphdGlvbnMgdGhleSBzdXBwb3J0IGhlcmUsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGVyZSBhcmUgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIG9yIG90aGVyIGRldmljZSB0cmVlcy4gSG9wZWZ1bGx5LCBpdCdzIHdlbGwtZG9jdW1lbnRlZC4gVGltZSB0byBnZXQgdG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTMzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6MzAuNDU4NjY4ODM1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MDA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDAxOlxcdFxcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXFxuIDQwMjpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MDM6XFx0XFx0aGVscFxcbiA0MDQ6XFx0XFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcXG4gNDA1OlxcdFxcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXFxuIDQwNjpcXHRcXG4gNDA3OlxcdGNvbmZpZyBTVE1NQUNfUENJXFxuIDQwODpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4gNDA5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQxMDpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gNDExOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQxMjpcXHRcXHRoZWxwXFxuIDQxMzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiA0MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcXG4gNDE1OlxcdFxcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxcbiA0MTY6XFx0XFxuIDQxNzpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuIDQxODpcXHRcXG4gNDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gNDIwOlxcdGVuZGlmICMgU1RNTUFDX0VUSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDozMC40NTg3NTA5MDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0OTQ4MzYwMzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBsaW5lcyBmcm9tIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uIGFzIGlmIHRoZXkgd2VyZSBteSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIHN0bW1hYyBLY29uZmlnIC0gTGluZXMgMS00MCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIuIEZvY3VzaW5nIG9uIGxpbmVzIDEtNDAsIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgdGhpcyBkcml2ZXIuIEknbSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIGRlcGVuZGVuY2llcywgdGhpbmdzIGxpa2UgdGhlIGRldmljZSB0cmVlIHN1cHBvcnQsIG1heWJlIFBIWSBjb25maWd1cmF0aW9ucywgYW5kIGNlcnRhaW5seSwgdGhlIGZ1bmRhbWVudGFsIGVuYWJsZS9kaXNhYmxlIHRvZ2dsZXMgZm9yIHRoZSBkcml2ZXIgaXRzZWxmLlxuXG5GaXJzdCwgSSdtIHNjYW5uaW5nIGZvciB0aGUgZ2VuZXJhbCBgY29uZmlnIFNUTU1BQ2AgZW50cnkuIFRoaXMgaXMgdGhlIGJpZyBvbmUsIHRoZSBtYXN0ZXIgc3dpdGNoLiBJdCdzIHRoZSBnYXRla2VlcGVyLiBUaGVuLCBJIGV4cGVjdCB0byBzZWUgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMuIFRoZXNlIGFyZSBjcnVjaWFsOyB0aGV5IGRpY3RhdGUgdGhlIGVudmlyb25tZW50IHRoZSBkcml2ZXIgbmVlZHMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlPyBBIHBhcnRpY3VsYXIgcGxhdGZvcm0gdGhhdCAqbXVzdCogYmUgcHJlc2VudD8gVGhhdCdzIHdoYXQgSSdsbCBiZSBsb29raW5nIGZvciDigJMgdGhlIGFyY2hpdGVjdHVyYWwgZGVwZW5kZW5jaWVzLlxuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IHN5bWJvbCB0aGF0IG1pZ2h0IGVuYWJsZSBvciBkaXNhYmxlIGZlYXR1cmVzIGJhc2VkIG9uIGhhcmR3YXJlLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBzcGVjaWZpYyBjaGlwcyBvciBmYW1pbGllcy4gRm9yIGV4YW1wbGUsIHNvbWUgaGFyZHdhcmUgcmV2aXNpb25zIG1pZ2h0IG5lZWQgc3BlY2lhbCBoYW5kbGluZy4gQW55IGBzZWxlY3RgIHN0YXRlbWVudHMgYXJlIGFsc28gY3JpdGljYWwsIGJlY2F1c2UgdGhleSBpbXBsaWNpdGx5IHNldCBvdGhlciBjb25maWd1cmF0aW9ucy5cblxuRmluYWxseSwgSSdsbCBiZSBjaGVja2luZyBpZiB0aGVyZSBhcmUgYW55IG9wdGlvbnMgdGhhdCBoZWxwIG1lIHRvIGNvbmZpZ3VyZSBkZWJ1Z2dpbmcgb3Igb3B0aW9uYWwgZmVhdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzI2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDozNS40MDcxMTQwNDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDozNS40MDcxOTgxODhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjgwMDMxNjYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBgc3RtbWFjYCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIGNhbiBJIGFjdHVhbGx5IGludGVyYWN0IHdpdGggYHN0bW1hY2Agd2l0aG91dCByZWFsIGhhcmR3YXJlPyBJcyBpdCBzdHJpY3RseSBhIGhhcmR3YXJlLWRlcGVuZGVudCBkcml2ZXI/IExldCdzIGNsYXJpZnkuICpZZXMqLCBpdCdzIGEgZHJpdmVyIGZvciBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIHRoZSBTeW5vcHN5cyBJUCBDb3JlLiBSaWdodCwgYW5kIGl0J3MgdXNlZCBvbiBhIGJ1bmNoIG9mIFNvQ3MgbGlrZSBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgYW5kIEFsdGVyYSBTT0NGUEdBLiBUaGV5IGV2ZW4gdGVzdGVkIGl0IG9uIGEgWGlsaW54IFZpcnRleCBGUEdBIGFuZCBhIFN5bm9wc3lzIHByb3RvdHlwaW5nIGtpdCwgd2hpY2ggcmVpbmZvcmNlcyB0aGUgcGh5c2ljYWwgbmF0dXJlLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gdGhpcyB0aGluZyBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBhIGR1bW15IG9yIHBsYXRmb3JtIGRldmljZSBzb21laG93PyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSdzIGFueSB3YXkgdG8gbW9jayBvciB2aXJ0dWFsaXplIGl0LiBNeSBuZXh0IHN0ZXA6IGxldCBtZSBncmVwIHRoZSBjb2RlYmFzZSDigJMgc3BlY2lmaWNhbGx5LCBJJ20gbG9va2luZyBmb3IgdXNhZ2VzIG9mIGBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJgIG9yIGFueXRoaW5nIHNpbWlsYXIsIGVpdGhlciB3aXRoaW4gdGhlIGBzdG1tYWNgIGNvZGUgaXRzZWxmIG9yIGFueXdoZXJlIHJlbGV2YW50LiBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgaGludCBvZiBhIHNvZnR3YXJlLWJhc2VkIGludGVyZmFjZSBvciBpZiBpdCdzIHB1cmVseSB0aWVkIHRvIHBoeXNpY2FsIE5JQ3MuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW5zdGFudGlhdGlvbiBjYXBhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjQzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6MzguMjA3NTE3Nzk0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjkwODkzMzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hYy4qcGxhdGZvcm1fZGV2aWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY4PXN0YXRpYyBpbnQgZHdtYWMxMDAwX3ZhbGlkYXRlX3VjYXN0X2VudHJpZXMoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtOTMtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6OTQ6c3RhdGljIHN0cnVjdCBzdG1tYWNfYXhpICpzdG1tYWNfYXhpX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtMTI5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjEzMDpzdGF0aWMgaW50IHN0bW1hY19tdGxfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy0xMzEtXFx0XFx0XFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTQxMz1zdGF0aWMgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo0MTQ6c3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTQxNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz02NTc9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NTg6ZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY3NT1zdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjY3NjpkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NjkyPUVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbHRmcl9maW5kX2Nsayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy03MDMtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NzA0OnN0YXRpYyBpbnQgc3RtbWFjX3BsdGZyX2dldF9pcnFfYXJyYXkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy03MDUtXFx0XFx0XFx0XFx0ICAgICAgY29uc3QgY2hhciAqZm10LCBpbnQgKmlycXMsIHNpemVfdCBudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy03MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NzMwOmludCBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTczMS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODMxPXN0YXRpYyBpbnQgc3RtbWFjX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDUtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODQ2OmludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDctXFx0XFx0ICAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg1OT1zdGF0aWMgdm9pZCBkZXZtX3N0bW1hY19wbHRmcl9yZW1vdmUodm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg3My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NzQ6aW50IGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODc1LVxcdFxcdFxcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04ODc9RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODk0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg5NTp2b2lkIHN0bW1hY19wbHRmcl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04OTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MTQ9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoxNTpkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MTc9c3RydWN0IGNsayAqc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMDppbnQgc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yMS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMzppbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjQtXFx0XFx0ICAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yNS1cXHRcXHQgICAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg6MjY6aW50IGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjctXFx0XFx0XFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yOC1cXHRcXHRcXHQgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg6Mjk6dm9pZCBzdG1tYWNfcGx0ZnJfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTMwLWV4dGVybiBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBzdG1tYWNfcGx0ZnJfcG1fb3BzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDo0MC40OTg0MTYyODhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6OTI4MTA3NDcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBzdG1tYWNgIERyaXZlcidzIEVtdWxhdGlvbiBhbmQgVGVzdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgc3RtbWFjYCwgYW4gRXRoZXJuZXQgTUFDIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBhbmQgU3lub3BzeXMgRGVzaWduV2FyZSBNQUNzLiBUaGUgY29yZSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgb3Igbm90IHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIGVtdWxhdGVzIGFueSBoYXJkd2FyZSByZWxhdGVkIHRvIGBzdG1tYWNgIG9yIGEgU3lub3BzeXMgRFdNQUMgZGV2aWNlIG9uIGFuIGFtZDY0IGFyY2hpdGVjdHVyZS5cblxuTGV0IG1lIHRoaW5r4oCmIHRoZSBwcm92aWRlZCBpbnN0cnVjdGlvbnMgZXhwbGljaXRseSBzdGF0ZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgaW5jbHVkZXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcy4gVGhpbmdzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YC4gU2luY2UgdGhlIHRleHQgY2FsbHMgb3V0IHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMgZm9yIHRob3NlIGRldmljZXMsIEkgc2hvdWxkIGNoZWNrIHdoYXQgaXMgYXZhaWxhYmxlIGluIFFFTVUuXG5cbkFscmlnaHQsIHdoYXQgRXRoZXJuZXQgTklDcyAqYXJlKiBlbXVsYXRlZCBpbiBRRU1VIG9uIHg4Ni9hbWQ2ND8gSSBrbm93IHRoZXJlJ3MgYGUxMDAwYCwgYGUxMDAwZWAsIGFuZCBgaWdiYCwgYWxzbyBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGB2bXhuZXQzYCwgYHZpcnRpby1uZXQtcGNpYCwgYW5kIHNvbWV0aW1lcyBgcm9ja2VyYCwgYW5kIFVTQi1iYXNlZCBOSUNzIGxpa2UgYHJ0bDgxNTBgIGFuZCBgYXNpeGAuXG5cbk5vdywgZG9lcyBRRU1VIGhhdmUgc3VwcG9ydCBmb3IgYHN0bW1hY2Agb3IgYGR3bWFjYD8gTGV0IG1lIHNlZeKApiBJIHNob3VsZCBjaGVjayB0aGUgYGh3L25ldC9gIGRpcmVjdG9yeSBpbiB0aGUgUUVNVSBzb3VyY2UuIE9rYXksIHRoZSBsaXN0IGluY2x1ZGVzIGEgbG90IG9mIGRpZmZlcmVudCBlbXVsYXRlZCBOSUNzIOKAkyBgYWxsd2lubmVyX3N1bjhpX2VtYWNgLCBgY2FkZW5jZV9nZW1gLCBgZHA4MzkzeGAsIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgbWFueSBvdGhlcnMuIEJ1dCwgd2FpdCwgSSBkb24ndCBzZWUgYW55dGhpbmcgZXhwbGljaXRseSBuYW1lZCBgc3RtbWFjYCBvciBgZHdtYWNgIGluIHRoZXJlLiBUaGlzIHN1Z2dlc3RzIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIGBzdG1tYWNgIGRyaXZlciBvciBhbnkgRFdNQUMsIGV2ZW4gaWYgSSB3YXMgcnVubmluZyBhIFFFTVUgQVJNIG9yIEFBcmNoNjQgaW5zdGFuY2UuIE9uIGFtZDY0LCBpdCdzIGRlZmluaXRlbHkgbm90IGVtdWxhdGVkLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIGEgZGlmZmVyZW50IGF2ZW51ZSwgY2FuIHN5emthbGxlciBldmVuIGludGVyYWN0IHdpdGggdGhpcz8gRG9lcyBzeXprYWxsZXIgaGF2ZSB0aGUgY2FwYWNpdHkgdG8gaW5zdGFudGlhdGUgYHN0bW1hY2A/IEl0IGxvb2tzIGxpa2UgYHN0bW1hY2AgKnJlcXVpcmVzKiBwaHlzaWNhbCBoYXJkd2FyZTogUENJIGRldmljZXMgZnJvbSBTVE1NQUMsIFNUTUlDUk8sIFNZTk9QU1lTLCBJbnRlbCwgTG9vbmdzb24sIG9yIE1vdG9yY29tbSwgb3IgcGxhdGZvcm0gZGV2aWNlcyBmcm9tIERldmljZSBUcmVlIG9yIEFDUEkuIFNpbmNlIHN5emthbGxlciBydW5zIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIFZNcywgaXQgY2FuJ3QgcHJvYmUgb3IgZXhlY3V0ZSBgc3RtbWFjYCBiZWNhdXNlIGl0IGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuTm93LCBsZXQncyBtb3ZlIG9uIHRvIHRoZSBjb2RlIGNoYW5nZXM6IHRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX3NldF9iZnNpemVgIGFuZCBgc3RtbWFjX3NldHVwX2RtYV9kZXNjYCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLCBhbmQgYWxzbyBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCB3aGljaCBpbmNsdWRlcyBldGh0b29sIHNlbGZ0ZXN0cyBmb3IgYHN0bW1hY2AuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMsIGFyZSBgc3RtbWFjX3NlbGZ0ZXN0c2Agb3IgY2FsbHMgdG8gYHN0bW1hY19zZXR1cF9kbWFfZGVzY2AgcmVhY2hhYmxlIGZyb20gKmFueSogdmlydHVhbCBkcml2ZXIgb3IgdGhlIGNvcmUgc3Vic3lzdGVtPyBMZXQgbWUgc2VlLiBJJ2xsIHNlYXJjaCBmb3IgY2FsbHMgdG8gYHN0bW1hY19zZXR1cF9kbWFfZGVzY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTYzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjUwOjQ5Ljc3OTQ5MzI1M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyODk3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3NldHVwX2RtYV9kZXNjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwMzk9c3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA1My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNTQ6ICogIHN0bW1hY19zZXR1cF9kbWFfZGVzYyAtIEdlbmVyYXRlIGEgZG1hX2NvbmYgYW5kIGFsbG9jYXRlIERNQSBxdWV1ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA1NS0gKiAgQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDYyPXN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNjM6c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTk4PXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMDg6XFx0ZG1hX2NvbmYgPSBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MocHJpdiwgZGV2LVxcdTAwM2VtdHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIwOS1cXHRpZiAoSVNfRVJSKGRtYV9jb25mKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjEzOT1zdGF0aWMgaW50IHN0bW1hY19jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTY1LVxcdFxcdC8qIFRyeSB0byBhbGxvY2F0ZSB0aGUgbmV3IERNQSBjb25mIHdpdGggdGhlIG5ldyBtdHUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxNjY6XFx0XFx0ZG1hX2NvbmYgPSBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MocHJpdiwgbXR1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNjctXFx0XFx0aWYgKElTX0VSUihkbWFfY29uZikpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6NDkuODI0Nzg2ODUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI2Mzc3MDU4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWxhdGlvbnNoaXAgQmV0d2VlbiBETUEgRGVzY3JpcHRvciBTZXR1cCBhbmQgU2VsZi1UZXN0cyBpbiB0aGUgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgc3RtbWFjYCBFdGhlcm5ldCBkcml2ZXIsIGFuZCB0d28ga2V5IHBhcnRzIGFyZSBqdW1waW5nIG91dCBhdCBtZTogYHN0bW1hY19zZXR1cF9kbWFfZGVzY2AgYW5kIHRoZSBzZWxmLXRlc3RzIGltcGxlbWVudGVkIGluIGBzdG1tYWNfc2VsZnRlc3RzLmNgLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZXkncmUgYm90aCBpbnRlZ3JhbCBjb21wb25lbnRzIHdpdGhpbiB0aGlzIGRyaXZlci4gSSdtIG5vdGluZyB0aGF0IGBzdG1tYWNfc2V0dXBfZG1hX2Rlc2NgIHBsYXlzIGEgY3J1Y2lhbCByb2xlIGluIGluaXRpYWxpemluZyBvciByZWNvbmZpZ3VyaW5nIHRoZSBETUEgZGVzY3JpcHRvcnMsIGFzIGl0J3MgY2FsbGVkIGJ5IHRoZSBgc3RtbWFjX29wZW4oKWAgZnVuY3Rpb24sIHdoaWNoIGlzLCBvYnZpb3VzbHksIHVzZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgYW5kIGBzdG1tYWNfY2hhbmdlX210dSgpYCwgd2hpY2ggaXMgdXNlZCwgdW5zdXJwcmlzaW5nbHksIHdoZW4gdGhlIE1UVSAoTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCkgaXMgbW9kaWZpZWQsIHJlcXVpcmluZyBhIHJlLXNldHVwIG9mIHRoZSBkZXNjcmlwdG9ycy5cblxuTm93LCB0aGUgc2VsZi10ZXN0IGFzcGVjdCwgdGhhdCdzIHJlc2lkaW5nIHdpdGhpbiBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCB3aGljaCwgaXQncyBjbGVhciwgaW1wbGVtZW50cyB0aGUgc2VsZi10ZXN0IGZ1bmN0aW9uYWxpdHkuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2tlZCBieSBgc3RtbWFjX3NlbGZ0ZXN0X3J1bigpYCwgd2hpY2ggaXMgZGlyZWN0bHkgdGllZCB0byB0aGUgYGV0aHRvb2xfb3BzLVx1MDAzZXNlbGZfdGVzdGAgaG9vayBmb3IgYHN0bW1hY2AuIFNvLCB0aGUgZW50aXJlIHNlbGYtdGVzdCBtZWNoYW5pc20gaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgc3RhbmRhcmQgZXRodG9vbCBpbnRlcmZhY2UuIEdpdmVuIHRoZSBjb250ZXh0LCBpdCBtaWdodCBiZSBpbnN0cnVjdGl2ZSB0byBjaGVjayBvdXQgYHN0bW1hY19zZWxmdGVzdF9ydW5gLCBpbiB0aGUgY29kZWJhc2UsIHRvIHZlcmlmeSB0aGUgYWN0dWFsIGNvbnRyb2wgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0NzIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6NTIuNDYyNDk1NjUxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzI5MzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfc2VsZnRlc3RfcnVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MzI9c3RydWN0IHRpbWVzcGVjNjQgc3RtbWFjX2NhbGNfdGFzX2Jhc2V0aW1lKGt0aW1lX3Qgb2xkX2Jhc2VfdGltZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQzNi0jaWYgSVNfRU5BQkxFRChDT05GSUdfU1RNTUFDX1NFTEZURVNUUylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0Mzc6dm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDM4LVxcdFxcdFxcdCBzdHJ1Y3QgZXRodG9vbF90ZXN0ICpldGVzdCwgdTY0ICpidWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDQwPWludCBzdG1tYWNfc2VsZnRlc3RfZ2V0X2NvdW50KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDQxLSNlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDQyOnN0YXRpYyBpbmxpbmUgdm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDQzLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF90ZXN0ICpldGVzdCwgdTY0ICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jPTEwOTU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBzdG1tYWNfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTExMDgtXFx0LnNldF9wYXVzZXBhcmFtID0gc3RtbWFjX3NldF9wYXVzZXBhcmFtLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MTEwOTpcXHQuc2VsZl90ZXN0ID0gc3RtbWFjX3NlbGZ0ZXN0X3J1bixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTExMTAtXFx0LmdldF9ldGh0b29sX3N0YXRzID0gc3RtbWFjX2dldF9ldGh0b29sX3N0YXRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jPTE5MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfdGVzdCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjAxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjAxNzp2b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjAxOC1cXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfdGVzdCAqZXRlc3QsIHU2NCAqYnVmKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDo1Mi41Mjk3OTU0OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1OTgwNDI3ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgVmVyZGljdDogV29ydGhGdXp6aW5nID0gZmFsc2UqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gbXkgdW5kZXJzdGFuZGluZywgYHN0bW1hY19zZWxmdGVzdF9ydW5gIGlzIGV4Y2x1c2l2ZWx5IHRyaWdnZXJlZCBieSBldGh0b29sJ3MgYHNlbGZfdGVzdGAgb24gYSBuZXRkZXYgaW5pdGlhbGl6ZWQgYnkgdGhlIGBzdG1tYWNgIGRyaXZlci4gYHN0bW1hY2AsIGFzIEkga25vdyBpdCwgaXMgYSBkcml2ZXIgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgSVAgb3IgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBoYXJkd2FyZS4gU28sIHRvIGV2ZW4gKmdldCogdG8gdGhpcyBjb2RlLCB5b3UgKm5lZWQqIGEgcGh5c2ljYWwgZGV2aWNlIHRoYXQgYHN0bW1hY2Agc3VwcG9ydHMsIG9yLCBhbiBlbXVsYXRlZCBvbmUsIHdoaWNoIGlzbid0IHByZXNlbnQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGVudmlyb25tZW50cy5cblxuTm93LCBsZXQncyBxdWlja2x5IHJlLWNoZWNrIFNlY3Rpb24gMiBvZiB0aGUgdHJpYWdlIGluc3RydWN0aW9ucy4gSXQgZXhwbGljaXRseSBzYXlzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBjZXJ0YWluIG5lZ2F0aXZlIGNhdGVnb3JpZXMsIGFuZCBvbmUgb2YgdGhlbSBpcyBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiLiBTcGVjaWZpY2FsbHksIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBtZW50aW9uIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJpbmcgcGh5c2ljYWwgY2FyZHMgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCdzICpleGFjdGx5KiB3aGF0IHRoaXMgaXM6IHdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIHBoeXNpY2FsIGBzdG1tYWNgIGhhcmR3YXJlLCBub3Qgc29tZXRoaW5nIHlvdSBjYW4gZWFzaWx5IHNwb29mLlxuXG5BbGwgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNgLiBUaGlzIGNvbmZpcm1zIGl0OiB0aGlzIGlzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBtZWFucyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlICh0aGUgU3lub3BzeXMgSVAgY29yZSkgaXMgcmVxdWlyZWQuIFRoYXQncyBub3QgZW11bGF0ZWQgaW4gdGhlIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSBvbiBhbWQ2NC4gVGhlcmVmb3JlLCB0aGUgY29kZSAqaXMqIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgc3l6a2FsbGVyIGZ1enppbmcuXG5cblRodXMsIGJhc2VkIG9uIHRoZSB0cmlhZ2UgaW5zdHJ1Y3Rpb25zIGFuZCBteSBleHBlcnQga25vd2xlZGdlLCBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIGZhbHNlLlxuXG5MZXQncyBnZXQgcmVhZHkgZm9yIHRoZSBgc2V0LXJlc3VsdHNgIGNhbGw6IEkgd2lsbCBzZXQgYFdvcnRoRnV6emluZzogZmFsc2VgLCBgRm9jdXNTeW1ib2xzOiBbXWAsIGFuZCBgRW5hYmxlQ29uZmlnczogW11gLlxuXG5Ob3cgSSBuZWVkIGEgY29uY2lzZSByZWFzb25pbmcgZXhwbGFuYXRpb24uIEhlcmUgaXMgd2hhdCBJIHdpbGwgZ28gd2l0aDogXCJUaGUgY2hhbmdlcyBtb2RpZnkgYnVmZmVyIHNpemUgY2FsY3VsYXRpb25zIGFuZCBzZWxmdGVzdHMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgU29DIG9yIFBDSSBoYXJkd2FyZSAoU3lub3BzeXMgSVAgY29yZSkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIlxuXG5MZXQgbWUganVzdCB2ZXJpZnkgdGhhdCB0aGUgcmVhc29uaW5nIGlzIGNvcnJlY3QuIFllcywgdGhlIGNoYW5nZXMgYXJlIHRvIHRoZSBidWZmZXIgc2l6ZSBhbmQgc2VsZnRlc3RzLCBhbmQgdGhlIHJvb3QgaXNzdWUgaXMgdGhhdCB5b3UgKm5lZWQqIGEgc3BlY2lmaWMgU3lub3BzeXMgaGFyZHdhcmUgYW5kIHRoYXQgaXNuJ3QgZW11bGF0ZWQuIFBlcmZlY3QhXG5cbkFscmlnaHQsIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY4MSwiT3V0cHV0VG9rZW5zIjoxMjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6NTguNTEwMjI1NTQ3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6NTguNTEwMjUyNzg3WiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow72z2t[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 21:31:34 +0000 UTC FinishedAt: 2026-09-11 21:50:59 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGExZGQ5NzFmMTVjOTBjYzNjMmFjZDA3NmU5NWNhYWYyZDMyNmNmOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAyMTo0OTo1NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggNjJjMzQ0MTkxMWU3MS4uMjliOTcwNTc0YTM4MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0xNTM2LDE3ICYjNDM7MTUzNiwxNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHN0bW1hY19yeF9vZmZzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0cmV0dXJuIE5FVF9TS0JfUEFEICYjNDM7IE5FVF9JUF9BTElHTjtcbiB9XG4gXG4tc3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbXR1KVxuJiM0MztzdGF0aWMgaW50IHN0bW1hY19zZXRfYmZzaXplKGludCBsZW4pXG4ge1xuIFx0aW50IHJldDtcbiBcbi1cdGlmIChtdHUgXHUwMDNlPSBCVUZfU0laRV84S2lCKVxuJiM0MztcdGlmIChsZW4gXHUwMDNlIEJVRl9TSVpFXzhLaUIpXG4gXHRcdHJldCA9IEJVRl9TSVpFXzE2S2lCO1xuLVx0ZWxzZSBpZiAobXR1IFx1MDAzZT0gQlVGX1NJWkVfNEtpQilcbiYjNDM7XHRlbHNlIGlmIChsZW4gXHUwMDNlIEJVRl9TSVpFXzRLaUIpXG4gXHRcdHJldCA9IEJVRl9TSVpFXzhLaUI7XG4tXHRlbHNlIGlmIChtdHUgXHUwMDNlPSBCVUZfU0laRV8yS2lCKVxuJiM0MztcdGVsc2UgaWYgKGxlbiBcdTAwM2UgQlVGX1NJWkVfMktpQilcbiBcdFx0cmV0ID0gQlVGX1NJWkVfNEtpQjtcbi1cdGVsc2UgaWYgKG10dSBcdTAwM2UgREVGQVVMVF9CVUZTSVpFKVxuJiM0MztcdGVsc2UgaWYgKGxlbiBcdTAwM2UgREVGQVVMVF9CVUZTSVpFKVxuIFx0XHRyZXQgPSBCVUZfU0laRV8yS2lCO1xuIFx0ZWxzZVxuIFx0XHRyZXQgPSBERUZBVUxUX0JVRlNJWkU7XG5AQCAtNDA2Myw3ICYjNDM7NDA2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpcbiBzdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KVxuIHtcbiBcdHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mO1xuLVx0aW50IGJmc2l6ZSwgcmV0O1xuJiM0MztcdGludCBiZnNpemUsIGxlbiwgcmV0O1xuIFx0dTggY2hhbjtcbiBcbiBcdGRtYV9jb25mID0ga3phbGxvY19vYmooKmRtYV9jb25mKTtcbkBAIC00MDczLDEzICYjNDM7NDA3MywxNSBAQCBzdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiBcdH1cbiBcbi1cdC8qIFJldHVybnMgMCBvciBCVUZfU0laRV8xNktpQiBpZiBtdHUgXHUwMDNlIDhLaUIgYW5kIGR3bWFjNCBvciByaW5nIG1vZGUgKi9cbi1cdGJmc2l6ZSA9IHN0bW1hY19zZXRfMTZraWJfYmZzaXplKHByaXYsIG10dSk7XG4mIzQzO1x0bGVuID0gbXR1ICYjNDM7IEVUSF9ITEVOICYjNDM7IDIgKiBWTEFOX0hMRU4gJiM0MzsgRVRIX0ZDU19MRU4gJiM0MzsgTkVUX0lQX0FMSUdOO1xuJiM0MztcbiYjNDM7XHQvKiBSZXR1cm5zIDAgb3IgQlVGX1NJWkVfMTZLaUIgaWYgbGVuIFx1MDAzZSA4S2lCIGFuZCBkd21hYzQgb3IgcmluZyBtb2RlICovXG4mIzQzO1x0YmZzaXplID0gc3RtbWFjX3NldF8xNmtpYl9iZnNpemUocHJpdiwgbGVuKTtcbiBcdGlmIChiZnNpemUgXHUwMDNjIDApXG4gXHRcdGJmc2l6ZSA9IDA7XG4gXG4gXHRpZiAoYmZzaXplIFx1MDAzYyBCVUZfU0laRV8xNktpQilcbi1cdFx0YmZzaXplID0gc3RtbWFjX3NldF9iZnNpemUobXR1KTtcbiYjNDM7XHRcdGJmc2l6ZSA9IHN0bW1hY19zZXRfYmZzaXplKGxlbik7XG4gXG4gXHRkbWFfY29uZi1cdTAwM2VkbWFfYnVmX3N6ID0gYmZzaXplO1xuIFx0LyogQ2hvc2UgdGhlIHR4L3J4IHNpemUgZnJvbSB0aGUgYWxyZWFkeSBkZWZpbmVkIG9uZSBpbiB0aGVcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcbmluZGV4IDYzNzJlYzdjM2YzMTcuLmNkN2RjOTkwOTVhMDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY1xuQEAgLTEyLDYgJiM0MzsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VkcC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9kc2EuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wa3RfY2xzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGt0X3NjaGVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvdGNwLmhcdTAwM2VcbkBAIC0yOSw2ICYjNDM7MzAsNyBAQCBzdHJ1Y3Qgc3RtbWFjaGRyIHtcbiBcdFx0XHQgICAgICBzaXplb2Yoc3RydWN0IHN0bW1hY2hkcikpXG4gI2RlZmluZSBTVE1NQUNfVEVTVF9QS1RfTUFHSUNcdDB4ZGVhZGNhZmVjYWZlZGVhZFVMTFxuICNkZWZpbmUgU1RNTUFDX0xCX1RJTUVPVVRcdG1zZWNzX3RvX2ppZmZpZXMoMjAwKVxuJiM0MzsjZGVmaW5lIFNUTU1BQ19TRlRfTUFYX0xQSVx0KDUgKiBVU0VDX1BFUl9TRUMpXG4gXG4gc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMge1xuIFx0aW50IHZsYW47XG5AQCAtMjM3LDYgJiM0MzsyMzksMTAgQEAgc3RydWN0IHN0bW1hY190ZXN0X3ByaXYge1xuIFx0c3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMgKnBhY2tldDtcbiBcdHN0cnVjdCBwYWNrZXRfdHlwZSBwdDtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXA7XG4mIzQzO1x0X19iZTE2IHBhY2tldF90eXBlO1xuJiM0MztcdGludCAoKmZ1bmMpKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuJiM0MztcdFx0ICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX25kZXYpO1xuJiM0MztcdGJvb2wgY2FwdHVyZV9hbGw7XG4gXHRpbnQgZG91YmxlX3ZsYW47XG4gXHRpbnQgdmxhbl9pZDtcbiBcdGludCBvaztcbkBAIC0zMTYsNiAmIzQzOzMyMiw1MCBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2xvb3BiYWNrX3ZhbGlkYXRlKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgc3RtbWFjX3NmdF9maWx0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4mIzQzO1x0XHRcdCAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19uZGV2KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHN0bW1hY190ZXN0X3ByaXYgKnRwcml2ID0gcHQtXHUwMDNlYWZfcGFja2V0X3ByaXY7XG4mIzQzO1x0c3RydWN0IGV0aGhkciAqaGRyID0gZXRoX2hkcihza2IpO1xuJiM0MztcdGludCByZXQgPSAwO1xuJiM0MztcbiYjNDM7XHRpZiAoaGRyLVx1MDAzZWhfcHJvdG8gPT0gdHByaXYtXHUwMDNlcGFja2V0X3R5cGUpIHtcbiYjNDM7XHRcdHN0cnVjdCBza19idWZmICpuc2tiID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKG5za2IpXG4mIzQzO1x0XHRcdHJldCA9IHRwcml2LVx1MDAzZWZ1bmMobnNrYiwgbmRldiwgcHQsIG9yaWdfbmRldik7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRrZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfc2Z0X2FkZF9wYWNrKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiAqdHByaXYgPSBwdC1cdTAwM2VhZl9wYWNrZXRfcHJpdjtcbiYjNDM7XG4mIzQzO1x0aWYgKG5ldGRldl91c2VzX2RzYSh0cHJpdi1cdTAwM2VwdC5kZXYpIHx8IHRwcml2LVx1MDAzZWNhcHR1cmVfYWxsKSB7XG4mIzQzO1x0XHR0cHJpdi1cdTAwM2VwYWNrZXRfdHlwZSA9IHRwcml2LVx1MDAzZXB0LnR5cGU7XG4mIzQzO1x0XHR0cHJpdi1cdTAwM2VmdW5jID0gdHByaXYtXHUwMDNlcHQuZnVuYztcbiYjNDM7XG4mIzQzO1x0XHQvKiBEU0EgY29uZHVpdCB3aWxsIHJlcG9ydCBFVEhfUF9YRFNBLCBzbyBvdXIgcGFja2V0IGhhbmRsZXJcbiYjNDM7XHRcdCAqIHdvbiYjMzk7dCBtYXRjaC4gTGV0JiMzOTtzIHJlZ2lzdGVyIGEgRVRIX1BfQUxMIG1hdGNoIGFuZCBmaWx0ZXJcbiYjNDM7XHRcdCAqIG1hbnVhbGx5IGluIHN0bW1hY19zZnRfZmlsdGVyLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHR0cHJpdi1cdTAwM2VwdC50eXBlID0gaHRvbnMoRVRIX1BfQUxMKTtcbiYjNDM7XHRcdHRwcml2LVx1MDAzZXB0LmZ1bmMgPSBzdG1tYWNfc2Z0X2ZpbHRlcjtcbiYjNDM7XHRcdHRwcml2LVx1MDAzZXB0Lmlnbm9yZV9vdXRnb2luZyA9IHRydWU7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRkZXZfYWRkX3BhY2socHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpXG4mIzQzO3tcbiYjNDM7XHRkZXZfcmVtb3ZlX3BhY2socHQpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHQgIHN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzICphdHRyKVxuIHtcbkBAIC0zMzcsNyAmIzQzOzM4Nyw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHR0cHJpdi1cdTAwM2VwYWNrZXQgPSBhdHRyO1xuIFxuIFx0aWYgKCFhdHRyLVx1MDAzZWRvbnRfd2FpdClcbi1cdFx0ZGV2X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiYjNDM7XHRcdHN0bW1hY19zZnRfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFxuIFx0c2tiID0gc3RtbWFjX3Rlc3RfZ2V0X3VkcF9za2IocHJpdiwgYXR0cik7XG4gXHRpZiAoIXNrYikge1xuQEAgLTM2MCw3ICYjNDM7NDEwLDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcbiBjbGVhbnVwOlxuIFx0aWYgKCFhdHRyLVx1MDAzZWRvbnRfd2FpdClcbi1cdFx0ZGV2X3JlbW92ZV9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiYjNDM7XHRcdHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFx0a2ZyZWUodHByaXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtNDE0LDEyICYjNDM7NDY0LDE2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbW1jKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqaW5pdGlhbCwgKmZpbmFsO1xuLVx0aW50IHJldHJpZXMgPSAxMDtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIHRpbWVvdXQsIG1heF9kdXJhdGlvbjtcbiBcdGludCByZXQ7XG4gXG4gXHRpZiAoIXByaXYtXHUwMDNlZG1hX2NhcC5lZWUgfHwgIXByaXYtXHUwMDNlZWVlX2FjdGl2ZSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuJiM0MztcdC8qIEJhaWwgb3V0IGlmIHRoZSBjb25maWd1cmVkIExQSSB0aW1lciBpcyB0b28gbG9uZyAqL1xuJiM0MztcdGlmIChwcml2LVx1MDAzZXR4X2xwaV90aW1lciBcdTAwM2UgU1RNTUFDX1NGVF9NQVhfTFBJKVxuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcbiBcdGluaXRpYWwgPSBremFsbG9jX29iaigqaW5pdGlhbCk7XG4gXHRpZiAoIWluaXRpYWwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuQEAgLTQzMCwxNCAmIzQzOzQ4NCwyMSBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfaW5pdGlhbDtcbiBcdH1cbiBcbiYjNDM7XHQvKiBTbmFwc2hvdCBzdGF0cywgd2Ugd2FudCB0byBjb3VudCB0aGUgaW5fbHBpIGV2ZW50cy4gV2UgbWF5IGVudGVyXG4mIzQzO1x0ICogTFBJIGp1c3QgYWZ0ZXIgdGhlIHBhY2tldCB3YXMgc2VudC5cbiYjNDM7XHQgKi9cbiBcdG1lbWNweShpbml0aWFsLCBcdTAwMjZwcml2LVx1MDAzZXhzdGF0cywgc2l6ZW9mKCppbml0aWFsKSk7XG4gXG4mIzQzO1x0LyogU2VuZCBhIGZyYW1lLCB0aGVuIHdhaXQgdG8gZW50ZXIgTFBJICovXG4gXHRyZXQgPSBzdG1tYWNfdGVzdF9tYWNfbG9vcGJhY2socHJpdik7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dF9mcmVlX2ZpbmFsO1xuIFxuJiM0MztcdG1heF9kdXJhdGlvbiA9IHVzZWNzX3RvX2ppZmZpZXMoMiAqIHByaXYtXHUwMDNldHhfbHBpX3RpbWVyKTtcbiYjNDM7XG4gXHQvKiBXZSBoYXZlIG5vIHRyYWZmaWMgaW4gdGhlIGxpbmUgc28sIHNvb25lciBvciBsYXRlciBpdCB3aWxsIGdvIExQSSAqL1xuLVx0d2hpbGUgKC0tcmV0cmllcykge1xuJiM0MztcdHRpbWVvdXQgPSBqaWZmaWVzICYjNDM7IG1heF9kdXJhdGlvbjtcbiYjNDM7XHR3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHtcbiBcdFx0bWVtY3B5KGZpbmFsLCBcdTAwMjZwcml2LVx1MDAzZXhzdGF0cywgc2l6ZW9mKCpmaW5hbCkpO1xuIFxuIFx0XHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcdTAwM2VcbkBAIC00NDYsMjAgJiM0Mzs1MDcsMzggQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9lZWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0XHRtc2xlZXAoMTAwKTtcbiBcdH1cbiBcbi1cdGlmICghcmV0cmllcykge1xuJiM0MztcdG1lbWNweShmaW5hbCwgXHUwMDI2cHJpdi1cdTAwM2V4c3RhdHMsIHNpemVvZigqZmluYWwpKTtcbiYjNDM7XHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcdTAwM2M9XG4mIzQzO1x0ICAgIGluaXRpYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbikge1xuIFx0XHRyZXQgPSAtRVRJTUVET1VUO1xuIFx0XHRnb3RvIG91dF9mcmVlX2ZpbmFsO1xuIFx0fVxuIFxuLVx0aWYgKGZpbmFsLVx1MDAzZWlycV90eF9wYXRoX2luX2xwaV9tb2RlX24gXHUwMDNjPVxuLVx0ICAgIGluaXRpYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbikge1xuLVx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdC8qIFJlLXNuYXBzaG90LCBhcyB3ZSB3YW50IHRvIG1lYXN1cmUgZXhpdF9scGkgZXZlbnRzLiBXZSBzaG91bGQgYmVcbiYjNDM7XHQgKiBpbiBMUEkgcmlnaHQgbm93LlxuJiM0MztcdCAqL1xuJiM0MztcdG1lbWNweShpbml0aWFsLCBcdTAwMjZwcml2LVx1MDAzZXhzdGF0cywgc2l6ZW9mKCppbml0aWFsKSk7XG4mIzQzO1xuJiM0MztcdC8qIFRYIHNvbWV0aGluZyBzbyB3ZSBnbyBvdXQgb2YgTFBJICovXG4mIzQzO1x0cmV0ID0gc3RtbWFjX3Rlc3RfbWFjX2xvb3BiYWNrKHByaXYpO1xuJiM0MztcdGlmIChyZXQpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfZmluYWw7XG4mIzQzO1xuJiM0MztcdC8qIFdhaXQgZm9yIHRoZSBleGl0IExQSSBpbnRlcnJ1cHQgKi9cbiYjNDM7XHR0aW1lb3V0ID0gamlmZmllcyAmIzQzOyBtYXhfZHVyYXRpb247XG4mIzQzO1x0d2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7XG4mIzQzO1x0XHRtZW1jcHkoZmluYWwsIFx1MDAyNnByaXYtXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGZpbmFsLVx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbiBcdTAwM2VcbiYjNDM7XHRcdCAgICBpbml0aWFsLVx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbilcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRtc2xlZXAoMTAwKTtcbiBcdH1cbiBcbiYjNDM7XHRtZW1jcHkoZmluYWwsIFx1MDAyNnByaXYtXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XG4gXHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfZXhpdF9scGlfbW9kZV9uIFx1MDAzYz1cbiBcdCAgICBpbml0aWFsLVx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbikge1xuLVx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0cmV0ID0gLUVUSU1FRE9VVDtcbiBcdFx0Z290byBvdXRfZnJlZV9maW5hbDtcbiBcdH1cbiBcbkBAIC03NjcsNyAmIzQzOzg0Niw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfZmxvd2N0cmwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0dHByaXYtXHUwMDNlcHQuZnVuYyA9IHN0bW1hY190ZXN0X2Zsb3djdHJsX3ZhbGlkYXRlO1xuIFx0dHByaXYtXHUwMDNlcHQuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4gXHR0cHJpdi1cdTAwM2VwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2O1xuLVx0ZGV2X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiYjNDM7XHRzdG1tYWNfc2Z0X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcbiBcdC8qIENvbXB1dGUgbWluaW11bSBudW1iZXIgb2YgcGFja2V0cyB0byBtYWtlIEZJRk8gZnVsbCAqL1xuIFx0cGt0X2NvdW50ID0gcnhfZmlmb19zaXplO1xuQEAgLTgyMyw3ICYjNDM7OTAyLDcgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9mbG93Y3RybChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gY2xlYW51cDpcbiBcdGRldl9tY19kZWwocHJpdi1cdTAwM2VkZXYsIHBhZGRyKTtcbiBcdGRldl9zZXRfcHJvbWlzY3VpdHkocHJpdi1cdTAwM2VkZXYsIC0xKTtcbi1cdGRldl9yZW1vdmVfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4mIzQzO1x0c3RtbWFjX3NmdF9yZW1vdmVfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4gXHRrZnJlZSh0cHJpdik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC05MjEsNiAmIzQzOzEwMDAsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0dHByaXYtXHUwMDNlcHQuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4gXHR0cHJpdi1cdTAwM2VwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2O1xuIFx0dHByaXYtXHUwMDNlcGFja2V0ID0gXHUwMDI2YXR0cjtcbiYjNDM7XHR0cHJpdi1cdTAwM2VjYXB0dXJlX2FsbCA9IHRydWU7XG4gXG4gXHQvKlxuIFx0ICogQXMgd2UgdXNlIEhBU0ggZmlsdGVyaW5nLCBmYWxzZSBwb3NpdGl2ZXMgbWF5IGFwcGVhci4gVGhpcyBpcyBhXG5AQCAtOTI4LDcgJiM0MzsxMDA4LDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X3ZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdCAqIEhBU0ggdmFsdWVzLlxuIFx0ICovXG4gXHR0cHJpdi1cdTAwM2V2bGFuX2lkID0gMHgxMjM7XG4tXHRkZXZfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuJiM0MztcdHN0bW1hY19zZnRfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFxuIFx0cmV0ID0gdmxhbl92aWRfYWRkKHByaXYtXHUwMDNlZGV2LCBodG9ucyhFVEhfUF84MDIxUSksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIFx0aWYgKHJldClcbkBAIC05NjgsNyAmIzQzOzEwNDgsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHZsYW5fZGVsOlxuIFx0dmxhbl92aWRfZGVsKHByaXYtXHUwMDNlZGV2LCBodG9ucyhFVEhfUF84MDIxUSksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIGNsZWFudXA6XG4tXHRkZXZfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuJiM0MztcdHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFx0a2ZyZWUodHByaXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTAxNSw2ICYjNDM7MTA5NSw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0dHByaXYtXHUwMDNlcHQuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4gXHR0cHJpdi1cdTAwM2VwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2O1xuIFx0dHByaXYtXHUwMDNlcGFja2V0ID0gXHUwMDI2YXR0cjtcbiYjNDM7XHR0cHJpdi1cdTAwM2VjYXB0dXJlX2FsbCA9IHRydWU7XG4gXG4gXHQvKlxuIFx0ICogQXMgd2UgdXNlIEhBU0ggZmlsdGVyaW5nLCBmYWxzZSBwb3NpdGl2ZXMgbWF5IGFwcGVhci4gVGhpcyBpcyBhXG5AQCAtMTAyMiw3ICYjNDM7MTEwMyw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0ICogSEFTSCB2YWx1ZXMuXG4gXHQgKi9cbiBcdHRwcml2LVx1MDAzZXZsYW5faWQgPSAweDEyMztcbi1cdGRldl9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4mIzQzO1x0c3RtbWFjX3NmdF9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4gXG4gXHRyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi1cdTAwM2VkZXYsIGh0b25zKEVUSF9QXzgwMjFBRCksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIFx0aWYgKHJldClcbkBAIC0xMDYyLDcgJiM0MzsxMTQzLDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2R2bGFuZmlsdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gdmxhbl9kZWw6XG4gXHR2bGFuX3ZpZF9kZWwocHJpdi1cdTAwM2VkZXYsIGh0b25zKEVUSF9QXzgwMjFBRCksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIGNsZWFudXA6XG4tXHRkZXZfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuJiM0MztcdHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFx0a2ZyZWUodHByaXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTI5Myw3ICYjNDM7MTM3NCw4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHN2bGFuKVxuIFx0dHByaXYtXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcbiBcdHRwcml2LVx1MDAzZXBhY2tldCA9IFx1MDAyNmF0dHI7XG4gXHR0cHJpdi1cdTAwM2V2bGFuX2lkID0gMHgxMjM7XG4tXHRkZXZfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuJiM0MztcdHRwcml2LVx1MDAzZWNhcHR1cmVfYWxsID0gdHJ1ZTtcbiYjNDM7XHRzdG1tYWNfc2Z0X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcbiBcdHJldCA9IHZsYW5fdmlkX2FkZChwcml2LVx1MDAzZWRldiwgaHRvbnMocHJvdG8pLCB0cHJpdi1cdTAwM2V2bGFuX2lkKTtcbiBcdGlmIChyZXQpXG5AQCAtMTMyMCw3ICYjNDM7MTQwMiw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHN2bGFuKVxuIHZsYW5fZGVsOlxuIFx0dmxhbl92aWRfZGVsKHByaXYtXHUwMDNlZGV2LCBodG9ucyhwcm90byksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIGNsZWFudXA6XG4tXHRkZXZfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuJiM0MztcdHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFx0a2ZyZWUodHByaXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMTMzMiw3ICYjNDM7MTQxNCw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIGludCBzdG1tYWNfdGVzdF9zdmxhbm9mZihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKCFwcml2LVx1MDAzZWRtYV9jYXAuZHZsYW4pXG4mIzQzO1x0aWYgKCEocHJpdi1cdTAwM2VkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1RYKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0cmV0dXJuIHN0bW1hY190ZXN0X3ZsYW5vZmZfY29tbW9uKHByaXYsIHRydWUpO1xuIH1cbkBAIC0xNjk5LDYgJiM0MzsxNzgxLDkgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2p1bWJvKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKVxuIFx0c3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMgYXR0ciA9IHsgfTtcbiBcdGludCBzaXplID0gcHJpdi1cdTAwM2VkbWFfY29uZi5kbWFfYnVmX3N6O1xuIFxuJiM0MztcdGlmICghZHdtYWNfaXNfeG1hYyhwcml2LVx1MDAzZXBsYXQtXHUwMDNlY29yZV90eXBlKSlcbiYjNDM7XHRcdHNpemUgLT0gTkVUX0lQX0FMSUdOO1xuJiM0MztcbiBcdGF0dHIuZHN0ID0gcHJpdi1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHI7XG4gXHRhdHRyLm1heF9zaXplID0gc2l6ZSAtIEVUSF9GQ1NfTEVOO1xuIFx0YXR0ci5xdWV1ZV9tYXBwaW5nID0gcXVldWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGExZGQ5NzFmMTVjOTBjYzNjMmFjZDA3NmU5NWNhYWYyZDMyNmNmOTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCAxMSAyMTo0OTo1NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCmluZGV4IDYyYzM0NDE5MTFlNzEuLjI5Yjk3MDU3NGEzODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwpAQCAtMTUzNiwxNyAmIzQzOzE1MzYsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAlyZXR1cm4gTkVUX1NLQl9QQUQgJiM0MzsgTkVUX0lQX0FMSUdOOwogfQogCi1zdGF0aWMgaW50IHN0bW1hY19zZXRfYmZzaXplKGludCBtdHUpCiYjNDM7c3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbGVuKQogewogCWludCByZXQ7CiAKLQlpZiAobXR1ICZndDs9IEJVRl9TSVpFXzhLaUIpCiYjNDM7CWlmIChsZW4gJmd0OyBCVUZfU0laRV84S2lCKQogCQlyZXQgPSBCVUZfU0laRV8xNktpQjsKLQllbHNlIGlmIChtdHUgJmd0Oz0gQlVGX1NJWkVfNEtpQikKJiM0MzsJZWxzZSBpZiAobGVuICZndDsgQlVGX1NJWkVfNEtpQikKIAkJcmV0ID0gQlVGX1NJWkVfOEtpQjsKLQllbHNlIGlmIChtdHUgJmd0Oz0gQlVGX1NJWkVfMktpQikKJiM0MzsJZWxzZSBpZiAobGVuICZndDsgQlVGX1NJWkVfMktpQikKIAkJcmV0ID0gQlVGX1NJWkVfNEtpQjsKLQllbHNlIGlmIChtdHUgJmd0OyBERUZBVUxUX0JVRlNJWkUpCiYjNDM7CWVsc2UgaWYgKGxlbiAmZ3Q7IERFRkFVTFRfQlVGU0laRSkKIAkJcmV0ID0gQlVGX1NJWkVfMktpQjsKIAllbHNlCiAJCXJldCA9IERFRkFVTFRfQlVGU0laRTsKQEAgLTQwNjMsNyAmIzQzOzQwNjMsNyBAQCBzdGF0aWMgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqCiBzdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KQogewogCXN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mOwotCWludCBiZnNpemUsIHJldDsKJiM0MzsJaW50IGJmc2l6ZSwgbGVuLCByZXQ7CiAJdTggY2hhbjsKIAogCWRtYV9jb25mID0ga3phbGxvY19vYmooKmRtYV9jb25mKTsKQEAgLTQwNzMsMTMgJiM0Mzs0MDczLDE1IEBAIHN0bW1hY19zZXR1cF9kbWFfZGVzYyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBtdHUpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCX0KIAotCS8qIFJldHVybnMgMCBvciBCVUZfU0laRV8xNktpQiBpZiBtdHUgJmd0OyA4S2lCIGFuZCBkd21hYzQgb3IgcmluZyBtb2RlICovCi0JYmZzaXplID0gc3RtbWFjX3NldF8xNmtpYl9iZnNpemUocHJpdiwgbXR1KTsKJiM0MzsJbGVuID0gbXR1ICYjNDM7IEVUSF9ITEVOICYjNDM7IDIgKiBWTEFOX0hMRU4gJiM0MzsgRVRIX0ZDU19MRU4gJiM0MzsgTkVUX0lQX0FMSUdOOwomIzQzOwomIzQzOwkvKiBSZXR1cm5zIDAgb3IgQlVGX1NJWkVfMTZLaUIgaWYgbGVuICZndDsgOEtpQiBhbmQgZHdtYWM0IG9yIHJpbmcgbW9kZSAqLwomIzQzOwliZnNpemUgPSBzdG1tYWNfc2V0XzE2a2liX2Jmc2l6ZShwcml2LCBsZW4pOwogCWlmIChiZnNpemUgJmx0OyAwKQogCQliZnNpemUgPSAwOwogCiAJaWYgKGJmc2l6ZSAmbHQ7IEJVRl9TSVpFXzE2S2lCKQotCQliZnNpemUgPSBzdG1tYWNfc2V0X2Jmc2l6ZShtdHUpOwomIzQzOwkJYmZzaXplID0gc3RtbWFjX3NldF9iZnNpemUobGVuKTsKIAogCWRtYV9jb25mLSZndDtkbWFfYnVmX3N6ID0gYmZzaXplOwogCS8qIENob3NlIHRoZSB0eC9yeCBzaXplIGZyb20gdGhlIGFscmVhZHkgZGVmaW5lZCBvbmUgaW4gdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMKaW5kZXggNjM3MmVjN2MzZjMxNy4uY2Q3ZGM5OTA5NWEwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYwpAQCAtMTIsNiAmIzQzOzEyLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9ldGh0b29sLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91ZHAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2RzYS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9wa3RfY2xzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3BrdF9zY2hlZC5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC90Y3AuaCZndDsKQEAgLTI5LDYgJiM0MzszMCw3IEBAIHN0cnVjdCBzdG1tYWNoZHIgewogCQkJICAgICAgc2l6ZW9mKHN0cnVjdCBzdG1tYWNoZHIpKQogI2RlZmluZSBTVE1NQUNfVEVTVF9QS1RfTUFHSUMJMHhkZWFkY2FmZWNhZmVkZWFkVUxMCiAjZGVmaW5lIFNUTU1BQ19MQl9USU1FT1VUCW1zZWNzX3RvX2ppZmZpZXMoMjAwKQomIzQzOyNkZWZpbmUgU1RNTUFDX1NGVF9NQVhfTFBJCSg1ICogVVNFQ19QRVJfU0VDKQogCiBzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyB7CiAJaW50IHZsYW47CkBAIC0yMzcsNiAmIzQzOzIzOSwxMCBAQCBzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiB7CiAJc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMgKnBhY2tldDsKIAlzdHJ1Y3QgcGFja2V0X3R5cGUgcHQ7CiAJc3RydWN0IGNvbXBsZXRpb24gY29tcDsKJiM0MzsJX19iZTE2IHBhY2tldF90eXBlOwomIzQzOwlpbnQgKCpmdW5jKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCSAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19uZGV2KTsKJiM0MzsJYm9vbCBjYXB0dXJlX2FsbDsKIAlpbnQgZG91YmxlX3ZsYW47CiAJaW50IHZsYW5faWQ7CiAJaW50IG9rOwpAQCAtMzE2LDYgJiM0MzszMjIsNTAgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9sb29wYmFja192YWxpZGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBzdG1tYWNfc2Z0X2ZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKJiM0MzsJCQkgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsCiYjNDM7CQkJICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19uZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHN0bW1hY190ZXN0X3ByaXYgKnRwcml2ID0gcHQtJmd0O2FmX3BhY2tldF9wcml2OwomIzQzOwlzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7CiYjNDM7CWludCByZXQgPSAwOwomIzQzOwomIzQzOwlpZiAoaGRyLSZndDtoX3Byb3RvID09IHRwcml2LSZndDtwYWNrZXRfdHlwZSkgewomIzQzOwkJc3RydWN0IHNrX2J1ZmYgKm5za2IgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTsKJiM0MzsKJiM0MzsJCWlmIChuc2tiKQomIzQzOwkJCXJldCA9IHRwcml2LSZndDtmdW5jKG5za2IsIG5kZXYsIHB0LCBvcmlnX25kZXYpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWtmcmVlX3NrYihza2IpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfc2Z0X2FkZF9wYWNrKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiAqdHByaXYgPSBwdC0mZ3Q7YWZfcGFja2V0X3ByaXY7CiYjNDM7CiYjNDM7CWlmIChuZXRkZXZfdXNlc19kc2EodHByaXYtJmd0O3B0LmRldikgfHwgdHByaXYtJmd0O2NhcHR1cmVfYWxsKSB7CiYjNDM7CQl0cHJpdi0mZ3Q7cGFja2V0X3R5cGUgPSB0cHJpdi0mZ3Q7cHQudHlwZTsKJiM0MzsJCXRwcml2LSZndDtmdW5jID0gdHByaXYtJmd0O3B0LmZ1bmM7CiYjNDM7CiYjNDM7CQkvKiBEU0EgY29uZHVpdCB3aWxsIHJlcG9ydCBFVEhfUF9YRFNBLCBzbyBvdXIgcGFja2V0IGhhbmRsZXIKJiM0MzsJCSAqIHdvbiYjMzk7dCBtYXRjaC4gTGV0JiMzOTtzIHJlZ2lzdGVyIGEgRVRIX1BfQUxMIG1hdGNoIGFuZCBmaWx0ZXIKJiM0MzsJCSAqIG1hbnVhbGx5IGluIHN0bW1hY19zZnRfZmlsdGVyLgomIzQzOwkJICovCiYjNDM7CQl0cHJpdi0mZ3Q7cHQudHlwZSA9IGh0b25zKEVUSF9QX0FMTCk7CiYjNDM7CQl0cHJpdi0mZ3Q7cHQuZnVuYyA9IHN0bW1hY19zZnRfZmlsdGVyOwomIzQzOwkJdHByaXYtJmd0O3B0Lmlnbm9yZV9vdXRnb2luZyA9IHRydWU7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZGV2X2FkZF9wYWNrKHB0KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgc3RtbWFjX3NmdF9yZW1vdmVfcGFjayhzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0KQomIzQzO3sKJiM0MzsJZGV2X3JlbW92ZV9wYWNrKHB0KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQkJCSAgc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMgKmF0dHIpCiB7CkBAIC0zMzcsNyAmIzQzOzM4Nyw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJdHByaXYtJmd0O3BhY2tldCA9IGF0dHI7CiAKIAlpZiAoIWF0dHItJmd0O2RvbnRfd2FpdCkKLQkJZGV2X2FkZF9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJCXN0bW1hY19zZnRfYWRkX3BhY2soJmFtcDt0cHJpdi0mZ3Q7cHQpOwogCiAJc2tiID0gc3RtbWFjX3Rlc3RfZ2V0X3VkcF9za2IocHJpdiwgYXR0cik7CiAJaWYgKCFza2IpIHsKQEAgLTM2MCw3ICYjNDM7NDEwLDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAogY2xlYW51cDoKIAlpZiAoIWF0dHItJmd0O2RvbnRfd2FpdCkKLQkJZGV2X3JlbW92ZV9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJCXN0bW1hY19zZnRfcmVtb3ZlX3BhY2soJmFtcDt0cHJpdi0mZ3Q7cHQpOwogCWtmcmVlKHRwcml2KTsKIAlyZXR1cm4gcmV0OwogfQpAQCAtNDE0LDEyICYjNDM7NDY0LDE2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbW1jKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfZWVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHsKIAlzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICppbml0aWFsLCAqZmluYWw7Ci0JaW50IHJldHJpZXMgPSAxMDsKJiM0MzsJdW5zaWduZWQgbG9uZyB0aW1lb3V0LCBtYXhfZHVyYXRpb247CiAJaW50IHJldDsKIAogCWlmICghcHJpdi0mZ3Q7ZG1hX2NhcC5lZWUgfHwgIXByaXYtJmd0O2VlZV9hY3RpdmUpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAomIzQzOwkvKiBCYWlsIG91dCBpZiB0aGUgY29uZmlndXJlZCBMUEkgdGltZXIgaXMgdG9vIGxvbmcgKi8KJiM0MzsJaWYgKHByaXYtJmd0O3R4X2xwaV90aW1lciAmZ3Q7IFNUTU1BQ19TRlRfTUFYX0xQSSkKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsKIAlpbml0aWFsID0ga3phbGxvY19vYmooKmluaXRpYWwpOwogCWlmICghaW5pdGlhbCkKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC00MzAsMTQgJiM0Mzs0ODQsMjEgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9lZWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCQlnb3RvIG91dF9mcmVlX2luaXRpYWw7CiAJfQogCiYjNDM7CS8qIFNuYXBzaG90IHN0YXRzLCB3ZSB3YW50IHRvIGNvdW50IHRoZSBpbl9scGkgZXZlbnRzLiBXZSBtYXkgZW50ZXIKJiM0MzsJICogTFBJIGp1c3QgYWZ0ZXIgdGhlIHBhY2tldCB3YXMgc2VudC4KJiM0MzsJICovCiAJbWVtY3B5KGluaXRpYWwsICZhbXA7cHJpdi0mZ3Q7eHN0YXRzLCBzaXplb2YoKmluaXRpYWwpKTsKIAomIzQzOwkvKiBTZW5kIGEgZnJhbWUsIHRoZW4gd2FpdCB0byBlbnRlciBMUEkgKi8KIAlyZXQgPSBzdG1tYWNfdGVzdF9tYWNfbG9vcGJhY2socHJpdik7CiAJaWYgKHJldCkKIAkJZ290byBvdXRfZnJlZV9maW5hbDsKIAomIzQzOwltYXhfZHVyYXRpb24gPSB1c2Vjc190b19qaWZmaWVzKDIgKiBwcml2LSZndDt0eF9scGlfdGltZXIpOwomIzQzOwogCS8qIFdlIGhhdmUgbm8gdHJhZmZpYyBpbiB0aGUgbGluZSBzbywgc29vbmVyIG9yIGxhdGVyIGl0IHdpbGwgZ28gTFBJICovCi0Jd2hpbGUgKC0tcmV0cmllcykgewomIzQzOwl0aW1lb3V0ID0gamlmZmllcyAmIzQzOyBtYXhfZHVyYXRpb247CiYjNDM7CXdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgewogCQltZW1jcHkoZmluYWwsICZhbXA7cHJpdi0mZ3Q7eHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7CiAKIAkJaWYgKGZpbmFsLSZndDtpcnFfdHhfcGF0aF9pbl9scGlfbW9kZV9uICZndDsKQEAgLTQ0NiwyMCAmIzQzOzUwNywzOCBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpCiAJCW1zbGVlcCgxMDApOwogCX0KIAotCWlmICghcmV0cmllcykgewomIzQzOwltZW1jcHkoZmluYWwsICZhbXA7cHJpdi0mZ3Q7eHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7CiYjNDM7CWlmIChmaW5hbC0mZ3Q7aXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiAmbHQ7PQomIzQzOwkgICAgaW5pdGlhbC0mZ3Q7aXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbikgewogCQlyZXQgPSAtRVRJTUVET1VUOwogCQlnb3RvIG91dF9mcmVlX2ZpbmFsOwogCX0KIAotCWlmIChmaW5hbC0mZ3Q7aXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiAmbHQ7PQotCSAgICBpbml0aWFsLSZndDtpcnFfdHhfcGF0aF9pbl9scGlfbW9kZV9uKSB7Ci0JCXJldCA9IC1FSU5WQUw7CiYjNDM7CS8qIFJlLXNuYXBzaG90LCBhcyB3ZSB3YW50IHRvIG1lYXN1cmUgZXhpdF9scGkgZXZlbnRzLiBXZSBzaG91bGQgYmUKJiM0MzsJICogaW4gTFBJIHJpZ2h0IG5vdy4KJiM0MzsJICovCiYjNDM7CW1lbWNweShpbml0aWFsLCAmYW1wO3ByaXYtJmd0O3hzdGF0cywgc2l6ZW9mKCppbml0aWFsKSk7CiYjNDM7CiYjNDM7CS8qIFRYIHNvbWV0aGluZyBzbyB3ZSBnbyBvdXQgb2YgTFBJICovCiYjNDM7CXJldCA9IHN0bW1hY190ZXN0X21hY19sb29wYmFjayhwcml2KTsKJiM0MzsJaWYgKHJldCkKIAkJZ290byBvdXRfZnJlZV9maW5hbDsKJiM0MzsKJiM0MzsJLyogV2FpdCBmb3IgdGhlIGV4aXQgTFBJIGludGVycnVwdCAqLwomIzQzOwl0aW1lb3V0ID0gamlmZmllcyAmIzQzOyBtYXhfZHVyYXRpb247CiYjNDM7CXdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgewomIzQzOwkJbWVtY3B5KGZpbmFsLCAmYW1wO3ByaXYtJmd0O3hzdGF0cywgc2l6ZW9mKCpmaW5hbCkpOwomIzQzOwomIzQzOwkJaWYgKGZpbmFsLSZndDtpcnFfdHhfcGF0aF9leGl0X2xwaV9tb2RlX24gJmd0OwomIzQzOwkJICAgIGluaXRpYWwtJmd0O2lycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbikKJiM0MzsJCQlicmVhazsKJiM0MzsJCW1zbGVlcCgxMDApOwogCX0KIAomIzQzOwltZW1jcHkoZmluYWwsICZhbXA7cHJpdi0mZ3Q7eHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7CiAJaWYgKGZpbmFsLSZndDtpcnFfdHhfcGF0aF9leGl0X2xwaV9tb2RlX24gJmx0Oz0KIAkgICAgaW5pdGlhbC0mZ3Q7aXJxX3R4X3BhdGhfZXhpdF9scGlfbW9kZV9uKSB7Ci0JCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlyZXQgPSAtRVRJTUVET1VUOwogCQlnb3RvIG91dF9mcmVlX2ZpbmFsOwogCX0KIApAQCAtNzY3LDcgJiM0Mzs4NDYsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2Zsb3djdHJsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAl0cHJpdi0mZ3Q7cHQuZnVuYyA9IHN0bW1hY190ZXN0X2Zsb3djdHJsX3ZhbGlkYXRlOwogCXRwcml2LSZndDtwdC5kZXYgPSBwcml2LSZndDtkZXY7CiAJdHByaXYtJmd0O3B0LmFmX3BhY2tldF9wcml2ID0gdHByaXY7Ci0JZGV2X2FkZF9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJc3RtbWFjX3NmdF9hZGRfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiAKIAkvKiBDb21wdXRlIG1pbmltdW0gbnVtYmVyIG9mIHBhY2tldHMgdG8gbWFrZSBGSUZPIGZ1bGwgKi8KIAlwa3RfY291bnQgPSByeF9maWZvX3NpemU7CkBAIC04MjMsNyAmIzQzOzkwMiw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfZmxvd2N0cmwoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogY2xlYW51cDoKIAlkZXZfbWNfZGVsKHByaXYtJmd0O2RldiwgcGFkZHIpOwogCWRldl9zZXRfcHJvbWlzY3VpdHkocHJpdi0mZ3Q7ZGV2LCAtMSk7Ci0JZGV2X3JlbW92ZV9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJc3RtbWFjX3NmdF9yZW1vdmVfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiAJa2ZyZWUodHByaXYpOwogCXJldHVybiByZXQ7CiB9CkBAIC05MjEsNiAmIzQzOzEwMDAsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCXRwcml2LSZndDtwdC5kZXYgPSBwcml2LSZndDtkZXY7CiAJdHByaXYtJmd0O3B0LmFmX3BhY2tldF9wcml2ID0gdHByaXY7CiAJdHByaXYtJmd0O3BhY2tldCA9ICZhbXA7YXR0cjsKJiM0MzsJdHByaXYtJmd0O2NhcHR1cmVfYWxsID0gdHJ1ZTsKIAogCS8qCiAJICogQXMgd2UgdXNlIEhBU0ggZmlsdGVyaW5nLCBmYWxzZSBwb3NpdGl2ZXMgbWF5IGFwcGVhci4gVGhpcyBpcyBhCkBAIC05MjgsNyAmIzQzOzEwMDgsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCSAqIEhBU0ggdmFsdWVzLgogCSAqLwogCXRwcml2LSZndDt2bGFuX2lkID0gMHgxMjM7Ci0JZGV2X2FkZF9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJc3RtbWFjX3NmdF9hZGRfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiAKIAlyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi0mZ3Q7ZGV2LCBodG9ucyhFVEhfUF84MDIxUSksIHRwcml2LSZndDt2bGFuX2lkKTsKIAlpZiAocmV0KQpAQCAtOTY4LDcgJiM0MzsxMDQ4LDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X3ZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHZsYW5fZGVsOgogCXZsYW5fdmlkX2RlbChwcml2LSZndDtkZXYsIGh0b25zKEVUSF9QXzgwMjFRKSwgdHByaXYtJmd0O3ZsYW5faWQpOwogY2xlYW51cDoKLQlkZXZfcmVtb3ZlX3BhY2soJmFtcDt0cHJpdi0mZ3Q7cHQpOwomIzQzOwlzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKIAlrZnJlZSh0cHJpdik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTEwMTUsNiAmIzQzOzEwOTUsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfZHZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIAl0cHJpdi0mZ3Q7cHQuZGV2ID0gcHJpdi0mZ3Q7ZGV2OwogCXRwcml2LSZndDtwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2OwogCXRwcml2LSZndDtwYWNrZXQgPSAmYW1wO2F0dHI7CiYjNDM7CXRwcml2LSZndDtjYXB0dXJlX2FsbCA9IHRydWU7CiAKIAkvKgogCSAqIEFzIHdlIHVzZSBIQVNIIGZpbHRlcmluZywgZmFsc2UgcG9zaXRpdmVzIG1heSBhcHBlYXIuIFRoaXMgaXMgYQpAQCAtMTAyMiw3ICYjNDM7MTEwMyw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCSAqIEhBU0ggdmFsdWVzLgogCSAqLwogCXRwcml2LSZndDt2bGFuX2lkID0gMHgxMjM7Ci0JZGV2X2FkZF9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJc3RtbWFjX3NmdF9hZGRfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiAKIAlyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi0mZ3Q7ZGV2LCBodG9ucyhFVEhfUF84MDIxQUQpLCB0cHJpdi0mZ3Q7dmxhbl9pZCk7CiAJaWYgKHJldCkKQEAgLTEwNjIsNyAmIzQzOzExNDMsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfZHZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHZsYW5fZGVsOgogCXZsYW5fdmlkX2RlbChwcml2LSZndDtkZXYsIGh0b25zKEVUSF9QXzgwMjFBRCksIHRwcml2LSZndDt2bGFuX2lkKTsKIGNsZWFudXA6Ci0JZGV2X3JlbW92ZV9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKJiM0MzsJc3RtbWFjX3NmdF9yZW1vdmVfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiAJa2ZyZWUodHByaXYpOwogCXJldHVybiByZXQ7CiB9CkBAIC0xMjkzLDcgJiM0MzsxMzc0LDggQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF92bGFub2ZmX2NvbW1vbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGJvb2wgc3ZsYW4pCiAJdHByaXYtJmd0O3B0LmFmX3BhY2tldF9wcml2ID0gdHByaXY7CiAJdHByaXYtJmd0O3BhY2tldCA9ICZhbXA7YXR0cjsKIAl0cHJpdi0mZ3Q7dmxhbl9pZCA9IDB4MTIzOwotCWRldl9hZGRfcGFjaygmYW1wO3Rwcml2LSZndDtwdCk7CiYjNDM7CXRwcml2LSZndDtjYXB0dXJlX2FsbCA9IHRydWU7CiYjNDM7CXN0bW1hY19zZnRfYWRkX3BhY2soJmFtcDt0cHJpdi0mZ3Q7cHQpOwogCiAJcmV0ID0gdmxhbl92aWRfYWRkKHByaXYtJmd0O2RldiwgaHRvbnMocHJvdG8pLCB0cHJpdi0mZ3Q7dmxhbl9pZCk7CiAJaWYgKHJldCkKQEAgLTEzMjAsNyAmIzQzOzE0MDIsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X3ZsYW5vZmZfY29tbW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgYm9vbCBzdmxhbikKIHZsYW5fZGVsOgogCXZsYW5fdmlkX2RlbChwcml2LSZndDtkZXYsIGh0b25zKHByb3RvKSwgdHByaXYtJmd0O3ZsYW5faWQpOwogY2xlYW51cDoKLQlkZXZfcmVtb3ZlX3BhY2soJmFtcDt0cHJpdi0mZ3Q7cHQpOwomIzQzOwlzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKCZhbXA7dHByaXYtJmd0O3B0KTsKIAlrZnJlZSh0cHJpdik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTEzMzIsNyAmIzQzOzE0MTQsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X3ZsYW5vZmYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KQogCiBzdGF0aWMgaW50IHN0bW1hY190ZXN0X3N2bGFub2ZmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdikKIHsKLQlpZiAoIXByaXYtJmd0O2RtYV9jYXAuZHZsYW4pCiYjNDM7CWlmICghKHByaXYtJmd0O2Rldi0mZ3Q7ZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9IV19WTEFOX1NUQUdfVFgpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJcmV0dXJuIHN0bW1hY190ZXN0X3ZsYW5vZmZfY29tbW9uKHByaXYsIHRydWUpOwogfQpAQCAtMTY5OSw2ICYjNDM7MTc4MSw5IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9qdW1ibyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSkKIAlzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyBhdHRyID0geyB9OwogCWludCBzaXplID0gcHJpdi0mZ3Q7ZG1hX2NvbmYuZG1hX2J1Zl9zejsKIAomIzQzOwlpZiAoIWR3bWFjX2lzX3htYWMocHJpdi0mZ3Q7cGxhdC0mZ3Q7Y29yZV90eXBlKSkKJiM0MzsJCXNpemUgLT0gTkVUX0lQX0FMSUdOOwomIzQzOwogCWF0dHIuZHN0ID0gcHJpdi0mZ3Q7ZGV2LSZndDtkZXZfYWRkcjsKIAlhdHRyLm1heF9zaXplID0gc2l6ZSAtIEVUSF9GQ1NfTEVOOwogCWF0dHIucXVldWVfbWFwcGluZyA9IHF1ZXVlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTU1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgdGhlIFByb3Bvc2VkIFBhdGNoIFNlcmllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0aW5nIHRoZSBMaW51eCBrZXJuZWwuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIHNlZSB3aGF0IGl0IGFjdHVhbGx5IHRvdWNoZXM6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY2AuIFJpZ2h0LCBgc3RtbWFjYC4uLiB0aGF0JiMzOTtzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlci4gSXQgc3VwcG9ydHMgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgYW5kIHJlbGF0ZWQgaGFyZHdhcmUuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gSSByZWFsaXN0aWNhbGx5IHRlc3QgdGhpcyBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yLCBtb3JlIGxpa2VseSwgUUVNVT8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSByZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcy4gSG9sZCBvbi4uLiAqbmVnYXRpdmUgY3JpdGVyaWEqLCBtZWFuaW5nLCB3aGVuIHNob3VsZCBJIE5PVCBmdXp6IHRoaXM/IEFoLCByaWdodDogc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyDigJMgdGhpbmdzIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCB3ZWxsIGluIHN0YW5kYXJkIFFFTVUuIE9uIHRoZSBmbGlwIHNpZGUsIHdoYXQgKmlzKiByZWFjaGFibGU/IFZpcnR1YWwgYnVzZXM6IHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLgoKU28sICppcyogYHN0bW1hY2AgYSBQQ0kgZGV2aWNlLCBvciBpcyBpdCBhIHBsYXRmb3JtIGRldmljZSB0aGF0ICpjb3VsZCogYmUgZW11bGF0ZWQgaW4gUUVNVT8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIFFFTVUgZW11bGF0ZXMgZHdtYWMgb3Igc3RtbWFjIGRpcmVjdGx5LCBvciBpZiBpdCB1c2VzIFBDSSBiaW5kaW5ncy4gVGltZSB0byBicmVhayBvdXQgdGhlIGBncmVwYCBhbmQgc2VlIHdoYXQgaGFyZHdhcmUgdGhpcyBgc3RtbWFjYCBkcml2ZXIgYWN0dWFsbHkgc3VwcG9ydHMgd2l0aGluIHRoZSBrZXJuZWwuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19wY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcdCYjNDM7PSBkd21hYy1tb3RvcmNvbW0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTQ6c3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0yNT1zdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTM5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00MS1cdHVuc2lnbmVkIGludCBmdW5jO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ1OnN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDY6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ3LVx0c2l6ZV90IG5mdW5jcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTEtXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MT1zdGF0aWMgY29uc3QgaW50IGFkbG5fdHNuX2xhbmVfcmVnc1tdID0gezZ9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTM6c3RhdGljIGludCBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk0LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkICpkbWlfbGlzdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSAqZnVuY19kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NzpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhICpkbWlfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTgtXHRjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2lkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9Nzg2PXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgwNjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfc2dtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDctXHQuc2V0dXAgPSBlaGxfc2dtaWlfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgxMD1zdGF0aWMgaW50IGVobF9yZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MjE6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3JnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIyLVx0LnNldHVwID0gZWhsX3JnbWlpX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDE9c3RhdGljIGludCBlaGxfcHNlMF9yZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg0ODpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9yZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0OS1cdC5zZXR1cCA9IGVobF9wc2UwX3JnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg1Mj1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODcwOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UwX3NnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODcxLVx0LnNldHVwID0gZWhsX3BzZTBfc2dtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODkwPXN0YXRpYyBpbnQgZWhsX3BzZTFfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4OTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfcmdtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTgtXHQuc2V0dXAgPSBlaGxfcHNlMV9yZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MDE9c3RhdGljIGludCBlaGxfcHNlMV9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkxOTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMV9zZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyMC1cdC5zZXR1cCA9IGVobF9wc2UxX3NnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk0ND1zdGF0aWMgaW50IHRnbF9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk1MzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyB0Z2xfc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1NC1cdC5zZXR1cCA9IHRnbF9zZ21paV9waHkwX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NTc9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjctXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTcwPXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk4MDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05ODEtXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk4ND1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5OTQ6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTFfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTk1LVx0LnNldHVwID0gYWRsc19zZ21paV9waHkxX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDIzPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbG5fc2dtaWkxZ19waHkwX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDMtXHQuc2V0dXAgPSBhZGxuX3NnbWlpX3BoeTBfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNDY6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0Ny1cdHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNTM6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGdhbGlsZW9fc3RtbWFjX2RtaV9kYXRhID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU0LVx0LmZ1bmMgPSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDU4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTktXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDY5OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSBpb3QyMDQwX3N0bW1hY19kbWlfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA3MC1cdC5mdW5jID0gaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTEwOT1zdGF0aWMgaW50IHF1YXJrX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMTktXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTEyMDpcdHJldCA9IHN0bW1hY19wY2lfZmluZF9waHlfYWRkcihwZGV2LCBxdWFya19wY2lfZG1pKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTEyMS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExNDU6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gcXVhcmtfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE0Ni1cdC5zZXR1cCA9IHF1YXJrX2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjY6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2Ny1cdHN0cnVjdCBpbnRlbF9wcml2X2RhdGEgKmludGVsX3ByaXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz03Nj1zdHJ1Y3QgbG9vbmdzb25fZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6ODI6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgzLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTMyPXN0YXRpYyBpbnQgbG9vbmdzb25fZ21hY19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ21hY19wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQzLVx0LnNldHVwID0gbG9vbmdzb25fZ21hY19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTY1PXN0YXRpYyBpbnQgbG9vbmdzb25fZ25ldF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNzc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ25ldF9wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc4LVx0LnNldHVwID0gbG9vbmdzb25fZ25ldF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMS1cdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MDI6XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDMtXHRzdHJ1Y3QgbG9vbmdzb25fZGF0YSAqbGQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MzctXHRwbGF0LVx1MDAzZWZpeF9zb2NfcmVzZXQgPSBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzODpcdHBsYXQtXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1Mzk6XHRwbGF0LVx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0MC1cdGxkLVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XHRpbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVx0cmV0ID0gaW5mby1cdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0xODg9c3RhdGljIGludCBtb3RvcmNvbW1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MTkzOlx0cmV0ID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShkZXYsIGJzcF9wcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjA4PW1vdG9yY29tbV9kZWZhdWx0X3BsYXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDgtXHRwbGF0LVx1MDAzZWNvcmVfdHlwZVx0XHQ9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoyNDk6XHRwbGF0LVx1MDAzZXN1c3BlbmRcdFx0PSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1MC1cdHBsYXQtXHUwMDNlcmVzdW1lXHRcdD0gbW90b3Jjb21tX3Jlc3VtZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MTI6aW50IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yNS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MjY6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjI4OmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy00My19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6NDQ6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6OTppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6MTA6aW50IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtMTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5OnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy01MS1cdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTU0PXN0YXRpYyBpbnQgc25wc19nbWFjNV9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDI6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDMtXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTg6c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTIxOlx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIyLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgwOlx0cGxhdC1cdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgxOlx0cGxhdC1cdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4NzogKiBzdG1tYWNfcGNpX3JlbW92ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4OC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTkyOnN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA0Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDU6XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDYtXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNC1cdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTU6XHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNjpcdC5yZW1vdmUgPSBzdG1tYWNfcGNpX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTctXHQuZHJpdmVyICAgICAgICAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTUxNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDU2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFNUTU1BQyBhbmQgRGVzaWduV2FyZSBNQUMgRW11bGF0aW9uIGluIFFFTVUgZm9yIEFNRDY0KioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHRoaW5raW5nLiBJJiMzOTttIHNlZWluZyByZWZlcmVuY2VzIHRvIFNUTU1BQyBhbmQgRGVzaWduV2FyZSBNQUMgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBzdG1tYWNfcGNpLmNgLCBgZHdtYWMtaW50ZWwuY2AsIGFuZCBzaW1pbGFyIGZpbGVzLiBUaGUgYFBDSV9ERVZJQ0VfREFUQWAgZW50cmllcyBzdWdnZXN0IHRoZXNlIGFyZSBQQ0ktYmFzZWQgZXRoZXJuZXQgY29udHJvbGxlcnMsIHdoaWNoIHJhaXNlcyBhIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kOiBBcmUgdGhlc2UgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCBvciBhbnl3aGVyZSBlYXNpbHkgYWNjZXNzaWJsZSBmb3IgZnV6emluZz8gSSBuZWVkIHRvIGNoZWNrLgoKVGhlIFdvcnRoRnV6emluZyBjcml0ZXJpYSBnaXZlIHNvbWUgbmVnYXRpdmUgZXhhbXBsZXMgd2hpY2ggbGVhZHMgbWUgdG8gdW5kZXJzdGFuZCB0aGUgY3JpdGVyaWEuIExvb2tpbmcgYXQgdGhlIGRvY3VtZW50YXRpb24sIGl0IHNlZW1zIGxpa2UgcGh5c2ljYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcyBhbmQgU21hcnROSUNzLCBhcmUgYSBuby1nbyBmb3IgdGhpcyBwcm9qZWN0LiBEcml2ZXJzIHJlYWNoYWJsZSB0aHJvdWdoIHZpcnR1YWwgYnVzZXMgYXJlIHRoZSBmb2N1cy4KClNvLCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciBRRU1VIHByb3ZpZGVzIGFuICplbXVsYXRlZCogdmVyc2lvbiBvZiBlaXRoZXIgU1RNTUFDIG9yIERlc2lnbldhcmUgTUFDLiBUaGUgZG9jdW1lbnRhdGlvbiBpbmRpY2F0ZXMgdGhhdCBRRU1VIGRvZXMgZW11bGF0ZSBEZXNpZ25XYXJlIE1BQ3MsIGJ1dCB0aGlzIGlzIHByaW1hcmlseSBmb3IgQVJNIGJvYXJkcyBsaWtlIEFsbHdpbm5lciBhbmQgU3VueGksIGJ1dCBub3Qgb24geDg2IHBsYXRmb3Jtcy4gT24geDg2L2FtZDY0LCBRRU1VIHVzZXMgZTEwMDAsIGUxMDAwZSwgdm14bmV0MywgcnRsODEzOSwgdmlydGlvLW5ldCwgYW5kIGEgaGFuZGZ1bCBvZiBvdGhlciBOSUMgZW11bGF0aW9ucy4KCkkmIzM5O20gbm93IGludmVzdGlnYXRpbmcsIGRvZXMgUUVNVSBlbXVsYXRlIGR3bWFjIG9yIHN0bW1hYyBhcyBQQ0kgZGV2aWNlcywgb3IgaXMgdGhlcmUgYSAmIzM0O2R3bWFjLXBjaSYjMzQ7IG9yICYjMzQ7c3RtbWFjLXBjaSYjMzQ7IGRldmljZT8KCkNoZWNraW5nIHRoZSBRRU1VIGRldmljZSBsaXN0LCBJIHNlZSBzcGVjaWZpYyBBUk0gU29DIGJvYXJkLXNwZWNpZmljIGVtdWxhdGVkIE1BQ3MsIGJ1dCBub3RoaW5nIGV4cGxpY2l0bHkgbGFiZWxlZCBhcyAmIzM0O2R3bWFjLXBjaSYjMzQ7IG9yICYjMzQ7c3RtbWFjLXBjaSYjMzQ7LiBJIHNlZSBgYWxsd2lubmVyX2VtYWNgLCBldGMsIGJ1dCBub3RoaW5nIHRoYXQgd291bGQgZml0IGEgZ2VuZXJhbCB4ODYvYW1kNjQgUENJIHNldHVwLgoKR2l2ZW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIHRoaXMgbmFycm93cyB0aGUgcG9zc2liaWxpdGllcyBmdXJ0aGVyLiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGZvciBTVE1NQUMsIFNUTU1BQ19FVEgsIGFuZCBTVE1NQUNfUENJIHRvIHNlZSBpZiB0aGVyZSBpcyBjb25kaXRpb25hbCBidWlsZCBzdXBwb3J0IG9yIGNsdWVzIGFzIHRvIHRoZSBlbXVsYXRlZCBhdmFpbGFiaWxpdHkgb2YgdGhlc2UgZGV2aWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcxMzMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSByZWFkaW5nIGFuZCB0aGlua2luZyBhYm91dCB0aGUgS2NvbmZpZyBmaWxlOgoKKipJbnZlc3RpZ2F0aW5nIFNUTU1BQyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIDQwMCB0byA0MzAgbGluZSByYW5nZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRoZXJlLiBJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGZlYXR1cmVzIHRoYXQgY2FuIGJlIHR1cm5lZCBvbiBvciBvZmYgZm9yIHRoZSBNQUMgaXRzZWxmLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG5ldyBvcHRpb25zIGFkZGVkIGluIHRoZSByZWNlbnQgdmVyc2lvbnMuIExldCBtZSBzZWUgd2hhdCBraW5kIG9mIGN1c3RvbWl6YXRpb25zIHRoZXkgc3VwcG9ydCBoZXJlLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhlcmUgYXJlIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCBvciBvdGhlciBkZXZpY2UgdHJlZXMuIEhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkLiBUaW1lIHRvIGdldCB0byB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQwMDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MDE6XHRcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXG4gNDAyOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQwMzpcdFx0aGVscFxuIDQwNDpcdFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcbiA0MDU6XHRcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXG4gNDA2Olx0XG4gNDA3Olx0Y29uZmlnIFNUTU1BQ19QQ0lcbiA0MDg6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gUENJXG4gNDEwOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiA0MTE6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDEyOlx0XHRoZWxwXG4gNDEzOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDQxNDpcdFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiA0MTU6XHRcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxuIDQxNjpcdFxuIDQxNzpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuIDQxODpcdFxuIDQxOTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDQyMDpcdGVuZGlmICMgU1RNTUFDX0VUSFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NzI2CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBsaW5lcyBmcm9tIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uIGFzIGlmIHRoZXkgd2VyZSBteSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBzdG1tYWMgS2NvbmZpZyAtIExpbmVzIDEtNDAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIuIEZvY3VzaW5nIG9uIGxpbmVzIDEtNDAsIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIHRoaXMgZHJpdmVyLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwgZGVwZW5kZW5jaWVzLCB0aGluZ3MgbGlrZSB0aGUgZGV2aWNlIHRyZWUgc3VwcG9ydCwgbWF5YmUgUEhZIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2VydGFpbmx5LCB0aGUgZnVuZGFtZW50YWwgZW5hYmxlL2Rpc2FibGUgdG9nZ2xlcyBmb3IgdGhlIGRyaXZlciBpdHNlbGYuCgpGaXJzdCwgSSYjMzk7bSBzY2FubmluZyBmb3IgdGhlIGdlbmVyYWwgYGNvbmZpZyBTVE1NQUNgIGVudHJ5LiBUaGlzIGlzIHRoZSBiaWcgb25lLCB0aGUgbWFzdGVyIHN3aXRjaC4gSXQmIzM5O3MgdGhlIGdhdGVrZWVwZXIuIFRoZW4sIEkgZXhwZWN0IHRvIHNlZSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4gVGhlc2UgYXJlIGNydWNpYWw7IHRoZXkgZGljdGF0ZSB0aGUgZW52aXJvbm1lbnQgdGhlIGRyaXZlciBuZWVkcy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzcGVjaWZpYyBhcmNoaXRlY3R1cmU/IEEgcGFydGljdWxhciBwbGF0Zm9ybSB0aGF0ICptdXN0KiBiZSBwcmVzZW50PyBUaGF0JiMzOTtzIHdoYXQgSSYjMzk7bGwgYmUgbG9va2luZyBmb3Ig4oCTIHRoZSBhcmNoaXRlY3R1cmFsIGRlcGVuZGVuY2llcy4KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IHN5bWJvbCB0aGF0IG1pZ2h0IGVuYWJsZSBvciBkaXNhYmxlIGZlYXR1cmVzIGJhc2VkIG9uIGhhcmR3YXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgc3BlY2lmaWMgY2hpcHMgb3IgZmFtaWxpZXMuIEZvciBleGFtcGxlLCBzb21lIGhhcmR3YXJlIHJldmlzaW9ucyBtaWdodCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcuIEFueSBgc2VsZWN0YCBzdGF0ZW1lbnRzIGFyZSBhbHNvIGNyaXRpY2FsLCBiZWNhdXNlIHRoZXkgaW1wbGljaXRseSBzZXQgb3RoZXIgY29uZmlndXJhdGlvbnMuCgpGaW5hbGx5LCBJJiMzOTtsbCBiZSBjaGVja2luZyBpZiB0aGVyZSBhcmUgYW55IG9wdGlvbnMgdGhhdCBoZWxwIG1lIHRvIGNvbmZpZ3VyZSBkZWJ1Z2dpbmcgb3Igb3B0aW9uYWwgZmVhdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuICAyMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMjM6XHRcdGRlZmF1bHQgblxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xuICAyNjpcdFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4gIDI3Olx0XHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICAzNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XG4gIDM2Olx0XHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2NDMKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgYHN0bW1hY2AgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGNhbiBJIGFjdHVhbGx5IGludGVyYWN0IHdpdGggYHN0bW1hY2Agd2l0aG91dCByZWFsIGhhcmR3YXJlPyBJcyBpdCBzdHJpY3RseSBhIGhhcmR3YXJlLWRlcGVuZGVudCBkcml2ZXI/IExldCYjMzk7cyBjbGFyaWZ5LiAqWWVzKiwgaXQmIzM5O3MgYSBkcml2ZXIgZm9yIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgdGhlIFN5bm9wc3lzIElQIENvcmUuIFJpZ2h0LCBhbmQgaXQmIzM5O3MgdXNlZCBvbiBhIGJ1bmNoIG9mIFNvQ3MgbGlrZSBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgYW5kIEFsdGVyYSBTT0NGUEdBLiBUaGV5IGV2ZW4gdGVzdGVkIGl0IG9uIGEgWGlsaW54IFZpcnRleCBGUEdBIGFuZCBhIFN5bm9wc3lzIHByb3RvdHlwaW5nIGtpdCwgd2hpY2ggcmVpbmZvcmNlcyB0aGUgcGh5c2ljYWwgbmF0dXJlLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIHRoaXMgdGhpbmcgYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggYSBkdW1teSBvciBwbGF0Zm9ybSBkZXZpY2Ugc29tZWhvdz8gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUmIzM5O3MgYW55IHdheSB0byBtb2NrIG9yIHZpcnR1YWxpemUgaXQuIE15IG5leHQgc3RlcDogbGV0IG1lIGdyZXAgdGhlIGNvZGViYXNlIOKAkyBzcGVjaWZpY2FsbHksIEkmIzM5O20gbG9va2luZyBmb3IgdXNhZ2VzIG9mIGBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJgIG9yIGFueXRoaW5nIHNpbWlsYXIsIGVpdGhlciB3aXRoaW4gdGhlIGBzdG1tYWNgIGNvZGUgaXRzZWxmIG9yIGFueXdoZXJlIHJlbGV2YW50LiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBoaW50IG9mIGEgc29mdHdhcmUtYmFzZWQgaW50ZXJmYWNlIG9yIGlmIGl0JiMzOTtzIHB1cmVseSB0aWVkIHRvIHBoeXNpY2FsIE5JQ3MuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW5zdGFudGlhdGlvbiBjYXBhYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hYy4qcGxhdGZvcm1fZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY4PXN0YXRpYyBpbnQgZHdtYWMxMDAwX3ZhbGlkYXRlX3VjYXN0X2VudHJpZXMoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTkzLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6OTQ6c3RhdGljIHN0cnVjdCBzdG1tYWNfYXhpICpzdG1tYWNfYXhpX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy05NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtMTI5LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6MTMwOnN0YXRpYyBpbnQgc3RtbWFjX210bF9zZXR1cChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtMTMxLVx0XHRcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NDEzPXN0YXRpYyBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NDE0OnN0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTQxNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NjU3PXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NTg6ZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02NTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY3NT1zdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6Njc2OmRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjc3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz02OTI9RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy03MDMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo3MDQ6c3RhdGljIGludCBzdG1tYWNfcGx0ZnJfZ2V0X2lycV9hcnJheShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNzA1LVx0XHRcdFx0ICAgICAgY29uc3QgY2hhciAqZm10LCBpbnQgKmlycXMsIHNpemVfdCBudW0pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNzI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NzMwOmludCBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNzMxLVx0XHRcdFx0ICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqc3RtbWFjX3Jlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04MzE9c3RhdGljIGludCBzdG1tYWNfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NDY6aW50IHN0bW1hY19wbHRmcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODQ3LVx0XHQgICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg1OT1zdGF0aWMgdm9pZCBkZXZtX3N0bW1hY19wbHRmcl9yZW1vdmUodm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NzQ6aW50IGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NzUtXHRcdFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04ODc9RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg5NC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg5NTp2b2lkIHN0bW1hY19wbHRmcl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg5Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MTQ9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oOjE1OmRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MTc9c3RydWN0IGNsayAqc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMDppbnQgc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTIxLVx0XHRcdFx0ICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqc3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oOjIzOmludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTI0LVx0XHQgICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjUtXHRcdCAgICAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oOjI2OmludCBkZXZtX3N0bW1hY19wbHRmcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjctXHRcdFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTI4LVx0XHRcdCAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oOjI5OnZvaWQgc3RtbWFjX3BsdGZyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTMwLWV4dGVybiBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBzdG1tYWNfcGx0ZnJfcG1fb3BzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE2MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDg2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBzdG1tYWNgIERyaXZlciYjMzk7cyBFbXVsYXRpb24gYW5kIFRlc3RhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgc3RtbWFjYCwgYW4gRXRoZXJuZXQgTUFDIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBhbmQgU3lub3BzeXMgRGVzaWduV2FyZSBNQUNzLiBUaGUgY29yZSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgb3Igbm90IHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIGVtdWxhdGVzIGFueSBoYXJkd2FyZSByZWxhdGVkIHRvIGBzdG1tYWNgIG9yIGEgU3lub3BzeXMgRFdNQUMgZGV2aWNlIG9uIGFuIGFtZDY0IGFyY2hpdGVjdHVyZS4KCkxldCBtZSB0aGlua+KApiB0aGUgcHJvdmlkZWQgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc3RhdGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGluY2x1ZGVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMuIFRoaW5ncyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuIFNpbmNlIHRoZSB0ZXh0IGNhbGxzIG91dCB0aGUgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIGZvciB0aG9zZSBkZXZpY2VzLCBJIHNob3VsZCBjaGVjayB3aGF0IGlzIGF2YWlsYWJsZSBpbiBRRU1VLgoKQWxyaWdodCwgd2hhdCBFdGhlcm5ldCBOSUNzICphcmUqIGVtdWxhdGVkIGluIFFFTVUgb24geDg2L2FtZDY0PyBJIGtub3cgdGhlcmUmIzM5O3MgYGUxMDAwYCwgYGUxMDAwZWAsIGFuZCBgaWdiYCwgYWxzbyBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGB2bXhuZXQzYCwgYHZpcnRpby1uZXQtcGNpYCwgYW5kIHNvbWV0aW1lcyBgcm9ja2VyYCwgYW5kIFVTQi1iYXNlZCBOSUNzIGxpa2UgYHJ0bDgxNTBgIGFuZCBgYXNpeGAuCgpOb3csIGRvZXMgUUVNVSBoYXZlIHN1cHBvcnQgZm9yIGBzdG1tYWNgIG9yIGBkd21hY2A/IExldCBtZSBzZWXigKYgSSBzaG91bGQgY2hlY2sgdGhlIGBody9uZXQvYCBkaXJlY3RvcnkgaW4gdGhlIFFFTVUgc291cmNlLiBPa2F5LCB0aGUgbGlzdCBpbmNsdWRlcyBhIGxvdCBvZiBkaWZmZXJlbnQgZW11bGF0ZWQgTklDcyDigJMgYGFsbHdpbm5lcl9zdW44aV9lbWFjYCwgYGNhZGVuY2VfZ2VtYCwgYGRwODM5M3hgLCBgZTEwMDBgLCBgZTEwMDBlYCwgYW5kIG1hbnkgb3RoZXJzLiBCdXQsIHdhaXQsIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZyBleHBsaWNpdGx5IG5hbWVkIGBzdG1tYWNgIG9yIGBkd21hY2AgaW4gdGhlcmUuIFRoaXMgc3VnZ2VzdHMgdGhhdCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIGBzdG1tYWNgIGRyaXZlciBvciBhbnkgRFdNQUMsIGV2ZW4gaWYgSSB3YXMgcnVubmluZyBhIFFFTVUgQVJNIG9yIEFBcmNoNjQgaW5zdGFuY2UuIE9uIGFtZDY0LCBpdCYjMzk7cyBkZWZpbml0ZWx5IG5vdCBlbXVsYXRlZC4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIGEgZGlmZmVyZW50IGF2ZW51ZSwgY2FuIHN5emthbGxlciBldmVuIGludGVyYWN0IHdpdGggdGhpcz8gRG9lcyBzeXprYWxsZXIgaGF2ZSB0aGUgY2FwYWNpdHkgdG8gaW5zdGFudGlhdGUgYHN0bW1hY2A/IEl0IGxvb2tzIGxpa2UgYHN0bW1hY2AgKnJlcXVpcmVzKiBwaHlzaWNhbCBoYXJkd2FyZTogUENJIGRldmljZXMgZnJvbSBTVE1NQUMsIFNUTUlDUk8sIFNZTk9QU1lTLCBJbnRlbCwgTG9vbmdzb24sIG9yIE1vdG9yY29tbSwgb3IgcGxhdGZvcm0gZGV2aWNlcyBmcm9tIERldmljZSBUcmVlIG9yIEFDUEkuIFNpbmNlIHN5emthbGxlciBydW5zIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIFZNcywgaXQgY2FuJiMzOTt0IHByb2JlIG9yIGV4ZWN1dGUgYHN0bW1hY2AgYmVjYXVzZSBpdCBjYW5ub3QgaW50ZXJhY3Qgd2l0aCB0aGUgcmVxdWlyZWQgcGh5c2ljYWwgaGFyZHdhcmUuCgpOb3csIGxldCYjMzk7cyBtb3ZlIG9uIHRvIHRoZSBjb2RlIGNoYW5nZXM6IHRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX3NldF9iZnNpemVgIGFuZCBgc3RtbWFjX3NldHVwX2RtYV9kZXNjYCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLCBhbmQgYWxzbyBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCB3aGljaCBpbmNsdWRlcyBldGh0b29sIHNlbGZ0ZXN0cyBmb3IgYHN0bW1hY2AuCgpUaGUga2V5IHF1ZXN0aW9uIGlzLCBhcmUgYHN0bW1hY19zZWxmdGVzdHNgIG9yIGNhbGxzIHRvIGBzdG1tYWNfc2V0dXBfZG1hX2Rlc2NgIHJlYWNoYWJsZSBmcm9tICphbnkqIHZpcnR1YWwgZHJpdmVyIG9yIHRoZSBjb3JlIHN1YnN5c3RlbT8gTGV0IG1lIHNlZS4gSSYjMzk7bGwgc2VhcmNoIGZvciBjYWxscyB0byBgc3RtbWFjX3NldHVwX2RtYV9kZXNjYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3NldHVwX2RtYV9kZXNjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDAzOT1zdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA1My0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDA1NDogKiAgc3RtbWFjX3NldHVwX2RtYV9kZXNjIC0gR2VuZXJhdGUgYSBkbWFfY29uZiBhbmQgYWxsb2NhdGUgRE1BIHF1ZXVlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNTUtICogIEBwcml2OiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjI9c3RhdGljIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDYzOnN0bW1hY19zZXR1cF9kbWFfZGVzYyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBtdHUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDE5OD1zdGF0aWMgaW50IHN0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MjA4Olx0ZG1hX2NvbmYgPSBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MocHJpdiwgZGV2LVx1MDAzZW10dSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMDktXHRpZiAoSVNfRVJSKGRtYV9jb25mKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMzk9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNjUtXHRcdC8qIFRyeSB0byBhbGxvY2F0ZSB0aGUgbmV3IERNQSBjb25mIHdpdGggdGhlIG5ldyBtdHUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjE2NjpcdFx0ZG1hX2NvbmYgPSBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MocHJpdiwgbXR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE2Ny1cdFx0aWYgKElTX0VSUihkbWFfY29uZikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0NzIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWxhdGlvbnNoaXAgQmV0d2VlbiBETUEgRGVzY3JpcHRvciBTZXR1cCBhbmQgU2VsZi1UZXN0cyBpbiB0aGUgU1RNTUFDIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBzdG1tYWNgIEV0aGVybmV0IGRyaXZlciwgYW5kIHR3byBrZXkgcGFydHMgYXJlIGp1bXBpbmcgb3V0IGF0IG1lOiBgc3RtbWFjX3NldHVwX2RtYV9kZXNjYCBhbmQgdGhlIHNlbGYtdGVzdHMgaW1wbGVtZW50ZWQgaW4gYHN0bW1hY19zZWxmdGVzdHMuY2AuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IHRoZXkmIzM5O3JlIGJvdGggaW50ZWdyYWwgY29tcG9uZW50cyB3aXRoaW4gdGhpcyBkcml2ZXIuIEkmIzM5O20gbm90aW5nIHRoYXQgYHN0bW1hY19zZXR1cF9kbWFfZGVzY2AgcGxheXMgYSBjcnVjaWFsIHJvbGUgaW4gaW5pdGlhbGl6aW5nIG9yIHJlY29uZmlndXJpbmcgdGhlIERNQSBkZXNjcmlwdG9ycywgYXMgaXQmIzM5O3MgY2FsbGVkIGJ5IHRoZSBgc3RtbWFjX29wZW4oKWAgZnVuY3Rpb24sIHdoaWNoIGlzLCBvYnZpb3VzbHksIHVzZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgYW5kIGBzdG1tYWNfY2hhbmdlX210dSgpYCwgd2hpY2ggaXMgdXNlZCwgdW5zdXJwcmlzaW5nbHksIHdoZW4gdGhlIE1UVSAoTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCkgaXMgbW9kaWZpZWQsIHJlcXVpcmluZyBhIHJlLXNldHVwIG9mIHRoZSBkZXNjcmlwdG9ycy4KCk5vdywgdGhlIHNlbGYtdGVzdCBhc3BlY3QsIHRoYXQmIzM5O3MgcmVzaWRpbmcgd2l0aGluIGBzdG1tYWNfc2VsZnRlc3RzLmNgIHdoaWNoLCBpdCYjMzk7cyBjbGVhciwgaW1wbGVtZW50cyB0aGUgc2VsZi10ZXN0IGZ1bmN0aW9uYWxpdHkuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2tlZCBieSBgc3RtbWFjX3NlbGZ0ZXN0X3J1bigpYCwgd2hpY2ggaXMgZGlyZWN0bHkgdGllZCB0byB0aGUgYGV0aHRvb2xfb3BzLSZndDtzZWxmX3Rlc3RgIGhvb2sgZm9yIGBzdG1tYWNgLiBTbywgdGhlIGVudGlyZSBzZWxmLXRlc3QgbWVjaGFuaXNtIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIHN0YW5kYXJkIGV0aHRvb2wgaW50ZXJmYWNlLiBHaXZlbiB0aGUgY29udGV4dCwgaXQgbWlnaHQgYmUgaW5zdHJ1Y3RpdmUgdG8gY2hlY2sgb3V0IGBzdG1tYWNfc2VsZnRlc3RfcnVuYCwgaW4gdGhlIGNvZGViYXNlLCB0byB2ZXJpZnkgdGhlIGFjdHVhbCBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19zZWxmdGVzdF9ydW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDMyPXN0cnVjdCB0aW1lc3BlYzY0IHN0bW1hY19jYWxjX3Rhc19iYXNldGltZShrdGltZV90IG9sZF9iYXNlX3RpbWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDM2LSNpZiBJU19FTkFCTEVEKENPTkZJR19TVE1NQUNfU0VMRlRFU1RTKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDM3OnZvaWQgc3RtbWFjX3NlbGZ0ZXN0X3J1bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDM4LVx0XHRcdCBzdHJ1Y3QgZXRodG9vbF90ZXN0ICpldGVzdCwgdTY0ICpidWYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQ0MD1pbnQgc3RtbWFjX3NlbGZ0ZXN0X2dldF9jb3VudChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDQxLSNlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0NDI6c3RhdGljIGlubGluZSB2b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQ0My1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF90ZXN0ICpldGVzdCwgdTY0ICpidWYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYz0xMDk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgc3RtbWFjX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmMtMTEwOC1cdC5zZXRfcGF1c2VwYXJhbSA9IHN0bW1hY19zZXRfcGF1c2VwYXJhbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MTEwOTpcdC5zZWxmX3Rlc3QgPSBzdG1tYWNfc2VsZnRlc3RfcnVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2V0aHRvb2wuYy0xMTEwLVx0LmdldF9ldGh0b29sX3N0YXRzID0gc3RtbWFjX2dldF9ldGh0b29sX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYz0xOTE2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3Rlc3Qge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYy0yMDE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jOjIwMTc6dm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjAxOC1cdFx0XHQgc3RydWN0IGV0aHRvb2xfdGVzdCAqZXRlc3QsIHU2NCAqYnVmKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAyMTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDY4MQoJCQkJCQkJb3V0cHV0OiAxMjYKCQkJCQkJCXRob3VnaHRzOiA1OTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBWZXJkaWN0OiBXb3J0aEZ1enppbmcgPSBmYWxzZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIG15IHVuZGVyc3RhbmRpbmcsIGBzdG1tYWNfc2VsZnRlc3RfcnVuYCBpcyBleGNsdXNpdmVseSB0cmlnZ2VyZWQgYnkgZXRodG9vbCYjMzk7cyBgc2VsZl90ZXN0YCBvbiBhIG5ldGRldiBpbml0aWFsaXplZCBieSB0aGUgYHN0bW1hY2AgZHJpdmVyLiBgc3RtbWFjYCwgYXMgSSBrbm93IGl0LCBpcyBhIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBJUCBvciBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGhhcmR3YXJlLiBTbywgdG8gZXZlbiAqZ2V0KiB0byB0aGlzIGNvZGUsIHlvdSAqbmVlZCogYSBwaHlzaWNhbCBkZXZpY2UgdGhhdCBgc3RtbWFjYCBzdXBwb3J0cywgb3IsIGFuIGVtdWxhdGVkIG9uZSwgd2hpY2ggaXNuJiMzOTt0IHByZXNlbnQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGVudmlyb25tZW50cy4KCk5vdywgbGV0JiMzOTtzIHF1aWNrbHkgcmUtY2hlY2sgU2VjdGlvbiAyIG9mIHRoZSB0cmlhZ2UgaW5zdHJ1Y3Rpb25zLiBJdCBleHBsaWNpdGx5IHNheXMgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBpZiB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIGNlcnRhaW4gbmVnYXRpdmUgY2F0ZWdvcmllcywgYW5kIG9uZSBvZiB0aGVtIGlzICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsuIFNwZWNpZmljYWxseSwgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIG1lbnRpb24gdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmluZyBwaHlzaWNhbCBjYXJkcyB0aGF0IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyAqZXhhY3RseSogd2hhdCB0aGlzIGlzOiB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0aGUgcGh5c2ljYWwgYHN0bW1hY2AgaGFyZHdhcmUsIG5vdCBzb21ldGhpbmcgeW91IGNhbiBlYXNpbHkgc3Bvb2YuCgpBbGwgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNgLiBUaGlzIGNvbmZpcm1zIGl0OiB0aGlzIGlzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBtZWFucyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlICh0aGUgU3lub3BzeXMgSVAgY29yZSkgaXMgcmVxdWlyZWQuIFRoYXQmIzM5O3Mgbm90IGVtdWxhdGVkIGluIHRoZSB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0Ugb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIGNvZGUgKmlzKiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIHN5emthbGxlciBmdXp6aW5nLgoKVGh1cywgYmFzZWQgb24gdGhlIHRyaWFnZSBpbnN0cnVjdGlvbnMgYW5kIG15IGV4cGVydCBrbm93bGVkZ2UsIGBXb3J0aEZ1enppbmdgIG11c3QgYmUgZmFsc2UuCgpMZXQmIzM5O3MgZ2V0IHJlYWR5IGZvciB0aGUgYHNldC1yZXN1bHRzYCBjYWxsOiBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc6IGZhbHNlYCwgYEZvY3VzU3ltYm9sczogW11gLCBhbmQgYEVuYWJsZUNvbmZpZ3M6IFtdYC4KCk5vdyBJIG5lZWQgYSBjb25jaXNlIHJlYXNvbmluZyBleHBsYW5hdGlvbi4gSGVyZSBpcyB3aGF0IEkgd2lsbCBnbyB3aXRoOiAmIzM0O1RoZSBjaGFuZ2VzIG1vZGlmeSBidWZmZXIgc2l6ZSBjYWxjdWxhdGlvbnMgYW5kIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlIChTeW5vcHN5cyBJUCBjb3JlKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7CgpMZXQgbWUganVzdCB2ZXJpZnkgdGhhdCB0aGUgcmVhc29uaW5nIGlzIGNvcnJlY3QuIFllcywgdGhlIGNoYW5nZXMgYXJlIHRvIHRoZSBidWZmZXIgc2l6ZSBhbmQgc2VsZnRlc3RzLCBhbmQgdGhlIHJvb3QgaXNzdWUgaXMgdGhhdCB5b3UgKm5lZWQqIGEgc3BlY2lmaWMgU3lub3BzeXMgaGFyZHdhcmUgYW5kIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkLiBQZXJmZWN0IQoKQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMjE6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ5OjU4LjY2ODUzMzY3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODQxNzI5OTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NDk6NTguNjY4NTM5ODEyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTg5NDQ2NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMWRkOTcxZjE1YzkwY2MzYzJhY2QwNzZlOTVjYWFmMmQzMjZjZjk2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDIxOjQ5OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuaW5kZXggNjJjMzQ0MTkxMWU3MS4uMjliOTcwNTc0YTM4MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC0xNTM2LDE3ICsxNTM2LDE3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3RtbWFjX3J4X29mZnNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcdHJldHVybiBORVRfU0tCX1BBRCArIE5FVF9JUF9BTElHTjtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbXR1KVxcbitzdGF0aWMgaW50IHN0bW1hY19zZXRfYmZzaXplKGludCBsZW4pXFxuIHtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdGlmIChtdHUgXFx1MDAzZT0gQlVGX1NJWkVfOEtpQilcXG4rXFx0aWYgKGxlbiBcXHUwMDNlIEJVRl9TSVpFXzhLaUIpXFxuIFxcdFxcdHJldCA9IEJVRl9TSVpFXzE2S2lCO1xcbi1cXHRlbHNlIGlmIChtdHUgXFx1MDAzZT0gQlVGX1NJWkVfNEtpQilcXG4rXFx0ZWxzZSBpZiAobGVuIFxcdTAwM2UgQlVGX1NJWkVfNEtpQilcXG4gXFx0XFx0cmV0ID0gQlVGX1NJWkVfOEtpQjtcXG4tXFx0ZWxzZSBpZiAobXR1IFxcdTAwM2U9IEJVRl9TSVpFXzJLaUIpXFxuK1xcdGVsc2UgaWYgKGxlbiBcXHUwMDNlIEJVRl9TSVpFXzJLaUIpXFxuIFxcdFxcdHJldCA9IEJVRl9TSVpFXzRLaUI7XFxuLVxcdGVsc2UgaWYgKG10dSBcXHUwMDNlIERFRkFVTFRfQlVGU0laRSlcXG4rXFx0ZWxzZSBpZiAobGVuIFxcdTAwM2UgREVGQVVMVF9CVUZTSVpFKVxcbiBcXHRcXHRyZXQgPSBCVUZfU0laRV8yS2lCO1xcbiBcXHRlbHNlXFxuIFxcdFxcdHJldCA9IERFRkFVTFRfQlVGU0laRTtcXG5AQCAtNDA2Myw3ICs0MDYzLDcgQEAgc3RhdGljIHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKlxcbiBzdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KVxcbiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mO1xcbi1cXHRpbnQgYmZzaXplLCByZXQ7XFxuK1xcdGludCBiZnNpemUsIGxlbiwgcmV0O1xcbiBcXHR1OCBjaGFuO1xcbiBcXG4gXFx0ZG1hX2NvbmYgPSBremFsbG9jX29iaigqZG1hX2NvbmYpO1xcbkBAIC00MDczLDEzICs0MDczLDE1IEBAIHN0bW1hY19zZXR1cF9kbWFfZGVzYyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCBtdHUpXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBSZXR1cm5zIDAgb3IgQlVGX1NJWkVfMTZLaUIgaWYgbXR1IFxcdTAwM2UgOEtpQiBhbmQgZHdtYWM0IG9yIHJpbmcgbW9kZSAqL1xcbi1cXHRiZnNpemUgPSBzdG1tYWNfc2V0XzE2a2liX2Jmc2l6ZShwcml2LCBtdHUpO1xcbitcXHRsZW4gPSBtdHUgKyBFVEhfSExFTiArIDIgKiBWTEFOX0hMRU4gKyBFVEhfRkNTX0xFTiArIE5FVF9JUF9BTElHTjtcXG4rXFxuK1xcdC8qIFJldHVybnMgMCBvciBCVUZfU0laRV8xNktpQiBpZiBsZW4gXFx1MDAzZSA4S2lCIGFuZCBkd21hYzQgb3IgcmluZyBtb2RlICovXFxuK1xcdGJmc2l6ZSA9IHN0bW1hY19zZXRfMTZraWJfYmZzaXplKHByaXYsIGxlbik7XFxuIFxcdGlmIChiZnNpemUgXFx1MDAzYyAwKVxcbiBcXHRcXHRiZnNpemUgPSAwO1xcbiBcXG4gXFx0aWYgKGJmc2l6ZSBcXHUwMDNjIEJVRl9TSVpFXzE2S2lCKVxcbi1cXHRcXHRiZnNpemUgPSBzdG1tYWNfc2V0X2Jmc2l6ZShtdHUpO1xcbitcXHRcXHRiZnNpemUgPSBzdG1tYWNfc2V0X2Jmc2l6ZShsZW4pO1xcbiBcXG4gXFx0ZG1hX2NvbmYtXFx1MDAzZWRtYV9idWZfc3ogPSBiZnNpemU7XFxuIFxcdC8qIENob3NlIHRoZSB0eC9yeCBzaXplIGZyb20gdGhlIGFscmVhZHkgZGVmaW5lZCBvbmUgaW4gdGhlXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY1xcbmluZGV4IDYzNzJlYzdjM2YzMTcuLmNkN2RjOTkwOTVhMDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXFxuQEAgLTEyLDYgKzEyLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2wuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91ZHAuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9kc2EuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9wa3RfY2xzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcGt0X3NjaGVkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvdGNwLmhcXHUwMDNlXFxuQEAgLTI5LDYgKzMwLDcgQEAgc3RydWN0IHN0bW1hY2hkciB7XFxuIFxcdFxcdFxcdCAgICAgIHNpemVvZihzdHJ1Y3Qgc3RtbWFjaGRyKSlcXG4gI2RlZmluZSBTVE1NQUNfVEVTVF9QS1RfTUFHSUNcXHQweGRlYWRjYWZlY2FmZWRlYWRVTExcXG4gI2RlZmluZSBTVE1NQUNfTEJfVElNRU9VVFxcdG1zZWNzX3RvX2ppZmZpZXMoMjAwKVxcbisjZGVmaW5lIFNUTU1BQ19TRlRfTUFYX0xQSVxcdCg1ICogVVNFQ19QRVJfU0VDKVxcbiBcXG4gc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMge1xcbiBcXHRpbnQgdmxhbjtcXG5AQCAtMjM3LDYgKzIzOSwxMCBAQCBzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiB7XFxuIFxcdHN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzICpwYWNrZXQ7XFxuIFxcdHN0cnVjdCBwYWNrZXRfdHlwZSBwdDtcXG4gXFx0c3RydWN0IGNvbXBsZXRpb24gY29tcDtcXG4rXFx0X19iZTE2IHBhY2tldF90eXBlO1xcbitcXHRpbnQgKCpmdW5jKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4rXFx0XFx0ICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX25kZXYpO1xcbitcXHRib29sIGNhcHR1cmVfYWxsO1xcbiBcXHRpbnQgZG91YmxlX3ZsYW47XFxuIFxcdGludCB2bGFuX2lkO1xcbiBcXHRpbnQgb2s7XFxuQEAgLTMxNiw2ICszMjIsNTAgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9sb29wYmFja192YWxpZGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBzdG1tYWNfc2Z0X2ZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX25kZXYpXFxuK3tcXG4rXFx0c3RydWN0IHN0bW1hY190ZXN0X3ByaXYgKnRwcml2ID0gcHQtXFx1MDAzZWFmX3BhY2tldF9wcml2O1xcbitcXHRzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7XFxuK1xcdGludCByZXQgPSAwO1xcbitcXG4rXFx0aWYgKGhkci1cXHUwMDNlaF9wcm90byA9PSB0cHJpdi1cXHUwMDNlcGFja2V0X3R5cGUpIHtcXG4rXFx0XFx0c3RydWN0IHNrX2J1ZmYgKm5za2IgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTtcXG4rXFxuK1xcdFxcdGlmIChuc2tiKVxcbitcXHRcXHRcXHRyZXQgPSB0cHJpdi1cXHUwMDNlZnVuYyhuc2tiLCBuZGV2LCBwdCwgb3JpZ19uZGV2KTtcXG4rXFx0fVxcbitcXG4rXFx0a2ZyZWVfc2tiKHNrYik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHN0bW1hY19zZnRfYWRkX3BhY2soc3RydWN0IHBhY2tldF90eXBlICpwdClcXG4re1xcbitcXHRzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiAqdHByaXYgPSBwdC1cXHUwMDNlYWZfcGFja2V0X3ByaXY7XFxuK1xcbitcXHRpZiAobmV0ZGV2X3VzZXNfZHNhKHRwcml2LVxcdTAwM2VwdC5kZXYpIHx8IHRwcml2LVxcdTAwM2VjYXB0dXJlX2FsbCkge1xcbitcXHRcXHR0cHJpdi1cXHUwMDNlcGFja2V0X3R5cGUgPSB0cHJpdi1cXHUwMDNlcHQudHlwZTtcXG4rXFx0XFx0dHByaXYtXFx1MDAzZWZ1bmMgPSB0cHJpdi1cXHUwMDNlcHQuZnVuYztcXG4rXFxuK1xcdFxcdC8qIERTQSBjb25kdWl0IHdpbGwgcmVwb3J0IEVUSF9QX1hEU0EsIHNvIG91ciBwYWNrZXQgaGFuZGxlclxcbitcXHRcXHQgKiB3b24ndCBtYXRjaC4gTGV0J3MgcmVnaXN0ZXIgYSBFVEhfUF9BTEwgbWF0Y2ggYW5kIGZpbHRlclxcbitcXHRcXHQgKiBtYW51YWxseSBpbiBzdG1tYWNfc2Z0X2ZpbHRlci5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHRwcml2LVxcdTAwM2VwdC50eXBlID0gaHRvbnMoRVRIX1BfQUxMKTtcXG4rXFx0XFx0dHByaXYtXFx1MDAzZXB0LmZ1bmMgPSBzdG1tYWNfc2Z0X2ZpbHRlcjtcXG4rXFx0XFx0dHByaXYtXFx1MDAzZXB0Lmlnbm9yZV9vdXRnb2luZyA9IHRydWU7XFxuK1xcdH1cXG4rXFxuK1xcdGRldl9hZGRfcGFjayhwdCk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soc3RydWN0IHBhY2tldF90eXBlICpwdClcXG4re1xcbitcXHRkZXZfcmVtb3ZlX3BhY2socHQpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfcGFja2V0X2F0dHJzICphdHRyKVxcbiB7XFxuQEAgLTMzNyw3ICszODcsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHR0cHJpdi1cXHUwMDNlcGFja2V0ID0gYXR0cjtcXG4gXFxuIFxcdGlmICghYXR0ci1cXHUwMDNlZG9udF93YWl0KVxcbi1cXHRcXHRkZXZfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuK1xcdFxcdHN0bW1hY19zZnRfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuIFxcbiBcXHRza2IgPSBzdG1tYWNfdGVzdF9nZXRfdWRwX3NrYihwcml2LCBhdHRyKTtcXG4gXFx0aWYgKCFza2IpIHtcXG5AQCAtMzYwLDcgKzQxMCw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9sb29wYmFjayhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcbiBjbGVhbnVwOlxcbiBcXHRpZiAoIWF0dHItXFx1MDAzZWRvbnRfd2FpdClcXG4tXFx0XFx0ZGV2X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbitcXHRcXHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbiBcXHRrZnJlZSh0cHJpdik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtNDE0LDEyICs0NjQsMTYgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF9tbWMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0c3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqaW5pdGlhbCwgKmZpbmFsO1xcbi1cXHRpbnQgcmV0cmllcyA9IDEwO1xcbitcXHR1bnNpZ25lZCBsb25nIHRpbWVvdXQsIG1heF9kdXJhdGlvbjtcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdGlmICghcHJpdi1cXHUwMDNlZG1hX2NhcC5lZWUgfHwgIXByaXYtXFx1MDAzZWVlZV9hY3RpdmUpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuK1xcdC8qIEJhaWwgb3V0IGlmIHRoZSBjb25maWd1cmVkIExQSSB0aW1lciBpcyB0b28gbG9uZyAqL1xcbitcXHRpZiAocHJpdi1cXHUwMDNldHhfbHBpX3RpbWVyIFxcdTAwM2UgU1RNTUFDX1NGVF9NQVhfTFBJKVxcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcbiBcXHRpbml0aWFsID0ga3phbGxvY19vYmooKmluaXRpYWwpO1xcbiBcXHRpZiAoIWluaXRpYWwpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbkBAIC00MzAsMTQgKzQ4NCwyMSBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcdFxcdGdvdG8gb3V0X2ZyZWVfaW5pdGlhbDtcXG4gXFx0fVxcbiBcXG4rXFx0LyogU25hcHNob3Qgc3RhdHMsIHdlIHdhbnQgdG8gY291bnQgdGhlIGluX2xwaSBldmVudHMuIFdlIG1heSBlbnRlclxcbitcXHQgKiBMUEkganVzdCBhZnRlciB0aGUgcGFja2V0IHdhcyBzZW50LlxcbitcXHQgKi9cXG4gXFx0bWVtY3B5KGluaXRpYWwsIFxcdTAwMjZwcml2LVxcdTAwM2V4c3RhdHMsIHNpemVvZigqaW5pdGlhbCkpO1xcbiBcXG4rXFx0LyogU2VuZCBhIGZyYW1lLCB0aGVuIHdhaXQgdG8gZW50ZXIgTFBJICovXFxuIFxcdHJldCA9IHN0bW1hY190ZXN0X21hY19sb29wYmFjayhwcml2KTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBvdXRfZnJlZV9maW5hbDtcXG4gXFxuK1xcdG1heF9kdXJhdGlvbiA9IHVzZWNzX3RvX2ppZmZpZXMoMiAqIHByaXYtXFx1MDAzZXR4X2xwaV90aW1lcik7XFxuK1xcbiBcXHQvKiBXZSBoYXZlIG5vIHRyYWZmaWMgaW4gdGhlIGxpbmUgc28sIHNvb25lciBvciBsYXRlciBpdCB3aWxsIGdvIExQSSAqL1xcbi1cXHR3aGlsZSAoLS1yZXRyaWVzKSB7XFxuK1xcdHRpbWVvdXQgPSBqaWZmaWVzICsgbWF4X2R1cmF0aW9uO1xcbitcXHR3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHtcXG4gXFx0XFx0bWVtY3B5KGZpbmFsLCBcXHUwMDI2cHJpdi1cXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XFxuIFxcbiBcXHRcXHRpZiAoZmluYWwtXFx1MDAzZWlycV90eF9wYXRoX2luX2xwaV9tb2RlX24gXFx1MDAzZVxcbkBAIC00NDYsMjAgKzUwNywzOCBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIFxcdFxcdG1zbGVlcCgxMDApO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXJldHJpZXMpIHtcXG4rXFx0bWVtY3B5KGZpbmFsLCBcXHUwMDI2cHJpdi1cXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XFxuK1xcdGlmIChmaW5hbC1cXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcXHUwMDNjPVxcbitcXHQgICAgaW5pdGlhbC1cXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbikge1xcbiBcXHRcXHRyZXQgPSAtRVRJTUVET1VUO1xcbiBcXHRcXHRnb3RvIG91dF9mcmVlX2ZpbmFsO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZmluYWwtXFx1MDAzZWlycV90eF9wYXRoX2luX2xwaV9tb2RlX24gXFx1MDAzYz1cXG4tXFx0ICAgIGluaXRpYWwtXFx1MDAzZWlycV90eF9wYXRoX2luX2xwaV9tb2RlX24pIHtcXG4tXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0LyogUmUtc25hcHNob3QsIGFzIHdlIHdhbnQgdG8gbWVhc3VyZSBleGl0X2xwaSBldmVudHMuIFdlIHNob3VsZCBiZVxcbitcXHQgKiBpbiBMUEkgcmlnaHQgbm93LlxcbitcXHQgKi9cXG4rXFx0bWVtY3B5KGluaXRpYWwsIFxcdTAwMjZwcml2LVxcdTAwM2V4c3RhdHMsIHNpemVvZigqaW5pdGlhbCkpO1xcbitcXG4rXFx0LyogVFggc29tZXRoaW5nIHNvIHdlIGdvIG91dCBvZiBMUEkgKi9cXG4rXFx0cmV0ID0gc3RtbWFjX3Rlc3RfbWFjX2xvb3BiYWNrKHByaXYpO1xcbitcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIG91dF9mcmVlX2ZpbmFsO1xcbitcXG4rXFx0LyogV2FpdCBmb3IgdGhlIGV4aXQgTFBJIGludGVycnVwdCAqL1xcbitcXHR0aW1lb3V0ID0gamlmZmllcyArIG1heF9kdXJhdGlvbjtcXG4rXFx0d2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7XFxuK1xcdFxcdG1lbWNweShmaW5hbCwgXFx1MDAyNnByaXYtXFx1MDAzZXhzdGF0cywgc2l6ZW9mKCpmaW5hbCkpO1xcbitcXG4rXFx0XFx0aWYgKGZpbmFsLVxcdTAwM2VpcnFfdHhfcGF0aF9leGl0X2xwaV9tb2RlX24gXFx1MDAzZVxcbitcXHRcXHQgICAgaW5pdGlhbC1cXHUwMDNlaXJxX3R4X3BhdGhfZXhpdF9scGlfbW9kZV9uKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0bXNsZWVwKDEwMCk7XFxuIFxcdH1cXG4gXFxuK1xcdG1lbWNweShmaW5hbCwgXFx1MDAyNnByaXYtXFx1MDAzZXhzdGF0cywgc2l6ZW9mKCpmaW5hbCkpO1xcbiBcXHRpZiAoZmluYWwtXFx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbiBcXHUwMDNjPVxcbiBcXHQgICAgaW5pdGlhbC1cXHUwMDNlaXJxX3R4X3BhdGhfZXhpdF9scGlfbW9kZV9uKSB7XFxuLVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdHJldCA9IC1FVElNRURPVVQ7XFxuIFxcdFxcdGdvdG8gb3V0X2ZyZWVfZmluYWw7XFxuIFxcdH1cXG4gXFxuQEAgLTc2Nyw3ICs4NDYsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2Zsb3djdHJsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0dHByaXYtXFx1MDAzZXB0LmZ1bmMgPSBzdG1tYWNfdGVzdF9mbG93Y3RybF92YWxpZGF0ZTtcXG4gXFx0dHByaXYtXFx1MDAzZXB0LmRldiA9IHByaXYtXFx1MDAzZWRldjtcXG4gXFx0dHByaXYtXFx1MDAzZXB0LmFmX3BhY2tldF9wcml2ID0gdHByaXY7XFxuLVxcdGRldl9hZGRfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4rXFx0c3RtbWFjX3NmdF9hZGRfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4gXFxuIFxcdC8qIENvbXB1dGUgbWluaW11bSBudW1iZXIgb2YgcGFja2V0cyB0byBtYWtlIEZJRk8gZnVsbCAqL1xcbiBcXHRwa3RfY291bnQgPSByeF9maWZvX3NpemU7XFxuQEAgLTgyMyw3ICs5MDIsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2Zsb3djdHJsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gY2xlYW51cDpcXG4gXFx0ZGV2X21jX2RlbChwcml2LVxcdTAwM2VkZXYsIHBhZGRyKTtcXG4gXFx0ZGV2X3NldF9wcm9taXNjdWl0eShwcml2LVxcdTAwM2VkZXYsIC0xKTtcXG4tXFx0ZGV2X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbitcXHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbiBcXHRrZnJlZSh0cHJpdik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtOTIxLDYgKzEwMDAsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHR0cHJpdi1cXHUwMDNlcHQuZGV2ID0gcHJpdi1cXHUwMDNlZGV2O1xcbiBcXHR0cHJpdi1cXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcXG4gXFx0dHByaXYtXFx1MDAzZXBhY2tldCA9IFxcdTAwMjZhdHRyO1xcbitcXHR0cHJpdi1cXHUwMDNlY2FwdHVyZV9hbGwgPSB0cnVlO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogQXMgd2UgdXNlIEhBU0ggZmlsdGVyaW5nLCBmYWxzZSBwb3NpdGl2ZXMgbWF5IGFwcGVhci4gVGhpcyBpcyBhXFxuQEAgLTkyOCw3ICsxMDA4LDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X3ZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFx0ICogSEFTSCB2YWx1ZXMuXFxuIFxcdCAqL1xcbiBcXHR0cHJpdi1cXHUwMDNldmxhbl9pZCA9IDB4MTIzO1xcbi1cXHRkZXZfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuK1xcdHN0bW1hY19zZnRfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuIFxcbiBcXHRyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi1cXHUwMDNlZGV2LCBodG9ucyhFVEhfUF84MDIxUSksIHRwcml2LVxcdTAwM2V2bGFuX2lkKTtcXG4gXFx0aWYgKHJldClcXG5AQCAtOTY4LDcgKzEwNDgsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB2bGFuX2RlbDpcXG4gXFx0dmxhbl92aWRfZGVsKHByaXYtXFx1MDAzZWRldiwgaHRvbnMoRVRIX1BfODAyMVEpLCB0cHJpdi1cXHUwMDNldmxhbl9pZCk7XFxuIGNsZWFudXA6XFxuLVxcdGRldl9yZW1vdmVfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4rXFx0c3RtbWFjX3NmdF9yZW1vdmVfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4gXFx0a2ZyZWUodHByaXYpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTEwMTUsNiArMTA5NSw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHR0cHJpdi1cXHUwMDNlcHQuZGV2ID0gcHJpdi1cXHUwMDNlZGV2O1xcbiBcXHR0cHJpdi1cXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcXG4gXFx0dHByaXYtXFx1MDAzZXBhY2tldCA9IFxcdTAwMjZhdHRyO1xcbitcXHR0cHJpdi1cXHUwMDNlY2FwdHVyZV9hbGwgPSB0cnVlO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogQXMgd2UgdXNlIEhBU0ggZmlsdGVyaW5nLCBmYWxzZSBwb3NpdGl2ZXMgbWF5IGFwcGVhci4gVGhpcyBpcyBhXFxuQEAgLTEwMjIsNyArMTEwMyw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiBcXHQgKiBIQVNIIHZhbHVlcy5cXG4gXFx0ICovXFxuIFxcdHRwcml2LVxcdTAwM2V2bGFuX2lkID0gMHgxMjM7XFxuLVxcdGRldl9hZGRfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4rXFx0c3RtbWFjX3NmdF9hZGRfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4gXFxuIFxcdHJldCA9IHZsYW5fdmlkX2FkZChwcml2LVxcdTAwM2VkZXYsIGh0b25zKEVUSF9QXzgwMjFBRCksIHRwcml2LVxcdTAwM2V2bGFuX2lkKTtcXG4gXFx0aWYgKHJldClcXG5AQCAtMTA2Miw3ICsxMTQzLDcgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2R2bGFuZmlsdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuIHZsYW5fZGVsOlxcbiBcXHR2bGFuX3ZpZF9kZWwocHJpdi1cXHUwMDNlZGV2LCBodG9ucyhFVEhfUF84MDIxQUQpLCB0cHJpdi1cXHUwMDNldmxhbl9pZCk7XFxuIGNsZWFudXA6XFxuLVxcdGRldl9yZW1vdmVfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4rXFx0c3RtbWFjX3NmdF9yZW1vdmVfcGFjayhcXHUwMDI2dHByaXYtXFx1MDAzZXB0KTtcXG4gXFx0a2ZyZWUodHByaXYpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTEyOTMsNyArMTM3NCw4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHN2bGFuKVxcbiBcXHR0cHJpdi1cXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcXG4gXFx0dHByaXYtXFx1MDAzZXBhY2tldCA9IFxcdTAwMjZhdHRyO1xcbiBcXHR0cHJpdi1cXHUwMDNldmxhbl9pZCA9IDB4MTIzO1xcbi1cXHRkZXZfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuK1xcdHRwcml2LVxcdTAwM2VjYXB0dXJlX2FsbCA9IHRydWU7XFxuK1xcdHN0bW1hY19zZnRfYWRkX3BhY2soXFx1MDAyNnRwcml2LVxcdTAwM2VwdCk7XFxuIFxcbiBcXHRyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi1cXHUwMDNlZGV2LCBodG9ucyhwcm90byksIHRwcml2LVxcdTAwM2V2bGFuX2lkKTtcXG4gXFx0aWYgKHJldClcXG5AQCAtMTMyMCw3ICsxNDAyLDcgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF92bGFub2ZmX2NvbW1vbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIGJvb2wgc3ZsYW4pXFxuIHZsYW5fZGVsOlxcbiBcXHR2bGFuX3ZpZF9kZWwocHJpdi1cXHUwMDNlZGV2LCBodG9ucyhwcm90byksIHRwcml2LVxcdTAwM2V2bGFuX2lkKTtcXG4gY2xlYW51cDpcXG4tXFx0ZGV2X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbitcXHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFxcdTAwMjZ0cHJpdi1cXHUwMDNlcHQpO1xcbiBcXHRrZnJlZSh0cHJpdik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtMTMzMiw3ICsxNDE0LDcgQEAgc3RhdGljIGludCBzdG1tYWNfdGVzdF92bGFub2ZmKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4gXFxuIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfc3ZsYW5vZmYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbiB7XFxuLVxcdGlmICghcHJpdi1cXHUwMDNlZG1hX2NhcC5kdmxhbilcXG4rXFx0aWYgKCEocHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1RYKSlcXG4gXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXHRyZXR1cm4gc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24ocHJpdiwgdHJ1ZSk7XFxuIH1cXG5AQCAtMTY5OSw2ICsxNzgxLDkgQEAgc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2p1bWJvKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKVxcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyBhdHRyID0geyB9O1xcbiBcXHRpbnQgc2l6ZSA9IHByaXYtXFx1MDAzZWRtYV9jb25mLmRtYV9idWZfc3o7XFxuIFxcbitcXHRpZiAoIWR3bWFjX2lzX3htYWMocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlY29yZV90eXBlKSlcXG4rXFx0XFx0c2l6ZSAtPSBORVRfSVBfQUxJR047XFxuK1xcbiBcXHRhdHRyLmRzdCA9IHByaXYtXFx1MDAzZWRldi1cXHUwMDNlZGV2X2FkZHI7XFxuIFxcdGF0dHIubWF4X3NpemUgPSBzaXplIC0gRVRIX0ZDU19MRU47XFxuIFxcdGF0dHIucXVldWVfbWFwcGluZyA9IHF1ZXVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo0OTo1OS41Mjg0MDQ0MjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU4OTgxODQ2MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBETUEgYnVmZmVyIHNpemUgaGFuZGxpbmcgYW5kIGV0aHRvb2wgc2VsZnRlc3RzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgU29DIGFuZCBQQ0kgRXRoZXJuZXQgY29udHJvbGxlcnMgKFN5bm9wc3lzIElQIGNvcmVzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KS4gQmVjYXVzZSB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIGluIHRoZSB0ZXN0IGVudmlyb25tZW50LCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGExZGQ5NzFmMTVjOTBjYzNjMmFjZDA3NmU5NWNhYWYyZDMyNmNmOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAyMTo0OTo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCA2MmMzNDQxOTExZTcxLi4yOWI5NzA1NzRhMzgwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTE1MzYsMTcgKzE1MzYsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzdG1tYWNfcnhfb2Zmc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdHJldHVybiBORVRfU0tCX1BBRCArIE5FVF9JUF9BTElHTjtcbiB9XG4gXG4tc3RhdGljIGludCBzdG1tYWNfc2V0X2Jmc2l6ZShpbnQgbXR1KVxuK3N0YXRpYyBpbnQgc3RtbWFjX3NldF9iZnNpemUoaW50IGxlbilcbiB7XG4gXHRpbnQgcmV0O1xuIFxuLVx0aWYgKG10dSBcdTAwM2U9IEJVRl9TSVpFXzhLaUIpXG4rXHRpZiAobGVuIFx1MDAzZSBCVUZfU0laRV84S2lCKVxuIFx0XHRyZXQgPSBCVUZfU0laRV8xNktpQjtcbi1cdGVsc2UgaWYgKG10dSBcdTAwM2U9IEJVRl9TSVpFXzRLaUIpXG4rXHRlbHNlIGlmIChsZW4gXHUwMDNlIEJVRl9TSVpFXzRLaUIpXG4gXHRcdHJldCA9IEJVRl9TSVpFXzhLaUI7XG4tXHRlbHNlIGlmIChtdHUgXHUwMDNlPSBCVUZfU0laRV8yS2lCKVxuK1x0ZWxzZSBpZiAobGVuIFx1MDAzZSBCVUZfU0laRV8yS2lCKVxuIFx0XHRyZXQgPSBCVUZfU0laRV80S2lCO1xuLVx0ZWxzZSBpZiAobXR1IFx1MDAzZSBERUZBVUxUX0JVRlNJWkUpXG4rXHRlbHNlIGlmIChsZW4gXHUwMDNlIERFRkFVTFRfQlVGU0laRSlcbiBcdFx0cmV0ID0gQlVGX1NJWkVfMktpQjtcbiBcdGVsc2VcbiBcdFx0cmV0ID0gREVGQVVMVF9CVUZTSVpFO1xuQEAgLTQwNjMsNyArNDA2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpcbiBzdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KVxuIHtcbiBcdHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mO1xuLVx0aW50IGJmc2l6ZSwgcmV0O1xuK1x0aW50IGJmc2l6ZSwgbGVuLCByZXQ7XG4gXHR1OCBjaGFuO1xuIFxuIFx0ZG1hX2NvbmYgPSBremFsbG9jX29iaigqZG1hX2NvbmYpO1xuQEAgLTQwNzMsMTMgKzQwNzMsMTUgQEAgc3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gXHR9XG4gXG4tXHQvKiBSZXR1cm5zIDAgb3IgQlVGX1NJWkVfMTZLaUIgaWYgbXR1IFx1MDAzZSA4S2lCIGFuZCBkd21hYzQgb3IgcmluZyBtb2RlICovXG4tXHRiZnNpemUgPSBzdG1tYWNfc2V0XzE2a2liX2Jmc2l6ZShwcml2LCBtdHUpO1xuK1x0bGVuID0gbXR1ICsgRVRIX0hMRU4gKyAyICogVkxBTl9ITEVOICsgRVRIX0ZDU19MRU4gKyBORVRfSVBfQUxJR047XG4rXG4rXHQvKiBSZXR1cm5zIDAgb3IgQlVGX1NJWkVfMTZLaUIgaWYgbGVuIFx1MDAzZSA4S2lCIGFuZCBkd21hYzQgb3IgcmluZyBtb2RlICovXG4rXHRiZnNpemUgPSBzdG1tYWNfc2V0XzE2a2liX2Jmc2l6ZShwcml2LCBsZW4pO1xuIFx0aWYgKGJmc2l6ZSBcdTAwM2MgMClcbiBcdFx0YmZzaXplID0gMDtcbiBcbiBcdGlmIChiZnNpemUgXHUwMDNjIEJVRl9TSVpFXzE2S2lCKVxuLVx0XHRiZnNpemUgPSBzdG1tYWNfc2V0X2Jmc2l6ZShtdHUpO1xuK1x0XHRiZnNpemUgPSBzdG1tYWNfc2V0X2Jmc2l6ZShsZW4pO1xuIFxuIFx0ZG1hX2NvbmYtXHUwMDNlZG1hX2J1Zl9zeiA9IGJmc2l6ZTtcbiBcdC8qIENob3NlIHRoZSB0eC9yeCBzaXplIGZyb20gdGhlIGFscmVhZHkgZGVmaW5lZCBvbmUgaW4gdGhlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXG5pbmRleCA2MzcyZWM3YzNmMzE3Li5jZDdkYzk5MDk1YTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VkcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbmV0L2RzYS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3BrdF9jbHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wa3Rfc2NoZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC90Y3AuaFx1MDAzZVxuQEAgLTI5LDYgKzMwLDcgQEAgc3RydWN0IHN0bW1hY2hkciB7XG4gXHRcdFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBzdG1tYWNoZHIpKVxuICNkZWZpbmUgU1RNTUFDX1RFU1RfUEtUX01BR0lDXHQweGRlYWRjYWZlY2FmZWRlYWRVTExcbiAjZGVmaW5lIFNUTU1BQ19MQl9USU1FT1VUXHRtc2Vjc190b19qaWZmaWVzKDIwMClcbisjZGVmaW5lIFNUTU1BQ19TRlRfTUFYX0xQSVx0KDUgKiBVU0VDX1BFUl9TRUMpXG4gXG4gc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMge1xuIFx0aW50IHZsYW47XG5AQCAtMjM3LDYgKzIzOSwxMCBAQCBzdHJ1Y3Qgc3RtbWFjX3Rlc3RfcHJpdiB7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyAqcGFja2V0O1xuIFx0c3RydWN0IHBhY2tldF90eXBlIHB0O1xuIFx0c3RydWN0IGNvbXBsZXRpb24gY29tcDtcbitcdF9fYmUxNiBwYWNrZXRfdHlwZTtcbitcdGludCAoKmZ1bmMpKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuK1x0XHQgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfbmRldik7XG4rXHRib29sIGNhcHR1cmVfYWxsO1xuIFx0aW50IGRvdWJsZV92bGFuO1xuIFx0aW50IHZsYW5faWQ7XG4gXHRpbnQgb2s7XG5AQCAtMzE2LDYgKzMyMiw1MCBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2xvb3BiYWNrX3ZhbGlkYXRlKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBzdG1tYWNfc2Z0X2ZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbitcdFx0XHQgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsXG4rXHRcdFx0ICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19uZGV2KVxuK3tcbitcdHN0cnVjdCBzdG1tYWNfdGVzdF9wcml2ICp0cHJpdiA9IHB0LVx1MDAzZWFmX3BhY2tldF9wcml2O1xuK1x0c3RydWN0IGV0aGhkciAqaGRyID0gZXRoX2hkcihza2IpO1xuK1x0aW50IHJldCA9IDA7XG4rXG4rXHRpZiAoaGRyLVx1MDAzZWhfcHJvdG8gPT0gdHByaXYtXHUwMDNlcGFja2V0X3R5cGUpIHtcbitcdFx0c3RydWN0IHNrX2J1ZmYgKm5za2IgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTtcbitcbitcdFx0aWYgKG5za2IpXG4rXHRcdFx0cmV0ID0gdHByaXYtXHUwMDNlZnVuYyhuc2tiLCBuZGV2LCBwdCwgb3JpZ19uZGV2KTtcbitcdH1cbitcbitcdGtmcmVlX3NrYihza2IpO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIHZvaWQgc3RtbWFjX3NmdF9hZGRfcGFjayhzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0KVxuK3tcbitcdHN0cnVjdCBzdG1tYWNfdGVzdF9wcml2ICp0cHJpdiA9IHB0LVx1MDAzZWFmX3BhY2tldF9wcml2O1xuK1xuK1x0aWYgKG5ldGRldl91c2VzX2RzYSh0cHJpdi1cdTAwM2VwdC5kZXYpIHx8IHRwcml2LVx1MDAzZWNhcHR1cmVfYWxsKSB7XG4rXHRcdHRwcml2LVx1MDAzZXBhY2tldF90eXBlID0gdHByaXYtXHUwMDNlcHQudHlwZTtcbitcdFx0dHByaXYtXHUwMDNlZnVuYyA9IHRwcml2LVx1MDAzZXB0LmZ1bmM7XG4rXG4rXHRcdC8qIERTQSBjb25kdWl0IHdpbGwgcmVwb3J0IEVUSF9QX1hEU0EsIHNvIG91ciBwYWNrZXQgaGFuZGxlclxuK1x0XHQgKiB3b24ndCBtYXRjaC4gTGV0J3MgcmVnaXN0ZXIgYSBFVEhfUF9BTEwgbWF0Y2ggYW5kIGZpbHRlclxuK1x0XHQgKiBtYW51YWxseSBpbiBzdG1tYWNfc2Z0X2ZpbHRlci5cbitcdFx0ICovXG4rXHRcdHRwcml2LVx1MDAzZXB0LnR5cGUgPSBodG9ucyhFVEhfUF9BTEwpO1xuK1x0XHR0cHJpdi1cdTAwM2VwdC5mdW5jID0gc3RtbWFjX3NmdF9maWx0ZXI7XG4rXHRcdHRwcml2LVx1MDAzZXB0Lmlnbm9yZV9vdXRnb2luZyA9IHRydWU7XG4rXHR9XG4rXG4rXHRkZXZfYWRkX3BhY2socHQpO1xuK31cbitcbitzdGF0aWMgdm9pZCBzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpXG4re1xuK1x0ZGV2X3JlbW92ZV9wYWNrKHB0KTtcbit9XG4rXG4gc3RhdGljIGludCBfX3N0bW1hY190ZXN0X2xvb3BiYWNrKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0XHRcdCAgc3RydWN0IHN0bW1hY19wYWNrZXRfYXR0cnMgKmF0dHIpXG4ge1xuQEAgLTMzNyw3ICszODcsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0dHByaXYtXHUwMDNlcGFja2V0ID0gYXR0cjtcbiBcbiBcdGlmICghYXR0ci1cdTAwM2Vkb250X3dhaXQpXG4tXHRcdGRldl9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4rXHRcdHN0bW1hY19zZnRfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFxuIFx0c2tiID0gc3RtbWFjX3Rlc3RfZ2V0X3VkcF9za2IocHJpdiwgYXR0cik7XG4gXHRpZiAoIXNrYikge1xuQEAgLTM2MCw3ICs0MTAsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfbG9vcGJhY2soc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFxuIGNsZWFudXA6XG4gXHRpZiAoIWF0dHItXHUwMDNlZG9udF93YWl0KVxuLVx0XHRkZXZfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuK1x0XHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcdGtmcmVlKHRwcml2KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTQxNCwxMiArNDY0LDE2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3RfbW1jKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4ge1xuIFx0c3RydWN0IHN0bW1hY19leHRyYV9zdGF0cyAqaW5pdGlhbCwgKmZpbmFsO1xuLVx0aW50IHJldHJpZXMgPSAxMDtcbitcdHVuc2lnbmVkIGxvbmcgdGltZW91dCwgbWF4X2R1cmF0aW9uO1xuIFx0aW50IHJldDtcbiBcbiBcdGlmICghcHJpdi1cdTAwM2VkbWFfY2FwLmVlZSB8fCAhcHJpdi1cdTAwM2VlZWVfYWN0aXZlKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4rXHQvKiBCYWlsIG91dCBpZiB0aGUgY29uZmlndXJlZCBMUEkgdGltZXIgaXMgdG9vIGxvbmcgKi9cbitcdGlmIChwcml2LVx1MDAzZXR4X2xwaV90aW1lciBcdTAwM2UgU1RNTUFDX1NGVF9NQVhfTFBJKVxuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXG4gXHRpbml0aWFsID0ga3phbGxvY19vYmooKmluaXRpYWwpO1xuIFx0aWYgKCFpbml0aWFsKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC00MzAsMTQgKzQ4NCwyMSBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfaW5pdGlhbDtcbiBcdH1cbiBcbitcdC8qIFNuYXBzaG90IHN0YXRzLCB3ZSB3YW50IHRvIGNvdW50IHRoZSBpbl9scGkgZXZlbnRzLiBXZSBtYXkgZW50ZXJcbitcdCAqIExQSSBqdXN0IGFmdGVyIHRoZSBwYWNrZXQgd2FzIHNlbnQuXG4rXHQgKi9cbiBcdG1lbWNweShpbml0aWFsLCBcdTAwMjZwcml2LVx1MDAzZXhzdGF0cywgc2l6ZW9mKCppbml0aWFsKSk7XG4gXG4rXHQvKiBTZW5kIGEgZnJhbWUsIHRoZW4gd2FpdCB0byBlbnRlciBMUEkgKi9cbiBcdHJldCA9IHN0bW1hY190ZXN0X21hY19sb29wYmFjayhwcml2KTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfZmluYWw7XG4gXG4rXHRtYXhfZHVyYXRpb24gPSB1c2Vjc190b19qaWZmaWVzKDIgKiBwcml2LVx1MDAzZXR4X2xwaV90aW1lcik7XG4rXG4gXHQvKiBXZSBoYXZlIG5vIHRyYWZmaWMgaW4gdGhlIGxpbmUgc28sIHNvb25lciBvciBsYXRlciBpdCB3aWxsIGdvIExQSSAqL1xuLVx0d2hpbGUgKC0tcmV0cmllcykge1xuK1x0dGltZW91dCA9IGppZmZpZXMgKyBtYXhfZHVyYXRpb247XG4rXHR3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHtcbiBcdFx0bWVtY3B5KGZpbmFsLCBcdTAwMjZwcml2LVx1MDAzZXhzdGF0cywgc2l6ZW9mKCpmaW5hbCkpO1xuIFxuIFx0XHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcdTAwM2VcbkBAIC00NDYsMjAgKzUwNywzOCBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2VlZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHRcdG1zbGVlcCgxMDApO1xuIFx0fVxuIFxuLVx0aWYgKCFyZXRyaWVzKSB7XG4rXHRtZW1jcHkoZmluYWwsIFx1MDAyNnByaXYtXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XG4rXHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcdTAwM2M9XG4rXHQgICAgaW5pdGlhbC1cdTAwM2VpcnFfdHhfcGF0aF9pbl9scGlfbW9kZV9uKSB7XG4gXHRcdHJldCA9IC1FVElNRURPVVQ7XG4gXHRcdGdvdG8gb3V0X2ZyZWVfZmluYWw7XG4gXHR9XG4gXG4tXHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfaW5fbHBpX21vZGVfbiBcdTAwM2M9XG4tXHQgICAgaW5pdGlhbC1cdTAwM2VpcnFfdHhfcGF0aF9pbl9scGlfbW9kZV9uKSB7XG4tXHRcdHJldCA9IC1FSU5WQUw7XG4rXHQvKiBSZS1zbmFwc2hvdCwgYXMgd2Ugd2FudCB0byBtZWFzdXJlIGV4aXRfbHBpIGV2ZW50cy4gV2Ugc2hvdWxkIGJlXG4rXHQgKiBpbiBMUEkgcmlnaHQgbm93LlxuK1x0ICovXG4rXHRtZW1jcHkoaW5pdGlhbCwgXHUwMDI2cHJpdi1cdTAwM2V4c3RhdHMsIHNpemVvZigqaW5pdGlhbCkpO1xuK1xuK1x0LyogVFggc29tZXRoaW5nIHNvIHdlIGdvIG91dCBvZiBMUEkgKi9cbitcdHJldCA9IHN0bW1hY190ZXN0X21hY19sb29wYmFjayhwcml2KTtcbitcdGlmIChyZXQpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfZmluYWw7XG4rXG4rXHQvKiBXYWl0IGZvciB0aGUgZXhpdCBMUEkgaW50ZXJydXB0ICovXG4rXHR0aW1lb3V0ID0gamlmZmllcyArIG1heF9kdXJhdGlvbjtcbitcdHdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkge1xuK1x0XHRtZW1jcHkoZmluYWwsIFx1MDAyNnByaXYtXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XG4rXG4rXHRcdGlmIChmaW5hbC1cdTAwM2VpcnFfdHhfcGF0aF9leGl0X2xwaV9tb2RlX24gXHUwMDNlXG4rXHRcdCAgICBpbml0aWFsLVx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbilcbitcdFx0XHRicmVhaztcbitcdFx0bXNsZWVwKDEwMCk7XG4gXHR9XG4gXG4rXHRtZW1jcHkoZmluYWwsIFx1MDAyNnByaXYtXHUwMDNleHN0YXRzLCBzaXplb2YoKmZpbmFsKSk7XG4gXHRpZiAoZmluYWwtXHUwMDNlaXJxX3R4X3BhdGhfZXhpdF9scGlfbW9kZV9uIFx1MDAzYz1cbiBcdCAgICBpbml0aWFsLVx1MDAzZWlycV90eF9wYXRoX2V4aXRfbHBpX21vZGVfbikge1xuLVx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRyZXQgPSAtRVRJTUVET1VUO1xuIFx0XHRnb3RvIG91dF9mcmVlX2ZpbmFsO1xuIFx0fVxuIFxuQEAgLTc2Nyw3ICs4NDYsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2Zsb3djdHJsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdHRwcml2LVx1MDAzZXB0LmZ1bmMgPSBzdG1tYWNfdGVzdF9mbG93Y3RybF92YWxpZGF0ZTtcbiBcdHRwcml2LVx1MDAzZXB0LmRldiA9IHByaXYtXHUwMDNlZGV2O1xuIFx0dHByaXYtXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcbi1cdGRldl9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4rXHRzdG1tYWNfc2Z0X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcbiBcdC8qIENvbXB1dGUgbWluaW11bSBudW1iZXIgb2YgcGFja2V0cyB0byBtYWtlIEZJRk8gZnVsbCAqL1xuIFx0cGt0X2NvdW50ID0gcnhfZmlmb19zaXplO1xuQEAgLTgyMyw3ICs5MDIsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X2Zsb3djdHJsKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBjbGVhbnVwOlxuIFx0ZGV2X21jX2RlbChwcml2LVx1MDAzZWRldiwgcGFkZHIpO1xuIFx0ZGV2X3NldF9wcm9taXNjdWl0eShwcml2LVx1MDAzZWRldiwgLTEpO1xuLVx0ZGV2X3JlbW92ZV9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbitcdHN0bW1hY19zZnRfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFx0a2ZyZWUodHByaXYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtOTIxLDYgKzEwMDAsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0dHByaXYtXHUwMDNlcHQuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4gXHR0cHJpdi1cdTAwM2VwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2O1xuIFx0dHByaXYtXHUwMDNlcGFja2V0ID0gXHUwMDI2YXR0cjtcbitcdHRwcml2LVx1MDAzZWNhcHR1cmVfYWxsID0gdHJ1ZTtcbiBcbiBcdC8qXG4gXHQgKiBBcyB3ZSB1c2UgSEFTSCBmaWx0ZXJpbmcsIGZhbHNlIHBvc2l0aXZlcyBtYXkgYXBwZWFyLiBUaGlzIGlzIGFcbkBAIC05MjgsNyArMTAwOCw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF92bGFuZmlsdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gXHQgKiBIQVNIIHZhbHVlcy5cbiBcdCAqL1xuIFx0dHByaXYtXHUwMDNldmxhbl9pZCA9IDB4MTIzO1xuLVx0ZGV2X2FkZF9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbitcdHN0bW1hY19zZnRfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuIFxuIFx0cmV0ID0gdmxhbl92aWRfYWRkKHByaXYtXHUwMDNlZGV2LCBodG9ucyhFVEhfUF84MDIxUSksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIFx0aWYgKHJldClcbkBAIC05NjgsNyArMTA0OCw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF92bGFuZmlsdChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4gdmxhbl9kZWw6XG4gXHR2bGFuX3ZpZF9kZWwocHJpdi1cdTAwM2VkZXYsIGh0b25zKEVUSF9QXzgwMjFRKSwgdHByaXYtXHUwMDNldmxhbl9pZCk7XG4gY2xlYW51cDpcbi1cdGRldl9yZW1vdmVfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4rXHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcdGtmcmVlKHRwcml2KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTEwMTUsNiArMTA5NSw3IEBAIHN0YXRpYyBpbnQgX19zdG1tYWNfdGVzdF9kdmxhbmZpbHQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFx0dHByaXYtXHUwMDNlcHQuZGV2ID0gcHJpdi1cdTAwM2VkZXY7XG4gXHR0cHJpdi1cdTAwM2VwdC5hZl9wYWNrZXRfcHJpdiA9IHRwcml2O1xuIFx0dHByaXYtXHUwMDNlcGFja2V0ID0gXHUwMDI2YXR0cjtcbitcdHRwcml2LVx1MDAzZWNhcHR1cmVfYWxsID0gdHJ1ZTtcbiBcbiBcdC8qXG4gXHQgKiBBcyB3ZSB1c2UgSEFTSCBmaWx0ZXJpbmcsIGZhbHNlIHBvc2l0aXZlcyBtYXkgYXBwZWFyLiBUaGlzIGlzIGFcbkBAIC0xMDIyLDcgKzExMDMsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfZHZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiBcdCAqIEhBU0ggdmFsdWVzLlxuIFx0ICovXG4gXHR0cHJpdi1cdTAwM2V2bGFuX2lkID0gMHgxMjM7XG4tXHRkZXZfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuK1x0c3RtbWFjX3NmdF9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4gXG4gXHRyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi1cdTAwM2VkZXYsIGh0b25zKEVUSF9QXzgwMjFBRCksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIFx0aWYgKHJldClcbkBAIC0xMDYyLDcgKzExNDMsNyBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfZHZsYW5maWx0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbiB2bGFuX2RlbDpcbiBcdHZsYW5fdmlkX2RlbChwcml2LVx1MDAzZWRldiwgaHRvbnMoRVRIX1BfODAyMUFEKSwgdHByaXYtXHUwMDNldmxhbl9pZCk7XG4gY2xlYW51cDpcbi1cdGRldl9yZW1vdmVfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4rXHRzdG1tYWNfc2Z0X3JlbW92ZV9wYWNrKFx1MDAyNnRwcml2LVx1MDAzZXB0KTtcbiBcdGtmcmVlKHRwcml2KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuQEAgLTEyOTMsNyArMTM3NCw4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHN2bGFuKVxuIFx0dHByaXYtXHUwMDNlcHQuYWZfcGFja2V0X3ByaXYgPSB0cHJpdjtcbiBcdHRwcml2LVx1MDAzZXBhY2tldCA9IFx1MDAyNmF0dHI7XG4gXHR0cHJpdi1cdTAwM2V2bGFuX2lkID0gMHgxMjM7XG4tXHRkZXZfYWRkX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuK1x0dHByaXYtXHUwMDNlY2FwdHVyZV9hbGwgPSB0cnVlO1xuK1x0c3RtbWFjX3NmdF9hZGRfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4gXG4gXHRyZXQgPSB2bGFuX3ZpZF9hZGQocHJpdi1cdTAwM2VkZXYsIGh0b25zKHByb3RvKSwgdHByaXYtXHUwMDNldmxhbl9pZCk7XG4gXHRpZiAocmV0KVxuQEAgLTEzMjAsNyArMTQwMiw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfdmxhbm9mZl9jb21tb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBib29sIHN2bGFuKVxuIHZsYW5fZGVsOlxuIFx0dmxhbl92aWRfZGVsKHByaXYtXHUwMDNlZGV2LCBodG9ucyhwcm90byksIHRwcml2LVx1MDAzZXZsYW5faWQpO1xuIGNsZWFudXA6XG4tXHRkZXZfcmVtb3ZlX3BhY2soXHUwMDI2dHByaXYtXHUwMDNlcHQpO1xuK1x0c3RtbWFjX3NmdF9yZW1vdmVfcGFjayhcdTAwMjZ0cHJpdi1cdTAwM2VwdCk7XG4gXHRrZnJlZSh0cHJpdik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC0xMzMyLDcgKzE0MTQsNyBAQCBzdGF0aWMgaW50IHN0bW1hY190ZXN0X3ZsYW5vZmYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIFxuIHN0YXRpYyBpbnQgc3RtbWFjX3Rlc3Rfc3ZsYW5vZmYoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuIHtcbi1cdGlmICghcHJpdi1cdTAwM2VkbWFfY2FwLmR2bGFuKVxuK1x0aWYgKCEocHJpdi1cdTAwM2VkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfSFdfVkxBTl9TVEFHX1RYKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0cmV0dXJuIHN0bW1hY190ZXN0X3ZsYW5vZmZfY29tbW9uKHByaXYsIHRydWUpO1xuIH1cbkBAIC0xNjk5LDYgKzE3ODEsOSBAQCBzdGF0aWMgaW50IF9fc3RtbWFjX3Rlc3RfanVtYm8oc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4gXHRzdHJ1Y3Qgc3RtbWFjX3BhY2tldF9hdHRycyBhdHRyID0geyB9O1xuIFx0aW50IHNpemUgPSBwcml2LVx1MDAzZWRtYV9jb25mLmRtYV9idWZfc3o7XG4gXG4rXHRpZiAoIWR3bWFjX2lzX3htYWMocHJpdi1cdTAwM2VwbGF0LVx1MDAzZWNvcmVfdHlwZSkpXG4rXHRcdHNpemUgLT0gTkVUX0lQX0FMSUdOO1xuK1xuIFx0YXR0ci5kc3QgPSBwcml2LVx1MDAzZWRldi1cdTAwM2VkZXZfYWRkcjtcbiBcdGF0dHIubWF4X3NpemUgPSBzaXplIC0gRVRIX0ZDU19MRU47XG4gXHRhdHRyLnF1ZXVlX21hcHBpbmcgPSBxdWV1ZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjQ5OjU5LjUyODQwNzQxOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI0MDEzNjQ0MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgdGhlIFByb3Bvc2VkIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggc2VyaWVzIHRhcmdldGluZyB0aGUgTGludXgga2VybmVsLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIHNlZSB3aGF0IGl0IGFjdHVhbGx5IHRvdWNoZXM6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19zZWxmdGVzdHMuY2AuIFJpZ2h0LCBgc3RtbWFjYC4uLiB0aGF0J3MgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBNQUMgZHJpdmVyLiBJdCBzdXBwb3J0cyBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyBhbmQgcmVsYXRlZCBoYXJkd2FyZS5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIEkgcmVhbGlzdGljYWxseSB0ZXN0IHRoaXMgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciwgbW9yZSBsaWtlbHksIFFFTVU/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgcmVhY2hhYmlsaXR5IGd1aWRlbGluZXMuIEhvbGQgb24uLi4gKm5lZ2F0aXZlIGNyaXRlcmlhKiwgbWVhbmluZywgd2hlbiBzaG91bGQgSSBOT1QgZnV6eiB0aGlzPyBBaCwgcmlnaHQ6IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4gVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMg4oCTIHRoaW5ncyByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgd2VsbCBpbiBzdGFuZGFyZCBRRU1VLiBPbiB0aGUgZmxpcCBzaWRlLCB3aGF0ICppcyogcmVhY2hhYmxlPyBWaXJ0dWFsIGJ1c2VzOiB2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy5cblxuU28sICppcyogYHN0bW1hY2AgYSBQQ0kgZGV2aWNlLCBvciBpcyBpdCBhIHBsYXRmb3JtIGRldmljZSB0aGF0ICpjb3VsZCogYmUgZW11bGF0ZWQgaW4gUUVNVT8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIFFFTVUgZW11bGF0ZXMgZHdtYWMgb3Igc3RtbWFjIGRpcmVjdGx5LCBvciBpZiBpdCB1c2VzIFBDSSBiaW5kaW5ncy4gVGltZSB0byBicmVhayBvdXQgdGhlIGBncmVwYCBhbmQgc2VlIHdoYXQgaGFyZHdhcmUgdGhpcyBgc3RtbWFjYCBkcml2ZXIgYWN0dWFsbHkgc3VwcG9ydHMgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU1NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjUwOjIzLjU0MjA1NDU4M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTIyNDcyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcGNpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01Mz1vYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVxcdCs9IGR3bWFjLW1vdG9yY29tbS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTQ6c3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTI1PXN0cnVjdCBpbnRlbF9wcml2X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQwOnN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00MS1cXHR1bnNpZ25lZCBpbnQgZnVuYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTpzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NjpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00Ny1cXHRzaXplX3QgbmZ1bmNzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjUwOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTEtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MT1zdGF0aWMgY29uc3QgaW50IGFkbG5fdHNuX2xhbmVfcmVnc1tdID0gezZ9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MzpzdGF0aWMgaW50IHN0bW1hY19wY2lfZmluZF9waHlfYWRkcihzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk0LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2xpc3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmNfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk3OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhICpkbWlfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4LVxcdGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkICpkbWlfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc4Nj1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MDY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3NnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgwNy1cXHQuc2V0dXAgPSBlaGxfc2dtaWlfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODEwPXN0YXRpYyBpbnQgZWhsX3JnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjgyMTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODIyLVxcdC5zZXR1cCA9IGVobF9yZ21paV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDE9c3RhdGljIGludCBlaGxfcHNlMF9yZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg0ODpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9yZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDktXFx0LnNldHVwID0gZWhsX3BzZTBfcmdtaWkxZ19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NTI9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg3MDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9zZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NzEtXFx0LnNldHVwID0gZWhsX3BzZTBfc2dtaWkxZ19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04OTA9c3RhdGljIGludCBlaGxfcHNlMV9yZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg5NzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMV9yZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTgtXFx0LnNldHVwID0gZWhsX3BzZTFfcmdtaWkxZ19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MDE9c3RhdGljIGludCBlaGxfcHNlMV9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkxOTpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMV9zZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MjAtXFx0LnNldHVwID0gZWhsX3BzZTFfc2dtaWkxZ19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NDQ9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NTM6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTU0LVxcdC5zZXR1cCA9IHRnbF9zZ21paV9waHkwX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk1Nz1zdGF0aWMgaW50IHRnbF9zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk2NjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyB0Z2xfc2dtaWkxZ19waHkxX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjctXFx0LnNldHVwID0gdGdsX3NnbWlpX3BoeTFfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTcwPXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk4MDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTgxLVxcdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05ODQ9c3RhdGljIGludCBhZGxzX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTk0OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbHNfc2dtaWkxZ19waHkxX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OTUtXFx0LnNldHVwID0gYWRsc19zZ21paV9waHkxX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMjM9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsbl9zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDMtXFx0LnNldHVwID0gYWRsbl9zZ21paV9waHkwX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgZ2FsaWxlb19zdG1tYWNfZnVuY19kYXRhW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQ3LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNTM6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGdhbGlsZW9fc3RtbWFjX2RtaV9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1NC1cXHQuZnVuYyA9IGdhbGlsZW9fc3RtbWFjX2Z1bmNfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNTg6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSBpb3QyMDQwX3N0bW1hY19mdW5jX2RhdGFbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTktXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA2OTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgaW90MjA0MF9zdG1tYWNfZG1pX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDcwLVxcdC5mdW5jID0gaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMTA5PXN0YXRpYyBpbnQgcXVhcmtfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTE5LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTEyMDpcXHRyZXQgPSBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIocGRldiwgcXVhcmtfcGNpX2RtaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTIxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTQ1OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHF1YXJrX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ2LVxcdC5zZXR1cCA9IHF1YXJrX2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTI2NjpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjY3LVxcdHN0cnVjdCBpbnRlbF9wcml2X2RhdGEgKmludGVsX3ByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTc2PXN0cnVjdCBsb29uZ3Nvbl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo4MjpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgzLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9MTMyPXN0YXRpYyBpbnQgbG9vbmdzb25fZ21hY19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzoxNDI6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gbG9vbmdzb25fZ21hY19wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0My1cXHQuc2V0dXAgPSBsb29uZ3Nvbl9nbWFjX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTE2NT1zdGF0aWMgaW50IGxvb25nc29uX2duZXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTc3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2duZXRfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNzgtXFx0LnNldHVwID0gbG9vbmdzb25fZ25ldF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00OTg9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDEtXFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1MDI6XFx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUwMy1cXHRzdHJ1Y3QgbG9vbmdzb25fZGF0YSAqbGQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTUzNy1cXHRwbGF0LVxcdTAwM2VmaXhfc29jX3Jlc2V0ID0gbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTM4OlxcdHBsYXQtXFx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzOTpcXHRwbGF0LVxcdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQwLVxcdGxkLVxcdTAwM2VkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1NDM6XFx0aW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQ0LVxcdHJldCA9IGluZm8tXFx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MTg4PXN0YXRpYyBpbnQgbW90b3Jjb21tX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE5MzpcXHRyZXQgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKGRldiwgYnNwX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MjA4PW1vdG9yY29tbV9kZWZhdWx0X3BsYXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI0OC1cXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGVcXHRcXHQ9IERXTUFDX0NPUkVfR01BQzQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ5OlxcdHBsYXQtXFx1MDAzZXN1c3BlbmRcXHRcXHQ9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI1MC1cXHRwbGF0LVxcdTAwM2VyZXN1bWVcXHRcXHQ9IG1vdG9yY29tbV9yZXN1bWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjEyOmludCBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0xMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyNjpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyODppbnQgc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzo0NDpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmg6OTppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oOjEwOmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaC0xMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTk6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0zMz1zdGF0aWMgaW50IHN0bW1hY19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTEtXFx0LnNldHVwID0gc3RtbWFjX2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01ND1zdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwMy1cXHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE4OnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTE5LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODA6XFx0cGxhdC1cXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODE6XFx0cGxhdC1cXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTg3OiAqIHN0bW1hY19wY2lfcmVtb3ZlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE5MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTkyOnN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNDpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA1OlxcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA2LVxcdHsgUENJX0RFVklDRV9EQVRBKFNZTk9QU1lTLCBHTUFDNV9JRCwgXFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MjEwPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxMy1cXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXFx0LmlkX3RhYmxlID0gc3RtbWFjX2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTU6XFx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE2OlxcdC5yZW1vdmUgPSBzdG1tYWNfcGNpX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE3LVxcdC5kcml2ZXIgICAgICAgICA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6MjMuNTkxMjg1NzIzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDgxMjM0NTI4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFNUTU1BQyBhbmQgRGVzaWduV2FyZSBNQUMgRW11bGF0aW9uIGluIFFFTVUgZm9yIEFNRDY0KipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLiBJJ20gc2VlaW5nIHJlZmVyZW5jZXMgdG8gU1RNTUFDIGFuZCBEZXNpZ25XYXJlIE1BQyBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYHN0bW1hY19wY2kuY2AsIGBkd21hYy1pbnRlbC5jYCwgYW5kIHNpbWlsYXIgZmlsZXMuIFRoZSBgUENJX0RFVklDRV9EQVRBYCBlbnRyaWVzIHN1Z2dlc3QgdGhlc2UgYXJlIFBDSS1iYXNlZCBldGhlcm5ldCBjb250cm9sbGVycywgd2hpY2ggcmFpc2VzIGEga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQ6IEFyZSB0aGVzZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIG9yIGFueXdoZXJlIGVhc2lseSBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nPyBJIG5lZWQgdG8gY2hlY2suXG5cblRoZSBXb3J0aEZ1enppbmcgY3JpdGVyaWEgZ2l2ZSBzb21lIG5lZ2F0aXZlIGV4YW1wbGVzIHdoaWNoIGxlYWRzIG1lIHRvIHVuZGVyc3RhbmQgdGhlIGNyaXRlcmlhLiBMb29raW5nIGF0IHRoZSBkb2N1bWVudGF0aW9uLCBpdCBzZWVtcyBsaWtlIHBoeXNpY2FsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgYW5kIFNtYXJ0TklDcywgYXJlIGEgbm8tZ28gZm9yIHRoaXMgcHJvamVjdC4gRHJpdmVycyByZWFjaGFibGUgdGhyb3VnaCB2aXJ0dWFsIGJ1c2VzIGFyZSB0aGUgZm9jdXMuXG5cblNvLCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgd2hldGhlciBRRU1VIHByb3ZpZGVzIGFuICplbXVsYXRlZCogdmVyc2lvbiBvZiBlaXRoZXIgU1RNTUFDIG9yIERlc2lnbldhcmUgTUFDLiBUaGUgZG9jdW1lbnRhdGlvbiBpbmRpY2F0ZXMgdGhhdCBRRU1VIGRvZXMgZW11bGF0ZSBEZXNpZ25XYXJlIE1BQ3MsIGJ1dCB0aGlzIGlzIHByaW1hcmlseSBmb3IgQVJNIGJvYXJkcyBsaWtlIEFsbHdpbm5lciBhbmQgU3VueGksIGJ1dCBub3Qgb24geDg2IHBsYXRmb3Jtcy4gT24geDg2L2FtZDY0LCBRRU1VIHVzZXMgZTEwMDAsIGUxMDAwZSwgdm14bmV0MywgcnRsODEzOSwgdmlydGlvLW5ldCwgYW5kIGEgaGFuZGZ1bCBvZiBvdGhlciBOSUMgZW11bGF0aW9ucy5cblxuSSdtIG5vdyBpbnZlc3RpZ2F0aW5nLCBkb2VzIFFFTVUgZW11bGF0ZSBkd21hYyBvciBzdG1tYWMgYXMgUENJIGRldmljZXMsIG9yIGlzIHRoZXJlIGEgXCJkd21hYy1wY2lcIiBvciBcInN0bW1hYy1wY2lcIiBkZXZpY2U/XG5cbkNoZWNraW5nIHRoZSBRRU1VIGRldmljZSBsaXN0LCBJIHNlZSBzcGVjaWZpYyBBUk0gU29DIGJvYXJkLXNwZWNpZmljIGVtdWxhdGVkIE1BQ3MsIGJ1dCBub3RoaW5nIGV4cGxpY2l0bHkgbGFiZWxlZCBhcyBcImR3bWFjLXBjaVwiIG9yIFwic3RtbWFjLXBjaVwiLiBJIHNlZSBgYWxsd2lubmVyX2VtYWNgLCBldGMsIGJ1dCBub3RoaW5nIHRoYXQgd291bGQgZml0IGEgZ2VuZXJhbCB4ODYvYW1kNjQgUENJIHNldHVwLlxuXG5HaXZlbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhpcyBuYXJyb3dzIHRoZSBwb3NzaWJpbGl0aWVzIGZ1cnRoZXIuIE5vdyBJIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBLY29uZmlnIGZpbGVzLCBzcGVjaWZpY2FsbHkgZm9yIFNUTU1BQywgU1RNTUFDX0VUSCwgYW5kIFNUTU1BQ19QQ0kgdG8gc2VlIGlmIHRoZXJlIGlzIGNvbmRpdGlvbmFsIGJ1aWxkIHN1cHBvcnQgb3IgY2x1ZXMgYXMgdG8gdGhlIGVtdWxhdGVkIGF2YWlsYWJpbGl0eSBvZiB0aGVzZSBkZXZpY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTUxNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDoyOC40MDM2MzMzNzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3OTUyNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDpjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3Mzpjb25maWcgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDoyOC40NTA0MzU2MzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMDA4MjI5MjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCB0aGlua2luZyBhYm91dCB0aGUgS2NvbmZpZyBmaWxlOlxuXG4qKkludmVzdGlnYXRpbmcgU1RNTUFDIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSA0MDAgdG8gNDMwIGxpbmUgcmFuZ2UuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB0aGVyZS4gSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZmVhdHVyZXMgdGhhdCBjYW4gYmUgdHVybmVkIG9uIG9yIG9mZiBmb3IgdGhlIE1BQyBpdHNlbGYuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgbmV3IG9wdGlvbnMgYWRkZWQgaW4gdGhlIHJlY2VudCB2ZXJzaW9ucy4gTGV0IG1lIHNlZSB3aGF0IGtpbmQgb2YgY3VzdG9taXphdGlvbnMgdGhleSBzdXBwb3J0IGhlcmUsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGVyZSBhcmUgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIG9yIG90aGVyIGRldmljZSB0cmVlcy4gSG9wZWZ1bGx5LCBpdCdzIHdlbGwtZG9jdW1lbnRlZC4gVGltZSB0byBnZXQgdG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTMzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6MzAuNDU4NjY4ODM1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MDA6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDAxOlxcdFxcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXFxuIDQwMjpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MDM6XFx0XFx0aGVscFxcbiA0MDQ6XFx0XFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcXG4gNDA1OlxcdFxcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXFxuIDQwNjpcXHRcXG4gNDA3OlxcdGNvbmZpZyBTVE1NQUNfUENJXFxuIDQwODpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG4gNDA5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQxMDpcXHRcXHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcXG4gNDExOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQxMjpcXHRcXHRoZWxwXFxuIDQxMzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxcbiA0MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcXG4gNDE1OlxcdFxcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxcbiA0MTY6XFx0XFxuIDQxNzpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuIDQxODpcXHRcXG4gNDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gNDIwOlxcdGVuZGlmICMgU1RNTUFDX0VUSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDozMC40NTg3NTA5MDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0OTQ4MzYwMzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBsaW5lcyBmcm9tIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uIGFzIGlmIHRoZXkgd2VyZSBteSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIHN0bW1hYyBLY29uZmlnIC0gTGluZXMgMS00MCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIuIEZvY3VzaW5nIG9uIGxpbmVzIDEtNDAsIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgdGhpcyBkcml2ZXIuIEknbSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIGRlcGVuZGVuY2llcywgdGhpbmdzIGxpa2UgdGhlIGRldmljZSB0cmVlIHN1cHBvcnQsIG1heWJlIFBIWSBjb25maWd1cmF0aW9ucywgYW5kIGNlcnRhaW5seSwgdGhlIGZ1bmRhbWVudGFsIGVuYWJsZS9kaXNhYmxlIHRvZ2dsZXMgZm9yIHRoZSBkcml2ZXIgaXRzZWxmLlxuXG5GaXJzdCwgSSdtIHNjYW5uaW5nIGZvciB0aGUgZ2VuZXJhbCBgY29uZmlnIFNUTU1BQ2AgZW50cnkuIFRoaXMgaXMgdGhlIGJpZyBvbmUsIHRoZSBtYXN0ZXIgc3dpdGNoLiBJdCdzIHRoZSBnYXRla2VlcGVyLiBUaGVuLCBJIGV4cGVjdCB0byBzZWUgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMuIFRoZXNlIGFyZSBjcnVjaWFsOyB0aGV5IGRpY3RhdGUgdGhlIGVudmlyb25tZW50IHRoZSBkcml2ZXIgbmVlZHMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlPyBBIHBhcnRpY3VsYXIgcGxhdGZvcm0gdGhhdCAqbXVzdCogYmUgcHJlc2VudD8gVGhhdCdzIHdoYXQgSSdsbCBiZSBsb29raW5nIGZvciDigJMgdGhlIGFyY2hpdGVjdHVyYWwgZGVwZW5kZW5jaWVzLlxuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IHN5bWJvbCB0aGF0IG1pZ2h0IGVuYWJsZSBvciBkaXNhYmxlIGZlYXR1cmVzIGJhc2VkIG9uIGhhcmR3YXJlLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBzcGVjaWZpYyBjaGlwcyBvciBmYW1pbGllcy4gRm9yIGV4YW1wbGUsIHNvbWUgaGFyZHdhcmUgcmV2aXNpb25zIG1pZ2h0IG5lZWQgc3BlY2lhbCBoYW5kbGluZy4gQW55IGBzZWxlY3RgIHN0YXRlbWVudHMgYXJlIGFsc28gY3JpdGljYWwsIGJlY2F1c2UgdGhleSBpbXBsaWNpdGx5IHNldCBvdGhlciBjb25maWd1cmF0aW9ucy5cblxuRmluYWxseSwgSSdsbCBiZSBjaGVja2luZyBpZiB0aGVyZSBhcmUgYW55IG9wdGlvbnMgdGhhdCBoZWxwIG1lIHRvIGNvbmZpZ3VyZSBkZWJ1Z2dpbmcgb3Igb3B0aW9uYWwgZmVhdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NzI2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDozNS40MDcxMTQwNDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuICAyMTpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAyMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHMgdXNpbmcgZXRodG9vbC4gRW5hYmxlIHRoaXNcXG4gIDI2OlxcdFxcdCAgZmVhdHVyZSBpZiB5b3UgYXJlIGZhY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgSFcgYW5kIHN1Ym1pdCB0aGUgdGVzdFxcbiAgMjc6XFx0XFx0ICByZXN1bHRzIHRvIHRoZSBuZXRkZXYgTWFpbGluZyBMaXN0LlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbiAgMzE6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gIDMyOlxcdFxcdGRlZmF1bHQgeVxcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDM1OlxcdFxcdCAgVGhpcyBpcyB0aGUgZHJpdmVyIHVzZWQgb24gc2V2ZXJhbCBTb0NzOlxcbiAgMzY6XFx0XFx0ICBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgQWx0ZXJhIFNPQ0ZQR0EuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDozNS40MDcxOTgxODhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjgwMDMxNjYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBgc3RtbWFjYCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIGNhbiBJIGFjdHVhbGx5IGludGVyYWN0IHdpdGggYHN0bW1hY2Agd2l0aG91dCByZWFsIGhhcmR3YXJlPyBJcyBpdCBzdHJpY3RseSBhIGhhcmR3YXJlLWRlcGVuZGVudCBkcml2ZXI/IExldCdzIGNsYXJpZnkuICpZZXMqLCBpdCdzIGEgZHJpdmVyIGZvciBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIHRoZSBTeW5vcHN5cyBJUCBDb3JlLiBSaWdodCwgYW5kIGl0J3MgdXNlZCBvbiBhIGJ1bmNoIG9mIFNvQ3MgbGlrZSBTVGksIEFsbHdpbm5lciwgQW1sb2dpYyBNZXNvbiwgYW5kIEFsdGVyYSBTT0NGUEdBLiBUaGV5IGV2ZW4gdGVzdGVkIGl0IG9uIGEgWGlsaW54IFZpcnRleCBGUEdBIGFuZCBhIFN5bm9wc3lzIHByb3RvdHlwaW5nIGtpdCwgd2hpY2ggcmVpbmZvcmNlcyB0aGUgcGh5c2ljYWwgbmF0dXJlLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gdGhpcyB0aGluZyBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBhIGR1bW15IG9yIHBsYXRmb3JtIGRldmljZSBzb21laG93PyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSdzIGFueSB3YXkgdG8gbW9jayBvciB2aXJ0dWFsaXplIGl0LiBNeSBuZXh0IHN0ZXA6IGxldCBtZSBncmVwIHRoZSBjb2RlYmFzZSDigJMgc3BlY2lmaWNhbGx5LCBJJ20gbG9va2luZyBmb3IgdXNhZ2VzIG9mIGBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJgIG9yIGFueXRoaW5nIHNpbWlsYXIsIGVpdGhlciB3aXRoaW4gdGhlIGBzdG1tYWNgIGNvZGUgaXRzZWxmIG9yIGFueXdoZXJlIHJlbGV2YW50LiBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgaGludCBvZiBhIHNvZnR3YXJlLWJhc2VkIGludGVyZmFjZSBvciBpZiBpdCdzIHB1cmVseSB0aWVkIHRvIHBoeXNpY2FsIE5JQ3MuIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW5zdGFudGlhdGlvbiBjYXBhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjQzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6MzguMjA3NTE3Nzk0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjkwODkzMzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hYy4qcGxhdGZvcm1fZGV2aWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY4PXN0YXRpYyBpbnQgZHdtYWMxMDAwX3ZhbGlkYXRlX3VjYXN0X2VudHJpZXMoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtOTMtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6OTQ6c3RhdGljIHN0cnVjdCBzdG1tYWNfYXhpICpzdG1tYWNfYXhpX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtMTI5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjEzMDpzdGF0aWMgaW50IHN0bW1hY19tdGxfc2V0dXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy0xMzEtXFx0XFx0XFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTQxMz1zdGF0aWMgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo0MTQ6c3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTQxNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz02NTc9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NTg6ZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY3NT1zdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjY3NjpkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NjkyPUVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbHRmcl9maW5kX2Nsayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy03MDMtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NzA0OnN0YXRpYyBpbnQgc3RtbWFjX3BsdGZyX2dldF9pcnFfYXJyYXkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy03MDUtXFx0XFx0XFx0XFx0ICAgICAgY29uc3QgY2hhciAqZm10LCBpbnQgKmlycXMsIHNpemVfdCBudW0pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy03MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NzMwOmludCBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTczMS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODMxPXN0YXRpYyBpbnQgc3RtbWFjX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDUtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODQ2OmludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NDctXFx0XFx0ICAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg1OT1zdGF0aWMgdm9pZCBkZXZtX3N0bW1hY19wbHRmcl9yZW1vdmUodm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg3My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NzQ6aW50IGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODc1LVxcdFxcdFxcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz04ODc9RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODk0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjg5NTp2b2lkIHN0bW1hY19wbHRmcl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04OTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MTQ9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoxNTpkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg9MTc9c3RydWN0IGNsayAqc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMDppbnQgc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yMS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoyMzppbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjQtXFx0XFx0ICAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yNS1cXHRcXHQgICAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg6MjY6aW50IGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmgtMjctXFx0XFx0XFx0ICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0yOC1cXHRcXHRcXHQgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmg6Mjk6dm9pZCBzdG1tYWNfcGx0ZnJfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oLTMwLWV4dGVybiBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBzdG1tYWNfcGx0ZnJfcG1fb3BzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDo0MC40OTg0MTYyODhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6OTI4MTA3NDcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBzdG1tYWNgIERyaXZlcidzIEVtdWxhdGlvbiBhbmQgVGVzdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgc3RtbWFjYCwgYW4gRXRoZXJuZXQgTUFDIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBhbmQgU3lub3BzeXMgRGVzaWduV2FyZSBNQUNzLiBUaGUgY29yZSBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgb3Igbm90IHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIGVtdWxhdGVzIGFueSBoYXJkd2FyZSByZWxhdGVkIHRvIGBzdG1tYWNgIG9yIGEgU3lub3BzeXMgRFdNQUMgZGV2aWNlIG9uIGFuIGFtZDY0IGFyY2hpdGVjdHVyZS5cblxuTGV0IG1lIHRoaW5r4oCmIHRoZSBwcm92aWRlZCBpbnN0cnVjdGlvbnMgZXhwbGljaXRseSBzdGF0ZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgaW5jbHVkZXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcy4gVGhpbmdzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YC4gU2luY2UgdGhlIHRleHQgY2FsbHMgb3V0IHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMgZm9yIHRob3NlIGRldmljZXMsIEkgc2hvdWxkIGNoZWNrIHdoYXQgaXMgYXZhaWxhYmxlIGluIFFFTVUuXG5cbkFscmlnaHQsIHdoYXQgRXRoZXJuZXQgTklDcyAqYXJlKiBlbXVsYXRlZCBpbiBRRU1VIG9uIHg4Ni9hbWQ2ND8gSSBrbm93IHRoZXJlJ3MgYGUxMDAwYCwgYGUxMDAwZWAsIGFuZCBgaWdiYCwgYWxzbyBgcnRsODEzOWAsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGB2bXhuZXQzYCwgYHZpcnRpby1uZXQtcGNpYCwgYW5kIHNvbWV0aW1lcyBgcm9ja2VyYCwgYW5kIFVTQi1iYXNlZCBOSUNzIGxpa2UgYHJ0bDgxNTBgIGFuZCBgYXNpeGAuXG5cbk5vdywgZG9lcyBRRU1VIGhhdmUgc3VwcG9ydCBmb3IgYHN0bW1hY2Agb3IgYGR3bWFjYD8gTGV0IG1lIHNlZeKApiBJIHNob3VsZCBjaGVjayB0aGUgYGh3L25ldC9gIGRpcmVjdG9yeSBpbiB0aGUgUUVNVSBzb3VyY2UuIE9rYXksIHRoZSBsaXN0IGluY2x1ZGVzIGEgbG90IG9mIGRpZmZlcmVudCBlbXVsYXRlZCBOSUNzIOKAkyBgYWxsd2lubmVyX3N1bjhpX2VtYWNgLCBgY2FkZW5jZV9nZW1gLCBgZHA4MzkzeGAsIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgbWFueSBvdGhlcnMuIEJ1dCwgd2FpdCwgSSBkb24ndCBzZWUgYW55dGhpbmcgZXhwbGljaXRseSBuYW1lZCBgc3RtbWFjYCBvciBgZHdtYWNgIGluIHRoZXJlLiBUaGlzIHN1Z2dlc3RzIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIGBzdG1tYWNgIGRyaXZlciBvciBhbnkgRFdNQUMsIGV2ZW4gaWYgSSB3YXMgcnVubmluZyBhIFFFTVUgQVJNIG9yIEFBcmNoNjQgaW5zdGFuY2UuIE9uIGFtZDY0LCBpdCdzIGRlZmluaXRlbHkgbm90IGVtdWxhdGVkLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIGEgZGlmZmVyZW50IGF2ZW51ZSwgY2FuIHN5emthbGxlciBldmVuIGludGVyYWN0IHdpdGggdGhpcz8gRG9lcyBzeXprYWxsZXIgaGF2ZSB0aGUgY2FwYWNpdHkgdG8gaW5zdGFudGlhdGUgYHN0bW1hY2A/IEl0IGxvb2tzIGxpa2UgYHN0bW1hY2AgKnJlcXVpcmVzKiBwaHlzaWNhbCBoYXJkd2FyZTogUENJIGRldmljZXMgZnJvbSBTVE1NQUMsIFNUTUlDUk8sIFNZTk9QU1lTLCBJbnRlbCwgTG9vbmdzb24sIG9yIE1vdG9yY29tbSwgb3IgcGxhdGZvcm0gZGV2aWNlcyBmcm9tIERldmljZSBUcmVlIG9yIEFDUEkuIFNpbmNlIHN5emthbGxlciBydW5zIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIFZNcywgaXQgY2FuJ3QgcHJvYmUgb3IgZXhlY3V0ZSBgc3RtbWFjYCBiZWNhdXNlIGl0IGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSByZXF1aXJlZCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuTm93LCBsZXQncyBtb3ZlIG9uIHRvIHRoZSBjb2RlIGNoYW5nZXM6IHRoZSBwYXRjaCBtb2RpZmllcyBgc3RtbWFjX3NldF9iZnNpemVgIGFuZCBgc3RtbWFjX3NldHVwX2RtYV9kZXNjYCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLCBhbmQgYWxzbyBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCB3aGljaCBpbmNsdWRlcyBldGh0b29sIHNlbGZ0ZXN0cyBmb3IgYHN0bW1hY2AuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMsIGFyZSBgc3RtbWFjX3NlbGZ0ZXN0c2Agb3IgY2FsbHMgdG8gYHN0bW1hY19zZXR1cF9kbWFfZGVzY2AgcmVhY2hhYmxlIGZyb20gKmFueSogdmlydHVhbCBkcml2ZXIgb3IgdGhlIGNvcmUgc3Vic3lzdGVtPyBMZXQgbWUgc2VlLiBJJ2xsIHNlYXJjaCBmb3IgY2FsbHMgdG8gYHN0bW1hY19zZXR1cF9kbWFfZGVzY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTYzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDIxOjUwOjQ5Ljc3OTQ5MzI1M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyODk3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3NldHVwX2RtYV9kZXNjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwMzk9c3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA1My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNTQ6ICogIHN0bW1hY19zZXR1cF9kbWFfZGVzYyAtIEdlbmVyYXRlIGEgZG1hX2NvbmYgYW5kIGFsbG9jYXRlIERNQSBxdWV1ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA1NS0gKiAgQHByaXY6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDYyPXN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNjM6c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTk4PXN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMDg6XFx0ZG1hX2NvbmYgPSBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MocHJpdiwgZGV2LVxcdTAwM2VtdHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIwOS1cXHRpZiAoSVNfRVJSKGRtYV9jb25mKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjEzOT1zdGF0aWMgaW50IHN0bW1hY19jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTY1LVxcdFxcdC8qIFRyeSB0byBhbGxvY2F0ZSB0aGUgbmV3IERNQSBjb25mIHdpdGggdGhlIG5ldyBtdHUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxNjY6XFx0XFx0ZG1hX2NvbmYgPSBzdG1tYWNfc2V0dXBfZG1hX2Rlc2MocHJpdiwgbXR1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNjctXFx0XFx0aWYgKElTX0VSUihkbWFfY29uZikpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6NDkuODI0Nzg2ODUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI2Mzc3MDU4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWxhdGlvbnNoaXAgQmV0d2VlbiBETUEgRGVzY3JpcHRvciBTZXR1cCBhbmQgU2VsZi1UZXN0cyBpbiB0aGUgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgc3RtbWFjYCBFdGhlcm5ldCBkcml2ZXIsIGFuZCB0d28ga2V5IHBhcnRzIGFyZSBqdW1waW5nIG91dCBhdCBtZTogYHN0bW1hY19zZXR1cF9kbWFfZGVzY2AgYW5kIHRoZSBzZWxmLXRlc3RzIGltcGxlbWVudGVkIGluIGBzdG1tYWNfc2VsZnRlc3RzLmNgLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoZXkncmUgYm90aCBpbnRlZ3JhbCBjb21wb25lbnRzIHdpdGhpbiB0aGlzIGRyaXZlci4gSSdtIG5vdGluZyB0aGF0IGBzdG1tYWNfc2V0dXBfZG1hX2Rlc2NgIHBsYXlzIGEgY3J1Y2lhbCByb2xlIGluIGluaXRpYWxpemluZyBvciByZWNvbmZpZ3VyaW5nIHRoZSBETUEgZGVzY3JpcHRvcnMsIGFzIGl0J3MgY2FsbGVkIGJ5IHRoZSBgc3RtbWFjX29wZW4oKWAgZnVuY3Rpb24sIHdoaWNoIGlzLCBvYnZpb3VzbHksIHVzZWQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbiwgYW5kIGBzdG1tYWNfY2hhbmdlX210dSgpYCwgd2hpY2ggaXMgdXNlZCwgdW5zdXJwcmlzaW5nbHksIHdoZW4gdGhlIE1UVSAoTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCkgaXMgbW9kaWZpZWQsIHJlcXVpcmluZyBhIHJlLXNldHVwIG9mIHRoZSBkZXNjcmlwdG9ycy5cblxuTm93LCB0aGUgc2VsZi10ZXN0IGFzcGVjdCwgdGhhdCdzIHJlc2lkaW5nIHdpdGhpbiBgc3RtbWFjX3NlbGZ0ZXN0cy5jYCB3aGljaCwgaXQncyBjbGVhciwgaW1wbGVtZW50cyB0aGUgc2VsZi10ZXN0IGZ1bmN0aW9uYWxpdHkuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW52b2tlZCBieSBgc3RtbWFjX3NlbGZ0ZXN0X3J1bigpYCwgd2hpY2ggaXMgZGlyZWN0bHkgdGllZCB0byB0aGUgYGV0aHRvb2xfb3BzLVx1MDAzZXNlbGZfdGVzdGAgaG9vayBmb3IgYHN0bW1hY2AuIFNvLCB0aGUgZW50aXJlIHNlbGYtdGVzdCBtZWNoYW5pc20gaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgc3RhbmRhcmQgZXRodG9vbCBpbnRlcmZhY2UuIEdpdmVuIHRoZSBjb250ZXh0LCBpdCBtaWdodCBiZSBpbnN0cnVjdGl2ZSB0byBjaGVjayBvdXQgYHN0bW1hY19zZWxmdGVzdF9ydW5gLCBpbiB0aGUgY29kZWJhc2UsIHRvIHZlcmlmeSB0aGUgYWN0dWFsIGNvbnRyb2wgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0NzIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6NTIuNDYyNDk1NjUxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzI5MzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfc2VsZnRlc3RfcnVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MzI9c3RydWN0IHRpbWVzcGVjNjQgc3RtbWFjX2NhbGNfdGFzX2Jhc2V0aW1lKGt0aW1lX3Qgb2xkX2Jhc2VfdGltZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQzNi0jaWYgSVNfRU5BQkxFRChDT05GSUdfU1RNTUFDX1NFTEZURVNUUylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0Mzc6dm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDM4LVxcdFxcdFxcdCBzdHJ1Y3QgZXRodG9vbF90ZXN0ICpldGVzdCwgdTY0ICpidWYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDQwPWludCBzdG1tYWNfc2VsZnRlc3RfZ2V0X2NvdW50KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDQxLSNlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDQyOnN0YXRpYyBpbmxpbmUgdm9pZCBzdG1tYWNfc2VsZnRlc3RfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDQzLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF90ZXN0ICpldGVzdCwgdTY0ICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jPTEwOTU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBzdG1tYWNfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTExMDgtXFx0LnNldF9wYXVzZXBhcmFtID0gc3RtbWFjX3NldF9wYXVzZXBhcmFtLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19ldGh0b29sLmM6MTEwOTpcXHQuc2VsZl90ZXN0ID0gc3RtbWFjX3NlbGZ0ZXN0X3J1bixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfZXRodG9vbC5jLTExMTAtXFx0LmdldF9ldGh0b29sX3N0YXRzID0gc3RtbWFjX2dldF9ldGh0b29sX3N0YXRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3NlbGZ0ZXN0cy5jPTE5MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfdGVzdCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjAxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmM6MjAxNzp2b2lkIHN0bW1hY19zZWxmdGVzdF9ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmMtMjAxOC1cXHRcXHRcXHQgc3RydWN0IGV0aHRvb2xfdGVzdCAqZXRlc3QsIHU2NCAqYnVmKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQyMTo1MDo1Mi41Mjk3OTU0OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1OTgwNDI3ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgVmVyZGljdDogV29ydGhGdXp6aW5nID0gZmFsc2UqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gbXkgdW5kZXJzdGFuZGluZywgYHN0bW1hY19zZWxmdGVzdF9ydW5gIGlzIGV4Y2x1c2l2ZWx5IHRyaWdnZXJlZCBieSBldGh0b29sJ3MgYHNlbGZfdGVzdGAgb24gYSBuZXRkZXYgaW5pdGlhbGl6ZWQgYnkgdGhlIGBzdG1tYWNgIGRyaXZlci4gYHN0bW1hY2AsIGFzIEkga25vdyBpdCwgaXMgYSBkcml2ZXIgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgSVAgb3IgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBoYXJkd2FyZS4gU28sIHRvIGV2ZW4gKmdldCogdG8gdGhpcyBjb2RlLCB5b3UgKm5lZWQqIGEgcGh5c2ljYWwgZGV2aWNlIHRoYXQgYHN0bW1hY2Agc3VwcG9ydHMsIG9yLCBhbiBlbXVsYXRlZCBvbmUsIHdoaWNoIGlzbid0IHByZXNlbnQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGVudmlyb25tZW50cy5cblxuTm93LCBsZXQncyBxdWlja2x5IHJlLWNoZWNrIFNlY3Rpb24gMiBvZiB0aGUgdHJpYWdlIGluc3RydWN0aW9ucy4gSXQgZXhwbGljaXRseSBzYXlzIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBjZXJ0YWluIG5lZ2F0aXZlIGNhdGVnb3JpZXMsIGFuZCBvbmUgb2YgdGhlbSBpcyBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiLiBTcGVjaWZpY2FsbHksIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBtZW50aW9uIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJpbmcgcGh5c2ljYWwgY2FyZHMgdGhhdCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCdzICpleGFjdGx5KiB3aGF0IHRoaXMgaXM6IHdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIHBoeXNpY2FsIGBzdG1tYWNgIGhhcmR3YXJlLCBub3Qgc29tZXRoaW5nIHlvdSBjYW4gZWFzaWx5IHNwb29mLlxuXG5BbGwgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCBzZXJpZXMgYXJlIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfc2VsZnRlc3RzLmNgLiBUaGlzIGNvbmZpcm1zIGl0OiB0aGlzIGlzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyLCB3aGljaCBtZWFucyBwaHlzaWNhbCBTb0Mgb3IgUENJIGhhcmR3YXJlICh0aGUgU3lub3BzeXMgSVAgY29yZSkgaXMgcmVxdWlyZWQuIFRoYXQncyBub3QgZW11bGF0ZWQgaW4gdGhlIHR5cGljYWwgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSBvbiBhbWQ2NC4gVGhlcmVmb3JlLCB0aGUgY29kZSAqaXMqIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgc3l6a2FsbGVyIGZ1enppbmcuXG5cblRodXMsIGJhc2VkIG9uIHRoZSB0cmlhZ2UgaW5zdHJ1Y3Rpb25zIGFuZCBteSBleHBlcnQga25vd2xlZGdlLCBgV29ydGhGdXp6aW5nYCBtdXN0IGJlIGZhbHNlLlxuXG5MZXQncyBnZXQgcmVhZHkgZm9yIHRoZSBgc2V0LXJlc3VsdHNgIGNhbGw6IEkgd2lsbCBzZXQgYFdvcnRoRnV6emluZzogZmFsc2VgLCBgRm9jdXNTeW1ib2xzOiBbXWAsIGFuZCBgRW5hYmxlQ29uZmlnczogW11gLlxuXG5Ob3cgSSBuZWVkIGEgY29uY2lzZSByZWFzb25pbmcgZXhwbGFuYXRpb24uIEhlcmUgaXMgd2hhdCBJIHdpbGwgZ28gd2l0aDogXCJUaGUgY2hhbmdlcyBtb2RpZnkgYnVmZmVyIHNpemUgY2FsY3VsYXRpb25zIGFuZCBzZWxmdGVzdHMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgU29DIG9yIFBDSSBoYXJkd2FyZSAoU3lub3BzeXMgSVAgY29yZSkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFIG9uIGFtZDY0KSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIlxuXG5MZXQgbWUganVzdCB2ZXJpZnkgdGhhdCB0aGUgcmVhc29uaW5nIGlzIGNvcnJlY3QuIFllcywgdGhlIGNoYW5nZXMgYXJlIHRvIHRoZSBidWZmZXIgc2l6ZSBhbmQgc2VsZnRlc3RzLCBhbmQgdGhlIHJvb3QgaXNzdWUgaXMgdGhhdCB5b3UgKm5lZWQqIGEgc3BlY2lmaWMgU3lub3BzeXMgaGFyZHdhcmUgYW5kIHRoYXQgaXNuJ3QgZW11bGF0ZWQuIFBlcmZlY3QhXG5cbkFscmlnaHQsIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY4MSwiT3V0cHV0VG9rZW5zIjoxMjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6NTguNTEwMjI1NTQ3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgRE1BIGJ1ZmZlciBzaXplIGhhbmRsaW5nIGFuZCBldGh0b29sIHNlbGZ0ZXN0cyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFNvQyBhbmQgUENJIEV0aGVybmV0IGNvbnRyb2xsZXJzIChTeW5vcHN5cyBJUCBjb3JlcykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSBvbiBhbWQ2NCkuIEJlY2F1c2UgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgdGVzdCBlbnZpcm9ubWVudCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMjE6NTA6NTguNTEwMjUyNzg3WiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow72z2t[1] Phase: Running StartedAt: 2026-09-11 21:51:10 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow72z2t[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-11 21:51:10 +0000 UTC FinishedAt: 2026-09-11 21:51:14 +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,}