Name: series-workflowzdvgt Phase: Failed StartedAt: 2026-07-27 14:01:08 +0000 UTC FinishedAt: 2026-07-27 14:24:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdvgt[0] Phase: Succeeded StartedAt: 2026-07-27 14:01:08 +0000 UTC FinishedAt: 2026-07-27 14:24:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdvgt[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 14:01:08 +0000 UTC FinishedAt: 2026-07-27 14:24:19 +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+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eCkgYW5kIGFkZHMgYSBuZXcgRFNBIHRhZyBwcm90b2NvbCBpbiBuZXQvZHNhL3RhZ19kc2EuYy4gVGhlIE1hcnZlbGwgODhFNnh4eCBkcml2ZXIgaXMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIHN3aXRjaGVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBUaGUgbmV3IHRhZyBwcm90b2NvbCBpbiB0YWdfZHNhLmMgc2ltcGx5IHJldXNlcyBleGlzdGluZyB0cmFuc21pdCBhbmQgcmVjZWl2ZSBmdW5jdGlvbnMgKGVkc2FfeG1pdCwgZWRzYV9yY3YpIGFuZCBjb250YWlucyBubyBuZXcgZXhlY3V0YWJsZSBsb2dpYy4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgaXMgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ZWU3M2U0NmY0MWYyMjU2NTYzYjdjNGMwM2YxYzNlMWRhMTBkOTViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTQ6MjI6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWxcbmluZGV4IDQ4MDEyMDQ2OTk1MzRiLi44ZDEyYzhmMWJkNTFlYyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWxcbkBAIC01Myw2ICYjNDM7NTMsNyBAQCBwcm9wZXJ0aWVzOlxuICAgICBlbnVtOlxuICAgICAgIC0gZHNhXG4gICAgICAgLSBlZHNhXG4mIzQzOyAgICAgIC0gZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzXG4gICAgICAgLSBvY2Vsb3RcbiAgICAgICAtIG9jZWxvdC04MDIxcVxuICAgICAgIC0gcnRsOF80XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuaW5kZXggODBiODc3Yzc0NTEzZDYuLmU5MjUyNGJlYjQwYzQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG5AQCAtMzI3MSw3ICYjNDM7MzI3MSw4IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3NldHVwX3BvcnRfbW9kZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIFx0aWYgKGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRFNBKVxuIFx0XHRyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZHNhKGNoaXAsIHBvcnQpO1xuIFxuLVx0aWYgKGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQSlcbiYjNDM7XHRpZiAoY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBIHx8XG4mIzQzO1x0ICAgIGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTKVxuIFx0XHRyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZWRzYShjaGlwLCBwb3J0KTtcbiBcbiBcdHJldHVybiAtRUlOVkFMO1xuQEAgLTYzNzAsNiAmIzQzOzYzNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzQxX29wcyxcbiYjNDM7XHRcdC5zdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMgPSB0cnVlLFxuIFx0fSxcbiBcbiBcdFtNVjg4RTYzNTBdID0ge1xuQEAgLTY0NDcsNiAmIzQzOzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzUyX29wcyxcbiYjNDM7XHRcdC5zdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMgPSB0cnVlLFxuIFx0fSxcbiBcdFtNVjg4RTYzNjFdID0ge1xuIFx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLFxuQEAgLTY2MzUsNiAmIzQzOzY2MzgsNyBAQCBzdGF0aWMgc3RydWN0IG12ODhlNnh4eF9jaGlwICptdjg4ZTZ4eHhfYWxsb2NfY2hpcChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRjaGlwLVx1MDAzZWRldiA9IGRldjtcbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VyZWdfbG9jayk7XG4mIzQzO1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjaGlwLVx1MDAzZW1kaW9zKTtcbiBcdGlkcl9pbml0KFx1MDAyNmNoaXAtXHUwMDNlcG9saWNpZXMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2hpcC1cdTAwM2Vtc3RzKTtcbkBAIC02NjU4LDkgJiM0Mzs2NjYyLDE3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXHUwMDNlcHJpdjtcbiBcdGVudW0gZHNhX3RhZ19wcm90b2NvbCBvbGRfcHJvdG9jb2w7XG4gXHRzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcDtcbi1cdGludCBlcnI7XG4mIzQzO1x0aW50IGVyciA9IDA7XG4gXG4mIzQzO1x0LyogVGhlIGVtYmVkZGVkIGFycml2YWwtdGltZS1zdGFtcCBwcm90b2NvbCBpcyBhbiBFRFNBIGV4dGVuc2lvbjogRURTQVxuJiM0MztcdCAqIGlzIHRoZSBtb2Rlcm4gdGFnIGZvcm1hdCBmb3IgdGhlc2Ugc3dpdGNoZXMsIHNvIGl0IGlzIHRoZSBvbmUgd2VcbiYjNDM7XHQgKiBleHRlbmQ7IHRoZSBsZWdhY3kgRFNBIHRhZyBpcyBpbnRlbnRpb25hbGx5IGxlZnQgdW4tZXh0ZW5kZWQuXG4mIzQzO1x0ICovXG4gXHRzd2l0Y2ggKHByb3RvKSB7XG4mIzQzO1x0Y2FzZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUzpcbiYjNDM7XHRcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cylcbiYjNDM7XHRcdFx0cmV0dXJuIC1FUFJPVE9OT1NVUFBPUlQ7XG4mIzQzO1x0XHRmYWxsdGhyb3VnaDtcbiBcdGNhc2UgRFNBX1RBR19QUk9UT19FRFNBOlxuIFx0XHRzd2l0Y2ggKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VlZHNhX3N1cHBvcnQpIHtcbiBcdFx0Y2FzZSBNVjg4RTZYWFhfRURTQV9VTlNVUFBPUlRFRDpcbkBAIC02Njg5LDcgJiM0Mzs2NzAxLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIFx0XHRcdGdvdG8gdW53aW5kO1xuIFx0XHR9XG4gXHR9XG4mIzQzO1xuJiM0MztcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlcHRwX3N1cHBvcnQpXG4mIzQzO1x0XHRlcnIgPSBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKGNoaXApO1xuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdGdvdG8gdW53aW5kO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG5AQCAtNjY5OSw2ICYjNDM7NjcxNiwxNSBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbiBcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnRfY29udGludWVfcmV2ZXJzZShjcHVfZHAsIGRzKVxuIFx0XHRtdjg4ZTZ4eHhfc2V0dXBfcG9ydF9tb2RlKGNoaXAsIGNwdV9kcC1cdTAwM2VpbmRleCk7XG4mIzQzO1x0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VwdHBfc3VwcG9ydCkge1xuJiM0MztcdFx0LyogTm90aGluZyBlbHNlIGNhbiBiZSBkb25lIGhlcmUsIGJ1dCBsZWF2aW5nIGEgcG9ydCBlbWJlZGRpbmdcbiYjNDM7XHRcdCAqIHRpbWUgc3RhbXBzIHRoZSBkcml2ZXIgd2lsbCBub3Qgc3RyaXAgY29ycnVwdHMgZXZlcnkgUFRQXG4mIzQzO1x0XHQgKiBldmVudCBmcmFtZSBpdCByZWNlaXZlcywgc28gbWFrZSB0aGUgZmFpbHVyZSB2aXNpYmxlLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAobXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKSlcbiYjNDM7XHRcdFx0ZGV2X2VycihjaGlwLVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XHRcJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBhcnJpdmFsIHRpbWUgc3RhbXAgbW9kZVxcblwmIzM0Oyk7XG4mIzQzO1x0fVxuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbmluZGV4IGU5NjZlN2M0Y2M1ZGVhLi5jNzVhNzE0NjRiMjBhYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuQEAgLTE4MCw2ICYjNDM7MTgwLDEzIEBAIHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyB7XG4gXHQgKiBwb3J0IDAsIDEgbWVhbnMgaW50ZXJuYWwgUEhZcyByYW5nZSBzdGFydHMgYXQgcG9ydCAxLCBldGNcbiBcdCAqL1xuIFx0dW5zaWduZWQgaW50IGludGVybmFsX3BoeXNfb2Zmc2V0O1xuJiM0MztcbiYjNDM7XHQvKiBUaGUgc3dpdGNoIGNhbiBlbWJlZCB0aGUgUFRQIGFycml2YWwgdGltZSBzdGFtcCBpbiB0aGUgcmVzZXJ2ZWQyXG4mIzQzO1x0ICogZmllbGQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyLCB3aGljaCB0aGUgZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzXG4mIzQzO1x0ICogdGFnIHByb3RvY29sIHNlbGVjdHMuIE90aGVyd2lzZSBhcnJpdmFsIHRpbWUgc3RhbXBzIGFyZSBvbmx5XG4mIzQzO1x0ICogYXZhaWxhYmxlIGZyb20gdGhlIHN3aXRjaCByZWdpc3RlcnMuXG4mIzQzO1x0ICovXG4mIzQzO1x0Ym9vbCBzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHM7XG4gfTtcbiBcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XG5AQCAtNDE5LDkgJiM0Mzs0MjYsMTIgQEAgc3RydWN0IG12ODhlNnh4eF9jaGlwIHtcbiBcdC8qIEdQSU8gcmVzb3VyY2VzICovXG4gXHR1OCBncGlvX2RhdGFbMl07XG4gXG4tXHQvKiBUaGlzIGN5Y2xlY291bnRlciBhYnN0cmFjdHMgdGhlIHN3aXRjaCBQVFAgdGltZS5cbi1cdCAqIHJlZ19sb2NrIG11c3QgYmUgaGVsZCBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IHJlYWQoKXMuXG4mIzQzO1x0LyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuIHB0cF9jbG9ja19sb2NrXG4mIzQzO1x0ICogcHJvdGVjdHMgdHN0YW1wX2NjIGFuZCB0c3RhbXBfdGMuIHRzdGFtcF9jeWNsZXMgY2FjaGVzIHRoZVxuJiM0MztcdCAqIHJlc3VsdCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKS5cbiBcdCAqL1xuJiM0MztcdHNwaW5sb2NrX3RcdFx0cHRwX2Nsb2NrX2xvY2s7XG4mIzQzO1x0dTY0XHRcdFx0dHN0YW1wX2N5Y2xlcztcbiBcdHN0cnVjdCBjeWNsZWNvdW50ZXJcdHRzdGFtcF9jYztcbiBcdHN0cnVjdCB0aW1lY291bnRlclx0dHN0YW1wX3RjO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29ya1x0b3ZlcmZsb3dfd29yaztcbkBAIC04MTUsNiAmIzQzOzgyNSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbXY4OGU2eHh4X2hhc19sYWcoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFx0cmV0dXJuICEhY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWdsb2JhbDJfYWRkcjtcbiB9XG4gXG4mIzQzOy8qIFdoZXRoZXIgdGhlIGFjdGl2ZSB0YWdnaW5nIHByb3RvY29sIGhhcyB0aGUgc3dpdGNoIGVtYmVkIGFycml2YWwgdGltZSBzdGFtcHNcbiYjNDM7ICogaW4gdGhlIGZyYW1lIGluc3RlYWQgb2YgbGVhdmluZyB0aGVtIGluIHRoZSBQVFAgYXJyaXZhbCByZWdpc3RlcnMuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9oYXNfdGNhbShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4ge1xuIFx0cmV0dXJuICEhY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXRjYW1fYWRkcjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li43NGVhYWRlZWViNzg0MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAjaW5jbHVkZSBcJiMzNDtod3RzdGFtcC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cHRwLmhcJiMzNDtcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuIFxuICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS1cdTAwM2VjYikpXG4gXG5AQCAtOTQsNiAmIzQzOzk1LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuIFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzO1xuIFx0c3RydWN0IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wICpwcyA9IFx1MDAyNmNoaXAtXHUwMDNlcG9ydF9od3RzdGFtcFtwb3J0XTtcbiBcdGJvb2wgdHN0YW1wX2VuYWJsZSA9IGZhbHNlO1xuJiM0MztcdGludCBlcnIgPSAwO1xuIFxuIFx0LyogUHJldmVudCB0aGUgVFgvUlggcGF0aHMgZnJvbSB0cnlpbmcgdG8gaW50ZXJhY3Qgd2l0aCB0aGVcbiBcdCAqIHRpbWVzdGFtcCBoYXJkd2FyZSB3aGlsZSB3ZSByZWNvbmZpZ3VyZSBpdC5cbkBAIC0xNDcsMjAgJiM0MzsxNDksMzAgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuIFx0aWYgKHRzdGFtcF9lbmFibGUpIHtcbiBcdFx0Y2hpcC1cdTAwM2VlbmFibGVfY291bnQgJiM0Mzs9IDE7XG4gXHRcdGlmIChjaGlwLVx1MDAzZWVuYWJsZV9jb3VudCA9PSAxIFx1MDAyNlx1MDAyNiBwdHBfb3BzLVx1MDAzZWdsb2JhbF9lbmFibGUpXG4tXHRcdFx0cHRwX29wcy1cdTAwM2VnbG9iYWxfZW5hYmxlKGNoaXApO1xuLVx0XHRpZiAocHRwX29wcy1cdTAwM2Vwb3J0X2VuYWJsZSlcbi1cdFx0XHRwdHBfb3BzLVx1MDAzZXBvcnRfZW5hYmxlKGNoaXAsIHBvcnQpO1xuJiM0MztcdFx0XHRlcnIgPSBwdHBfb3BzLVx1MDAzZWdsb2JhbF9lbmFibGUoY2hpcCk7XG4mIzQzO1x0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgcHRwX29wcy1cdTAwM2Vwb3J0X2VuYWJsZSlcbiYjNDM7XHRcdFx0ZXJyID0gcHRwX29wcy1cdTAwM2Vwb3J0X2VuYWJsZShjaGlwLCBwb3J0KTtcbiBcdH0gZWxzZSB7XG4gXHRcdGlmIChwdHBfb3BzLVx1MDAzZXBvcnRfZGlzYWJsZSlcbi1cdFx0XHRwdHBfb3BzLVx1MDAzZXBvcnRfZGlzYWJsZShjaGlwLCBwb3J0KTtcbiYjNDM7XHRcdFx0ZXJyID0gcHRwX29wcy1cdTAwM2Vwb3J0X2Rpc2FibGUoY2hpcCwgcG9ydCk7XG4gXHRcdGNoaXAtXHUwMDNlZW5hYmxlX2NvdW50IC09IDE7XG4gXHRcdGlmIChjaGlwLVx1MDAzZWVuYWJsZV9jb3VudCA9PSAwIFx1MDAyNlx1MDAyNiBwdHBfb3BzLVx1MDAzZWdsb2JhbF9kaXNhYmxlKVxuIFx0XHRcdHB0cF9vcHMtXHUwMDNlZ2xvYmFsX2Rpc2FibGUoY2hpcCk7XG4gXHR9XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4gXHQvKiBPbmNlIGhhcmR3YXJlIGhhcyBiZWVuIGNvbmZpZ3VyZWQsIGVuYWJsZSB0aW1lc3RhbXAgY2hlY2tzXG4gXHQgKiBpbiB0aGUgUlgvVFggcGF0aHMuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBJbiBlbWJlZGRlZCBtb2RlIHRoZSBzd2l0Y2ggc3RhcnRzIG92ZXJ3cml0aW5nIHRoZSBQVFAgaGVhZGVyJiMzOTtzXG4mIzQzO1x0ICogcmVzZXJ2ZWQyIGZpZWxkIGFzIHNvb24gYXMgQ0ZHMiBpcyBhcm1lZCBhYm92ZSwgd2hpY2ggaXMgYmVmb3JlIHRoZVxuJiM0MztcdCAqIFJYIHBhdGggYmVnaW5zIHJlc3RvcmluZyBpdDsgb24gdGhlIHdheSBkb3duIHRoZSBSWCBwYXRoIHN0b3BzXG4mIzQzO1x0ICogcmVzdG9yaW5nIGJlZm9yZSB0aGUgaGFyZHdhcmUgc3RvcHMgZW1iZWRkaW5nLiBBbiBldmVudCBmcmFtZVxuJiM0MztcdCAqIHJlY2VpdmVkIGluc2lkZSBlaXRoZXIgd2luZG93IGlzIGRlbGl2ZXJlZCB3aXRoIHRoZSBzd2l0Y2gmIzM5O3NcbiYjNDM7XHQgKiBhcnJpdmFsIGNvdW50ZXIgc3RpbGwgaW4gaXRzIGhlYWRlci5cbiBcdCAqL1xuIFx0aWYgKHRzdGFtcF9lbmFibGUpXG4gXHRcdHNldF9iaXQoTVY4OEU2WFhYX0hXVFNUQU1QX0VOQUJMRUQsIFx1MDAyNnBzLVx1MDAzZXN0YXRlKTtcbkBAIC0yMTYsNiAmIzQzOzIyOCwxMCBAQCBzdGF0aWMgc3RydWN0IHB0cF9oZWFkZXIgKm12ODhlNnh4eF9zaG91bGRfdHN0YW1wKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXB0cF9zdXBwb3J0KVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiYjNDM7XHQvKiBNYXJ2ZWxsIHN3aXRjaGVzIGRvIG5vdCBzdXBwb3J0IElFRUUgMTU4OC0yMDAyIChQVFB2MSkuICovXG4mIzQzO1x0aWYgKCh0eXBlIFx1MDAyNiBQVFBfQ0xBU1NfVk1BU0spICE9IFBUUF9DTEFTU19WMilcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiBcdGhkciA9IHB0cF9wYXJzZV9oZWFkZXIoc2tiLCB0eXBlKTtcbiBcdGlmICghaGRyKVxuIFx0XHRyZXR1cm4gTlVMTDtcbkBAIC0yNDUsNiAmIzQzOzI2MSw1MiBAQCBzdGF0aWMgaW50IHNlcV9tYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdHNfc2VxaWQpXG4gXHRyZXR1cm4gdHNfc2VxaWQgPT0gbnRvaHMoaGRyLVx1MDAzZXNlcXVlbmNlX2lkKTtcbiB9XG4gXG4mIzQzOy8qIFJlY292ZXIgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIHdyb3RlIG92ZXIgdGhlIHJlc2VydmVkMiBmaWVsZCBvZiB0aGUgUFRQXG4mIzQzOyAqIGNvbW1vbiBoZWFkZXIsIHJlc3RvcmluZyB0aGUgZmllbGQgYWZ0ZXJ3YXJkcy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBib29sIHBhcnNlX2VtYmVkZGVkX3RzKHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgb2ZmID0gTVY4OEU2WFhYX1BUUF9BUlJfVFNfT0ZGU0VUO1xuJiM0MztcdHN0cnVjdCBwdHBfaGVhZGVyICpoZHI7XG4mIzQzO1xuJiM0MztcdCpucyA9IDA7XG4mIzQzO1xuJiM0MztcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGhkciA9IHB0cF9wYXJzZV9oZWFkZXIoc2tiLCBTS0JfUFRQX1RZUEUoc2tiKSk7XG4mIzQzO1x0aWYgKCFoZHIpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdCpucyA9IGdldF91bmFsaWduZWRfYmUzMigodTggKiloZHIgJiM0Mzsgb2ZmKTtcbiYjNDM7XHRtZW1zZXQoKHU4ICopaGRyICYjNDM7IG9mZiwgMCwgNCk7XG4mIzQzO1x0c2tiX2NoZWNrc3VtX2NvbXBsZXRlX3Vuc2V0KHNrYik7XG4mIzQzO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBBcHBseSB0aGUgYXJyaXZhbCB0aW1lIHRoZSBzd2l0Y2ggZW1iZWRkZWQgaW4gdGhlIGZyYW1lLiBObyByZWdpc3RlciBhY2Nlc3NcbiYjNDM7ICogaXMgbmVlZGVkLCBzbyB0aGlzIHJ1bnMgaW5saW5lIG9uIHRoZSByZWNlaXZlIHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgaGFuZGVkXG4mIzQzOyAqIHRvIHRoZSBQVFAgd29ya2VyLiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBmcmFtZSBjb3VsZCBub3QgYmUgcmVzdG9yZWQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgYm9vbCBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKnNod3Q7XG4mIzQzO1x0dTY0IG5zO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKHNrYiwgXHUwMDI2bnMpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7XG4mIzQzO1xuJiM0MztcdHNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7XG4mIzQzO1x0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuJiM0MztcdHNod3QtXHUwMDNlaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiByZWcsXG5AQCAtMjg5LDkgJiM0MzszNTEsNyBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRpZiAobXY4OGU2eHh4X3RzX3ZhbGlkKHN0YXR1cykgXHUwMDI2XHUwMDI2IHNlcV9tYXRjaChza2IsIHNlcV9pZCkpIHtcbiBcdFx0XHRucyA9IHRpbWVoaSBcdTAwM2NcdTAwM2MgMTYgfCB0aW1lbG87XG4gXG4tXHRcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0XHRcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIG5zKTtcbi1cdFx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiYjNDM7XHRcdFx0bnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgbnMpO1xuIFx0XHRcdHNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7XG4gXHRcdFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuIFx0XHRcdHNod3QtXHUwMDNlaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XG5AQCAtMzA4LDcgJiM0MzszNjgsNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIFxuIFx0c2tiID0gc2tiX2RlcXVldWUoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuLVxuIFx0aWYgKHNrYilcbiBcdFx0bXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtXHUwMDNlYXJyMF9zdHNfcmVnLFxuIFx0XHRcdFx0ICAgXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuQEAgLTMxOSw5ICYjNDM7Mzc4LDE2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdFx0XHRcdCAgIFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlMik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgaXNfcGRlbGF5X3Jlc3AoY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcbiYjNDM7c3RhdGljIGJvb2wgaXNfcGRlbGF5X21zZyhjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKVxuIHtcbi1cdHJldHVybiAoaGRyLVx1MDAzZXRzbXQgXHUwMDI2IDB4ZikgPT0gMztcbiYjNDM7XHRzd2l0Y2ggKHB0cF9nZXRfbXNndHlwZShoZHIsIFBUUF9DTEFTU19WMikpIHtcbiYjNDM7XHRjYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVE6XG4mIzQzO1x0XHRmYWxsdGhyb3VnaDtcbiYjNDM7XHRjYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVNQOlxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gfVxuIFxuIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbkBAIC0zNDMsNyAmIzQzOzQwOSwyMiBAQCBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHRTS0JfUFRQX1RZUEUoc2tiKSA9IHR5cGU7XG4gXG4tXHRpZiAoaXNfcGRlbGF5X3Jlc3AoaGRyKSlcbiYjNDM7XHQvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGNhbiBiZSByZXR1cm5lZCBpbmxpbmUuIFRoZSBzd2l0Y2ggaGFzXG4mIzQzO1x0ICogb3ZlcndyaXR0ZW4gdGhlIHJlc2VydmVkMiBmaWVsZDsgaWYgaXQgY2Fubm90IGJlIHJlc3RvcmVkIHRoZSBmcmFtZVxuJiM0MztcdCAqIGlzIG5vIGxvbmdlciB3aGF0IHRoZSBzZW5kZXIgdHJhbnNtaXR0ZWQsIHNvIGRyb3AgaXQgcmF0aGVyIHRoYW5cbiYjNDM7XHQgKiBwYXNzIHVwIGEgY29ycnVwdGVkIGhlYWRlciB0aGF0IHdpbGwgZmFpbCB0aGUgUFRQLW92ZXItVURQIGNoZWNrc3VtXG4mIzQzO1x0ICogYW55d2F5LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChtdjg4ZTZ4eHhfcHRwX2VtYmVkZGVkX3RzKGNoaXApKSB7XG4mIzQzO1x0XHRpZiAoIW12ODhlNnh4eF9wdHBfcnhfdGltZXN0YW1wKGNoaXAsIHNrYikpIHtcbiYjNDM7XHRcdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9OT01FTSk7XG4mIzQzO1x0XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChpc19wZGVsYXlfbXNnKGhkcikpXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlMiwgc2tiKTtcbiBcdGVsc2VcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUsIHNrYik7XG5AQCAtNDA5LDkgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcbiBcdG1lbXNldChcdTAwMjZzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7XG4gXHR0aW1lX3JhdyA9ICgodTMyKWRlcGFydHVyZV9ibG9ja1syXSBcdTAwM2NcdTAwM2MgMTYpIHwgZGVwYXJ0dXJlX2Jsb2NrWzFdO1xuLVx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0bnMgPSB0aW1lY291bnRlcl9jeWMydGltZShcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgdGltZV9yYXcpO1xuLVx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4mIzQzO1x0bnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgdGltZV9yYXcpO1xuIFx0c2hod3RzdGFtcHMuaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XG4gXG4gXHRkZXZfZGJnKGNoaXAtXHUwMDNlZGV2LFxuQEAgLTQ1NCw3ICYjNDM7NTMzLDkgQEAgbG9uZyBtdjg4ZTZ4eHhfaHd0c3RhbXBfd29yayhzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cClcbiBcdFx0aWYgKHRlc3RfYml0KE1WODhFNlhYWF9IV1RTVEFNUF9UWF9JTl9QUk9HUkVTUywgXHUwMDI2cHMtXHUwMDNlc3RhdGUpKVxuIFx0XHRcdHJlc3RhcnQgfD0gbXY4OGU2eHh4X3R4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xuIFxuLVx0XHRtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7XG4mIzQzO1x0XHQvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGFyZSBhcHBsaWVkIG9uIHRoZSByZWNlaXZlIHBhdGguICovXG4mIzQzO1x0XHRpZiAoIW12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkpXG4mIzQzO1x0XHRcdG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcbiBcdH1cbiBcbiBcdHJldHVybiByZXN0YXJ0ID8gMSA6IC0xO1xuQEAgLTUyMywxNCAmIzQzOzYwNCw0MyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogUmV0dXJuIHRoZSBDRkcyIEFyclRTTW9kZSBmaWVsZCBmb3IgdGhlIGFjdGl2ZSBhcnJpdmFsIHRpbWUtc3RhbXAgbW9kZS4gKi9cbiYjNDM7c3RhdGljIHUxNiBtdjg4ZTZ4eHhfYXJyX3RzX2NmZzIoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkgP1xuJiM0MztcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfQVJSX1RTX1JFU0VSVkVEMiA6XG4mIzQzO1x0XHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfRElTQUJMRUQ7XG4gfVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbiB7XG4tXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxuLVx0XHRcdFx0XHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXG4mIzQzO1x0XHRcdFx0ICAgICAgIG12ODhlNnh4eF9hcnJfdHNfY2ZnMihjaGlwKSk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5AQCAtNTQ5LDYgJiM0Mzs2NTksNzIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKiBQcm9ncmFtIHRoZSBoYXJkd2FyZSBmb3IgdGhlIGFycml2YWwgdGltZS1zdGFtcCBtb2RlIHRoZSBhY3RpdmUgdGFnZ2luZ1xuJiM0MzsgKiBwcm90b2NvbCBzZWxlY3RzLiBDYWxsZWQgZnJvbSBzZXR1cCBhbmQgYWdhaW4gd2hlbmV2ZXIgdGhlIHByb3RvY29sIGNoYW5nZXMsXG4mIzQzOyAqIGFzIHRoYXQgaXMgd2hhdCBkZWNpZGVzIHdoZXJlIGFycml2YWwgdGltZSBzdGFtcHMgYXJlIGRlbGl2ZXJlZC5cbiYjNDM7ICpcbiYjNDM7ICogTXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVnaXN0ZXIgbG9jayBoZWxkLlxuJiM0MzsgKi9cbiYjNDM7aW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzO1xuJiM0MztcdGludCBlcnIsIHJldCA9IDA7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdC8qIEluIGVtYmVkZGVkIG1vZGUgdGhlIHN3aXRjaCBzdGFtcHMgZXZlcnkgZXZlbnQgbWVzc2FnZSBpdCBmb3J3YXJkcyxcbiYjNDM7XHQgKiBwZWVyIGRlbGF5IGluY2x1ZGVkLCBzbyBsZWF2ZSB0aGUgYXJyaXZhbCBjYXB0dXJlIHBvaW50ZXIgYWxvbmVcbiYjNDM7XHQgKiByYXRoZXIgdGhhbiBkaXZlcnRpbmcgcGVlciBkZWxheSBtZXNzYWdlcyB0byB0aGUgQVJSSVZBTDEgcmVnaXN0ZXJzLlxuJiM0MztcdCAqL1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbiYjNDM7XHRcdFx0XHQgIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkgPyAwIDpcbiYjNDM7XHRcdFx0XHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxuJiM0MztcdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cylcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtdjg4ZTZ4eHhfbnVtX3BvcnRzKGNoaXApOyAmIzQzOyYjNDM7aSkge1xuJiM0MztcdFx0c3RydWN0IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wICpwcyA9IFx1MDAyNmNoaXAtXHUwMDNlcG9ydF9od3RzdGFtcFtpXTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBBbnl0aGluZyBhbHJlYWR5IHF1ZXVlZCB3YXMgcXVldWVkIHVuZGVyIHRoZSBwcmV2aW91cyBtb2RlXG4mIzQzO1x0XHQgKiBhbmQgY2FuIG5vIGxvbmdlciBiZSBtYXRjaGVkIHdpdGggYW4gYXJyaXZhbCB0aW1lLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuJiM0MztcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlMik7XG4mIzQzO1xuJiM0MztcdFx0LyogVGhlIGFycml2YWwgcmVnaXN0ZXJzIGtlZXAgY2FwdHVyaW5nIGluIGVtYmVkZGVkIG1vZGUgd2l0aFxuJiM0MztcdFx0ICogbm90aGluZyB0byBkcmFpbiB0aGVtLCBzbyBjbGVhciB0aGUgc3RhdHVzIGhlcmUgb3IgdGhlXG4mIzQzO1x0XHQgKiByZWdpc3RlciBwYXRoIHJlc3VtZXMgb24gYSBzdGFsZSBjYXB0dXJlLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgcHRwX29wcy1cdTAwM2VhcnIwX3N0c19yZWcsIDApO1xuJiM0MztcdFx0aWYgKGVyciBcdTAwMjZcdTAwMjYgIXJldClcbiYjNDM7XHRcdFx0cmV0ID0gZXJyO1xuJiM0MztcbiYjNDM7XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBpLCBwdHBfb3BzLVx1MDAzZWFycjFfc3RzX3JlZywgMCk7XG4mIzQzO1x0XHRpZiAoZXJyIFx1MDAyNlx1MDAyNiAhcmV0KVxuJiM0MztcdFx0XHRyZXQgPSBlcnI7XG4mIzQzO1xuJiM0MztcdFx0LyogUG9ydHMgdGhhdCBoYXZlIG5vdCBlbmFibGVkIHRpbWUgc3RhbXBpbmcgcGljayB0aGUgbW9kZSB1cCBpblxuJiM0MztcdFx0ICogbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKCkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChwcy1cdTAwM2V0c3RhbXBfY29uZmlnLnJ4X2ZpbHRlciA9PSBIV1RTVEFNUF9GSUxURVJfTk9ORSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0LyogUHJvZ3JhbSBldmVyeSBwb3J0IGV2ZW4gaWYgb25lIGZhaWxzLiBBIHBvcnQgbGVmdCBlbWJlZGRpbmdcbiYjNDM7XHRcdCAqIHRpbWUgc3RhbXBzIHRoYXQgdGhlIGRyaXZlciBubyBsb25nZXIgc3RyaXBzIGNvcnJ1cHRzIHRoZVxuJiM0MztcdFx0ICogUFRQIGhlYWRlciBvZiBldmVyeSBldmVudCBmcmFtZSBpdCByZWNlaXZlcy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIGksIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIG12ODhlNnh4eF9hcnJfdHNfY2ZnMihjaGlwKSk7XG4mIzQzO1x0XHRpZiAoZXJyIFx1MDAyNlx1MDAyNiAhcmV0KVxuJiM0MztcdFx0XHRyZXQgPSBlcnI7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcHRwX29wcztcbkBAIC01ODQsOSAmIzQzOzc2MCw3IEBAIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cbi1cdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbi1cdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4mIzQzO1x0ZXJyID0gbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG5pbmRleCBjMzU5ODIxZDVhNmVhYS4uMmZlN2M3NDI5YmZmMWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuQEAgLTEzLDYgJiM0MzsxMyw4IEBAXG4gI2lmbmRlZiBfTVY4OEU2WFhYX0hXVFNUQU1QX0hcbiAjZGVmaW5lIF9NVjg4RTZYWFhfSFdUU1RBTVBfSFxuIFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuJiM0MztcbiAjaW5jbHVkZSBcJiMzNDtjaGlwLmhcJiMzNDtcbiBcbiAvKiBHbG9iYWwgNjM1MiBQVFAgcmVnaXN0ZXJzICovXG5AQCAtNjQsMTAgJiM0Mzs2NiwyMSBAQFxuIFxuIC8qIE9mZnNldCAweDAyOiBQVFAgQ29uZmlndXJhdGlvbiAyICovXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMlx0XHRcdFx0MHgwMlxuLSNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfRU1CRURfQVJSSVZBTFx0XHQweDEwMDBcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cdFx0MHgwMDAyXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXHRcdDB4MDAwMVxuIFxuJiM0MzsvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXG4mIzQzOyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcbiYjNDM7ICogZnJhbWVzLiBBIG5vbi16ZXJvIHZhbHVlIGlzIHRoZSBieXRlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIFBUUCBjb21tb25cbiYjNDM7ICogaGVhZGVyLCBhdCB3aGljaCB0aGUgc3dpdGNoIG92ZXJ3cml0ZXMgZm91ciBieXRlcyBpbiBwbGFjZTsgd2UgYWx3YXlzIHBvaW50XG4mIzQzOyAqIGl0IGF0IHRoZSBoZWFkZXImIzM5O3MgcmVzZXJ2ZWQyIGZpZWxkIHNvIHRoZSBmcmFtZSBsZW5ndGggaXMgbGVmdCBhbG9uZS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfT0ZGU0VUXHRcdFx0XFxcbiYjNDM7XHRvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKVxuJiM0MzsjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19ESVNBQkxFRFx0XHQweDAwMDBcbiYjNDM7I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfUkVTRVJWRUQyXHRcXFxuJiM0MztcdChNVjg4RTZYWFhfUFRQX0FSUl9UU19PRkZTRVQgXHUwMDNjXHUwMDNjIDgpXG4mIzQzO1xuIC8qIE9mZnNldCAweDAzOiBQVFAgTEVEIENvbmZpZ3VyYXRpb24gKi9cbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9MRURfQ0ZHXHQweDAzXG4gXG5AQCAtMTI2LDYgJiM0MzsxMzksNyBAQCBpbnQgbXY4OGU2eHh4X2dldF90c19pbmZvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gbG9uZyBtdjg4ZTZ4eHhfaHd0c3RhbXBfd29yayhzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCk7XG4gaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xuJiM0MztpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xuIHZvaWQgbXY4OGU2eHh4X2h3dHN0YW1wX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpO1xuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpO1xuQEAgLTE3Miw2ICYjNDM7MTg2LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSB2b2lkIG12ODhlNnh4eF9od3RzdGFtcF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbiB7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5pbmRleCBmNzYwMzU3M2QzYTk4NC4uMmE3Zjk3NjI1ZTM3NTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5AQCAtMjMxLDE1ICYjNDM7MjMxLDM3IEBAIHN0YXRpYyB2b2lkIG12ODhlNjM1Ml90YWlfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVnbHkpXG4gXG4gXHQvKiBXZSBvbmx5IGhhdmUgb25lIHRpbWVzdGFtcGluZyBjaGFubmVsLiAqL1xuIFx0ZXYuaW5kZXggPSAwO1xuLVx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0ZXYudGltZXN0YW1wID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIHJhd190cyk7XG4tXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiYjNDM7XHRldi50aW1lc3RhbXAgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgcmF3X3RzKTtcbiBcbiBcdHB0cF9jbG9ja19ldmVudChjaGlwLVx1MDAzZXB0cF9jbG9jaywgXHUwMDI2ZXYpO1xuIG91dDpcbiBcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZjaGlwLVx1MDAzZXRhaV9ldmVudF93b3JrLCBUQUlfRVZFTlRfV09SS19JTlRFUlZBTCk7XG4gfVxuIFxuJiM0MzsvKiBSZWZyZXNoIHRoZSBjYWNoZWQgY291bnRlciB2YWx1ZSB0aGF0IHRoZSByZWFkKCkgY2FsbGJhY2sgcmV0dXJucy4gVGhlXG4mIzQzOyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2tcbiYjNDM7ICogYmVjYXVzZSBNRElPIHJlYWRzIGNhbiBzbGVlcC4gVGhlIGNhbGxlciBtdXN0IGhvbGQgcmVnX2xvY2ssIHdoaWNoXG4mIzQzOyAqIHNlcmlhbGl6ZXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzO1xuJiM0MztcbiYjNDM7XHRpZiAocHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKVxuJiM0MztcdFx0Y2hpcC1cdTAwM2V0c3RhbXBfY3ljbGVzID0gcHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX2NjKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpXG4mIzQzO3tcbiYjNDM7XHR1NjQgbnM7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBjeWNsZXMpO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbnM7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbiB7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBwdHBfdG9fY2hpcChwdHApO1xuQEAgLTI1OCw5ICYjNDM7MjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXG4gXHRkaWZmID0gZGl2X3U2NChhZGosIGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHRfZGVtKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbiYjNDM7XHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xuIFxuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdHRpbWVjb3VudGVyX3JlYWQoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMpO1xuIFx0Y2hpcC1cdTAwM2V0c3RhbXBfY2MubXVsdCA9IG5lZ19hZGogPyBtdWx0IC0gZGlmZiA6IG11bHQgJiM0MzsgZGlmZjtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuIFxuQEAgLTI3MSw4ICYjNDM7Mjk2LDE2IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXG4ge1xuIFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTtcbiBcbiYjNDM7XHQvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzXG4mIzQzO1x0ICogdGhpcyBhZ2FpbnN0IHRoZSBvdGhlciB0aW1lY291bnRlciB3cml0ZXJzLCB3aGljaCBkcm9wIGl0IG9ubHlcbiYjNDM7XHQgKiBhZnRlciB0aGVpciBoYXJkd2FyZSByZWFkIGhhcyBjb21wbGV0ZWQuXG4mIzQzO1x0ICovXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdHRpbWVjb3VudGVyX2FkanRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIGRlbHRhKTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTI4NSw3ICYjNDM7MzE4LDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuIFx0dTY0IG5zO1xuIFxuIFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuJiM0MztcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdG5zID0gdGltZWNvdW50ZXJfcmVhZChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90Yyk7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4mIzQzO1xuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG4gXHQqdHMgPSBuc190b190aW1lc3BlYzY0KG5zKTtcbkBAIC0zMDIsNyAmIzQzOzM0MCwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfc2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbiBcdG5zID0gdGltZXNwZWM2NF90b19ucyh0cyk7XG4gXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4mIzQzO1x0bXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0dGltZWNvdW50ZXJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MsIG5zKTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTQ0NCwxNCAmIzQzOzQ4NywxMiBAQCBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgbXY4OGU2MzkwX3B0cF9vcHMgPSB7XG4gXHRcdCgxIFx1MDAzY1x1MDAzYyBIV1RTVEFNUF9GSUxURVJfUFRQX1YyX0RFTEFZX1JFUSksXG4gfTtcbiBcbiYjNDM7LyogUmV0dXJuIHRoZSB2YWx1ZSBtb3N0IHJlY2VudGx5IGZldGNoZWQgYnkgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcygpXG4mIzQzOyAqIHJhdGhlciB0aGFuIHJlYWRpbmcgdGhlIGhhcmR3YXJlIG92ZXIgTURJTy5cbiYjNDM7ICovXG4gc3RhdGljIHU2NCBtdjg4ZTZ4eHhfcHRwX2Nsb2NrX3JlYWQoc3RydWN0IGN5Y2xlY291bnRlciAqY2MpXG4ge1xuLVx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gY2NfdG9fY2hpcChjYyk7XG4tXG4tXHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzLVx1MDAzZWNsb2NrX3JlYWQpXG4tXHRcdHJldHVybiBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHMtXHUwMDNlY2xvY2tfcmVhZChjYyk7XG4tXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gY2NfdG9fY2hpcChjYyktXHUwMDNldHN0YW1wX2N5Y2xlcztcbiB9XG4gXG4gLyogV2l0aCBhIDI1ME1IeiBpbnB1dCBjbG9jaywgdGhlIDMyLWJpdCB0aW1lc3RhbXAgY291bnRlciBvdmVyZmxvd3MgaW4gfjE3LjJcbkBAIC00ODYsNiAmIzQzOzUyNywxMiBAQCBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5tdWx0XHQ9IGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHQ7XG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5zaGlmdFx0PSBjaGlwLVx1MDAzZWNjX2NvZWZmcy1cdTAwM2VjY19zaGlmdDtcbiBcbiYjNDM7XHQvKiBQcmltZSB0aGUgY3ljbGUgY291bnRlciBjYWNoZSBmb3IgdGhlIHRpbWVjb3VudGVyX2luaXQoKSBiZWxvdy5cbiYjNDM7XHQgKiBUaGUgY2FsbGVyIGhvbGRzIHJlZ19sb2NrLCBhbmQgbm90aGluZyBjYW4gcmVhY2ggdGhlIFBUUCBjbG9ja1xuJiM0MztcdCAqIHVudGlsIHB0cF9jbG9ja19yZWdpc3RlcigpIGJlbG93LCBzbyBubyBsb2NraW5nIGlzIG5lZWRlZCBoZXJlLlxuJiM0MztcdCAqL1xuJiM0MztcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4mIzQzO1xuIFx0dGltZWNvdW50ZXJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MsXG4gXHRcdFx0IGt0aW1lX3RvX25zKGt0aW1lX2dldF9yZWFsKCkpKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuaW5kZXggOTViZGRkYjBiZjM5ZjguLjQ0NzE4ZTEyMGRlMjBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuQEAgLTY4LDYgJiM0Mzs2OCw3IEBAXG4gXG4gaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbiB2b2lkIG12ODhlNnh4eF9wdHBfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xuJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7XG4gXG4gI2RlZmluZSBwdHBfdG9fY2hpcChwdHApIGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcdFxcXG4gXHRcdFx0XHQgICAgICBwdHBfY2xvY2tfaW5mbylcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kc2EuaCBiL2luY2x1ZGUvbmV0L2RzYS5oXG5pbmRleCA4YzE2ZWYyM2NjMTAyYS4uMmRmY2M1NDlkZTI5NjQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9kc2EuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvZHNhLmhcbkBAIC01OSw2ICYjNDM7NTksNyBAQCBzdHJ1Y3QgdGNfYWN0aW9uO1xuICNkZWZpbmUgRFNBX1RBR19QUk9UT19NWExfR1NXMVhYX1ZBTFVFXHRcdDMxXG4gI2RlZmluZSBEU0FfVEFHX1BST1RPX01YTDg2Ml9WQUxVRVx0XHQzMlxuICNkZWZpbmUgRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFXHRcdDMzXG4mIzQzOyNkZWZpbmUgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNfVkFMVUVcdDM0XG4gXG4gZW51bSBkc2FfdGFnX3Byb3RvY29sIHtcbiBcdERTQV9UQUdfUFJPVE9fTk9ORVx0XHQ9IERTQV9UQUdfUFJPVE9fTk9ORV9WQUxVRSxcbkBAIC05NSw2ICYjNDM7OTYsNyBAQCBlbnVtIGRzYV90YWdfcHJvdG9jb2wge1xuIFx0RFNBX1RBR19QUk9UT19NWExfR1NXMVhYXHQ9IERTQV9UQUdfUFJPVE9fTVhMX0dTVzFYWF9WQUxVRSxcbiBcdERTQV9UQUdfUFJPVE9fTVhMODYyXHRcdD0gRFNBX1RBR19QUk9UT19NWEw4NjJfVkFMVUUsXG4gXHREU0FfVEFHX1BST1RPX05FVENcdFx0PSBEU0FfVEFHX1BST1RPX05FVENfVkFMVUUsXG4mIzQzO1x0RFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSxcbiB9O1xuIFxuIHN0cnVjdCBkc2Ffc3dpdGNoO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2RzYS5jIGIvbmV0L2RzYS90YWdfZHNhLmNcbmluZGV4IGQ1ZmZlZTM1ZmJiNTNiLi43NDkwZWNjMDRhYTU3NCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2RzYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19kc2EuY1xuQEAgLTQwMiw2ICYjNDM7NDAyLDIzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgZWRzYV9uZXRkZXZfb3BzID0ge1xuIFxuIERTQV9UQUdfRFJJVkVSKGVkc2FfbmV0ZGV2X29wcyk7XG4gTU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fRURTQSwgRURTQV9OQU1FKTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUVcdFwmIzM0O2Vkc2EtcHRwLXJlc2VydmVkMi10c1wmIzM0O1xuJiM0MztcbiYjNDM7LyogU2FtZSB3aXJlIGZvcm1hdCBhcyBFRFNBLCBleGNlcHQgdGhhdCB0aGUgc3dpdGNoIG92ZXJ3cml0ZXMgdGhlIHJlc2VydmVkMlxuJiM0MzsgKiBmaWVsZCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIgd2l0aCB0aGUgZnJhbWUmIzM5O3MgYXJyaXZhbCB0aW1lIHN0YW1wLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyA9IHtcbiYjNDM7XHQubmFtZVx0XHQgPSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSxcbiYjNDM7XHQucHJvdG9cdFx0ID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXG4mIzQzO1x0LnhtaXRcdFx0ID0gZWRzYV94bWl0LFxuJiM0MztcdC5yY3ZcdFx0ID0gZWRzYV9yY3YsXG4mIzQzO1x0Lm5lZWRlZF9oZWFkcm9vbSA9IEVEU0FfSExFTixcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO0RTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTtcbiYjNDM7TU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxuJiM0MztcdFx0XHQgICAgRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUpO1xuICNlbmRpZlx0LyogQ09ORklHX05FVF9EU0FfVEFHX0VEU0EgKi9cbiBcbiBzdGF0aWMgc3RydWN0IGRzYV90YWdfZHJpdmVyICpkc2FfdGFnX2RyaXZlcnNbXSA9IHtcbkBAIC00MTAsNiAmIzQzOzQyNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHNhX3RhZ19kcml2ZXIgKmRzYV90YWdfZHJpdmVyc1tdID0ge1xuICNlbmRpZlxuICNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1RBR19FRFNBKVxuIFx0XHUwMDI2RFNBX1RBR19EUklWRVJfTkFNRShlZHNhX25ldGRldl9vcHMpLFxuJiM0MztcdFx1MDAyNkRTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpLFxuICNlbmRpZlxuIH07XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eCkgYW5kIGFkZHMgYSBuZXcgRFNBIHRhZyBwcm90b2NvbCBpbiBuZXQvZHNhL3RhZ19kc2EuYy4gVGhlIE1hcnZlbGwgODhFNnh4eCBkcml2ZXIgaXMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIHN3aXRjaGVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBUaGUgbmV3IHRhZyBwcm90b2NvbCBpbiB0YWdfZHNhLmMgc2ltcGx5IHJldXNlcyBleGlzdGluZyB0cmFuc21pdCBhbmQgcmVjZWl2ZSBmdW5jdGlvbnMgKGVkc2FfeG1pdCwgZWRzYV9yY3YpIGFuZCBjb250YWlucyBubyBuZXcgZXhlY3V0YWJsZSBsb2dpYy4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgaXMgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZWU3M2U0NmY0MWYyMjU2NTYzYjdjNGMwM2YxYzNlMWRhMTBkOTViCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMjcgMTQ6MjI6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9kc2EtcG9ydC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbAppbmRleCA0ODAxMjA0Njk5NTM0Yi4uOGQxMmM4ZjFiZDUxZWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbApAQCAtNTMsNiAmIzQzOzUzLDcgQEAgcHJvcGVydGllczoKICAgICBlbnVtOgogICAgICAgLSBkc2EKICAgICAgIC0gZWRzYQomIzQzOyAgICAgIC0gZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzCiAgICAgICAtIG9jZWxvdAogICAgICAgLSBvY2Vsb3QtODAyMXEKICAgICAgIC0gcnRsOF80CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jCmluZGV4IDgwYjg3N2M3NDUxM2Q2Li5lOTI1MjRiZWI0MGM0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKQEAgLTMyNzEsNyAmIzQzOzMyNzEsOCBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9zZXR1cF9wb3J0X21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCkKIAlpZiAoY2hpcC0mZ3Q7dGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRFNBKQogCQlyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZHNhKGNoaXAsIHBvcnQpOwogCi0JaWYgKGNoaXAtJmd0O3RhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0EpCiYjNDM7CWlmIChjaGlwLSZndDt0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBIHx8CiYjNDM7CSAgICBjaGlwLSZndDt0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMpCiAJCXJldHVybiBtdjg4ZTZ4eHhfc2V0X3BvcnRfbW9kZV9lZHNhKGNoaXAsIHBvcnQpOwogCiAJcmV0dXJuIC1FSU5WQUw7CkBAIC02MzcwLDYgJiM0Mzs2MzcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHsKIAkJLmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCwKIAkJLnB0cF9zdXBwb3J0ID0gdHJ1ZSwKIAkJLm9wcyA9ICZhbXA7bXY4OGU2MzQxX29wcywKJiM0MzsJCS5zdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMgPSB0cnVlLAogCX0sCiAKIAlbTVY4OEU2MzUwXSA9IHsKQEAgLTY0NDcsNiAmIzQzOzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0gewogCQkuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELAogCQkucHRwX3N1cHBvcnQgPSB0cnVlLAogCQkub3BzID0gJmFtcDttdjg4ZTYzNTJfb3BzLAomIzQzOwkJLnN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cyA9IHRydWUsCiAJfSwKIAlbTVY4OEU2MzYxXSA9IHsKIAkJLnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSwKQEAgLTY2MzUsNiAmIzQzOzY2MzgsNyBAQCBzdGF0aWMgc3RydWN0IG12ODhlNnh4eF9jaGlwICptdjg4ZTZ4eHhfYWxsb2NfY2hpcChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJY2hpcC0mZ3Q7ZGV2ID0gZGV2OwogCiAJbXV0ZXhfaW5pdCgmYW1wO2NoaXAtJmd0O3JlZ19sb2NrKTsKJiM0MzsJc3Bpbl9sb2NrX2luaXQoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtjaGlwLSZndDttZGlvcyk7CiAJaWRyX2luaXQoJmFtcDtjaGlwLSZndDtwb2xpY2llcyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtjaGlwLSZndDttc3RzKTsKQEAgLTY2NTgsOSAmIzQzOzY2NjIsMTcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfY2hhbmdlX3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsCiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtJmd0O3ByaXY7CiAJZW51bSBkc2FfdGFnX3Byb3RvY29sIG9sZF9wcm90b2NvbDsKIAlzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcDsKLQlpbnQgZXJyOwomIzQzOwlpbnQgZXJyID0gMDsKIAomIzQzOwkvKiBUaGUgZW1iZWRkZWQgYXJyaXZhbC10aW1lLXN0YW1wIHByb3RvY29sIGlzIGFuIEVEU0EgZXh0ZW5zaW9uOiBFRFNBCiYjNDM7CSAqIGlzIHRoZSBtb2Rlcm4gdGFnIGZvcm1hdCBmb3IgdGhlc2Ugc3dpdGNoZXMsIHNvIGl0IGlzIHRoZSBvbmUgd2UKJiM0MzsJICogZXh0ZW5kOyB0aGUgbGVnYWN5IERTQSB0YWcgaXMgaW50ZW50aW9uYWxseSBsZWZ0IHVuLWV4dGVuZGVkLgomIzQzOwkgKi8KIAlzd2l0Y2ggKHByb3RvKSB7CiYjNDM7CWNhc2UgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM6CiYjNDM7CQlpZiAoIWNoaXAtJmd0O2luZm8tJmd0O3N1cHBvcnRzX3B0cF9lbWJlZGRlZF90cykKJiM0MzsJCQlyZXR1cm4gLUVQUk9UT05PU1VQUE9SVDsKJiM0MzsJCWZhbGx0aHJvdWdoOwogCWNhc2UgRFNBX1RBR19QUk9UT19FRFNBOgogCQlzd2l0Y2ggKGNoaXAtJmd0O2luZm8tJmd0O2Vkc2Ffc3VwcG9ydCkgewogCQljYXNlIE1WODhFNlhYWF9FRFNBX1VOU1VQUE9SVEVEOgpAQCAtNjY4OSw3ICYjNDM7NjcwMSwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywKIAkJCWdvdG8gdW53aW5kOwogCQl9CiAJfQomIzQzOwomIzQzOwlpZiAoY2hpcC0mZ3Q7aW5mby0mZ3Q7cHRwX3N1cHBvcnQpCiYjNDM7CQllcnIgPSBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKGNoaXApOwogCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byB1bndpbmQ7CiAKIAlyZXR1cm4gMDsKIApAQCAtNjY5OSw2ICYjNDM7NjcxNiwxNSBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywKIAltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7CiAJZHNhX3N3aXRjaF9mb3JfZWFjaF9jcHVfcG9ydF9jb250aW51ZV9yZXZlcnNlKGNwdV9kcCwgZHMpCiAJCW12ODhlNnh4eF9zZXR1cF9wb3J0X21vZGUoY2hpcCwgY3B1X2RwLSZndDtpbmRleCk7CiYjNDM7CWlmIChjaGlwLSZndDtpbmZvLSZndDtwdHBfc3VwcG9ydCkgewomIzQzOwkJLyogTm90aGluZyBlbHNlIGNhbiBiZSBkb25lIGhlcmUsIGJ1dCBsZWF2aW5nIGEgcG9ydCBlbWJlZGRpbmcKJiM0MzsJCSAqIHRpbWUgc3RhbXBzIHRoZSBkcml2ZXIgd2lsbCBub3Qgc3RyaXAgY29ycnVwdHMgZXZlcnkgUFRQCiYjNDM7CQkgKiBldmVudCBmcmFtZSBpdCByZWNlaXZlcywgc28gbWFrZSB0aGUgZmFpbHVyZSB2aXNpYmxlLgomIzQzOwkJICovCiYjNDM7CQlpZiAobXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKSkKJiM0MzsJCQlkZXZfZXJyKGNoaXAtJmd0O2RldiwKJiM0MzsJCQkJJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBhcnJpdmFsIHRpbWUgc3RhbXAgbW9kZVxuJiMzNDspOwomIzQzOwl9CiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKIAlyZXR1cm4gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaAppbmRleCBlOTY2ZTdjNGNjNWRlYS4uYzc1YTcxNDY0YjIwYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCkBAIC0xODAsNiAmIzQzOzE4MCwxMyBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gewogCSAqIHBvcnQgMCwgMSBtZWFucyBpbnRlcm5hbCBQSFlzIHJhbmdlIHN0YXJ0cyBhdCBwb3J0IDEsIGV0YwogCSAqLwogCXVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDsKJiM0MzsKJiM0MzsJLyogVGhlIHN3aXRjaCBjYW4gZW1iZWQgdGhlIFBUUCBhcnJpdmFsIHRpbWUgc3RhbXAgaW4gdGhlIHJlc2VydmVkMgomIzQzOwkgKiBmaWVsZCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIsIHdoaWNoIHRoZSBlZHNhLXB0cC1yZXNlcnZlZDItdHMKJiM0MzsJICogdGFnIHByb3RvY29sIHNlbGVjdHMuIE90aGVyd2lzZSBhcnJpdmFsIHRpbWUgc3RhbXBzIGFyZSBvbmx5CiYjNDM7CSAqIGF2YWlsYWJsZSBmcm9tIHRoZSBzd2l0Y2ggcmVnaXN0ZXJzLgomIzQzOwkgKi8KJiM0MzsJYm9vbCBzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHM7CiB9OwogCiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7CkBAIC00MTksOSAmIzQzOzQyNiwxMiBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgewogCS8qIEdQSU8gcmVzb3VyY2VzICovCiAJdTggZ3Bpb19kYXRhWzJdOwogCi0JLyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuCi0JICogcmVnX2xvY2sgbXVzdCBiZSBoZWxkIGZvciBhbnkgb3BlcmF0aW9uIHRoYXQgcmVhZCgpcy4KJiM0MzsJLyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuIHB0cF9jbG9ja19sb2NrCiYjNDM7CSAqIHByb3RlY3RzIHRzdGFtcF9jYyBhbmQgdHN0YW1wX3RjLiB0c3RhbXBfY3ljbGVzIGNhY2hlcyB0aGUKJiM0MzsJICogcmVzdWx0IG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgYnkgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcygpLgogCSAqLwomIzQzOwlzcGlubG9ja190CQlwdHBfY2xvY2tfbG9jazsKJiM0MzsJdTY0CQkJdHN0YW1wX2N5Y2xlczsKIAlzdHJ1Y3QgY3ljbGVjb3VudGVyCXRzdGFtcF9jYzsKIAlzdHJ1Y3QgdGltZWNvdW50ZXIJdHN0YW1wX3RjOwogCXN0cnVjdCBkZWxheWVkX3dvcmsJb3ZlcmZsb3dfd29yazsKQEAgLTgxNSw2ICYjNDM7ODI1LDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtdjg4ZTZ4eHhfaGFzX2xhZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiAJcmV0dXJuICEhY2hpcC0mZ3Q7aW5mby0mZ3Q7Z2xvYmFsMl9hZGRyOwogfQogCiYjNDM7LyogV2hldGhlciB0aGUgYWN0aXZlIHRhZ2dpbmcgcHJvdG9jb2wgaGFzIHRoZSBzd2l0Y2ggZW1iZWQgYXJyaXZhbCB0aW1lIHN0YW1wcwomIzQzOyAqIGluIHRoZSBmcmFtZSBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlbSBpbiB0aGUgUFRQIGFycml2YWwgcmVnaXN0ZXJzLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBtdjg4ZTZ4eHhfcHRwX2VtYmVkZGVkX3RzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKJiM0Mzt7CiYjNDM7CXJldHVybiBjaGlwLSZndDt0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9oYXNfdGNhbShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiB7CiAJcmV0dXJuICEhY2hpcC0mZ3Q7aW5mby0mZ3Q7dGNhbV9hZGRyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jCmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li43NGVhYWRlZWViNzg0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYwpAQCAtMTUsNiAmIzQzOzE1LDcgQEAKICNpbmNsdWRlICYjMzQ7aHd0c3RhbXAuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3B0cC5oJiMzNDsKICNpbmNsdWRlICZsdDtsaW51eC9wdHBfY2xhc3NpZnkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAKICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS0mZ3Q7Y2IpKQogCkBAIC05NCw2ICYjNDM7OTUsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9zZXRfaHd0c3RhbXBfY29uZmlnKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsCiAJY29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC0mZ3Q7aW5mby0mZ3Q7b3BzLSZndDtwdHBfb3BzOwogCXN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMgPSAmYW1wO2NoaXAtJmd0O3BvcnRfaHd0c3RhbXBbcG9ydF07CiAJYm9vbCB0c3RhbXBfZW5hYmxlID0gZmFsc2U7CiYjNDM7CWludCBlcnIgPSAwOwogCiAJLyogUHJldmVudCB0aGUgVFgvUlggcGF0aHMgZnJvbSB0cnlpbmcgdG8gaW50ZXJhY3Qgd2l0aCB0aGUKIAkgKiB0aW1lc3RhbXAgaGFyZHdhcmUgd2hpbGUgd2UgcmVjb25maWd1cmUgaXQuCkBAIC0xNDcsMjAgJiM0MzsxNDksMzAgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LAogCWlmICh0c3RhbXBfZW5hYmxlKSB7CiAJCWNoaXAtJmd0O2VuYWJsZV9jb3VudCAmIzQzOz0gMTsKIAkJaWYgKGNoaXAtJmd0O2VuYWJsZV9jb3VudCA9PSAxICZhbXA7JmFtcDsgcHRwX29wcy0mZ3Q7Z2xvYmFsX2VuYWJsZSkKLQkJCXB0cF9vcHMtJmd0O2dsb2JhbF9lbmFibGUoY2hpcCk7Ci0JCWlmIChwdHBfb3BzLSZndDtwb3J0X2VuYWJsZSkKLQkJCXB0cF9vcHMtJmd0O3BvcnRfZW5hYmxlKGNoaXAsIHBvcnQpOwomIzQzOwkJCWVyciA9IHB0cF9vcHMtJmd0O2dsb2JhbF9lbmFibGUoY2hpcCk7CiYjNDM7CQlpZiAoIWVyciAmYW1wOyZhbXA7IHB0cF9vcHMtJmd0O3BvcnRfZW5hYmxlKQomIzQzOwkJCWVyciA9IHB0cF9vcHMtJmd0O3BvcnRfZW5hYmxlKGNoaXAsIHBvcnQpOwogCX0gZWxzZSB7CiAJCWlmIChwdHBfb3BzLSZndDtwb3J0X2Rpc2FibGUpCi0JCQlwdHBfb3BzLSZndDtwb3J0X2Rpc2FibGUoY2hpcCwgcG9ydCk7CiYjNDM7CQkJZXJyID0gcHRwX29wcy0mZ3Q7cG9ydF9kaXNhYmxlKGNoaXAsIHBvcnQpOwogCQljaGlwLSZndDtlbmFibGVfY291bnQgLT0gMTsKIAkJaWYgKGNoaXAtJmd0O2VuYWJsZV9jb3VudCA9PSAwICZhbXA7JmFtcDsgcHRwX29wcy0mZ3Q7Z2xvYmFsX2Rpc2FibGUpCiAJCQlwdHBfb3BzLSZndDtnbG9iYWxfZGlzYWJsZShjaGlwKTsKIAl9CiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiAJLyogT25jZSBoYXJkd2FyZSBoYXMgYmVlbiBjb25maWd1cmVkLCBlbmFibGUgdGltZXN0YW1wIGNoZWNrcwogCSAqIGluIHRoZSBSWC9UWCBwYXRocy4KJiM0MzsJICoKJiM0MzsJICogSW4gZW1iZWRkZWQgbW9kZSB0aGUgc3dpdGNoIHN0YXJ0cyBvdmVyd3JpdGluZyB0aGUgUFRQIGhlYWRlciYjMzk7cwomIzQzOwkgKiByZXNlcnZlZDIgZmllbGQgYXMgc29vbiBhcyBDRkcyIGlzIGFybWVkIGFib3ZlLCB3aGljaCBpcyBiZWZvcmUgdGhlCiYjNDM7CSAqIFJYIHBhdGggYmVnaW5zIHJlc3RvcmluZyBpdDsgb24gdGhlIHdheSBkb3duIHRoZSBSWCBwYXRoIHN0b3BzCiYjNDM7CSAqIHJlc3RvcmluZyBiZWZvcmUgdGhlIGhhcmR3YXJlIHN0b3BzIGVtYmVkZGluZy4gQW4gZXZlbnQgZnJhbWUKJiM0MzsJICogcmVjZWl2ZWQgaW5zaWRlIGVpdGhlciB3aW5kb3cgaXMgZGVsaXZlcmVkIHdpdGggdGhlIHN3aXRjaCYjMzk7cwomIzQzOwkgKiBhcnJpdmFsIGNvdW50ZXIgc3RpbGwgaW4gaXRzIGhlYWRlci4KIAkgKi8KIAlpZiAodHN0YW1wX2VuYWJsZSkKIAkJc2V0X2JpdChNVjg4RTZYWFhfSFdUU1RBTVBfRU5BQkxFRCwgJmFtcDtwcy0mZ3Q7c3RhdGUpOwpAQCAtMjE2LDYgJiM0MzsyMjgsMTAgQEAgc3RhdGljIHN0cnVjdCBwdHBfaGVhZGVyICptdjg4ZTZ4eHhfc2hvdWxkX3RzdGFtcChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiAJaWYgKCFjaGlwLSZndDtpbmZvLSZndDtwdHBfc3VwcG9ydCkKIAkJcmV0dXJuIE5VTEw7CiAKJiM0MzsJLyogTWFydmVsbCBzd2l0Y2hlcyBkbyBub3Qgc3VwcG9ydCBJRUVFIDE1ODgtMjAwMiAoUFRQdjEpLiAqLwomIzQzOwlpZiAoKHR5cGUgJmFtcDsgUFRQX0NMQVNTX1ZNQVNLKSAhPSBQVFBfQ0xBU1NfVjIpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKIAloZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgdHlwZSk7CiAJaWYgKCFoZHIpCiAJCXJldHVybiBOVUxMOwpAQCAtMjQ1LDYgJiM0MzsyNjEsNTIgQEAgc3RhdGljIGludCBzZXFfbWF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRzX3NlcWlkKQogCXJldHVybiB0c19zZXFpZCA9PSBudG9ocyhoZHItJmd0O3NlcXVlbmNlX2lkKTsKIH0KIAomIzQzOy8qIFJlY292ZXIgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIHdyb3RlIG92ZXIgdGhlIHJlc2VydmVkMiBmaWVsZCBvZiB0aGUgUFRQCiYjNDM7ICogY29tbW9uIGhlYWRlciwgcmVzdG9yaW5nIHRoZSBmaWVsZCBhZnRlcndhcmRzLgomIzQzOyAqLwomIzQzO3N0YXRpYyBib29sIHBhcnNlX2VtYmVkZGVkX3RzKHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBpbnQgb2ZmID0gTVY4OEU2WFhYX1BUUF9BUlJfVFNfT0ZGU0VUOwomIzQzOwlzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyOwomIzQzOwomIzQzOwkqbnMgPSAwOwomIzQzOwomIzQzOwlpZiAoc2tiX2xpbmVhcml6ZShza2IpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwloZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpOwomIzQzOwlpZiAoIWhkcikKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJKm5zID0gZ2V0X3VuYWxpZ25lZF9iZTMyKCh1OCAqKWhkciAmIzQzOyBvZmYpOwomIzQzOwltZW1zZXQoKHU4ICopaGRyICYjNDM7IG9mZiwgMCwgNCk7CiYjNDM7CXNrYl9jaGVja3N1bV9jb21wbGV0ZV91bnNldChza2IpOwomIzQzOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzCiYjNDM7ICogaXMgbmVlZGVkLCBzbyB0aGlzIHJ1bnMgaW5saW5lIG9uIHRoZSByZWNlaXZlIHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgaGFuZGVkCiYjNDM7ICogdG8gdGhlIFBUUCB3b3JrZXIuIFJldHVybnMgZmFsc2UgaWYgdGhlIGZyYW1lIGNvdWxkIG5vdCBiZSByZXN0b3JlZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgYm9vbCBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiYjNDM7CQkJCSAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJc3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0OwomIzQzOwl1NjQgbnM7CiYjNDM7CiYjNDM7CWlmICghcGFyc2VfZW1iZWRkZWRfdHMoc2tiLCAmYW1wO25zKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJbnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgbnMpOwomIzQzOwomIzQzOwlzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpOwomIzQzOwltZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7CiYjNDM7CXNod3QtJmd0O2h3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpOwomIzQzOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLAogCQkJICAgICAgIHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsCiAJCQkgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJlZywKQEAgLTI4OSw5ICYjNDM7MzUxLDcgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAkJaWYgKG12ODhlNnh4eF90c192YWxpZChzdGF0dXMpICZhbXA7JmFtcDsgc2VxX21hdGNoKHNrYiwgc2VxX2lkKSkgewogCQkJbnMgPSB0aW1laGkgJmx0OyZsdDsgMTYgfCB0aW1lbG87CiAKLQkJCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKLQkJCW5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoJmFtcDtjaGlwLSZndDt0c3RhbXBfdGMsIG5zKTsKLQkJCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOwomIzQzOwkJCW5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTsKIAkJCXNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7CiAJCQltZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7CiAJCQlzaHd0LSZndDtod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTsKQEAgLTMwOCw3ICYjNDM7MzY4LDYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLAogCXN0cnVjdCBza19idWZmICpza2I7CiAKIAlza2IgPSBza2JfZGVxdWV1ZSgmYW1wO3BzLSZndDtyeF9xdWV1ZSk7Ci0KIAlpZiAoc2tiKQogCQltdjg4ZTZ4eHhfZ2V0X3J4dHMoY2hpcCwgcHMsIHNrYiwgcHRwX29wcy0mZ3Q7YXJyMF9zdHNfcmVnLAogCQkJCSAgICZhbXA7cHMtJmd0O3J4X3F1ZXVlKTsKQEAgLTMxOSw5ICYjNDM7Mzc4LDE2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAkJCQkgICAmYW1wO3BzLSZndDtyeF9xdWV1ZTIpOwogfQogCi1zdGF0aWMgaW50IGlzX3BkZWxheV9yZXNwKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpCiYjNDM7c3RhdGljIGJvb2wgaXNfcGRlbGF5X21zZyhjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKQogewotCXJldHVybiAoaGRyLSZndDt0c210ICZhbXA7IDB4ZikgPT0gMzsKJiM0MzsJc3dpdGNoIChwdHBfZ2V0X21zZ3R5cGUoaGRyLCBQVFBfQ0xBU1NfVjIpKSB7CiYjNDM7CWNhc2UgUFRQX01TR1RZUEVfUERFTEFZX1JFUToKJiM0MzsJCWZhbGx0aHJvdWdoOwomIzQzOwljYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVNQOgomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIH0KIAogYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LApAQCAtMzQzLDcgJiM0Mzs0MDksMjIgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCiAJU0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlOwogCi0JaWYgKGlzX3BkZWxheV9yZXNwKGhkcikpCiYjNDM7CS8qIEVtYmVkZGVkIGFycml2YWwgdGltZXMgY2FuIGJlIHJldHVybmVkIGlubGluZS4gVGhlIHN3aXRjaCBoYXMKJiM0MzsJICogb3ZlcndyaXR0ZW4gdGhlIHJlc2VydmVkMiBmaWVsZDsgaWYgaXQgY2Fubm90IGJlIHJlc3RvcmVkIHRoZSBmcmFtZQomIzQzOwkgKiBpcyBubyBsb25nZXIgd2hhdCB0aGUgc2VuZGVyIHRyYW5zbWl0dGVkLCBzbyBkcm9wIGl0IHJhdGhlciB0aGFuCiYjNDM7CSAqIHBhc3MgdXAgYSBjb3JydXB0ZWQgaGVhZGVyIHRoYXQgd2lsbCBmYWlsIHRoZSBQVFAtb3Zlci1VRFAgY2hlY2tzdW0KJiM0MzsJICogYW55d2F5LgomIzQzOwkgKi8KJiM0MzsJaWYgKG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkpIHsKJiM0MzsJCWlmICghbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoY2hpcCwgc2tiKSkgewomIzQzOwkJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fTk9NRU0pOwomIzQzOwkJCXJldHVybiB0cnVlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChpc19wZGVsYXlfbXNnKGhkcikpCiAJCXNrYl9xdWV1ZV90YWlsKCZhbXA7cHMtJmd0O3J4X3F1ZXVlMiwgc2tiKTsKIAllbHNlCiAJCXNrYl9xdWV1ZV90YWlsKCZhbXA7cHMtJmd0O3J4X3F1ZXVlLCBza2IpOwpAQCAtNDA5LDkgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAogCW1lbXNldCgmYW1wO3NoaHd0c3RhbXBzLCAwLCBzaXplb2Yoc2hod3RzdGFtcHMpKTsKIAl0aW1lX3JhdyA9ICgodTMyKWRlcGFydHVyZV9ibG9ja1syXSAmbHQ7Jmx0OyAxNikgfCBkZXBhcnR1cmVfYmxvY2tbMV07Ci0JbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOwotCW5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoJmFtcDtjaGlwLSZndDt0c3RhbXBfdGMsIHRpbWVfcmF3KTsKLQltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKJiM0MzsJbnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgdGltZV9yYXcpOwogCXNoaHd0c3RhbXBzLmh3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpOwogCiAJZGV2X2RiZyhjaGlwLSZndDtkZXYsCkBAIC00NTQsNyAmIzQzOzUzMyw5IEBAIGxvbmcgbXY4OGU2eHh4X2h3dHN0YW1wX3dvcmsoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHApCiAJCWlmICh0ZXN0X2JpdChNVjg4RTZYWFhfSFdUU1RBTVBfVFhfSU5fUFJPR1JFU1MsICZhbXA7cHMtJmd0O3N0YXRlKSkKIAkJCXJlc3RhcnQgfD0gbXY4OGU2eHh4X3R4dHN0YW1wX3dvcmsoY2hpcCwgcHMpOwogCi0JCW12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTsKJiM0MzsJCS8qIEVtYmVkZGVkIGFycml2YWwgdGltZXMgYXJlIGFwcGxpZWQgb24gdGhlIHJlY2VpdmUgcGF0aC4gKi8KJiM0MzsJCWlmICghbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSkKJiM0MzsJCQltdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7CiAJfQogCiAJcmV0dXJuIHJlc3RhcnQgPyAxIDogLTE7CkBAIC01MjMsMTQgJiM0Mzs2MDQsNDMgQEAgaW50IG12ODhlNjE2NV9nbG9iYWxfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKIAogaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2Rpc2FibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCkKIHsKLQlyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLAotCQkJCQlNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCwKJiM0MzsJCQkJICAgICAgIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfUFRQKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMiwgMCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogUmV0dXJuIHRoZSBDRkcyIEFyclRTTW9kZSBmaWVsZCBmb3IgdGhlIGFjdGl2ZSBhcnJpdmFsIHRpbWUtc3RhbXAgbW9kZS4gKi8KJiM0MztzdGF0aWMgdTE2IG12ODhlNnh4eF9hcnJfdHNfY2ZnMihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiYjNDM7ewomIzQzOwlyZXR1cm4gbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSA/CiYjNDM7CQlNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfUkVTRVJWRUQyIDoKJiM0MzsJCU1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19ESVNBQkxFRDsKIH0KIAogaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQogewotCXJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsCi0JCQkJCU1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsCiYjNDM7CQkJCSAgICAgICBtdjg4ZTZ4eHhfYXJyX3RzX2NmZzIoY2hpcCkpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLAomIzQzOwkJCQkgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQpAQCAtNTQ5LDYgJiM0Mzs2NTksNzIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQogCXJldHVybiAwOwogfQogCiYjNDM7LyogUHJvZ3JhbSB0aGUgaGFyZHdhcmUgZm9yIHRoZSBhcnJpdmFsIHRpbWUtc3RhbXAgbW9kZSB0aGUgYWN0aXZlIHRhZ2dpbmcKJiM0MzsgKiBwcm90b2NvbCBzZWxlY3RzLiBDYWxsZWQgZnJvbSBzZXR1cCBhbmQgYWdhaW4gd2hlbmV2ZXIgdGhlIHByb3RvY29sIGNoYW5nZXMsCiYjNDM7ICogYXMgdGhhdCBpcyB3aGF0IGRlY2lkZXMgd2hlcmUgYXJyaXZhbCB0aW1lIHN0YW1wcyBhcmUgZGVsaXZlcmVkLgomIzQzOyAqCiYjNDM7ICogTXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVnaXN0ZXIgbG9jayBoZWxkLgomIzQzOyAqLwomIzQzO2ludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wczsKJiM0MzsJaW50IGVyciwgcmV0ID0gMDsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CS8qIEluIGVtYmVkZGVkIG1vZGUgdGhlIHN3aXRjaCBzdGFtcHMgZXZlcnkgZXZlbnQgbWVzc2FnZSBpdCBmb3J3YXJkcywKJiM0MzsJICogcGVlciBkZWxheSBpbmNsdWRlZCwgc28gbGVhdmUgdGhlIGFycml2YWwgY2FwdHVyZSBwb2ludGVyIGFsb25lCiYjNDM7CSAqIHJhdGhlciB0aGFuIGRpdmVydGluZyBwZWVyIGRlbGF5IG1lc3NhZ2VzIHRvIHRoZSBBUlJJVkFMMSByZWdpc3RlcnMuCiYjNDM7CSAqLwomIzQzOwllcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsCiYjNDM7CQkJCSAgbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSA/IDAgOgomIzQzOwkJCQkgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfAomIzQzOwkJCQkgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJaWYgKCFjaGlwLSZndDtpbmZvLSZndDtzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG12ODhlNnh4eF9udW1fcG9ydHMoY2hpcCk7ICYjNDM7JiM0MztpKSB7CiYjNDM7CQlzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzID0gJmFtcDtjaGlwLSZndDtwb3J0X2h3dHN0YW1wW2ldOwomIzQzOwomIzQzOwkJLyogQW55dGhpbmcgYWxyZWFkeSBxdWV1ZWQgd2FzIHF1ZXVlZCB1bmRlciB0aGUgcHJldmlvdXMgbW9kZQomIzQzOwkJICogYW5kIGNhbiBubyBsb25nZXIgYmUgbWF0Y2hlZCB3aXRoIGFuIGFycml2YWwgdGltZS4KJiM0MzsJCSAqLwomIzQzOwkJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7cHMtJmd0O3J4X3F1ZXVlKTsKJiM0MzsJCXNrYl9xdWV1ZV9wdXJnZSgmYW1wO3BzLSZndDtyeF9xdWV1ZTIpOwomIzQzOwomIzQzOwkJLyogVGhlIGFycml2YWwgcmVnaXN0ZXJzIGtlZXAgY2FwdHVyaW5nIGluIGVtYmVkZGVkIG1vZGUgd2l0aAomIzQzOwkJICogbm90aGluZyB0byBkcmFpbiB0aGVtLCBzbyBjbGVhciB0aGUgc3RhdHVzIGhlcmUgb3IgdGhlCiYjNDM7CQkgKiByZWdpc3RlciBwYXRoIHJlc3VtZXMgb24gYSBzdGFsZSBjYXB0dXJlLgomIzQzOwkJICovCiYjNDM7CQllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgcHRwX29wcy0mZ3Q7YXJyMF9zdHNfcmVnLCAwKTsKJiM0MzsJCWlmIChlcnIgJmFtcDsmYW1wOyAhcmV0KQomIzQzOwkJCXJldCA9IGVycjsKJiM0MzsKJiM0MzsJCWVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBpLCBwdHBfb3BzLSZndDthcnIxX3N0c19yZWcsIDApOwomIzQzOwkJaWYgKGVyciAmYW1wOyZhbXA7ICFyZXQpCiYjNDM7CQkJcmV0ID0gZXJyOwomIzQzOwomIzQzOwkJLyogUG9ydHMgdGhhdCBoYXZlIG5vdCBlbmFibGVkIHRpbWUgc3RhbXBpbmcgcGljayB0aGUgbW9kZSB1cCBpbgomIzQzOwkJICogbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKCkuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChwcy0mZ3Q7dHN0YW1wX2NvbmZpZy5yeF9maWx0ZXIgPT0gSFdUU1RBTVBfRklMVEVSX05PTkUpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkvKiBQcm9ncmFtIGV2ZXJ5IHBvcnQgZXZlbiBpZiBvbmUgZmFpbHMuIEEgcG9ydCBsZWZ0IGVtYmVkZGluZwomIzQzOwkJICogdGltZSBzdGFtcHMgdGhhdCB0aGUgZHJpdmVyIG5vIGxvbmdlciBzdHJpcHMgY29ycnVwdHMgdGhlCiYjNDM7CQkgKiBQVFAgaGVhZGVyIG9mIGV2ZXJ5IGV2ZW50IGZyYW1lIGl0IHJlY2VpdmVzLgomIzQzOwkJICovCiYjNDM7CQllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsCiYjNDM7CQkJCQkgICAgICAgbXY4OGU2eHh4X2Fycl90c19jZmcyKGNoaXApKTsKJiM0MzsJCWlmIChlcnIgJmFtcDsmYW1wOyAhcmV0KQomIzQzOwkJCXJldCA9IGVycjsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQogewogCWNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wczsKQEAgLTU4NCw5ICYjNDM7NzYwLDcgQEAgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCS8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi8KLQllcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsCi0JCQkJICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTsKJiM0MzsJZXJyID0gbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmgKaW5kZXggYzM1OTgyMWQ1YTZlYWEuLjJmZTdjNzQyOWJmZjFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oCkBAIC0xMyw2ICYjNDM7MTMsOCBAQAogI2lmbmRlZiBfTVY4OEU2WFhYX0hXVFNUQU1QX0gKICNkZWZpbmUgX01WODhFNlhYWF9IV1RTVEFNUF9ICiAKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHRwX2NsYXNzaWZ5LmgmZ3Q7CiYjNDM7CiAjaW5jbHVkZSAmIzM0O2NoaXAuaCYjMzQ7CiAKIC8qIEdsb2JhbCA2MzUyIFBUUCByZWdpc3RlcnMgKi8KQEAgLTY0LDEwICYjNDM7NjYsMjEgQEAKIAogLyogT2Zmc2V0IDB4MDI6IFBUUCBDb25maWd1cmF0aW9uIDIgKi8KICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIJCQkJMHgwMgotI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9FTUJFRF9BUlJJVkFMCQkweDEwMDAKICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfREVQX0lSUV9FTgkJMHgwMDAyCiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9JUlFfRU4JCTB4MDAwMQogCiYjNDM7LyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSksIENGRzIgYml0cyBbMTU6OF06IGNvbmZpZ3VyZXMgaG93IHRoZQomIzQzOyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnQKJiM0MzsgKiBmcmFtZXMuIEEgbm9uLXplcm8gdmFsdWUgaXMgdGhlIGJ5dGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgUFRQIGNvbW1vbgomIzQzOyAqIGhlYWRlciwgYXQgd2hpY2ggdGhlIHN3aXRjaCBvdmVyd3JpdGVzIGZvdXIgYnl0ZXMgaW4gcGxhY2U7IHdlIGFsd2F5cyBwb2ludAomIzQzOyAqIGl0IGF0IHRoZSBoZWFkZXImIzM5O3MgcmVzZXJ2ZWQyIGZpZWxkIHNvIHRoZSBmcmFtZSBsZW5ndGggaXMgbGVmdCBhbG9uZS4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIE1WODhFNlhYWF9QVFBfQVJSX1RTX09GRlNFVAkJCVwKJiM0MzsJb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMikKJiM0MzsjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19ESVNBQkxFRAkJMHgwMDAwCiYjNDM7I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfUkVTRVJWRUQyCVwKJiM0MzsJKE1WODhFNlhYWF9QVFBfQVJSX1RTX09GRlNFVCAmbHQ7Jmx0OyA4KQomIzQzOwogLyogT2Zmc2V0IDB4MDM6IFBUUCBMRUQgQ29uZmlndXJhdGlvbiAqLwogI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGRwkweDAzCiAKQEAgLTEyNiw2ICYjNDM7MTM5LDcgQEAgaW50IG12ODhlNnh4eF9nZXRfdHNfaW5mbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCiBsb25nIG12ODhlNnh4eF9od3RzdGFtcF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKTsKIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTsKJiM0MztpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApOwogdm9pZCBtdjg4ZTZ4eHhfaHd0c3RhbXBfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApOwogaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KTsKIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpOwpAQCAtMTcyLDYgJiM0MzsxODYsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQomIzQzO3sKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSB2b2lkIG12ODhlNnh4eF9od3RzdGFtcF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKIHsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jCmluZGV4IGY3NjAzNTczZDNhOTg0Li4yYTdmOTc2MjVlMzc1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jCkBAIC0yMzEsMTUgJiM0MzsyMzEsMzcgQEAgc3RhdGljIHZvaWQgbXY4OGU2MzUyX3RhaV9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdWdseSkKIAogCS8qIFdlIG9ubHkgaGF2ZSBvbmUgdGltZXN0YW1waW5nIGNoYW5uZWwuICovCiAJZXYuaW5kZXggPSAwOwotCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKLQlldi50aW1lc3RhbXAgPSB0aW1lY291bnRlcl9jeWMydGltZSgmYW1wO2NoaXAtJmd0O3RzdGFtcF90YywgcmF3X3RzKTsKLQltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKJiM0MzsJZXYudGltZXN0YW1wID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHJhd190cyk7CiAKIAlwdHBfY2xvY2tfZXZlbnQoY2hpcC0mZ3Q7cHRwX2Nsb2NrLCAmYW1wO2V2KTsKIG91dDoKIAlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmFtcDtjaGlwLSZndDt0YWlfZXZlbnRfd29yaywgVEFJX0VWRU5UX1dPUktfSU5URVJWQUwpOwogfQogCiYjNDM7LyogUmVmcmVzaCB0aGUgY2FjaGVkIGNvdW50ZXIgdmFsdWUgdGhhdCB0aGUgcmVhZCgpIGNhbGxiYWNrIHJldHVybnMuIFRoZQomIzQzOyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2sKJiM0MzsgKiBiZWNhdXNlIE1ESU8gcmVhZHMgY2FuIHNsZWVwLiBUaGUgY2FsbGVyIG11c3QgaG9sZCByZWdfbG9jaywgd2hpY2gKJiM0MzsgKiBzZXJpYWxpemVzIGFnYWluc3QgdGhlIG90aGVyIHRpbWVjb3VudGVyIHdyaXRlcnMuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLSZndDtpbmZvLSZndDtvcHMtJmd0O3B0cF9vcHM7CiYjNDM7CiYjNDM7CWlmIChwdHBfb3BzLSZndDtjbG9ja19yZWFkKQomIzQzOwkJY2hpcC0mZ3Q7dHN0YW1wX2N5Y2xlcyA9IHB0cF9vcHMtJmd0O2Nsb2NrX3JlYWQoJmFtcDtjaGlwLSZndDt0c3RhbXBfY2MpOwomIzQzO30KJiM0MzsKJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcykKJiM0Mzt7CiYjNDM7CXU2NCBuczsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7Y2hpcC0mZ3Q7cHRwX2Nsb2NrX2xvY2spOwomIzQzOwlucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCBjeWNsZXMpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG5zOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pCiB7CiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTsKQEAgLTI1OCw5ICYjNDM7MjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pCiAJZGlmZiA9IGRpdl91NjQoYWRqLCBjaGlwLSZndDtjY19jb2VmZnMtJmd0O2NjX211bHRfZGVtKTsKIAogCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKJiM0MzsJbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTsKIAomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJdGltZWNvdW50ZXJfcmVhZCgmYW1wO2NoaXAtJmd0O3RzdGFtcF90Yyk7CiAJY2hpcC0mZ3Q7dHN0YW1wX2NjLm11bHQgPSBuZWdfYWRqID8gbXVsdCAtIGRpZmYgOiBtdWx0ICYjNDM7IGRpZmY7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7Y2hpcC0mZ3Q7cHRwX2Nsb2NrX2xvY2spOwogCiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKQEAgLTI3MSw4ICYjNDM7Mjk2LDE2IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpCiB7CiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTsKIAomIzQzOwkvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzCiYjNDM7CSAqIHRoaXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycywgd2hpY2ggZHJvcCBpdCBvbmx5CiYjNDM7CSAqIGFmdGVyIHRoZWlyIGhhcmR3YXJlIHJlYWQgaGFzIGNvbXBsZXRlZC4KJiM0MzsJICovCiAJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJdGltZWNvdW50ZXJfYWRqdGltZSgmYW1wO2NoaXAtJmd0O3RzdGFtcF90YywgZGVsdGEpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKIAltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKIAogCXJldHVybiAwOwpAQCAtMjg1LDcgJiM0MzszMTgsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2dldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsCiAJdTY0IG5zOwogCiAJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOwomIzQzOwltdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJbnMgPSB0aW1lY291bnRlcl9yZWFkKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjKTsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiYjNDM7CiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKIAkqdHMgPSBuc190b190aW1lc3BlYzY0KG5zKTsKQEAgLTMwMiw3ICYjNDM7MzQwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLAogCW5zID0gdGltZXNwZWM2NF90b19ucyh0cyk7CiAKIAltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7CiYjNDM7CW12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKIAl0aW1lY291bnRlcl9pbml0KCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCAmYW1wO2NoaXAtJmd0O3RzdGFtcF9jYywgbnMpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKIAltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKIAogCXJldHVybiAwOwpAQCAtNDQ0LDE0ICYjNDM7NDg3LDEyIEBAIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyBtdjg4ZTYzOTBfcHRwX29wcyA9IHsKIAkJKDEgJmx0OyZsdDsgSFdUU1RBTVBfRklMVEVSX1BUUF9WMl9ERUxBWV9SRVEpLAogfTsKIAomIzQzOy8qIFJldHVybiB0aGUgdmFsdWUgbW9zdCByZWNlbnRseSBmZXRjaGVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKQomIzQzOyAqIHJhdGhlciB0aGFuIHJlYWRpbmcgdGhlIGhhcmR3YXJlIG92ZXIgTURJTy4KJiM0MzsgKi8KIHN0YXRpYyB1NjQgbXY4OGU2eHh4X3B0cF9jbG9ja19yZWFkKHN0cnVjdCBjeWNsZWNvdW50ZXIgKmNjKQogewotCXN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNjX3RvX2NoaXAoY2MpOwotCi0JaWYgKGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wcy0mZ3Q7Y2xvY2tfcmVhZCkKLQkJcmV0dXJuIGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wcy0mZ3Q7Y2xvY2tfcmVhZChjYyk7Ci0KLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIGNjX3RvX2NoaXAoY2MpLSZndDt0c3RhbXBfY3ljbGVzOwogfQogCiAvKiBXaXRoIGEgMjUwTUh6IGlucHV0IGNsb2NrLCB0aGUgMzItYml0IHRpbWVzdGFtcCBjb3VudGVyIG92ZXJmbG93cyBpbiB+MTcuMgpAQCAtNDg2LDYgJiM0Mzs1MjcsMTIgQEAgaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQogCWNoaXAtJmd0O3RzdGFtcF9jYy5tdWx0CT0gY2hpcC0mZ3Q7Y2NfY29lZmZzLSZndDtjY19tdWx0OwogCWNoaXAtJmd0O3RzdGFtcF9jYy5zaGlmdAk9IGNoaXAtJmd0O2NjX2NvZWZmcy0mZ3Q7Y2Nfc2hpZnQ7CiAKJiM0MzsJLyogUHJpbWUgdGhlIGN5Y2xlIGNvdW50ZXIgY2FjaGUgZm9yIHRoZSB0aW1lY291bnRlcl9pbml0KCkgYmVsb3cuCiYjNDM7CSAqIFRoZSBjYWxsZXIgaG9sZHMgcmVnX2xvY2ssIGFuZCBub3RoaW5nIGNhbiByZWFjaCB0aGUgUFRQIGNsb2NrCiYjNDM7CSAqIHVudGlsIHB0cF9jbG9ja19yZWdpc3RlcigpIGJlbG93LCBzbyBubyBsb2NraW5nIGlzIG5lZWRlZCBoZXJlLgomIzQzOwkgKi8KJiM0MzsJbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTsKJiM0MzsKIAl0aW1lY291bnRlcl9pbml0KCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCAmYW1wO2NoaXAtJmd0O3RzdGFtcF9jYywKIAkJCSBrdGltZV90b19ucyhrdGltZV9nZXRfcmVhbCgpKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oCmluZGV4IDk1YmRkZGIwYmYzOWY4Li40NDcxOGUxMjBkZTIwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oCkBAIC02OCw2ICYjNDM7NjgsNyBAQAogCiBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApOwogdm9pZCBtdjg4ZTZ4eHhfcHRwX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTsKJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7CiAKICNkZWZpbmUgcHRwX3RvX2NoaXAocHRwKSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsCVwKIAkJCQkgICAgICBwdHBfY2xvY2tfaW5mbykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmgKaW5kZXggOGMxNmVmMjNjYzEwMmEuLjJkZmNjNTQ5ZGUyOTY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9kc2EuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9kc2EuaApAQCAtNTksNiAmIzQzOzU5LDcgQEAgc3RydWN0IHRjX2FjdGlvbjsKICNkZWZpbmUgRFNBX1RBR19QUk9UT19NWExfR1NXMVhYX1ZBTFVFCQkzMQogI2RlZmluZSBEU0FfVEFHX1BST1RPX01YTDg2Ml9WQUxVRQkJMzIKICNkZWZpbmUgRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFCQkzMwomIzQzOyNkZWZpbmUgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNfVkFMVUUJMzQKIAogZW51bSBkc2FfdGFnX3Byb3RvY29sIHsKIAlEU0FfVEFHX1BST1RPX05PTkUJCT0gRFNBX1RBR19QUk9UT19OT05FX1ZBTFVFLApAQCAtOTUsNiAmIzQzOzk2LDcgQEAgZW51bSBkc2FfdGFnX3Byb3RvY29sIHsKIAlEU0FfVEFHX1BST1RPX01YTF9HU1cxWFgJPSBEU0FfVEFHX1BST1RPX01YTF9HU1cxWFhfVkFMVUUsCiAJRFNBX1RBR19QUk9UT19NWEw4NjIJCT0gRFNBX1RBR19QUk9UT19NWEw4NjJfVkFMVUUsCiAJRFNBX1RBR19QUk9UT19ORVRDCQk9IERTQV9UQUdfUFJPVE9fTkVUQ19WQUxVRSwKJiM0MzsJRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSwKIH07CiAKIHN0cnVjdCBkc2Ffc3dpdGNoOwpkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfZHNhLmMgYi9uZXQvZHNhL3RhZ19kc2EuYwppbmRleCBkNWZmZWUzNWZiYjUzYi4uNzQ5MGVjYzA0YWE1NzQgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX2RzYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX2RzYS5jCkBAIC00MDIsNiAmIzQzOzQwMiwyMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfbmV0ZGV2X29wcyA9IHsKIAogRFNBX1RBR19EUklWRVIoZWRzYV9uZXRkZXZfb3BzKTsKIE1PRFVMRV9BTElBU19EU0FfVEFHX0RSSVZFUihEU0FfVEFHX1BST1RPX0VEU0EsIEVEU0FfTkFNRSk7CiYjNDM7CiYjNDM7I2RlZmluZSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRQkmIzM0O2Vkc2EtcHRwLXJlc2VydmVkMi10cyYjMzQ7CiYjNDM7CiYjNDM7LyogU2FtZSB3aXJlIGZvcm1hdCBhcyBFRFNBLCBleGNlcHQgdGhhdCB0aGUgc3dpdGNoIG92ZXJ3cml0ZXMgdGhlIHJlc2VydmVkMgomIzQzOyAqIGZpZWxkIG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciB3aXRoIHRoZSBmcmFtZSYjMzk7cyBhcnJpdmFsIHRpbWUgc3RhbXAuCiYjNDM7ICovCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyA9IHsKJiM0MzsJLm5hbWUJCSA9IEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FLAomIzQzOwkucHJvdG8JCSA9IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLAomIzQzOwkueG1pdAkJID0gZWRzYV94bWl0LAomIzQzOwkucmN2CQkgPSBlZHNhX3JjdiwKJiM0MzsJLm5lZWRlZF9oZWFkcm9vbSA9IEVEU0FfSExFTiwKJiM0Mzt9OwomIzQzOwomIzQzO0RTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTsKJiM0MztNT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsCiYjNDM7CQkJICAgIEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FKTsKICNlbmRpZgkvKiBDT05GSUdfTkVUX0RTQV9UQUdfRURTQSAqLwogCiBzdGF0aWMgc3RydWN0IGRzYV90YWdfZHJpdmVyICpkc2FfdGFnX2RyaXZlcnNbXSA9IHsKQEAgLTQxMCw2ICYjNDM7NDI3LDcgQEAgc3RhdGljIHN0cnVjdCBkc2FfdGFnX2RyaXZlciAqZHNhX3RhZ19kcml2ZXJzW10gPSB7CiAjZW5kaWYKICNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1RBR19FRFNBKQogCSZhbXA7RFNBX1RBR19EUklWRVJfTkFNRShlZHNhX25ldGRldl9vcHMpLAomIzQzOwkmYW1wO0RTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpLAogI2VuZGlmCiB9OwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDkzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgVmlydHVhbGl6YXRpb24gSW1wYWN0IG9mIGEgTmV3IERTQSBUYWcgUHJvdG9jb2wqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIG5ldyBwYXRjaCBpbnRyb2R1Y2luZyBgZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzYCwgd2hpY2ggaXMgYSBEU0EgdGFnIHByb3RvY29sLiBMb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2AgYW5kIGBuZXQvZHNhL3RhZ19kc2EuY2AuICBSaWdodCwgdGhhdCBtZWFucyBpdCYjMzk7cyBhIGRyaXZlciBmb3IgdGhlIE1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2hlcy4gSW50ZXJlc3RpbmcuIEl0IHNlZW1zIHdlIGFyZSBzdXBwb3J0aW5nIFBUUCBhcnJpdmFsIHRpbWVzdGFtcHMgaW4gdGhlIGByZXNlcnZlZDJgIGZpZWxkIG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlci4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIHRoZSBuZXR3b3JrIGRyaXZlci4KCk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLCBhcyBhbHdheXM6IGhvdyBpc29sYXRlZCBpcyB0aGlzPyBHaXZlbiB0aGF0IGl0JiMzOTtzIGEgRFNBIGltcGxlbWVudGF0aW9uLCBpdCBpbmhlcmVudGx5IHJlbGllcyBvbiBhIHBoeXNpY2FsIHN3aXRjaCBkZXZpY2UuICBNeSBtYWluIGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGlzIGdvaW5nIHRvIGJlIHJlcHJvZHVjaWJsZSwgYW5kIGlmIHRoaXMgd2lsbCBjYXVzZSBpc3N1ZXMgZG93biB0aGUgbGluZSB3aXRoIHRoZSBjb2RlLiBDYW4gdGhpcyBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/ICBEU0EsIGJ5IGl0cyB2ZXJ5IG5hdHVyZSwgbmVlZHMgdGhlIHN3aXRjaC4gVGhlIHF1ZXN0aW9uIGlzOiBpcyBgbXY4OGU2eHh4YCBlbXVsYXRlZCBpbiBRRU1VPyBJIGRvdWJ0IGl0LgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2VhcmNoIHRvIHNlZSBpZiBhbnkgUUVNVSBlbXVsYXRpb24gZXhpc3RzIGZvciB0aGVzZSBzcGVjaWZpYyBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoZXMuICBGcmFua2x5LCBpdCYjMzk7cyByYXJlIHRvIGZpbmQgc3VjaCBkZXRhaWxlZCBoYXJkd2FyZSBlbXVsYXRpb24gaW4gUUVNVSwgZXNwZWNpYWxseSBmb3Igc29tZXRoaW5nIGFzIHNwZWNpYWxpemVkIGFzIGFuIEV0aGVybmV0IHN3aXRjaC4gSXQgdGVuZHMgdG8gYmUgYWJzdHJhY3RlZCBhdCBhIGhpZ2hlciBsYXllci4gIFdlJiMzOTtyZSBnb2luZyB0byBuZWVkIHRvIGRpZyBkZWVwZXIuIEkmIzM5O2xsIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSBpdHNlbGYgZm9yIGBtdjg4ZTZ4eHhgIGp1c3QgdG8gYmUgY2VydGFpbi4gSXMgdGhpcyBkcml2ZXIgcHVyZWx5IGEgaGFyZHdhcmUgZHJpdmVyPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O212ODhlNnh4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwMTQxIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz03Mz1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03NC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc1OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0yMT1vYmoteVx0XHRcdFx0JiM0Mzs9IG1pY3JvY2hpcC9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToyMjpvYmoteVx0XHRcdFx0JiM0Mzs9IG12ODhlNnh4eC9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS0yMy1vYmoteVx0XHRcdFx0JiM0Mzs9IG14bDg2Mnh4L1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC01LSAqXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmg6NjogKiBCYXNlZCBvbiBtdjg4ZTZ4eHguaFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oLTctICogQ29weXJpZ2h0IChjKSAyMDA4IE1hcnZlbGwgU2VtaWNvbmR1Y3RvclxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYKSAmIzQzOz0gbXY4OGU2eHh4Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Mzptdjg4ZTZ4eHgtb2JqcyA6PSBjaGlwLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZGV2bGluay5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjU6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDEub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo2Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwxX2F0dS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjc6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDFfdnR1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6ODptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjk6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDJfYXZiLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTA6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDJfc2NyYXRjaC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjExOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICYjNDM7PSBod3RzdGFtcC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEyOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9MRURTKSAmIzQzOz0gbGVkcy5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEzOm12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjE4NS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE0Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjM1Mi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE1Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjM5eC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE2Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwaHkub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcG9ydC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE4Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwb3J0X2hpZGRlbi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE5Om12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICYjNDM7PSBwdHAub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gc2VyZGVzLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjE6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHNtaS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIyOm12ODhlNnh4eC1vYmpzICYjNDM7PSBzd2l0Y2hkZXYub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdHJhY2Uub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdGNmbG93ZXIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdGNhbS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTI2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2RzYS9tdjg4ZTZ4eHguaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYtI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk6I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAtI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDk6c3RhdGljIHZvaWQgYXNzZXJ0X3JlZ19sb2NrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU3OmludCBtdjg4ZTZ4eHhfcmVhZChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgKnZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzOlx0ZXJyID0gbXY4OGU2eHh4X3NtaV9yZWFkKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjczOmludCBtdjg4ZTZ4eHhfd3JpdGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc5Olx0ZXJyID0gbXY4OGU2eHh4X3NtaV93cml0ZShjaGlwLCBhZGRyLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4OTppbnQgbXY4OGU2eHh4X3dhaXRfbWFzayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAtXHRcdFx0dTE2IG1hc2ssIHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTAxLVx0Zm9yIChpID0gMDsgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgfHwgKGkgXHUwMDNjIDIpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTAyOlx0XHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTAzLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjExNTpcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyNjppbnQgbXY4OGU2eHh4X3dhaXRfYml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjctXHRcdCAgICAgICBpbnQgYml0LCBpbnQgdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyOTpcdHJldHVybiBtdjg4ZTZ4eHhfd2FpdF9tYXNrKGNoaXAsIGFkZHIsIHJlZywgQklUKGJpdCksXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzAtXHRcdFx0XHQgICB2YWwgPyBCSVQoYml0KSA6IDB4MDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTMyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTMzOnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzQte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM1Olx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXM7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzctXHRtZGlvX2J1cyA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZjaGlwLVx1MDAzZW1kaW9zLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM4Olx0XHRcdFx0XHQgICAgc3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cywgbGlzdCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzktXHRpZiAoIW1kaW9fYnVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NTpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NzpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ4LVx0dW5zaWduZWQgaW50IG4gPSBkLVx1MDAzZWh3aXJxO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1MzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNTQte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU1Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNTYtXHR1bnNpZ25lZCBpbnQgbiA9IGQtXHUwMDNlaHdpcnE7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTYxOnN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2Mi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTY5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcwOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcxOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MjpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE4Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4NzpcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg4Olx0XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2Y3RsMSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xODktXHRcdGlmIChlcnIpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTAtXHRcdFx0Z290byB1bmxvY2s7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxOTE6XHRcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTItdW5sb2NrOlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTkzOlx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5NC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDM6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDU6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkZXZfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDc6XHRyZXR1cm4gbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOC19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTA6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTEte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjEyOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTQ6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTUtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxOC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTk6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyMC1cdHUxNiBtYXNrID0gR0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjIzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjI0Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzMTpcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM1LW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzNjpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM3LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzOC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzOTpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIG12ODhlNnh4eF9nMV9pcnFfY2hpcCA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MDpcdC5uYW1lXHRcdFx0PSBcJiMzNDttdjg4ZTZ4eHgtZzFcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDE6XHQuaXJxX21hc2tcdFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX21hc2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDI6XHQuaXJxX3VubWFza1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfdW5tYXNrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQzOlx0LmlycV9idXNfbG9ja1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDQ6XHQuaXJxX2J1c19zeW5jX3VubG9ja1x0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0NS19O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ4LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBpcnEsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUwLXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI1MTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGQtXHUwMDNlaG9zdF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MDpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MTpcdC5tYXBcdD0gbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYyLVx0LnhsYXRlXHQ9IGlycV9kb21haW5feGxhdGVfdHdvY2VsbCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjUtLyogVG8gYmUgY2FsbGVkIHdpdGggcmVnX2xvY2sgaGVsZCAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjY2OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzE6XHRtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2bWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzItXHRtYXNrIFx1MDAyNj0gfkdFTk1BU0soY2hpcC1cdTAwM2VnMV9pcnEubmlycXMsIDApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjczOlx0bXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyODM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjkwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkxOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkyOlx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MzpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk0LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NjpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAzLVx0XHROVUxMLCBjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMwNDpcdFx0XHUwMDI2bXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzLCBjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMwNS1cdGlmICghY2hpcC1cdTAwM2VnMV9pcnEuZG9tYWluKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxMTpcdGNoaXAtXHUwMDNlZzFfaXJxLmNoaXAgPSBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXA7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTItXHRjaGlwLVx1MDAzZWcxX2lycS5tYXNrZWQgPSB+MDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxNDpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxNS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzIwOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyMS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI0LVx0LyogUmVhZGluZyB0aGUgaW50ZXJydXB0IHN0YXR1cyBjbGVhcnMgKG1vc3Qgb2YpIHRoZW0gKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyNTpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzMi1cdG1hc2sgXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMzM6XHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzM0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM0NjpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNTI6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzYyLVx0c25wcmludGYoY2hpcC1cdTAwM2VpcnFfbmFtZSwgc2l6ZW9mKGNoaXAtXHUwMDNlaXJxX25hbWUpLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzYzOlx0XHQgXCYjMzQ7bXY4OGU2eHh4LSVzXCYjMzQ7LCBkZXZfbmFtZShjaGlwLVx1MDAzZWRldikpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY1Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjYtXHRlcnIgPSByZXF1ZXN0X3RocmVhZGVkX2lycShjaGlwLVx1MDAzZWlycSwgTlVMTCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2NzpcdFx0XHRcdCAgIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY4LVx0XHRcdFx0ICAgSVJRRl9PTkVTSE9UIHwgSVJRRl9TSEFSRUQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjktXHRcdFx0XHQgICBjaGlwLVx1MDAzZWlycV9uYW1lLCBjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MDpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3MS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzI6XHRcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbChzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3OTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNvbnRhaW5lcl9vZih3b3JrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgwOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4MS1cdFx0XHRcdFx0XHQgICBpcnFfcG9sbF93b3JrLndvcmspO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgyOlx0bXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODg6c3RhdGljIGludCBtdjg4ZTZ4eHhfaXJxX3BvbGxfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTI6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk2LVx0a3RocmVhZF9pbml0X2RlbGF5ZWRfd29yayhcdTAwMjZjaGlwLVx1MDAzZWlycV9wb2xsX3dvcmssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTc6XHRcdFx0XHQgIG12ODhlNnh4eF9pcnFfcG9sbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDA4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDA5OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDEzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE0Olx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE1Olx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNjpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE3LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxOC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxOTpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDIwLVx0XHRcdFx0XHQgICBpbnQgcG9ydCwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NDE6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0Mi1cdFx0XHRcdCAgICBpbnQgbGluaywgaW50IHNwZWVkLCBpbnQgZHVwbGV4LCBpbnQgcGF1c2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDY3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDY4Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LCBtb2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2OS1yZXN0b3JlX2xpbms6XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDc2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0ODM6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9wcHVfdXBkYXRlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDg0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTEtXHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWZhbWlseSA9PSBNVjg4RTZYWFhfRkFNSUxZXzYyNTApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTI6XHRcdHJldHVybiBtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDkzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDk0Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTUtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTA1PXN0YXRpYyBjb25zdCB1OCBtdjg4ZTYxODVfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUxNTpzdGF0aWMgdm9pZCBtdjg4ZTYwOTVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE2LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUyMjpcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MjMtXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfTUlJLCBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUzMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUzNDpzdGF0aWMgdm9pZCBtdjg4ZTYxODVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU0ODpzdGF0aWMgY29uc3QgdTggbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0OS1cdFtNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfTUlJX1BIWV1cdD0gUEhZX0lOVEVSRkFDRV9NT0RFX1JFVk1JSSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZSh1OCBjbW9kZSwgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY0LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NTpcdGlmIChjbW9kZSBcdTAwM2MgQVJSQVlfU0laRShtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2RlcykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjY6XHQgICAgbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY3Olx0XHRfX3NldF9iaXQobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY4LVx0ZWxzZSBpZiAoY21vZGUgPT0gTVY4OEU2WFhYX1BPUlRfU1RTX0NNT0RFX1JHTUlJKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTU3Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTczOm12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc0LVx0XHRcdFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODA6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4MS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjI6c3RhdGljIHZvaWQgbXY4OGU2MjUwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyMy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjU6XHRpZiAoIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjYtXHRcdG12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhjaGlwLCBwb3J0LCBjb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzMTpzdGF0aWMgdm9pZCBtdjg4ZTYzNTFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzNi1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjM3Olx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0MzpzdGF0aWMgaW50IG12ODhlNjN4eF9nZXRfcG9ydF9zZXJkZXNfY21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjQ4Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1Ni1cdHZhbCA9IHJlZyBcdTAwMjYgfk1WODhFNlhYWF9QT1JUX1NUU19QSFlfREVURUNUO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjU3Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjE6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2dmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY1LVx0LyogUmVzdG9yZSBQSFlfREVURUNUIHZhbHVlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjY6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY3MzpzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjc0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3OS1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjgwOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5NS1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njk2Olx0XHRcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTctXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzAwOnN0YXRpYyB2b2lkIG12ODhlNjMyeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDEtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA2LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDc6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE4LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MTk6XHRcdFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjM6c3RhdGljIHZvaWQgbXY4OGU2MzQxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjgtXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyOTpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDU6c3RhdGljIHZvaWQgbXY4OGU2MzkwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0Ni1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTAtXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MTpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Njc6c3RhdGljIHZvaWQgbXY4OGU2MzkweF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjgtXHRcdFx0XHRcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwMjpzdGF0aWMgdm9pZCBtdjg4ZTYzOTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwMy1cdFx0XHRcdFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODExOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg0NjpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0Ny1cdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDgte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ5Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MTpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Mi1cdGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcGh5bGlua19nZXRfY2FwcyhjaGlwLCBwb3J0LCBjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUzOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTU6XHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU2LVx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTg2ND1zdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg2NTptdjg4ZTZ4eHhfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjYtXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY4LVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg2OTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzAtXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODc4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODc5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19wcmVwYXJlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgwLVx0XHRcdFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4Mi1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4ODM6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODg0LVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTMtXHQgICAgY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2Vwb3J0X3NldF9saW5rKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4OTQ6XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5NS1cdFx0ZXJyID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTYtXHRcdFx0XHRcdFx0ICAgICBMSU5LX0ZPUkNFRF9ET1dOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NzpcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTAzOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA0LVx0XHRcdFx0IHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkwNy1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDg6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA5LVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTI6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTQ6XHRpZiAobW9kZSAhPSBNTE9fQU5fUEhZIHx8ICFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTU6XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2UoY2hpcCwgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNi1cdFx0XHRcdFx0XHQgICAgICBzdGF0ZS1cdTAwM2VpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMS1lcnJfdW5sb2NrOlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTIyOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTI3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTI4OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19maW5pc2goc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjktXHRcdFx0XHR1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzEtXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTMyOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzMy1cdGludCBwb3J0ID0gZHAtXHUwMDNlaW5kZXg7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQxLVx0ICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDI6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ2LVx0ICAgICAgY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5pbnRlcmZhY2UgIT0gaW50ZXJmYWNlKSB8fFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTQ3Olx0ICAgICAobW9kZSA9PSBNTE9fQU5fUEhZIFx1MDAyNlx1MDAyNiBtdjg4ZTZ4eHhfcG9ydF9wcHVfdXBkYXRlcyhjaGlwLCBwb3J0KSkpKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ4LVx0XHRlcnIgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmsoY2hpcCwgcG9ydCwgTElOS19VTkZPUkNFRCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTA6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NTYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODE4NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTWFydmVsbCA4OEU2eHh4IFN3aXRjaCBFbXVsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgZHJpdmVyIGZvciBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhlcmUgYW55IFFFTVUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaD8gSSBrbm93IFFFTVUmIzM5O3MgZ290IGEgbG90IG9mIGNhcGFiaWxpdGllcywgYnV0IHRoZXNlIHNwZWNpYWxpemVkIG5ldHdvcmtpbmcgY29tcG9uZW50cyBjYW4gYmUgdHJpY2t5LiBVbmZvcnR1bmF0ZWx5LCBhIHF1aWNrIHNlYXJjaCByZXZlYWxzIG5vIHN0YW5kYXJkIFFFTVUgZW11bGF0aW9uIHNwZWNpZmljYWxseSBmb3IgdGhlIE1hcnZlbGwgODhFNnh4eC4KCk5vdyBJIG5lZWQgdG8gcmVmaW5lIG15IHNlYXJjaC4gQW0gSSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHRoYXQmIzM5O3Mgc3RyaWN0bHkgaGFyZHdhcmUtZGVwZW5kZW50LCBvciBpcyB0aGVyZSBhbnkgcG9zc2liaWxpdHkgb2Ygc29mdHdhcmUgZW11bGF0aW9uLCBldmVuIGlmIGl0JiMzOTtzIG5vdCBkaXJlY3RseSBpbnRlZ3JhdGVkIHdpdGggUUVNVT8gTGV0JiMzOTtzIGRpZyBkZWVwZXIuIFRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleHBsb3JlIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciYjMzk7cyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBmb3IgYSBzb2Z0d2FyZS1iYXNlZCByZXByZXNlbnRhdGlvbiwgb3Igd2hldGhlciBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBORVRfRFNBX01WODhFNlhYWFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBmYWJyaWMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBXG4gICA1Olx0XHRzZWxlY3QgSVJRX0RPTUFJTlxuICAgNjpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX0VEU0FcbiAgIDc6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19EU0FcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBtb3N0IG9mIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggbW9kZWxzIG9mXG4gIDEwOlx0XHQgIEV0aGVybmV0IHN3aXRjaCBjaGlwcywgZXhjZXB0IDg4RTYwNjAuXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYX1BUUFxuICAxMzpcdFx0Ym9vbCBcJiMzNDtQVFAgc3VwcG9ydCBmb3IgTWFydmVsbCA4OEU2eHh4XCYjMzQ7XG4gIDE0Olx0XHRkZWZhdWx0IG5cbiAgMTU6XHRcdGRlcGVuZHMgb24gKE5FVF9EU0FfTVY4OEU2WFhYID0geSBcdTAwMjZcdTAwMjYgUFRQXzE1ODhfQ0xPQ0sgPSB5KSB8fCBcXFxuICAxNjpcdFx0ICAgICAgICAgICAoTkVUX0RTQV9NVjg4RTZYWFggPSBtIFx1MDAyNlx1MDAyNiBQVFBfMTU4OF9DTE9DSylcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU2F5IFkgdG8gZW5hYmxlIFBUUCBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgb24gTWFydmVsbCA4OEU2eHh4IHN3aXRjaFxuICAxOTpcdFx0ICBjaGlwcyB0aGF0IHN1cHBvcnQgaXQuXG4gIDIwOlx0XG4gIDIxOlx0Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYX0xFRFNcbiAgMjI6XHRcdGJvb2wgXCYjMzQ7TEVEIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFwmIzM0O1xuICAyMzpcdFx0ZGVmYXVsdCB5XG4gIDI0Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTVY4OEU2WFhYXG4gIDI1Olx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfTVY4OEU2WFhYXG4gIDI2Olx0XHRkZXBlbmRzIG9uIExFRFNfVFJJR0dFUlNcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgVGhpcyBlbmFibGVkIHN1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBMRURzIGF0dGFjaGVkIHRvIHRoZVxuICAyOTpcdFx0ICBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoIGNoaXBzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDI2CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFNBIERyaXZlciBJbnRlcmFjdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSByZWxhdGVkIHRvIGEgZHJpdmVyIGZvciB0aGUgTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBjaGlwcy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGF0IERTQSwgb3IgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSwgZGVwZW5kcyBvbiBoYXZpbmcgYSAqcmVhbCogcGh5c2ljYWwgc3dpdGNoIGNoaXAgY29ubmVjdGVkIHZpYSBzb21ldGhpbmcgbGlrZSBNRElPIG9yIFNQSS4gVGhpcyBpc24mIzM5O3Qgc29tZXRoaW5nIHRoYXQmIzM5O3MgdXN1YWxseSBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIHNldHVwLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsICYjMzQ7Q2FuIHRoaXMgY29kZSAqZXZlbiogYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7CgpJZiB0aGVyZSYjMzk7cyBubyBRRU1VIGVtdWxhdGlvbiBmb3IgdGhlIGBtdjg4ZTZ4eHhgIGNoaXAsIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gZmFpbCDigJMgaXQgd29uJiMzOTt0IGZpbmQgdGhlIGhhcmR3YXJlLCBhbmQgdGhlIGRldmljZSBqdXN0IHdvbiYjMzk7dCByZWdpc3Rlci4gU28sIGJlZm9yZSBJIGRpZyB0b28gZGVlcCwgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgY2xldmVyIG1vY2tpbmcgb3IgZW11bGF0aW9uIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZiwgZWl0aGVyIGZvciBEU0EgaW4gZ2VuZXJhbCBvciBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgZHJpdmVyLiBJJiMzOTtkIGV4cGVjdCBEU0EgZHJpdmVycyB0byBiZSBkZXNpZ25lZCBmb3IgcGh5c2ljYWwgaGFyZHdhcmUsIHNvIHRoaXMgc2VlbXMgdW5saWtlbHkuCgpMZXQmIzM5O3Mgc2Vl4oCmIG1heWJlIGBkc2FfbG9vcGAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEFoLCBgZHNhX2xvb3AuY2AgaXMgaW5kZWVkIGEgbW9jayBEU0EgZHJpdmVyLCBidXQgaXQgZG9lc24mIzM5O3QgdXRpbGl6ZSBgbXY4OGU2eHh4YCBmdW5jdGlvbmFsaXR5LCBzbyBpdCYjMzk7cyBhIGRlYWQgZW5kIGZvciBteSBwdXJwb3Nlcy4gT2theSwgc28gdGhlIGNvcmUgY2hhbmdlcyBzZWVtIHRvIGJlIGNvbmNlbnRyYXRlZCBpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gIGFuZCBgbmV0L2RzYS90YWdfZHNhLmNgLgoKVGhlIGtleSBjaGFuZ2UgaW4gYHRhZ19kc2EuY2AgYXBwZWFycyB0byBiZSBhZGRpbmcgYSBuZXcgdGFnIHByb3RvY29sOiBgZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzYC4gTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogQ2FuIEkgc29tZWhvdyB0cmlnZ2VyIHRoZSB1c2Ugb2YgdGhhdCBgZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzYCB0YWcgcHJvdG9jb2wgKndpdGhvdXQqIHRoZSBgbXY4OGU2eHh4YCBkcml2ZXIgYmVpbmcgc3VjY2Vzc2Z1bGx5IGxvYWRlZD8gSSBuZWVkIHRvIGNoZWNrIHRoYXQgYG5ldC9kc2EvdGFnX2RzYS5jYCBmaWxlIG1vcmUgY2xvc2VseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kc2EvdGFnX2RzYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kc2EvdGFnX2RzYS5jPTQwND1NT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBLCBFRFNBX05BTUUpO1xuLS1cbm5ldC9kc2EvdGFnX2RzYS5jLTQxMC0gKi9cbm5ldC9kc2EvdGFnX2RzYS5jOjQxMTpzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzID0ge1xubmV0L2RzYS90YWdfZHNhLmMtNDEyLVx0Lm5hbWVcdFx0ID0gRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUsXG4tLVxubmV0L2RzYS90YWdfZHNhLmMtNDE4LVxubmV0L2RzYS90YWdfZHNhLmM6NDE5OkRTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTtcbm5ldC9kc2EvdGFnX2RzYS5jLTQyMC1NT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXG4tLVxubmV0L2RzYS90YWdfZHNhLmM9NDI0PXN0YXRpYyBzdHJ1Y3QgZHNhX3RhZ19kcml2ZXIgKmRzYV90YWdfZHJpdmVyc1tdID0ge1xuLS1cbm5ldC9kc2EvdGFnX2RzYS5jLTQyOS1cdFx1MDAyNkRTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9uZXRkZXZfb3BzKSxcbm5ldC9kc2EvdGFnX2RzYS5jOjQzMDpcdFx1MDAyNkRTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpLFxubmV0L2RzYS90YWdfZHNhLmMtNDMxLSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTg5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgVGFnIERyaXZlciBDb21wYXRpYmlsaXR5KioKClJpZ2h0LCB0aGUgdGFnIGRyaXZlciBpcyByZWdpc3RlcmVkLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMsIGRvZXMgdGhpcyByZWdpc3RyYXRpb24gYWN0dWFsbHkgdHJhbnNsYXRlIGludG8gdXNhYmlsaXR5IGRvd25zdHJlYW0/IFNwZWNpZmljYWxseSwgY2FuIHRoaXMgZHJpdmVyIGJlIGxldmVyYWdlZCBieSBgZHNhX2xvb3BgIG9yIGFueSBvdGhlciBlbXVsYXRlZCBEU0EgZHJpdmVyIEkmIzM5O20gZmFtaWxpYXIgd2l0aD8gSSBuZWVkIHRvIGFzY2VydGFpbiB0aGUgZXh0ZW50IG9mIGl0cyBhY2Nlc3NpYmlsaXR5IHdpdGhpbiB0aGUgc29mdHdhcmUgYXJjaGl0ZWN0dXJlLgoKTGV0JiMzOTtzIGN1dCBzdHJhaWdodCB0byB0aGUgY2hhc2UgYW5kIHRlc3QgYSBzcGVjaWZpYyBzY2VuYXJpby4gSSB3YW50IHRvIGRldGVybWluZSBpZiBgZHNhX2xvb3BgIGlzIGNhcGFibGUgb2YgdXRpbGl6aW5nIGEgc3BlY2lmaWMgdGFnZ2luZyBwcm90b2NvbCBpZGVudGlmaWVyLCBsZXQmIzM5O3MgZ28gd2l0aCBgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNgLiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBUaGlzIHRhZyBwcm90b2NvbCBpcyBhIGdvb2QgdGVzdCBjYXNlLCBJIGtub3cgaXRzIGNoYXJhY3RlcmlzdGljcy4gSWYgYGRzYV9sb29wYCBjYW4mIzM5O3QgdXRpbGl6ZSB0aGlzIG9uZSwgdGhhdCBpcyBhIGdvb2Qgc2lnbiB0aGVyZSBhcmUgaXNzdWVzIHNvbWV3aGVyZSBpbiB0aGUgZHJpdmVyLiBBIHN1Y2Nlc3NmdWwgdGVzdCBoZXJlIHdvdWxkIGdpdmUgbWUgY29uZmlkZW5jZSBhYm91dCB0aGUgZGVzaWduJiMzOTtzIGZsZXhpYmlsaXR5LiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCBnb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zMjYyPXN0YXRpYyBpbnQgbXY4OGU2eHh4X3NldHVwX3BvcnRfbW9kZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNzQtXHRpZiAoY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBIHx8XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjc1Olx0ICAgIGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3Ni1cdFx0cmV0dXJuIG12ODhlNnh4eF9zZXRfcG9ydF9tb2RlX2Vkc2EoY2hpcCwgcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NjY1OT1zdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjcxLVx0c3dpdGNoIChwcm90bykge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY3MjpcdGNhc2UgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjczLVx0XHRpZiAoIWNoaXAtXHUwMDNlaW5mby1cdTAwM2VzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmg9ODMxPXN0YXRpYyBpbmxpbmUgYm9vbCBtdjg4ZTZ4eHhfcHRwX2VtYmVkZGVkX3RzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTgzMi17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaDo4MzM6XHRyZXR1cm4gY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaC04MzQtfVxuLS1cbmluY2x1ZGUvbmV0L2RzYS5oPTI2PXN0cnVjdCB0Y19hY3Rpb247XG4tLVxuaW5jbHVkZS9uZXQvZHNhLmgtNjEtI2RlZmluZSBEU0FfVEFHX1BST1RPX05FVENfVkFMVUVcdFx0MzNcbmluY2x1ZGUvbmV0L2RzYS5oOjYyOiNkZWZpbmUgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNfVkFMVUVcdDM0XG5pbmNsdWRlL25ldC9kc2EuaC02My1cbmluY2x1ZGUvbmV0L2RzYS5oPTY0PWVudW0gZHNhX3RhZ19wcm90b2NvbCB7XG4tLVxuaW5jbHVkZS9uZXQvZHNhLmgtOTgtXHREU0FfVEFHX1BST1RPX05FVENcdFx0PSBEU0FfVEFHX1BST1RPX05FVENfVkFMVUUsXG5pbmNsdWRlL25ldC9kc2EuaDo5OTpcdERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNfVkFMVUUsXG5pbmNsdWRlL25ldC9kc2EuaC0xMDAtfTtcbi0tXG5uZXQvZHNhL3RhZ19kc2EuYz00MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyA9IHtcbm5ldC9kc2EvdGFnX2RzYS5jLTQxMi1cdC5uYW1lXHRcdCA9IEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FLFxubmV0L2RzYS90YWdfZHNhLmM6NDEzOlx0LnByb3RvXHRcdCA9IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxubmV0L2RzYS90YWdfZHNhLmMtNDE0LVx0LnhtaXRcdFx0ID0gZWRzYV94bWl0LFxuLS1cbm5ldC9kc2EvdGFnX2RzYS5jPTQxOT1EU0FfVEFHX0RSSVZFUihlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyk7XG5uZXQvZHNhL3RhZ19kc2EuYzo0MjA6TU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxubmV0L2RzYS90YWdfZHNhLmMtNDIxLVx0XHRcdCAgICBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNTQxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVGFnIFByb3RvY29sIENvbmZpZ3VyYXRpb24gZm9yIEVtdWxhdGVkIERTQSBEZXZpY2VzKioKCk9rYXksIHNvIHRoZSB0YWcgcHJvdG9jb2wgc2VlbXMgdG8gYmUgZXhjbHVzaXZlbHkgaGFuZGxlZCBieSB0aGUgYG12ODhlNnh4eGAgZHJpdmVyLCB3aGljaCByYWlzZXMgYSBxdWVzdGlvbi4gSXMgdGhlcmUgYSB3YXksIHZpYSBzeXNmcyBvciBuZXRsaW5rLCB0byBjb25maWd1cmUgdGhlIHRhZyBwcm90b2NvbCBmb3IgZW11bGF0ZWQgZGV2aWNlcyBsaWtlIGBkc2FfbG9vcGAsIG9yIHBlcmhhcHMgb3RoZXIgc2ltaWxhciBlbXVsYXRpb25zPyBUaGUgRFNBIGZyYW1ld29yayBpdHNlbGYgb2ZmZXJzIHRoZSBhYmlsaXR5IHRvIG1vZGlmeSB0aGUgdGFnIHByb3RvY29sIHRocm91Z2ggdGhlIGBkc2Ffc3dpdGNoX29wcy0mZ3Q7Y2hhbmdlX3RhZ19wcm90b2NvbGAgZnVuY3Rpb24sIHdoaWNoIGlzIHByb21pc2luZy4gSG93ZXZlciwgaWYgYSBkZXZpY2UgbGlrZSBgZHNhX2xvb3BgICpkb2VzbiYjMzk7dCogaW1wbGVtZW50IHRoaXMgYGNoYW5nZV90YWdfcHJvdG9jb2xgIGZ1bmN0aW9uLCBpdCYjMzk7bGwgc2ltcGx5IHN0aWNrIHdpdGggaXRzIGRlZmF1bHQsIGluaXRpYWwgcHJvdG9jb2wuIFRpbWUgdG8gZGlnIGludG8gYGRzYV9sb29wLmNgIGFuZCBzZWUgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBsb29rIGxpa2UsIGlmIGFueSwgdGhlcmUuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBob29rIGlzIGltcGxlbWVudGVkIGFuZCBob3cgaXQgaXMgYmVoYXZpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hhbmdlX3RhZ19wcm90b2NvbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE4OTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipEZWNvZGluZyB0aGUgYGRzYV9sb29wYCBQcm90b2NvbCoqLgoKUmlnaHQsIHNvIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgc3BlY2lmaWMgdGFnZ2luZyBwcm90b2NvbCB0aGF0IGBkc2FfbG9vcGAgZW1wbG95cy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzdGVwLCByZWFsbHkuIEkgY2FuJiMzOTt0IGFuYWx5emUgb3IgZXZlbiB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBwcm9wZXJseSB3aXRob3V0IGtub3dpbmcgd2hhdCBraW5kIG9mIHRhZ2dpbmcgaXQmIzM5O3MgYnVpbHQgdXBvbi4gSXMgaXQgYSBzaW1wbGUgY2hlY2tzdW0sIHNvbWV0aGluZyBtb3JlIHJvYnVzdCBsaWtlIGEgQ1JDLCBvciBwZXJoYXBzIHNvbWV0aGluZyBtb3JlIGFkdmFuY2VkIHRoYXQgaW5jb3Jwb3JhdGVzIGVycm9yIGNvcnJlY3Rpb24gb3IgY3J5cHRvZ3JhcGhpYyBoYXNoaW5nPyBHb3R0YSBmaWd1cmUgb3V0IHRoZSBiYXNpY3MgYmVmb3JlIGRpdmluZyBhbnkgZGVlcGVyLiBMZXQmIzM5O3MgZ2V0IGNyYWNraW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEU0FfVEFHX1BST1RPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MTI1PXN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzE6XHRyZXR1cm4gRFNBX1RBR19QUk9UT19OT05FO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxODgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEU0EgQ29kZSBQYXRoIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gYGRzYV9sb29wYCB1c2VzIGBEU0FfVEFHX1BST1RPX05PTkVgLCB0aGF0IG11Y2ggaXMgY2xlYXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgdGhlcmUgYW55ICpvdGhlciogRFNBIGRyaXZlcnMgdGhhdCBtaWdodCBiZSBlbXVsYXRlZD8gTGV0JiMzOTtzIGNoZWNrLiBBaCwgYGRyaXZlcnMvbmV0L2RzYS9tb2NrLmNgLi4ubm8sIG5vdGhpbmcgdGhlcmUuCgpIbW0sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgY2FuIHdlIHRyaWdnZXIgYGVkc2FfeG1pdGAgb3IgYGVkc2FfcmN2YCB3aXRob3V0IHJlbHlpbmcgb24gYG12ODhlNnh4eGA/IEJlY2F1c2UsIHJlYWxpc3RpY2FsbHksIGlmIHNvbWVvbmUgY29uZmlndXJlcyBhIERTQSB0cmVlIHRocm91Z2ggdGhlIGRldmljZSB0cmVlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgd2UmIzM5O3JlIHVubGlrZWx5IHRvIGhhdmUgYSB3b3JraW5nIGBtdjg4ZTZ4eHhgIGluc3RhbmNlIHdpdGhvdXQgYSBzcGVjaWFsaXplZCBJMkMvTURJTyBtb2NrLgoKV2FpdC4uLlN5emthbGxlci4gU3l6a2FsbGVyJiMzOTtzIGdvdCBgc3l6X2dlbmV0bGlua2AgYW5kIG90aGVyIHBzZXVkby1zeXNjYWxscywgYnV0IGl0IGRvZXNuJiMzOTt0ICpuYXRpdmVseSogZW11bGF0ZSBNRElPIGRldmljZXMuIEl0IG5lZWRzIGEgc3BlY2lmaWMgZHJpdmVyIGZvciB0aGF0LCByaWdodD8gVW5sZXNzLi4uCgpBaCwgeWVzLCBTeXprYWxsZXIgY2FuIGluamVjdCBwYWNrZXRzLiBJZiB3ZSBjb3VsZCBjcmVhdGUgYSBkZXZpY2Ugd2l0aCBgZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHNgLCB0aGVuIHdlJiMzOTtkIGJlIHVzaW5nIGBlZHNhX3htaXRgIGFuZCBgZWRzYV9yY3ZgLiBCdXQgaG9sZCBvbiwgdGhvc2UgYXJlbiYjMzk7dCAqbmV3KiBmdW5jdGlvbnM7IHRoZXkmIzM5O3JlIHJldXNlZCBmcm9tIGBlZHNhX25ldGRldl9vcHNgLiBTbyBpdCBsb29rcyBsaWtlIHRoZSByZWxldmFudCBjb2RlIHNuaXBwZXQgaXM6CgpgYGBjCnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMgPSB7CgkubmFtZQkJID0gRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUsCgkucHJvdG8JCSA9IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLAoJLnhtaXQJCSA9IGVkc2FfeG1pdCwKCS5yY3YJCSA9IGVkc2FfcmN2LAoJLm5lZWRlZF9oZWFkcm9vbSA9IEVEU0FfSExFTiwKfTsKYGBgCgpTbyB0aGUgJiMzNDtuZXcmIzM0OyB0aGluZyBpbiBgbmV0L2RzYS90YWdfZHNhLmNgIGlzIGp1c3QgdGhlICpyZWdpc3RyYXRpb24qIG9mIHRoYXQgc3RydWN0LiBUaGUgbWVhdCBvZiB0aGUgZnVuY3Rpb25hbGl0eS4uLml0JiMzOTtzIHJlYWxseSBpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gLgoKQW5kIHRoYXQmIzM5O3MgdGhlIGtpY2tlci4gU2luY2UgYG12ODhlNnh4eGAgaXMgYSAqaGFyZHdhcmUqIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcywgYW5kIGl0JiMzOTtzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIChhdCBsZWFzdCBub3QgYnkgZGVmYXVsdCksIGl0JiMzOTtzICp1bnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28gdGhlIGNvZGUgdGhlcmUgaXMgYmFzaWNhbGx5IGRlYWQgY29kZSBpbiBteSBzcGVjaWZpYyB1c2UgY2FzZS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSB3YXkgdG8gaW5zdGFudGlhdGUgYG12ODhlNnh4eGAgdmlhIHNvbWUga2luZCBvZiBzb2Z0d2FyZSBtb2NrLCBidXQgbXkgZ3V0IHRlbGxzIG1lIGl0JiMzOTtzIHB1cmVseSBoYXJkd2FyZS1iYXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdjg4ZTZ4eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzM1OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhIGZpcnN0LXBlcnNvbiwgZXhwZXJ0IHBlcnNwZWN0aXZlLCBhaW1pbmcgZm9yIGEgZnVsc29tZSByZW5kZXJpbmc6CgoqKktlcm5lbCBUZXN0aW5nIG9mIGBtdjg4ZTZ4eHhgIC0gQSBEZWVwIERpdmUqKgoKQWxyaWdodCwgSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgbXY4OGU2eHh4YCBkcml2ZXIgaW4gdGhlIGtlcm5lbCBhZ2FpbiwgYW5kIG15IGZpcnN0IHF1ZXN0aW9uICphbHdheXMqIHBvcHMgdXA6IEFyZSB3ZSB0cnVseSBleGhhdXN0aW5nICphbGwqIHRoZSB0ZXN0aW5nIHBvc3NpYmlsaXRpZXM/IFN1cmUsIEkmIzM5O20gZmFtaWxpYXIgd2l0aCB0aGUgc3RhbmRhcmQgbWV0aG9kcywgdGhlIHR5cGljYWwgcHJvY2VkdXJlcywgdGhlIGJhc2ljIGNoZWNrcyB0aGF0IGFyZSBhbG1vc3QgY2VydGFpbmx5IGluIHBsYWNlLi4uIGJ1dCBJIGNhbiYjMzk7dCBoZWxwIGJ1dCB3b25kZXIsIGlzIHRoZXJlIGFub3RoZXIgYW5nbGU/IElzIHRoZXJlIGEgc3VidGxlIGNvcm5lciBjYXNlLCBhbiBvYnNjdXJlIGhhcmR3YXJlIGludGVyYWN0aW9uLCBzb21lIG9mZmJlYXQgY29uZmlndXJhdGlvbiBzY2VuYXJpbyB0aGF0IHdlJiMzOTtyZSBzb21laG93IG1pc3NpbmcgaW4gb3VyIHRlc3Qgc3VpdGU/CgpJJiMzOTttIHRoaW5raW5nLCBiZXlvbmQgdGhlIG9idmlvdXMsIHdoYXQgYXJlIHRoZSBpbXBsaWNpdCBhc3N1bXB0aW9ucyB3ZSYjMzk7cmUgbWFraW5nIGFib3V0IHRoZSBoYXJkd2FyZSYjMzk7cyBiZWhhdmlvciBvciB0aGUgc3Vycm91bmRpbmcgc3lzdGVtPyBIYXZlIHdlIGNvdmVyZWQgdGhlIGVkZ2UgY29uZGl0aW9ucywgdGhlIGVycm9yIHBhdGhzLCB0aGUgbGVzcy10cmF2ZWxlZCBjb25maWd1cmF0aW9ucz8gSSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgbm90IGp1c3QgY29uZmlybWluZyB3aGF0IHdlIGFscmVhZHkga25vdyB3b3JrcyBidXQgcHJvYWN0aXZlbHkgaHVudGluZyBkb3duIHBvdGVudGlhbCBpc3N1ZXMgYmVmb3JlIHRoZXkgc3VyZmFjZSBpbiB0aGUgZmllbGQuIFRoaXMgaXMgbm90IGFib3V0IGp1c3QgcnVubmluZyB0aGUgdGVzdHMuIFRoaXMgaXMgYWJvdXQgbWFraW5nIHN1cmUsIGZyb20gdGhlIGdyb3VuZCB1cCwgd2UmIzM5O3JlIGJ1aWxkaW5nIGEgcm9jay1zb2xpZCwgcmVsaWFibGUgZHJpdmVyLiBQZXJoYXBzIHRoZSBkb2N1bWVudGF0aW9uIHBvaW50cyB0byBzb21lIG9ic2N1cmUgdGVzdCBwYXRocy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXY4OGU2eHh4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTAxNDEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTczPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc0LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NzU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTIxPW9iai15XHRcdFx0XHQmIzQzOz0gbWljcm9jaGlwL1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjIyOm9iai15XHRcdFx0XHQmIzQzOz0gbXY4OGU2eHh4L1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTIzLW9iai15XHRcdFx0XHQmIzQzOz0gbXhsODYyeHgvXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oLTUtICpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaDo2OiAqIEJhc2VkIG9uIG12ODhlNnh4eC5oXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmgtNy0gKiBDb3B5cmlnaHQgKGMpIDIwMDggTWFydmVsbCBTZW1pY29uZHVjdG9yXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFgpICYjNDM7PSBtdjg4ZTZ4eHgub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTozOm12ODhlNnh4eC1vYmpzIDo9IGNoaXAub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo0Om12ODhlNnh4eC1vYmpzICYjNDM7PSBkZXZsaW5rLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjY6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDFfYXR1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Nzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMV92dHUub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo4Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwyLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6OTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMl9hdmIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMl9zY3JhdGNoLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTE6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgJiM0Mzs9IGh3dHN0YW1wLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTI6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX0xFRFMpICYjNDM7PSBsZWRzLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTM6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02MTg1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTQ6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02MzUyLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTU6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02Mzl4Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTY6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBoeS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE3Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwb3J0Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTg6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBvcnRfaGlkZGVuLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTk6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgJiM0Mzs9IHB0cC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIwOm12ODhlNnh4eC1vYmpzICYjNDM7PSBzZXJkZXMub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gc21pLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjI6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHN3aXRjaGRldi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIzOm12ODhlNnh4eC1vYmpzICYjNDM7PSB0cmFjZS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI0Om12ODhlNnh4eC1vYmpzICYjNDM7PSB0Y2Zsb3dlci5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI1Om12ODhlNnh4eC1vYmpzICYjNDM7PSB0Y2FtLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMjYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvZHNhL212ODhlNnh4eC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgtI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTojaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kYXRhL212ODhlNnh4eC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTpzdGF0aWMgdm9pZCBhc3NlcnRfcmVnX2xvY2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTc6aW50IG12ODhlNnh4eF9yZWFkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjM6XHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3JlYWQoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzM6aW50IG12ODhlNnh4eF93cml0ZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Nzk6XHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3dyaXRlKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5OmludCBtdjg4ZTZ4eHhfd2FpdF9tYXNrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MC1cdFx0XHR1MTYgbWFzaywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDEtXHRmb3IgKGkgPSAwOyB0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSB8fCAoaSBcdTAwM2MgMik7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMDI6XHRcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDMtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTE1Olx0ZXJyID0gbXY4OGU2eHh4X3JlYWQoY2hpcCwgYWRkciwgcmVnLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTI2OmludCBtdjg4ZTZ4eHhfd2FpdF9iaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNy1cdFx0ICAgICAgIGludCBiaXQsIGludCB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjgte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTI5Olx0cmV0dXJuIG12ODhlNnh4eF93YWl0X21hc2soY2hpcCwgYWRkciwgcmVnLCBCSVQoYml0KSxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMC1cdFx0XHRcdCAgIHZhbCA/IEJJVChiaXQpIDogMHgwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzM6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzU6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNy1cdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzg6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzOS1cdGlmICghbWRpb19idXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ1OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDYte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ3Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDgtXHR1bnNpZ25lZCBpbnQgbiA9IGQtXHUwMDNlaHdpcnE7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTUzOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1NC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTU6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Ni1cdHVuc2lnbmVkIGludCBuID0gZC1cdTAwM2Vod2lycTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNjE6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzA6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzE6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcyOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg3Olx0XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxODg6XHRcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZjdGwxKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE4OS1cdFx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5MC1cdFx0XHRnb3RvIHVubG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MTpcdFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5Mi11bmxvY2s6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxOTM6XHRcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTk0LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwMzpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA0LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRldl9pZDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNzpcdHJldHVybiBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA4LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTI6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxNDpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNS19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfc3luY191bmxvY2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxOTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjIwLVx0dTE2IG1hc2sgPSBHRU5NQVNLKGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMjQ6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjMxOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzUtb3V0OlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjM2Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzctfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAgbXY4OGU2eHh4X2cxX2lycV9jaGlwID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQwOlx0Lm5hbWVcdFx0XHQ9IFwmIzM0O212ODhlNnh4eC1nMVwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MTpcdC5pcnFfbWFza1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfbWFzayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MjpcdC5pcnFfdW5tYXNrXHRcdD0gbXY4OGU2eHh4X2cxX2lycV91bm1hc2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDM6XHQuaXJxX2J1c19sb2NrXHRcdD0gbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0NDpcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ1LX07XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDgtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGlycSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTAte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjUxOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZC1cdTAwM2Vob3N0X2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjU5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYxOlx0Lm1hcFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjItXHQueGxhdGVcdD0gaXJxX2RvbWFpbl94bGF0ZV90d29jZWxsLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2NS0vKiBUbyBiZSBjYWxsZWQgd2l0aCByZWdfbG9jayBoZWxkICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjY6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3MTpcdG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3Mi1cdG1hc2sgXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzM6XHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjc0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI4MzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjg0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTE6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTI6XHRtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkzOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTQtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDMtXHRcdE5VTEwsIGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzA0Olx0XHRcdTAwMjZtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9vcHMsIGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA1LVx0aWYgKCFjaGlwLVx1MDAzZWcxX2lycS5kb21haW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzExOlx0Y2hpcC1cdTAwM2VnMV9pcnEuY2hpcCA9IG12ODhlNnh4eF9nMV9pcnFfY2hpcDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMi1cdGNoaXAtXHUwMDNlZzFfaXJxLm1hc2tlZCA9IH4wO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzE0Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNm1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjA6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjQtXHQvKiBSZWFkaW5nIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIGNsZWFycyAobW9zdCBvZikgdGhlbSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzI1Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzMyLVx0bWFzayBcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMzMzpcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzQ2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM1MjpcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzUzLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjItXHRzbnByaW50ZihjaGlwLVx1MDAzZWlycV9uYW1lLCBzaXplb2YoY2hpcC1cdTAwM2VpcnFfbmFtZSksXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjM6XHRcdCBcJiMzNDttdjg4ZTZ4eHgtJXNcJiMzNDssIGRldl9uYW1lKGNoaXAtXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjU6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Ni1cdGVyciA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtXHUwMDNlaXJxLCBOVUxMLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY3Olx0XHRcdFx0ICAgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4sXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjgtXHRcdFx0XHQgICBJUlFGX09ORVNIT1QgfCBJUlFGX1NIQVJFRCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OS1cdFx0XHRcdCAgIGNoaXAtXHUwMDNlaXJxX25hbWUsIGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzcwOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcxLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MjpcdFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzgte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc5Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gY29udGFpbmVyX29mKHdvcmssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODA6XHRcdFx0XHRcdFx0ICAgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgxLVx0XHRcdFx0XHRcdCAgIGlycV9wb2xsX3dvcmsud29yayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODI6XHRtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4ODpzdGF0aWMgaW50IG12ODhlNnh4eF9pcnFfcG9sbF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5MjpcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkzLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTYtXHRrdGhyZWFkX2luaXRfZGVsYXllZF93b3JrKFx1MDAyNmNoaXAtXHUwMDNlaXJxX3BvbGxfd29yayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5NzpcdFx0XHRcdCAgbXY4OGU2eHh4X2lycV9wb2xsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MDgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MDk6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDEwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTQ6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTU6XHRtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE2Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTctfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MjAtXHRcdFx0XHRcdCAgIGludCBwb3J0LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ0MTpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3NldHVwX21hYyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDQyLVx0XHRcdFx0ICAgIGludCBsaW5rLCBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGludCBwYXVzZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NjctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Njg6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsIG1vZGUpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDY5LXJlc3RvcmVfbGluazpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NzY6c3RhdGljIGludCBtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00Nzcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ4Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ4MzpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5MS1cdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlZmFtaWx5ID09IE1WODhFNlhYWF9GQU1JTFlfNjI1MClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5MjpcdFx0cmV0dXJuIG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTQ6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5NS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01MDU9c3RhdGljIGNvbnN0IHU4IG12ODhlNjE4NV9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTE1OnN0YXRpYyB2b2lkIG12ODhlNjA5NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTYtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTIyOlx0aWYgKG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyMy1cdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUksIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTMzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTM0OnN0YXRpYyB2b2lkIG12ODhlNjE4NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzUtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTQ4OnN0YXRpYyBjb25zdCB1OCBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ5LVx0W01WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9NSUlfUEhZXVx0PSBQSFlfSU5URVJGQUNFX01PREVfUkVWTUlJLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2MzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKHU4IGNtb2RlLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjQte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY1Olx0aWYgKGNtb2RlIFx1MDAzYyBBUlJBWV9TSVpFKG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NjpcdCAgICBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0pXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1Njc6XHRcdF9fc2V0X2JpdChtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0sIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjgtXHRlbHNlIGlmIChjbW9kZSA9PSBNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfUkdNSUkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTcyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzM6bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzQtXHRcdFx0XHQgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU4MDpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgxLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyMjpzdGF0aWMgdm9pZCBtdjg4ZTYyNTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIzLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyNTpcdGlmICghbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSlcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNi1cdFx0bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKGNoaXAsIHBvcnQsIGNvbmZpZyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjMxOnN0YXRpYyB2b2lkIG12ODhlNjM1MV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzItXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM2LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mzc6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjQzOnN0YXRpYyBpbnQgbXY4OGU2M3h4X2dldF9wb3J0X3NlcmRlc19jbW9kZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDg6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU2LVx0dmFsID0gcmVnIFx1MDAyNiB+TVY4OEU2WFhYX1BPUlRfU1RTX1BIWV9ERVRFQ1Q7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTc6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2MTpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjUtXHQvKiBSZXN0b3JlIFBIWV9ERVRFQ1QgdmFsdWUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2NjpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjcyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjczOnN0YXRpYyB2b2lkIG12ODhlNjM1Ml9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzQtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjc5LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2ODA6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02ODEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk1LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2OTY6XHRcdFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDA6c3RhdGljIHZvaWQgbXY4OGU2MzJ4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDYtXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwNzpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwOC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MTgtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcxOTpcdFx0XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyMzpzdGF0aWMgdm9pZCBtdjg4ZTYzNDFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyOC1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzI5Olx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0NC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0NTpzdGF0aWMgdm9pZCBtdjg4ZTYzOTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQ2LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1MC1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzUxOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc2NzpzdGF0aWMgdm9pZCBtdjg4ZTYzOTB4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2OC1cdFx0XHRcdFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODAyOnN0YXRpYyB2b2lkIG12ODhlNjM5M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAzLVx0XHRcdFx0XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MTE6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ2OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ3LVx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NDk6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUxOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUyLVx0Y2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX2dldF9jYXBzKGNoaXAsIHBvcnQsIGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTM6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1NC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NTpcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTYtXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9ODY0PXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY1Om12ODhlNnh4eF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg2Ni1cdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjgtXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY5Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg3MC1cdHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4Nzk6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX3ByZXBhcmUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODAtXHRcdFx0XHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgyLVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg4MzpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODQtXHRpbnQgcG9ydCA9IGRwLVx1MDAzZWluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5My1cdCAgICBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmspIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NDpcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk1LVx0XHRlcnIgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmsoY2hpcCwgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5Ni1cdFx0XHRcdFx0XHQgICAgIExJTktfRk9SQ0VEX0RPV04pO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk3Olx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5OC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDQtXHRcdFx0XHQgdW5zaWduZWQgaW50IG1vZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA3LVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwODpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDktXHRpbnQgcG9ydCA9IGRwLVx1MDAzZWluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxMjpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNDpcdGlmIChtb2RlICE9IE1MT19BTl9QSFkgfHwgIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNTpcdFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTE2LVx0XHRcdFx0XHRcdCAgICAgIHN0YXRlLVx1MDAzZWludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTIxLWVycl91bmxvY2s6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MjI6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5Mjg6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX2ZpbmlzaChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyOS1cdFx0XHRcdHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzMS1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MzI6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTMzLVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDEtXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk0MjpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDYtXHQgICAgICBjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmludGVyZmFjZSAhPSBpbnRlcmZhY2UpIHx8XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDc6XHQgICAgIChtb2RlID09IE1MT19BTl9QSFkgXHUwMDI2XHUwMDI2IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKGNoaXAsIHBvcnQpKSkpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDgtXHRcdGVyciA9IGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LCBMSU5LX1VORk9SQ0VEKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1MDpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTUxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODE3MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgdGhlIE5ldyBUYWcgUHJvdG9jb2wqKgoKT2theSwgc28gdGhpcyBgbXY4OGU2eHh4YCBkcml2ZXIgaXMgc3RyaWN0bHkgaGFyZHdhcmUtZm9jdXNlZCwgbm8gUUVNVSBlbXVsYXRpb24gdGhlcmUsIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIFRoZSBlZGl0cyBpbiBgbmV0L2RzYS90YWdfZHNhLmNgIGFyZSBzaW1wbHkgcmVnaXN0ZXJpbmcgdGhpcyBuZXcgdGFnIHByb3RvY29sOyBpdCYjMzk7cyBzcGVjaWZpYyB0byB0aGUgTWFydmVsbCBzd2l0Y2guIE15IGluaXRpYWwgdGhvdWdodCB3YXM6IGNvdWxkIGEgY2xldmVyIHVzZXIgY3JhZnQgYSBkdW1teSBuZXRkZXYgYW5kIHBvaW50IGl0IHRvIHRoZSBuZXcgYGVkc2EtcHRwLXJlc2VydmVkMi10c2AgdGFnPyBCdXQgdGhlbiwgSSByZW1lbWJlcmVkIHRoYXQgRFNBIHRhZyBwcm90b2NvbHMgYXJlIGZ1bmRhbWVudGFsbHkgbGlua2VkIHRvIERTQSBzd2l0Y2hlcy4gVW5sZXNzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBEU0Egc3dpdGNoLCB0aGlzIGFwcHJvYWNoIGlzIGRlYWQgaW4gdGhlIHdhdGVyLgoKSWYgd2UgZG9uJiMzOTt0IGhhdmUgYSBEU0Egc3dpdGNoIGVtdWxhdGVkLCBhbmQgdGhlIG9ubHkgb25lIGF2YWlsYWJsZSAoYGRzYV9sb29wYCkgbGV2ZXJhZ2VzIGBEU0FfVEFHX1BST1RPX05PTkVgLCB0aGlzIHRhZyBwcm90b2NvbCBpcyB1bnJlYWNoYWJsZS4gSG1tbSwgY291bGQgd2UgbWFuaXB1bGF0ZSBgZHNhX2xvb3BgIGFuZCBvdmVycmlkZSBpdHMgdGFnIHByb3RvY29sPyBJdCYjMzk7cyBhIGxvbmcgc2hvdCwgYnV0IHdvcnRoIGNoZWNraW5nLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiBgZHNhX2xvb3BgIG9mZmVycyBhbnkgbWVjaGFuaXNtIHRvIGNoYW5nZSBpdHMgdGFnIHByb3RvY29sIGR5bmFtaWNhbGx5LiBBIHF1aWNrIHNlYXJjaCBmb3IgYGNoYW5nZV90YWdfcHJvdG9jb2xgIHdpdGhpbiBgZHNhX2xvb3AuY2AgeWllbGRlZCBub3RoaW5nLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgYGRzYV9zd2l0Y2hfb3BzYCBzdHJ1Y3Qgd2l0aGluIGBkc2FfbG9vcC5jYCBuZXh0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYV9zd2l0Y2hfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzI2PXN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzM1LVx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODg4MQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgSSYjMzk7bSBhYm91dCB0byBkbzoKCioqQW5hbHl6aW5nIHRoZSBgZHNhX2xvb3BfZHJpdmVyYCBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHNhX2xvb3BfZHJpdmVyYCBpbXBsZW1lbnRhdGlvbi4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHdoYXQgdGhpcyBkcml2ZXIgZG9lcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIHJvbGUgaW4gdGhlIGxhcmdlciBzeXN0ZW0uIElzIGl0IGhhbmRsaW5nIGRhdGEgdHJhbnNmZXJzLCBtYW5hZ2luZyByZXNvdXJjZXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJJiMzOTttIGdvaW5nIHRvIGJlIGxvb2tpbmcgZm9yIGtleSBmdW5jdGlvbnMsIGRhdGEgc3RydWN0dXJlcywgYW5kIGFueSBzcGVjaWZpYyBhbGdvcml0aG1zIGl0IG1pZ2h0IGJlIGVtcGxveWluZy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIHByb2JhYmx5IGdvaW5nIHRvIGJlIG1lbnRhbGx5IG1hcHBpbmcgdGhpcyB0byBvdGhlciBzaW1pbGFyIGRyaXZlcnMgSSYjMzk7dmUgd29ya2VkIHdpdGggaW4gdGhlIHBhc3QgYW5kIGxvb2tpbmcgZm9yIGNvbW1vbiBwYXR0ZXJucyBvciBhbnkgdW51c3VhbCBhc3BlY3RzLiBJJiMzOTtsbCBsaWtlbHkgYmUgYXNzZXNzaW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgaW4gbXkgaGVhZCBhcyB3ZWxsLCBhcyBJIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMzQ6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcbiAzMzU6XHRcdC5nZXRfdGFnX3Byb3RvY29sXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcbiAzMzY6XHRcdC5zZXR1cFx0XHRcdD0gZHNhX2xvb3Bfc2V0dXAsXG4gMzM3Olx0XHQudGVhcmRvd25cdFx0PSBkc2FfbG9vcF90ZWFyZG93bixcbiAzMzg6XHRcdC5nZXRfc3RyaW5nc1x0XHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxuIDMzOTpcdFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxuIDM0MDpcdFx0LmdldF9zc2V0X2NvdW50XHRcdD0gZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQsXG4gMzQxOlx0XHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxuIDM0MjpcdFx0LnBoeV9yZWFkXHRcdD0gZHNhX2xvb3BfcGh5X3JlYWQsXG4gMzQzOlx0XHQucGh5X3dyaXRlXHRcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxuIDM0NDpcdFx0LnBvcnRfYnJpZGdlX2pvaW5cdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcbiAzNDU6XHRcdC5wb3J0X2JyaWRnZV9sZWF2ZVx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcbiAzNDY6XHRcdC5wb3J0X3N0cF9zdGF0ZV9zZXRcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxuIDM0NzpcdFx0LnBvcnRfdmxhbl9maWx0ZXJpbmdcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcbiAzNDg6XHRcdC5wb3J0X3ZsYW5fYWRkXHRcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcbiAzNDk6XHRcdC5wb3J0X3ZsYW5fZGVsXHRcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2RlbCxcbiAzNTA6XHRcdC5wb3J0X2NoYW5nZV9tdHVcdD0gZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1LFxuIDM1MTpcdFx0LnBvcnRfbWF4X210dVx0XHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcbiAzNTI6XHRcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXG4gMzUzOlx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk2MjgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3Qgb24gRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW1wbGVtZW50IGBjaGFuZ2VfdGFnX3Byb3RvY29sYCwgd2hpY2ggbWVhbnMgYGRzYV9sb29wYCB3aWxsIGRlZmF1bHQgdG8gYERTQV9UQUdfUFJPVE9fTk9ORWAuIE15IGZpcnN0IHRob3VnaHQgaXM6IGFyZSB0aGVyZSAqYW55KiBvdGhlciB3YXlzIHRvIHRlc3QgdGhlc2UgRFNBIHRhZyBwcm90b2NvbHM/IFN5emthbGxlciBoYXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IHBhY2tldHMgaW50byBkZXZpY2VzLCBzbyBpZiBhIG5ldHdvcmsgZGV2aWNlIHVzZXMgYGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzYCwgdGhlbiB0aGVvcmV0aWNhbGx5IGl0cyBgeG1pdGAgYW5kIGByY3ZgIGZ1bmN0aW9ucyBjb3VsZCBiZSB0cmlnZ2VyZWQuCgpCdXQgaGFuZyBvbuKApiBgZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHNgIHJlbGllcyBvbiBgZWRzYV94bWl0YCBhbmQgYGVkc2FfcmN2YCwgd2hpY2ggYXJlICphbHJlYWR5KiBiZWluZyBmdXp6ZWQgdGhyb3VnaCBgZWRzYV9uZXRkZXZfb3BzYC4gU28sIHdoYXQmIzM5O3MgKm5ldyogaGVyZT8gTG9va2luZyBhdCBgdGFnX2RzYS5jYCwgaXQgc2VlbXMgdGhlIG9ubHkgYWRkaXRpb24gaXMgdGhlIHJlZ2lzdHJhdGlvbiBvZiBhIHN0cnVjdC4gVGhlIHJlYWwgbG9naWMgaXMgYWN0dWFsbHkgYnVyaWVkIGluIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2AsIHdoaWNoIGlzIGEgaGFyZHdhcmUgZHJpdmVyLgoKQW5kIHRoYXQmIzM5O3MgdGhlIGtpY2tlci4gU2luY2UgYG12ODhlNnh4eGAgaXMgYSBoYXJkd2FyZSBkcml2ZXIsIGl0JiMzOTtzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLiBUaGUgbmV3IGNvZGUgaW4gYHRhZ19kc2EuY2AgaXMganVzdCBhIHN0cnVjdCBkZWZpbml0aW9uIGFuZCByZWdpc3RyYXRpb24g4oCTIGl0IGRvZXNuJiMzOTt0IGNvbnRhaW4gYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljLCBpdCYjMzk7cyBqdXN0IHJldXNpbmcgYGVkc2FfeG1pdGAgYW5kIGBlZHNhX3JjdmAuIFRoaXMgbWVhbnMgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyByZWFjaGFibGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFNvIEkgc2hvdWxkIGRlZmluaXRlbHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSBvdGhlciBwbGFjZSB3aGVyZSBgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNgIGlzIGJlaW5nIHVzZWQsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTMyNjI9c3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXBfcG9ydF9tb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3NC1cdGlmIChjaGlwLVx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0EgfHxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyNzU6XHQgICAgY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjc2LVx0XHRyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZWRzYShjaGlwLCBwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz02NjU5PXN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NzEtXHRzd2l0Y2ggKHByb3RvKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjcyOlx0Y2FzZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUzpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NzMtXHRcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaD04MzE9c3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmgtODMyLXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oOjgzMzpcdHJldHVybiBjaGlwLVx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTgzNC19XG4tLVxuaW5jbHVkZS9uZXQvZHNhLmg9MjY9c3RydWN0IHRjX2FjdGlvbjtcbi0tXG5pbmNsdWRlL25ldC9kc2EuaC02MS0jZGVmaW5lIERTQV9UQUdfUFJPVE9fTkVUQ19WQUxVRVx0XHQzM1xuaW5jbHVkZS9uZXQvZHNhLmg6NjI6I2RlZmluZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRVx0MzRcbmluY2x1ZGUvbmV0L2RzYS5oLTYzLVxuaW5jbHVkZS9uZXQvZHNhLmg9NjQ9ZW51bSBkc2FfdGFnX3Byb3RvY29sIHtcbi0tXG5pbmNsdWRlL25ldC9kc2EuaC05OC1cdERTQV9UQUdfUFJPVE9fTkVUQ1x0XHQ9IERTQV9UQUdfUFJPVE9fTkVUQ19WQUxVRSxcbmluY2x1ZGUvbmV0L2RzYS5oOjk5Olx0RFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSxcbmluY2x1ZGUvbmV0L2RzYS5oLTEwMC19O1xuLS1cbm5ldC9kc2EvdGFnX2RzYS5jPTQxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzID0ge1xubmV0L2RzYS90YWdfZHNhLmMtNDEyLVx0Lm5hbWVcdFx0ID0gRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUsXG5uZXQvZHNhL3RhZ19kc2EuYzo0MTM6XHQucHJvdG9cdFx0ID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXG5uZXQvZHNhL3RhZ19kc2EuYy00MTQtXHQueG1pdFx0XHQgPSBlZHNhX3htaXQsXG4tLVxubmV0L2RzYS90YWdfZHNhLmM9NDE5PURTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTtcbm5ldC9kc2EvdGFnX2RzYS5jOjQyMDpNT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXG5uZXQvZHNhL3RhZ19kc2EuYy00MjEtXHRcdFx0ICAgIEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0NjMKCQkJCQkJCW91dHB1dDogMTY5CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBQYXRoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIGluZGljYXRlcyB0aGUgdnVsbmVyYWJpbGl0eSAqb25seSogZXhpc3RzIHdpdGhpbiB0aGUgYG12ODhlNnh4eGAgZHJpdmVyIGFuZCBpdHMgcmVsYXRlZCBgdGFnX2RzYS5jYCBmaWxlLiBUaGUgcHJvYmxlbSwgYXMgSSBzZWUgaXQsIGlzIHRoYXQgYG12ODhlNnh4eGAgaXMgYSBoYXJkd2FyZSBkcml2ZXIuIEFuZCwgYXMgYSBoYXJkd2FyZSBkcml2ZXIsIGl0IGlzICpub3QqIGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGF0IG1lYW5zIHRoZSBzcGVjaWZpYyBjb2RlIHNlY3Rpb24gaW4gcXVlc3Rpb24gaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBhIFFFTVUtYmFzZWQgZnV6emluZyBlbnZpcm9ubWVudC4gR2l2ZW4gdGhpcyBmdW5kYW1lbnRhbCBsaW1pdGF0aW9uLCBhdHRlbXB0aW5nIHRvIGZ1enogdGhpcyBjb2RlIGlzIGEgd2FzdGUgb2YgcmVzb3VyY2VzLiBUaGVyZWZvcmUsIEkgd2lsbCBtYXJrIHRoaXMgY29kZSBwYXRoIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGFuZCBjbGVhcmx5IHN0YXRlIHRoaXMgaGFyZHdhcmUgZGVwZW5kZW5jeSBhcyB0aGUgcHJpbWFyeSByZWFzb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4KSBhbmQgYWRkcyBhIG5ldyBEU0EgdGFnIHByb3RvY29sIGluIG5ldC9kc2EvdGFnX2RzYS5jLiBUaGUgTWFydmVsbCA4OEU2eHh4IGRyaXZlciBpcyBmb3IgcGh5c2ljYWwgaGFyZHdhcmUgc3dpdGNoZXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIFRoZSBuZXcgdGFnIHByb3RvY29sIGluIHRhZ19kc2EuYyBzaW1wbHkgcmV1c2VzIGV4aXN0aW5nIHRyYW5zbWl0IGFuZCByZWNlaXZlIGZ1bmN0aW9ucyAoZWRzYV94bWl0LCBlZHNhX3JjdikgYW5kIGNvbnRhaW5zIG5vIG5ldyBleGVjdXRhYmxlIGxvZ2ljLiBUaGVyZWZvcmUsIHRoZSBuZXcgY29kZSBpcyB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4KSBhbmQgYWRkcyBhIG5ldyBEU0EgdGFnIHByb3RvY29sIGluIG5ldC9kc2EvdGFnX2RzYS5jLiBUaGUgTWFydmVsbCA4OEU2eHh4IGRyaXZlciBpcyBmb3IgcGh5c2ljYWwgaGFyZHdhcmUgc3dpdGNoZXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIFRoZSBuZXcgdGFnIHByb3RvY29sIGluIHRhZ19kc2EuYyBzaW1wbHkgcmV1c2VzIGV4aXN0aW5nIHRyYW5zbWl0IGFuZCByZWNlaXZlIGZ1bmN0aW9ucyAoZWRzYV94bWl0LCBlZHNhX3JjdikgYW5kIGNvbnRhaW5zIG5vIG5ldyBleGVjdXRhYmxlIGxvZ2ljLiBUaGVyZWZvcmUsIHRoZSBuZXcgY29kZSBpcyB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIyOjQ3LjI5MDE4MTc4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwOTA2Mzg1MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgpIGFuZCBhZGRzIGEgbmV3IERTQSB0YWcgcHJvdG9jb2wgaW4gbmV0L2RzYS90YWdfZHNhLmMuIFRoZSBNYXJ2ZWxsIDg4RTZ4eHggZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBoYXJkd2FyZSBzd2l0Y2hlcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gVGhlIG5ldyB0YWcgcHJvdG9jb2wgaW4gdGFnX2RzYS5jIHNpbXBseSByZXVzZXMgZXhpc3RpbmcgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZnVuY3Rpb25zIChlZHNhX3htaXQsIGVkc2FfcmN2KSBhbmQgY29udGFpbnMgbm8gbmV3IGV4ZWN1dGFibGUgbG9naWMuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMjo0Ny4yOTAxODkxMTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzY3NDU3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZWU3M2U0NmY0MWYyMjU2NTYzYjdjNGMwM2YxYzNlMWRhMTBkOTViXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDI3IDE0OjIyOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9kc2EtcG9ydC55YW1sXFxuaW5kZXggNDgwMTIwNDY5OTUzNGIuLjhkMTJjOGYxYmQ1MWVjIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9kc2EtcG9ydC55YW1sXFxuQEAgLTUzLDYgKzUzLDcgQEAgcHJvcGVydGllczpcXG4gICAgIGVudW06XFxuICAgICAgIC0gZHNhXFxuICAgICAgIC0gZWRzYVxcbisgICAgICAtIGVkc2EtcHRwLXJlc2VydmVkMi10c1xcbiAgICAgICAtIG9jZWxvdFxcbiAgICAgICAtIG9jZWxvdC04MDIxcVxcbiAgICAgICAtIHJ0bDhfNFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXFxuaW5kZXggODBiODc3Yzc0NTEzZDYuLmU5MjUyNGJlYjQwYzQ2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcXG5AQCAtMzI3MSw3ICszMjcxLDggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXBfcG9ydF9tb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuIFxcdGlmIChjaGlwLVxcdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19EU0EpXFxuIFxcdFxcdHJldHVybiBtdjg4ZTZ4eHhfc2V0X3BvcnRfbW9kZV9kc2EoY2hpcCwgcG9ydCk7XFxuIFxcbi1cXHRpZiAoY2hpcC1cXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQSlcXG4rXFx0aWYgKGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0EgfHxcXG4rXFx0ICAgIGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUylcXG4gXFx0XFx0cmV0dXJuIG12ODhlNnh4eF9zZXRfcG9ydF9tb2RlX2Vkc2EoY2hpcCwgcG9ydCk7XFxuIFxcbiBcXHRyZXR1cm4gLUVJTlZBTDtcXG5AQCAtNjM3MCw2ICs2MzcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHtcXG4gXFx0XFx0LmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCxcXG4gXFx0XFx0LnB0cF9zdXBwb3J0ID0gdHJ1ZSxcXG4gXFx0XFx0Lm9wcyA9IFxcdTAwMjZtdjg4ZTYzNDFfb3BzLFxcbitcXHRcXHQuc3VwcG9ydHNfcHRwX2VtYmVkZGVkX3RzID0gdHJ1ZSxcXG4gXFx0fSxcXG4gXFxuIFxcdFtNVjg4RTYzNTBdID0ge1xcbkBAIC02NDQ3LDYgKzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xcbiBcXHRcXHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxcbiBcXHRcXHQucHRwX3N1cHBvcnQgPSB0cnVlLFxcbiBcXHRcXHQub3BzID0gXFx1MDAyNm12ODhlNjM1Ml9vcHMsXFxuK1xcdFxcdC5zdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMgPSB0cnVlLFxcbiBcXHR9LFxcbiBcXHRbTVY4OEU2MzYxXSA9IHtcXG4gXFx0XFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSxcXG5AQCAtNjYzNSw2ICs2NjM4LDcgQEAgc3RhdGljIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqbXY4OGU2eHh4X2FsbG9jX2NoaXAoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRjaGlwLVxcdTAwM2VkZXYgPSBkZXY7XFxuIFxcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2VyZWdfbG9jayk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjaGlwLVxcdTAwM2VtZGlvcyk7XFxuIFxcdGlkcl9pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2Vwb2xpY2llcyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjaGlwLVxcdTAwM2Vtc3RzKTtcXG5AQCAtNjY1OCw5ICs2NjYyLDE3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbiBcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cXHUwMDNlcHJpdjtcXG4gXFx0ZW51bSBkc2FfdGFnX3Byb3RvY29sIG9sZF9wcm90b2NvbDtcXG4gXFx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHA7XFxuLVxcdGludCBlcnI7XFxuK1xcdGludCBlcnIgPSAwO1xcbiBcXG4rXFx0LyogVGhlIGVtYmVkZGVkIGFycml2YWwtdGltZS1zdGFtcCBwcm90b2NvbCBpcyBhbiBFRFNBIGV4dGVuc2lvbjogRURTQVxcbitcXHQgKiBpcyB0aGUgbW9kZXJuIHRhZyBmb3JtYXQgZm9yIHRoZXNlIHN3aXRjaGVzLCBzbyBpdCBpcyB0aGUgb25lIHdlXFxuK1xcdCAqIGV4dGVuZDsgdGhlIGxlZ2FjeSBEU0EgdGFnIGlzIGludGVudGlvbmFsbHkgbGVmdCB1bi1leHRlbmRlZC5cXG4rXFx0ICovXFxuIFxcdHN3aXRjaCAocHJvdG8pIHtcXG4rXFx0Y2FzZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUzpcXG4rXFx0XFx0aWYgKCFjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpXFxuK1xcdFxcdFxcdHJldHVybiAtRVBST1RPTk9TVVBQT1JUO1xcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFx0Y2FzZSBEU0FfVEFHX1BST1RPX0VEU0E6XFxuIFxcdFxcdHN3aXRjaCAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZWRzYV9zdXBwb3J0KSB7XFxuIFxcdFxcdGNhc2UgTVY4OEU2WFhYX0VEU0FfVU5TVVBQT1JURUQ6XFxuQEAgLTY2ODksNyArNjcwMSwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG4gXFx0XFx0XFx0Z290byB1bndpbmQ7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbitcXG4rXFx0aWYgKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9zdXBwb3J0KVxcbitcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKGNoaXApO1xcbiBcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byB1bndpbmQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuQEAgLTY2OTksNiArNjcxNiwxNSBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG4gXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbiBcXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX2NwdV9wb3J0X2NvbnRpbnVlX3JldmVyc2UoY3B1X2RwLCBkcylcXG4gXFx0XFx0bXY4OGU2eHh4X3NldHVwX3BvcnRfbW9kZShjaGlwLCBjcHVfZHAtXFx1MDAzZWluZGV4KTtcXG4rXFx0aWYgKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9zdXBwb3J0KSB7XFxuK1xcdFxcdC8qIE5vdGhpbmcgZWxzZSBjYW4gYmUgZG9uZSBoZXJlLCBidXQgbGVhdmluZyBhIHBvcnQgZW1iZWRkaW5nXFxuK1xcdFxcdCAqIHRpbWUgc3RhbXBzIHRoZSBkcml2ZXIgd2lsbCBub3Qgc3RyaXAgY29ycnVwdHMgZXZlcnkgUFRQXFxuK1xcdFxcdCAqIGV2ZW50IGZyYW1lIGl0IHJlY2VpdmVzLCBzbyBtYWtlIHRoZSBmYWlsdXJlIHZpc2libGUuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAobXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKSlcXG4rXFx0XFx0XFx0ZGV2X2VycihjaGlwLVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcdFxcXCJmYWlsZWQgdG8gcmVzdG9yZSBhcnJpdmFsIHRpbWUgc3RhbXAgbW9kZVxcXFxuXFxcIik7XFxuK1xcdH1cXG4gXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXFxuaW5kZXggZTk2NmU3YzRjYzVkZWEuLmM3NWE3MTQ2NGIyMGFiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcXG5AQCAtMTgwLDYgKzE4MCwxMyBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8ge1xcbiBcXHQgKiBwb3J0IDAsIDEgbWVhbnMgaW50ZXJuYWwgUEhZcyByYW5nZSBzdGFydHMgYXQgcG9ydCAxLCBldGNcXG4gXFx0ICovXFxuIFxcdHVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDtcXG4rXFxuK1xcdC8qIFRoZSBzd2l0Y2ggY2FuIGVtYmVkIHRoZSBQVFAgYXJyaXZhbCB0aW1lIHN0YW1wIGluIHRoZSByZXNlcnZlZDJcXG4rXFx0ICogZmllbGQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyLCB3aGljaCB0aGUgZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzXFxuK1xcdCAqIHRhZyBwcm90b2NvbCBzZWxlY3RzLiBPdGhlcndpc2UgYXJyaXZhbCB0aW1lIHN0YW1wcyBhcmUgb25seVxcbitcXHQgKiBhdmFpbGFibGUgZnJvbSB0aGUgc3dpdGNoIHJlZ2lzdGVycy5cXG4rXFx0ICovXFxuK1xcdGJvb2wgc3VwcG9ydHNfcHRwX2VtYmVkZGVkX3RzO1xcbiB9O1xcbiBcXG4gc3RydWN0IG12ODhlNnh4eF9hdHVfZW50cnkge1xcbkBAIC00MTksOSArNDI2LDEyIEBAIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCB7XFxuIFxcdC8qIEdQSU8gcmVzb3VyY2VzICovXFxuIFxcdHU4IGdwaW9fZGF0YVsyXTtcXG4gXFxuLVxcdC8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLlxcbi1cXHQgKiByZWdfbG9jayBtdXN0IGJlIGhlbGQgZm9yIGFueSBvcGVyYXRpb24gdGhhdCByZWFkKClzLlxcbitcXHQvKiBUaGlzIGN5Y2xlY291bnRlciBhYnN0cmFjdHMgdGhlIHN3aXRjaCBQVFAgdGltZS4gcHRwX2Nsb2NrX2xvY2tcXG4rXFx0ICogcHJvdGVjdHMgdHN0YW1wX2NjIGFuZCB0c3RhbXBfdGMuIHRzdGFtcF9jeWNsZXMgY2FjaGVzIHRoZVxcbitcXHQgKiByZXN1bHQgbW9zdCByZWNlbnRseSByZXR1cm5lZCBieSBtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKCkuXFxuIFxcdCAqL1xcbitcXHRzcGlubG9ja190XFx0XFx0cHRwX2Nsb2NrX2xvY2s7XFxuK1xcdHU2NFxcdFxcdFxcdHRzdGFtcF9jeWNsZXM7XFxuIFxcdHN0cnVjdCBjeWNsZWNvdW50ZXJcXHR0c3RhbXBfY2M7XFxuIFxcdHN0cnVjdCB0aW1lY291bnRlclxcdHRzdGFtcF90YztcXG4gXFx0c3RydWN0IGRlbGF5ZWRfd29ya1xcdG92ZXJmbG93X3dvcms7XFxuQEAgLTgxNSw2ICs4MjUsMTQgQEAgc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9oYXNfbGFnKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4gXFx0cmV0dXJuICEhY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZ2xvYmFsMl9hZGRyO1xcbiB9XFxuIFxcbisvKiBXaGV0aGVyIHRoZSBhY3RpdmUgdGFnZ2luZyBwcm90b2NvbCBoYXMgdGhlIHN3aXRjaCBlbWJlZCBhcnJpdmFsIHRpbWUgc3RhbXBzXFxuKyAqIGluIHRoZSBmcmFtZSBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlbSBpbiB0aGUgUFRQIGFycml2YWwgcmVnaXN0ZXJzLlxcbisgKi9cXG4rc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbit7XFxuK1xcdHJldHVybiBjaGlwLVxcdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBtdjg4ZTZ4eHhfaGFzX3RjYW0oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbiB7XFxuIFxcdHJldHVybiAhIWNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXRjYW1fYWRkcjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXFxuaW5kZXggNmU2NDcyYTNiNzVhZDcuLjc0ZWFhZGVlZWI3ODQyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xcbkBAIC0xNSw2ICsxNSw3IEBAXFxuICNpbmNsdWRlIFxcXCJod3RzdGFtcC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicHRwLmhcXFwiXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiBcXG4gI2RlZmluZSBTS0JfUFRQX1RZUEUoX19za2IpICgqKHVuc2lnbmVkIGludCAqKSgoX19za2IpLVxcdTAwM2VjYikpXFxuIFxcbkBAIC05NCw2ICs5NSw3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3NldF9od3RzdGFtcF9jb25maWcoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG4gXFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzO1xcbiBcXHRzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzID0gXFx1MDAyNmNoaXAtXFx1MDAzZXBvcnRfaHd0c3RhbXBbcG9ydF07XFxuIFxcdGJvb2wgdHN0YW1wX2VuYWJsZSA9IGZhbHNlO1xcbitcXHRpbnQgZXJyID0gMDtcXG4gXFxuIFxcdC8qIFByZXZlbnQgdGhlIFRYL1JYIHBhdGhzIGZyb20gdHJ5aW5nIHRvIGludGVyYWN0IHdpdGggdGhlXFxuIFxcdCAqIHRpbWVzdGFtcCBoYXJkd2FyZSB3aGlsZSB3ZSByZWNvbmZpZ3VyZSBpdC5cXG5AQCAtMTQ3LDIwICsxNDksMzAgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbiBcXHRpZiAodHN0YW1wX2VuYWJsZSkge1xcbiBcXHRcXHRjaGlwLVxcdTAwM2VlbmFibGVfY291bnQgKz0gMTtcXG4gXFx0XFx0aWYgKGNoaXAtXFx1MDAzZWVuYWJsZV9jb3VudCA9PSAxIFxcdTAwMjZcXHUwMDI2IHB0cF9vcHMtXFx1MDAzZWdsb2JhbF9lbmFibGUpXFxuLVxcdFxcdFxcdHB0cF9vcHMtXFx1MDAzZWdsb2JhbF9lbmFibGUoY2hpcCk7XFxuLVxcdFxcdGlmIChwdHBfb3BzLVxcdTAwM2Vwb3J0X2VuYWJsZSlcXG4tXFx0XFx0XFx0cHRwX29wcy1cXHUwMDNlcG9ydF9lbmFibGUoY2hpcCwgcG9ydCk7XFxuK1xcdFxcdFxcdGVyciA9IHB0cF9vcHMtXFx1MDAzZWdsb2JhbF9lbmFibGUoY2hpcCk7XFxuK1xcdFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IHB0cF9vcHMtXFx1MDAzZXBvcnRfZW5hYmxlKVxcbitcXHRcXHRcXHRlcnIgPSBwdHBfb3BzLVxcdTAwM2Vwb3J0X2VuYWJsZShjaGlwLCBwb3J0KTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0aWYgKHB0cF9vcHMtXFx1MDAzZXBvcnRfZGlzYWJsZSlcXG4tXFx0XFx0XFx0cHRwX29wcy1cXHUwMDNlcG9ydF9kaXNhYmxlKGNoaXAsIHBvcnQpO1xcbitcXHRcXHRcXHRlcnIgPSBwdHBfb3BzLVxcdTAwM2Vwb3J0X2Rpc2FibGUoY2hpcCwgcG9ydCk7XFxuIFxcdFxcdGNoaXAtXFx1MDAzZWVuYWJsZV9jb3VudCAtPSAxO1xcbiBcXHRcXHRpZiAoY2hpcC1cXHUwMDNlZW5hYmxlX2NvdW50ID09IDAgXFx1MDAyNlxcdTAwMjYgcHRwX29wcy1cXHUwMDNlZ2xvYmFsX2Rpc2FibGUpXFxuIFxcdFxcdFxcdHB0cF9vcHMtXFx1MDAzZWdsb2JhbF9kaXNhYmxlKGNoaXApO1xcbiBcXHR9XFxuIFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbiBcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuIFxcdC8qIE9uY2UgaGFyZHdhcmUgaGFzIGJlZW4gY29uZmlndXJlZCwgZW5hYmxlIHRpbWVzdGFtcCBjaGVja3NcXG4gXFx0ICogaW4gdGhlIFJYL1RYIHBhdGhzLlxcbitcXHQgKlxcbitcXHQgKiBJbiBlbWJlZGRlZCBtb2RlIHRoZSBzd2l0Y2ggc3RhcnRzIG92ZXJ3cml0aW5nIHRoZSBQVFAgaGVhZGVyJ3NcXG4rXFx0ICogcmVzZXJ2ZWQyIGZpZWxkIGFzIHNvb24gYXMgQ0ZHMiBpcyBhcm1lZCBhYm92ZSwgd2hpY2ggaXMgYmVmb3JlIHRoZVxcbitcXHQgKiBSWCBwYXRoIGJlZ2lucyByZXN0b3JpbmcgaXQ7IG9uIHRoZSB3YXkgZG93biB0aGUgUlggcGF0aCBzdG9wc1xcbitcXHQgKiByZXN0b3JpbmcgYmVmb3JlIHRoZSBoYXJkd2FyZSBzdG9wcyBlbWJlZGRpbmcuIEFuIGV2ZW50IGZyYW1lXFxuK1xcdCAqIHJlY2VpdmVkIGluc2lkZSBlaXRoZXIgd2luZG93IGlzIGRlbGl2ZXJlZCB3aXRoIHRoZSBzd2l0Y2gnc1xcbitcXHQgKiBhcnJpdmFsIGNvdW50ZXIgc3RpbGwgaW4gaXRzIGhlYWRlci5cXG4gXFx0ICovXFxuIFxcdGlmICh0c3RhbXBfZW5hYmxlKVxcbiBcXHRcXHRzZXRfYml0KE1WODhFNlhYWF9IV1RTVEFNUF9FTkFCTEVELCBcXHUwMDI2cHMtXFx1MDAzZXN0YXRlKTtcXG5AQCAtMjE2LDYgKzIyOCwxMCBAQCBzdGF0aWMgc3RydWN0IHB0cF9oZWFkZXIgKm12ODhlNnh4eF9zaG91bGRfdHN0YW1wKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0aWYgKCFjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VwdHBfc3VwcG9ydClcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbitcXHQvKiBNYXJ2ZWxsIHN3aXRjaGVzIGRvIG5vdCBzdXBwb3J0IElFRUUgMTU4OC0yMDAyIChQVFB2MSkuICovXFxuK1xcdGlmICgodHlwZSBcXHUwMDI2IFBUUF9DTEFTU19WTUFTSykgIT0gUFRQX0NMQVNTX1YyKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuIFxcdGhkciA9IHB0cF9wYXJzZV9oZWFkZXIoc2tiLCB0eXBlKTtcXG4gXFx0aWYgKCFoZHIpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbkBAIC0yNDUsNiArMjYxLDUyIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZClcXG4gXFx0cmV0dXJuIHRzX3NlcWlkID09IG50b2hzKGhkci1cXHUwMDNlc2VxdWVuY2VfaWQpO1xcbiB9XFxuIFxcbisvKiBSZWNvdmVyIHRoZSBhcnJpdmFsIHRpbWUgdGhlIHN3aXRjaCB3cm90ZSBvdmVyIHRoZSByZXNlcnZlZDIgZmllbGQgb2YgdGhlIFBUUFxcbisgKiBjb21tb24gaGVhZGVyLCByZXN0b3JpbmcgdGhlIGZpZWxkIGFmdGVyd2FyZHMuXFxuKyAqL1xcbitzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1NjQgKm5zKVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBvZmYgPSBNVjg4RTZYWFhfUFRQX0FSUl9UU19PRkZTRVQ7XFxuK1xcdHN0cnVjdCBwdHBfaGVhZGVyICpoZHI7XFxuK1xcbitcXHQqbnMgPSAwO1xcbitcXG4rXFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aGRyID0gcHRwX3BhcnNlX2hlYWRlcihza2IsIFNLQl9QVFBfVFlQRShza2IpKTtcXG4rXFx0aWYgKCFoZHIpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdCpucyA9IGdldF91bmFsaWduZWRfYmUzMigodTggKiloZHIgKyBvZmYpO1xcbitcXHRtZW1zZXQoKHU4ICopaGRyICsgb2ZmLCAwLCA0KTtcXG4rXFx0c2tiX2NoZWNrc3VtX2NvbXBsZXRlX3Vuc2V0KHNrYik7XFxuK1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4rLyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzXFxuKyAqIGlzIG5lZWRlZCwgc28gdGhpcyBydW5zIGlubGluZSBvbiB0aGUgcmVjZWl2ZSBwYXRoIHJhdGhlciB0aGFuIGJlaW5nIGhhbmRlZFxcbisgKiB0byB0aGUgUFRQIHdvcmtlci4gUmV0dXJucyBmYWxzZSBpZiB0aGUgZnJhbWUgY291bGQgbm90IGJlIHJlc3RvcmVkLlxcbisgKi9cXG4rc3RhdGljIGJvb2wgbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbitcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4re1xcbitcXHRzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKnNod3Q7XFxuK1xcdHU2NCBucztcXG4rXFxuK1xcdGlmICghcGFyc2VfZW1iZWRkZWRfdHMoc2tiLCBcXHUwMDI2bnMpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7XFxuK1xcbitcXHRzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpO1xcbitcXHRtZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7XFxuK1xcdHNod3QtXFx1MDAzZWh3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpO1xcbitcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxcbiBcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJlZyxcXG5AQCAtMjg5LDkgKzM1MSw3IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuIFxcdFxcdGlmIChtdjg4ZTZ4eHhfdHNfdmFsaWQoc3RhdHVzKSBcXHUwMDI2XFx1MDAyNiBzZXFfbWF0Y2goc2tiLCBzZXFfaWQpKSB7XFxuIFxcdFxcdFxcdG5zID0gdGltZWhpIFxcdTAwM2NcXHUwMDNjIDE2IHwgdGltZWxvO1xcbiBcXG4tXFx0XFx0XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbi1cXHRcXHRcXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIG5zKTtcXG4tXFx0XFx0XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuK1xcdFxcdFxcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTtcXG4gXFx0XFx0XFx0c2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTtcXG4gXFx0XFx0XFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xcbiBcXHRcXHRcXHRzaHd0LVxcdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcXG5AQCAtMzA4LDcgKzM2OCw2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gXFxuIFxcdHNrYiA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZwcy1cXHUwMDNlcnhfcXVldWUpO1xcbi1cXG4gXFx0aWYgKHNrYilcXG4gXFx0XFx0bXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtXFx1MDAzZWFycjBfc3RzX3JlZyxcXG4gXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuQEAgLTMxOSw5ICszNzgsMTYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbiBcXHRcXHRcXHRcXHQgICBcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlMik7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgaXNfcGRlbGF5X3Jlc3AoY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcXG4rc3RhdGljIGJvb2wgaXNfcGRlbGF5X21zZyhjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKVxcbiB7XFxuLVxcdHJldHVybiAoaGRyLVxcdTAwM2V0c210IFxcdTAwMjYgMHhmKSA9PSAzO1xcbitcXHRzd2l0Y2ggKHB0cF9nZXRfbXNndHlwZShoZHIsIFBUUF9DTEFTU19WMikpIHtcXG4rXFx0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVROlxcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4rXFx0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiB9XFxuIFxcbiBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuQEAgLTM0Myw3ICs0MDksMjIgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXG4gXFx0U0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlO1xcbiBcXG4tXFx0aWYgKGlzX3BkZWxheV9yZXNwKGhkcikpXFxuK1xcdC8qIEVtYmVkZGVkIGFycml2YWwgdGltZXMgY2FuIGJlIHJldHVybmVkIGlubGluZS4gVGhlIHN3aXRjaCBoYXNcXG4rXFx0ICogb3ZlcndyaXR0ZW4gdGhlIHJlc2VydmVkMiBmaWVsZDsgaWYgaXQgY2Fubm90IGJlIHJlc3RvcmVkIHRoZSBmcmFtZVxcbitcXHQgKiBpcyBubyBsb25nZXIgd2hhdCB0aGUgc2VuZGVyIHRyYW5zbWl0dGVkLCBzbyBkcm9wIGl0IHJhdGhlciB0aGFuXFxuK1xcdCAqIHBhc3MgdXAgYSBjb3JydXB0ZWQgaGVhZGVyIHRoYXQgd2lsbCBmYWlsIHRoZSBQVFAtb3Zlci1VRFAgY2hlY2tzdW1cXG4rXFx0ICogYW55d2F5LlxcbitcXHQgKi9cXG4rXFx0aWYgKG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkpIHtcXG4rXFx0XFx0aWYgKCFtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcChjaGlwLCBza2IpKSB7XFxuK1xcdFxcdFxcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fTk9NRU0pO1xcbitcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoaXNfcGRlbGF5X21zZyhoZHIpKVxcbiBcXHRcXHRza2JfcXVldWVfdGFpbChcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlMiwgc2tiKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRza2JfcXVldWVfdGFpbChcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlLCBza2IpO1xcbkBAIC00MDksOSArNDkwLDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuIFxcbiBcXHRtZW1zZXQoXFx1MDAyNnNoaHd0c3RhbXBzLCAwLCBzaXplb2Yoc2hod3RzdGFtcHMpKTtcXG4gXFx0dGltZV9yYXcgPSAoKHUzMilkZXBhcnR1cmVfYmxvY2tbMl0gXFx1MDAzY1xcdTAwM2MgMTYpIHwgZGVwYXJ0dXJlX2Jsb2NrWzFdO1xcbi1cXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuLVxcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90YywgdGltZV9yYXcpO1xcbi1cXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4rXFx0bnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgdGltZV9yYXcpO1xcbiBcXHRzaGh3dHN0YW1wcy5od3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcXG4gXFxuIFxcdGRldl9kYmcoY2hpcC1cXHUwMDNlZGV2LFxcbkBAIC00NTQsNyArNTMzLDkgQEAgbG9uZyBtdjg4ZTZ4eHhfaHd0c3RhbXBfd29yayhzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cClcXG4gXFx0XFx0aWYgKHRlc3RfYml0KE1WODhFNlhYWF9IV1RTVEFNUF9UWF9JTl9QUk9HUkVTUywgXFx1MDAyNnBzLVxcdTAwM2VzdGF0ZSkpXFxuIFxcdFxcdFxcdHJlc3RhcnQgfD0gbXY4OGU2eHh4X3R4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xcbiBcXG4tXFx0XFx0bXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xcbitcXHRcXHQvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGFyZSBhcHBsaWVkIG9uIHRoZSByZWNlaXZlIHBhdGguICovXFxuK1xcdFxcdGlmICghbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSlcXG4rXFx0XFx0XFx0bXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gcmVzdGFydCA/IDEgOiAtMTtcXG5AQCAtNTIzLDE0ICs2MDQsNDMgQEAgaW50IG12ODhlNjE2NV9nbG9iYWxfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4gXFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuIHtcXG4tXFx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcXG4tXFx0XFx0XFx0XFx0XFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLCAwKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbisvKiBSZXR1cm4gdGhlIENGRzIgQXJyVFNNb2RlIGZpZWxkIGZvciB0aGUgYWN0aXZlIGFycml2YWwgdGltZS1zdGFtcCBtb2RlLiAqL1xcbitzdGF0aWMgdTE2IG12ODhlNnh4eF9hcnJfdHNfY2ZnMihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuK3tcXG4rXFx0cmV0dXJuIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkgP1xcbitcXHRcXHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfUkVTRVJWRUQyIDpcXG4rXFx0XFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfQVJSX1RTX0RJU0FCTEVEO1xcbiB9XFxuIFxcbiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuIHtcXG4tXFx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcXG4tXFx0XFx0XFx0XFx0XFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBtdjg4ZTZ4eHhfYXJyX3RzX2NmZzIoY2hpcCkpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxcbkBAIC01NDksNiArNjU5LDcyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3BvcnRfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuKy8qIFByb2dyYW0gdGhlIGhhcmR3YXJlIGZvciB0aGUgYXJyaXZhbCB0aW1lLXN0YW1wIG1vZGUgdGhlIGFjdGl2ZSB0YWdnaW5nXFxuKyAqIHByb3RvY29sIHNlbGVjdHMuIENhbGxlZCBmcm9tIHNldHVwIGFuZCBhZ2FpbiB3aGVuZXZlciB0aGUgcHJvdG9jb2wgY2hhbmdlcyxcXG4rICogYXMgdGhhdCBpcyB3aGF0IGRlY2lkZXMgd2hlcmUgYXJyaXZhbCB0aW1lIHN0YW1wcyBhcmUgZGVsaXZlcmVkLlxcbisgKlxcbisgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSByZWdpc3RlciBsb2NrIGhlbGQuXFxuKyAqL1xcbitpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzO1xcbitcXHRpbnQgZXJyLCByZXQgPSAwO1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdC8qIEluIGVtYmVkZGVkIG1vZGUgdGhlIHN3aXRjaCBzdGFtcHMgZXZlcnkgZXZlbnQgbWVzc2FnZSBpdCBmb3J3YXJkcyxcXG4rXFx0ICogcGVlciBkZWxheSBpbmNsdWRlZCwgc28gbGVhdmUgdGhlIGFycml2YWwgY2FwdHVyZSBwb2ludGVyIGFsb25lXFxuK1xcdCAqIHJhdGhlciB0aGFuIGRpdmVydGluZyBwZWVyIGRlbGF5IG1lc3NhZ2VzIHRvIHRoZSBBUlJJVkFMMSByZWdpc3RlcnMuXFxuK1xcdCAqL1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsXFxuK1xcdFxcdFxcdFxcdCAgbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSA/IDAgOlxcbitcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxcbitcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0aWYgKCFjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG12ODhlNnh4eF9udW1fcG9ydHMoY2hpcCk7ICsraSkge1xcbitcXHRcXHRzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzID0gXFx1MDAyNmNoaXAtXFx1MDAzZXBvcnRfaHd0c3RhbXBbaV07XFxuK1xcbitcXHRcXHQvKiBBbnl0aGluZyBhbHJlYWR5IHF1ZXVlZCB3YXMgcXVldWVkIHVuZGVyIHRoZSBwcmV2aW91cyBtb2RlXFxuK1xcdFxcdCAqIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIG1hdGNoZWQgd2l0aCBhbiBhcnJpdmFsIHRpbWUuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuK1xcdFxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlMik7XFxuK1xcbitcXHRcXHQvKiBUaGUgYXJyaXZhbCByZWdpc3RlcnMga2VlcCBjYXB0dXJpbmcgaW4gZW1iZWRkZWQgbW9kZSB3aXRoXFxuK1xcdFxcdCAqIG5vdGhpbmcgdG8gZHJhaW4gdGhlbSwgc28gY2xlYXIgdGhlIHN0YXR1cyBoZXJlIG9yIHRoZVxcbitcXHRcXHQgKiByZWdpc3RlciBwYXRoIHJlc3VtZXMgb24gYSBzdGFsZSBjYXB0dXJlLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIGksIHB0cF9vcHMtXFx1MDAzZWFycjBfc3RzX3JlZywgMCk7XFxuK1xcdFxcdGlmIChlcnIgXFx1MDAyNlxcdTAwMjYgIXJldClcXG4rXFx0XFx0XFx0cmV0ID0gZXJyO1xcbitcXG4rXFx0XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIGksIHB0cF9vcHMtXFx1MDAzZWFycjFfc3RzX3JlZywgMCk7XFxuK1xcdFxcdGlmIChlcnIgXFx1MDAyNlxcdTAwMjYgIXJldClcXG4rXFx0XFx0XFx0cmV0ID0gZXJyO1xcbitcXG4rXFx0XFx0LyogUG9ydHMgdGhhdCBoYXZlIG5vdCBlbmFibGVkIHRpbWUgc3RhbXBpbmcgcGljayB0aGUgbW9kZSB1cCBpblxcbitcXHRcXHQgKiBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoKS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChwcy1cXHUwMDNldHN0YW1wX2NvbmZpZy5yeF9maWx0ZXIgPT0gSFdUU1RBTVBfRklMVEVSX05PTkUpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0LyogUHJvZ3JhbSBldmVyeSBwb3J0IGV2ZW4gaWYgb25lIGZhaWxzLiBBIHBvcnQgbGVmdCBlbWJlZGRpbmdcXG4rXFx0XFx0ICogdGltZSBzdGFtcHMgdGhhdCB0aGUgZHJpdmVyIG5vIGxvbmdlciBzdHJpcHMgY29ycnVwdHMgdGhlXFxuK1xcdFxcdCAqIFBUUCBoZWFkZXIgb2YgZXZlcnkgZXZlbnQgZnJhbWUgaXQgcmVjZWl2ZXMuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBtdjg4ZTZ4eHhfYXJyX3RzX2NmZzIoY2hpcCkpO1xcbitcXHRcXHRpZiAoZXJyIFxcdTAwMjZcXHUwMDI2ICFyZXQpXFxuK1xcdFxcdFxcdHJldCA9IGVycjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzO1xcbkBAIC01ODQsOSArNzYwLDcgQEAgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHQvKiBVc2UgQVJSSVZBTDEgZm9yIHBlZXIgZGVsYXkgcmVzcG9uc2UgbWVzc2FnZXMuICovXFxuLVxcdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcXG4tXFx0XFx0XFx0XFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxcbmluZGV4IGMzNTk4MjFkNWE2ZWFhLi4yZmU3Yzc0MjliZmYxZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcXG5AQCAtMTMsNiArMTMsOCBAQFxcbiAjaWZuZGVmIF9NVjg4RTZYWFhfSFdUU1RBTVBfSFxcbiAjZGVmaW5lIF9NVjg4RTZYWFhfSFdUU1RBTVBfSFxcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3B0cF9jbGFzc2lmeS5oXFx1MDAzZVxcbitcXG4gI2luY2x1ZGUgXFxcImNoaXAuaFxcXCJcXG4gXFxuIC8qIEdsb2JhbCA2MzUyIFBUUCByZWdpc3RlcnMgKi9cXG5AQCAtNjQsMTAgKzY2LDIxIEBAXFxuIFxcbiAvKiBPZmZzZXQgMHgwMjogUFRQIENvbmZpZ3VyYXRpb24gMiAqL1xcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyXFx0XFx0XFx0XFx0MHgwMlxcbi0jZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0VNQkVEX0FSUklWQUxcXHRcXHQweDEwMDBcXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9ERVBfSVJRX0VOXFx0XFx0MHgwMDAyXFxuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfQVJSX0lSUV9FTlxcdFxcdDB4MDAwMVxcbiBcXG4rLyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSksIENGRzIgYml0cyBbMTU6OF06IGNvbmZpZ3VyZXMgaG93IHRoZVxcbisgKiBzd2l0Y2ggZW1iZWRzIHRoZSBhcnJpdmFsIHRpbWUgc3RhbXAgKFBUUEFycjBUaW1lKSBpbnRvIGVuYWJsZWQgUFRQIGV2ZW50XFxuKyAqIGZyYW1lcy4gQSBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uXFxuKyAqIGhlYWRlciwgYXQgd2hpY2ggdGhlIHN3aXRjaCBvdmVyd3JpdGVzIGZvdXIgYnl0ZXMgaW4gcGxhY2U7IHdlIGFsd2F5cyBwb2ludFxcbisgKiBpdCBhdCB0aGUgaGVhZGVyJ3MgcmVzZXJ2ZWQyIGZpZWxkIHNvIHRoZSBmcmFtZSBsZW5ndGggaXMgbGVmdCBhbG9uZS5cXG4rICovXFxuKyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfT0ZGU0VUXFx0XFx0XFx0XFxcXFxcbitcXHRvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKVxcbisjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19ESVNBQkxFRFxcdFxcdDB4MDAwMFxcbisjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19SRVNFUlZFRDJcXHRcXFxcXFxuK1xcdChNVjg4RTZYWFhfUFRQX0FSUl9UU19PRkZTRVQgXFx1MDAzY1xcdTAwM2MgOClcXG4rXFxuIC8qIE9mZnNldCAweDAzOiBQVFAgTEVEIENvbmZpZ3VyYXRpb24gKi9cXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGR1xcdDB4MDNcXG4gXFxuQEAgLTEyNiw2ICsxMzksNyBAQCBpbnQgbXY4OGU2eHh4X2dldF90c19pbmZvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIFxcbiBsb25nIG12ODhlNnh4eF9od3RzdGFtcF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKTtcXG4gaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xcbitpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xcbiB2b2lkIG12ODhlNnh4eF9od3RzdGFtcF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7XFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCk7XFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpO1xcbkBAIC0xNzIsNiArMTg2LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIGlubGluZSB2b2lkIG12ODhlNnh4eF9od3RzdGFtcF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4ge1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXFxuaW5kZXggZjc2MDM1NzNkM2E5ODQuLjJhN2Y5NzYyNWUzNzU2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXFxuQEAgLTIzMSwxNSArMjMxLDM3IEBAIHN0YXRpYyB2b2lkIG12ODhlNjM1Ml90YWlfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVnbHkpXFxuIFxcbiBcXHQvKiBXZSBvbmx5IGhhdmUgb25lIHRpbWVzdGFtcGluZyBjaGFubmVsLiAqL1xcbiBcXHRldi5pbmRleCA9IDA7XFxuLVxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG4tXFx0ZXYudGltZXN0YW1wID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90YywgcmF3X3RzKTtcXG4tXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuK1xcdGV2LnRpbWVzdGFtcCA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCByYXdfdHMpO1xcbiBcXG4gXFx0cHRwX2Nsb2NrX2V2ZW50KGNoaXAtXFx1MDAzZXB0cF9jbG9jaywgXFx1MDAyNmV2KTtcXG4gb3V0OlxcbiBcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNmNoaXAtXFx1MDAzZXRhaV9ldmVudF93b3JrLCBUQUlfRVZFTlRfV09SS19JTlRFUlZBTCk7XFxuIH1cXG4gXFxuKy8qIFJlZnJlc2ggdGhlIGNhY2hlZCBjb3VudGVyIHZhbHVlIHRoYXQgdGhlIHJlYWQoKSBjYWxsYmFjayByZXR1cm5zLiBUaGVcXG4rICogcmVhZCBjYW5ub3QgYWNxdWlyZSB0aGUgcmVnaXN0ZXIgbG9jayB3aGlsc3QgaG9sZGluZyBwdHBfY2xvY2tfbG9ja1xcbisgKiBiZWNhdXNlIE1ESU8gcmVhZHMgY2FuIHNsZWVwLiBUaGUgY2FsbGVyIG11c3QgaG9sZCByZWdfbG9jaywgd2hpY2hcXG4rICogc2VyaWFsaXplcyBhZ2FpbnN0IHRoZSBvdGhlciB0aW1lY291bnRlciB3cml0ZXJzLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzO1xcbitcXG4rXFx0aWYgKHB0cF9vcHMtXFx1MDAzZWNsb2NrX3JlYWQpXFxuK1xcdFxcdGNoaXAtXFx1MDAzZXRzdGFtcF9jeWNsZXMgPSBwdHBfb3BzLVxcdTAwM2VjbG9ja19yZWFkKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfY2MpO1xcbit9XFxuK1xcbit1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcylcXG4re1xcbitcXHR1NjQgbnM7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4rXFx0bnMgPSB0aW1lY291bnRlcl9jeWMydGltZShcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX3RjLCBjeWNsZXMpO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbitcXG4rXFx0cmV0dXJuIG5zO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxcbiB7XFxuIFxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IHB0cF90b19jaGlwKHB0cCk7XFxuQEAgLTI1OCw5ICsyODAsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcXG4gXFx0ZGlmZiA9IGRpdl91NjQoYWRqLCBjaGlwLVxcdTAwM2VjY19jb2VmZnMtXFx1MDAzZWNjX211bHRfZGVtKTtcXG4gXFxuIFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG4rXFx0bXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTtcXG4gXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbiBcXHR0aW1lY291bnRlcl9yZWFkKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMpO1xcbiBcXHRjaGlwLVxcdTAwM2V0c3RhbXBfY2MubXVsdCA9IG5lZ19hZGogPyBtdWx0IC0gZGlmZiA6IG11bHQgKyBkaWZmO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbiBcXG4gXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuIFxcbkBAIC0yNzEsOCArMjk2LDE2IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXFxuIHtcXG4gXFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTtcXG4gXFxuK1xcdC8qIE5vIHJlZ2lzdGVyIGFjY2VzcyBpcyBuZWVkZWQgaGVyZSwgYnV0IHJlZ19sb2NrIHN0aWxsIHNlcmlhbGlzZXNcXG4rXFx0ICogdGhpcyBhZ2FpbnN0IHRoZSBvdGhlciB0aW1lY291bnRlciB3cml0ZXJzLCB3aGljaCBkcm9wIGl0IG9ubHlcXG4rXFx0ICogYWZ0ZXIgdGhlaXIgaGFyZHdhcmUgcmVhZCBoYXMgY29tcGxldGVkLlxcbitcXHQgKi9cXG4gXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuIFxcdHRpbWVjb3VudGVyX2FkanRpbWUoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90YywgZGVsdGEpO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbitcXG4gXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtMjg1LDcgKzMxOCwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfZ2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG4gXFx0dTY0IG5zO1xcbiBcXG4gXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbitcXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuIFxcdG5zID0gdGltZWNvdW50ZXJfcmVhZChcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX3RjKTtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4rXFxuIFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbiBcXG4gXFx0KnRzID0gbnNfdG9fdGltZXNwZWM2NChucyk7XFxuQEAgLTMwMiw3ICszNDAsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX3NldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuIFxcdG5zID0gdGltZXNwZWM2NF90b19ucyh0cyk7XFxuIFxcbiBcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuK1xcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4gXFx0dGltZWNvdW50ZXJfaW5pdChcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX3RjLCBcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX2NjLCBucyk7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuK1xcbiBcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbkBAIC00NDQsMTQgKzQ4NywxMiBAQCBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgbXY4OGU2MzkwX3B0cF9vcHMgPSB7XFxuIFxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIEhXVFNUQU1QX0ZJTFRFUl9QVFBfVjJfREVMQVlfUkVRKSxcXG4gfTtcXG4gXFxuKy8qIFJldHVybiB0aGUgdmFsdWUgbW9zdCByZWNlbnRseSBmZXRjaGVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKVxcbisgKiByYXRoZXIgdGhhbiByZWFkaW5nIHRoZSBoYXJkd2FyZSBvdmVyIE1ESU8uXFxuKyAqL1xcbiBzdGF0aWMgdTY0IG12ODhlNnh4eF9wdHBfY2xvY2tfcmVhZChzdHJ1Y3QgY3ljbGVjb3VudGVyICpjYylcXG4ge1xcbi1cXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjY190b19jaGlwKGNjKTtcXG4tXFxuLVxcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZXB0cF9vcHMtXFx1MDAzZWNsb2NrX3JlYWQpXFxuLVxcdFxcdHJldHVybiBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZXB0cF9vcHMtXFx1MDAzZWNsb2NrX3JlYWQoY2MpO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuK1xcdHJldHVybiBjY190b19jaGlwKGNjKS1cXHUwMDNldHN0YW1wX2N5Y2xlcztcXG4gfVxcbiBcXG4gLyogV2l0aCBhIDI1ME1IeiBpbnB1dCBjbG9jaywgdGhlIDMyLWJpdCB0aW1lc3RhbXAgY291bnRlciBvdmVyZmxvd3MgaW4gfjE3LjJcXG5AQCAtNDg2LDYgKzUyNywxMiBAQCBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuIFxcdGNoaXAtXFx1MDAzZXRzdGFtcF9jYy5tdWx0XFx0PSBjaGlwLVxcdTAwM2VjY19jb2VmZnMtXFx1MDAzZWNjX211bHQ7XFxuIFxcdGNoaXAtXFx1MDAzZXRzdGFtcF9jYy5zaGlmdFxcdD0gY2hpcC1cXHUwMDNlY2NfY29lZmZzLVxcdTAwM2VjY19zaGlmdDtcXG4gXFxuK1xcdC8qIFByaW1lIHRoZSBjeWNsZSBjb3VudGVyIGNhY2hlIGZvciB0aGUgdGltZWNvdW50ZXJfaW5pdCgpIGJlbG93LlxcbitcXHQgKiBUaGUgY2FsbGVyIGhvbGRzIHJlZ19sb2NrLCBhbmQgbm90aGluZyBjYW4gcmVhY2ggdGhlIFBUUCBjbG9ja1xcbitcXHQgKiB1bnRpbCBwdHBfY2xvY2tfcmVnaXN0ZXIoKSBiZWxvdywgc28gbm8gbG9ja2luZyBpcyBuZWVkZWQgaGVyZS5cXG4rXFx0ICovXFxuK1xcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XFxuK1xcbiBcXHR0aW1lY291bnRlcl9pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfY2MsXFxuIFxcdFxcdFxcdCBrdGltZV90b19ucyhrdGltZV9nZXRfcmVhbCgpKSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxcbmluZGV4IDk1YmRkZGIwYmYzOWY4Li40NDcxOGUxMjBkZTIwYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxcbkBAIC02OCw2ICs2OCw3IEBAXFxuIFxcbiBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xcbiB2b2lkIG12ODhlNnh4eF9wdHBfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xcbit1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7XFxuIFxcbiAjZGVmaW5lIHB0cF90b19jaGlwKHB0cCkgY29udGFpbmVyX29mKHB0cCwgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0ICAgICAgcHRwX2Nsb2NrX2luZm8pXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmhcXG5pbmRleCA4YzE2ZWYyM2NjMTAyYS4uMmRmY2M1NDlkZTI5NjQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvZHNhLmhcXG4rKysgYi9pbmNsdWRlL25ldC9kc2EuaFxcbkBAIC01OSw2ICs1OSw3IEBAIHN0cnVjdCB0Y19hY3Rpb247XFxuICNkZWZpbmUgRFNBX1RBR19QUk9UT19NWExfR1NXMVhYX1ZBTFVFXFx0XFx0MzFcXG4gI2RlZmluZSBEU0FfVEFHX1BST1RPX01YTDg2Ml9WQUxVRVxcdFxcdDMyXFxuICNkZWZpbmUgRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFXFx0XFx0MzNcXG4rI2RlZmluZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRVxcdDM0XFxuIFxcbiBlbnVtIGRzYV90YWdfcHJvdG9jb2wge1xcbiBcXHREU0FfVEFHX1BST1RPX05PTkVcXHRcXHQ9IERTQV9UQUdfUFJPVE9fTk9ORV9WQUxVRSxcXG5AQCAtOTUsNiArOTYsNyBAQCBlbnVtIGRzYV90YWdfcHJvdG9jb2wge1xcbiBcXHREU0FfVEFHX1BST1RPX01YTF9HU1cxWFhcXHQ9IERTQV9UQUdfUFJPVE9fTVhMX0dTVzFYWF9WQUxVRSxcXG4gXFx0RFNBX1RBR19QUk9UT19NWEw4NjJcXHRcXHQ9IERTQV9UQUdfUFJPVE9fTVhMODYyX1ZBTFVFLFxcbiBcXHREU0FfVEFHX1BST1RPX05FVENcXHRcXHQ9IERTQV9UQUdfUFJPVE9fTkVUQ19WQUxVRSxcXG4rXFx0RFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSxcXG4gfTtcXG4gXFxuIHN0cnVjdCBkc2Ffc3dpdGNoO1xcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19kc2EuYyBiL25ldC9kc2EvdGFnX2RzYS5jXFxuaW5kZXggZDVmZmVlMzVmYmI1M2IuLjc0OTBlY2MwNGFhNTc0IDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX2RzYS5jXFxuKysrIGIvbmV0L2RzYS90YWdfZHNhLmNcXG5AQCAtNDAyLDYgKzQwMiwyMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfbmV0ZGV2X29wcyA9IHtcXG4gXFxuIERTQV9UQUdfRFJJVkVSKGVkc2FfbmV0ZGV2X29wcyk7XFxuIE1PRFVMRV9BTElBU19EU0FfVEFHX0RSSVZFUihEU0FfVEFHX1BST1RPX0VEU0EsIEVEU0FfTkFNRSk7XFxuK1xcbisjZGVmaW5lIEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FXFx0XFxcImVkc2EtcHRwLXJlc2VydmVkMi10c1xcXCJcXG4rXFxuKy8qIFNhbWUgd2lyZSBmb3JtYXQgYXMgRURTQSwgZXhjZXB0IHRoYXQgdGhlIHN3aXRjaCBvdmVyd3JpdGVzIHRoZSByZXNlcnZlZDJcXG4rICogZmllbGQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyIHdpdGggdGhlIGZyYW1lJ3MgYXJyaXZhbCB0aW1lIHN0YW1wLlxcbisgKi9cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyA9IHtcXG4rXFx0Lm5hbWVcXHRcXHQgPSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSxcXG4rXFx0LnByb3RvXFx0XFx0ID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXFxuK1xcdC54bWl0XFx0XFx0ID0gZWRzYV94bWl0LFxcbitcXHQucmN2XFx0XFx0ID0gZWRzYV9yY3YsXFxuK1xcdC5uZWVkZWRfaGVhZHJvb20gPSBFRFNBX0hMRU4sXFxuK307XFxuK1xcbitEU0FfVEFHX0RSSVZFUihlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyk7XFxuK01PRFVMRV9BTElBU19EU0FfVEFHX0RSSVZFUihEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUyxcXG4rXFx0XFx0XFx0ICAgIEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FKTtcXG4gI2VuZGlmXFx0LyogQ09ORklHX05FVF9EU0FfVEFHX0VEU0EgKi9cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgZHNhX3RhZ19kcml2ZXIgKmRzYV90YWdfZHJpdmVyc1tdID0ge1xcbkBAIC00MTAsNiArNDI3LDcgQEAgc3RhdGljIHN0cnVjdCBkc2FfdGFnX2RyaXZlciAqZHNhX3RhZ19kcml2ZXJzW10gPSB7XFxuICNlbmRpZlxcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9UQUdfRURTQSlcXG4gXFx0XFx1MDAyNkRTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9uZXRkZXZfb3BzKSxcXG4rXFx0XFx1MDAyNkRTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpLFxcbiAjZW5kaWZcXG4gfTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIyOjQ4LjY2NzkzOTIwN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc5NTI4NjExODUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgpIGFuZCBhZGRzIGEgbmV3IERTQSB0YWcgcHJvdG9jb2wgaW4gbmV0L2RzYS90YWdfZHNhLmMuIFRoZSBNYXJ2ZWxsIDg4RTZ4eHggZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBoYXJkd2FyZSBzd2l0Y2hlcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gVGhlIG5ldyB0YWcgcHJvdG9jb2wgaW4gdGFnX2RzYS5jIHNpbXBseSByZXVzZXMgZXhpc3RpbmcgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZnVuY3Rpb25zIChlZHNhX3htaXQsIGVkc2FfcmN2KSBhbmQgY29udGFpbnMgbm8gbmV3IGV4ZWN1dGFibGUgbG9naWMuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZWU3M2U0NmY0MWYyMjU2NTYzYjdjNGMwM2YxYzNlMWRhMTBkOTViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTQ6MjI6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9kc2EtcG9ydC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbFxuaW5kZXggNDgwMTIwNDY5OTUzNGIuLjhkMTJjOGYxYmQ1MWVjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbFxuQEAgLTUzLDYgKzUzLDcgQEAgcHJvcGVydGllczpcbiAgICAgZW51bTpcbiAgICAgICAtIGRzYVxuICAgICAgIC0gZWRzYVxuKyAgICAgIC0gZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzXG4gICAgICAgLSBvY2Vsb3RcbiAgICAgICAtIG9jZWxvdC04MDIxcVxuICAgICAgIC0gcnRsOF80XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuaW5kZXggODBiODc3Yzc0NTEzZDYuLmU5MjUyNGJlYjQwYzQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG5AQCAtMzI3MSw3ICszMjcxLDggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXBfcG9ydF9tb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4gXHRpZiAoY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19EU0EpXG4gXHRcdHJldHVybiBtdjg4ZTZ4eHhfc2V0X3BvcnRfbW9kZV9kc2EoY2hpcCwgcG9ydCk7XG4gXG4tXHRpZiAoY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBKVxuK1x0aWYgKGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQSB8fFxuK1x0ICAgIGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTKVxuIFx0XHRyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZWRzYShjaGlwLCBwb3J0KTtcbiBcbiBcdHJldHVybiAtRUlOVkFMO1xuQEAgLTYzNzAsNiArNjM3MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XG4gXHRcdC5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsXG4gXHRcdC5wdHBfc3VwcG9ydCA9IHRydWUsXG4gXHRcdC5vcHMgPSBcdTAwMjZtdjg4ZTYzNDFfb3BzLFxuK1x0XHQuc3VwcG9ydHNfcHRwX2VtYmVkZGVkX3RzID0gdHJ1ZSxcbiBcdH0sXG4gXG4gXHRbTVY4OEU2MzUwXSA9IHtcbkBAIC02NDQ3LDYgKzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzUyX29wcyxcbitcdFx0LnN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cyA9IHRydWUsXG4gXHR9LFxuIFx0W01WODhFNjM2MV0gPSB7XG4gXHRcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNjEsXG5AQCAtNjYzNSw2ICs2NjM4LDcgQEAgc3RhdGljIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqbXY4OGU2eHh4X2FsbG9jX2NoaXAoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0Y2hpcC1cdTAwM2VkZXYgPSBkZXY7XG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNmNoaXAtXHUwMDNlcmVnX2xvY2spO1xuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjaGlwLVx1MDAzZW1kaW9zKTtcbiBcdGlkcl9pbml0KFx1MDAyNmNoaXAtXHUwMDNlcG9saWNpZXMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2hpcC1cdTAwM2Vtc3RzKTtcbkBAIC02NjU4LDkgKzY2NjIsMTcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfY2hhbmdlX3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cdTAwM2Vwcml2O1xuIFx0ZW51bSBkc2FfdGFnX3Byb3RvY29sIG9sZF9wcm90b2NvbDtcbiBcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwO1xuLVx0aW50IGVycjtcbitcdGludCBlcnIgPSAwO1xuIFxuK1x0LyogVGhlIGVtYmVkZGVkIGFycml2YWwtdGltZS1zdGFtcCBwcm90b2NvbCBpcyBhbiBFRFNBIGV4dGVuc2lvbjogRURTQVxuK1x0ICogaXMgdGhlIG1vZGVybiB0YWcgZm9ybWF0IGZvciB0aGVzZSBzd2l0Y2hlcywgc28gaXQgaXMgdGhlIG9uZSB3ZVxuK1x0ICogZXh0ZW5kOyB0aGUgbGVnYWN5IERTQSB0YWcgaXMgaW50ZW50aW9uYWxseSBsZWZ0IHVuLWV4dGVuZGVkLlxuK1x0ICovXG4gXHRzd2l0Y2ggKHByb3RvKSB7XG4rXHRjYXNlIERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTOlxuK1x0XHRpZiAoIWNoaXAtXHUwMDNlaW5mby1cdTAwM2VzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpXG4rXHRcdFx0cmV0dXJuIC1FUFJPVE9OT1NVUFBPUlQ7XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBEU0FfVEFHX1BST1RPX0VEU0E6XG4gXHRcdHN3aXRjaCAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWVkc2Ffc3VwcG9ydCkge1xuIFx0XHRjYXNlIE1WODhFNlhYWF9FRFNBX1VOU1VQUE9SVEVEOlxuQEAgLTY2ODksNyArNjcwMSwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiBcdFx0XHRnb3RvIHVud2luZDtcbiBcdFx0fVxuIFx0fVxuK1xuK1x0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VwdHBfc3VwcG9ydClcbitcdFx0ZXJyID0gbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKTtcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuK1x0aWYgKGVycilcbitcdFx0Z290byB1bndpbmQ7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbkBAIC02Njk5LDYgKzY3MTYsMTUgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfY2hhbmdlX3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4gXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX2NwdV9wb3J0X2NvbnRpbnVlX3JldmVyc2UoY3B1X2RwLCBkcylcbiBcdFx0bXY4OGU2eHh4X3NldHVwX3BvcnRfbW9kZShjaGlwLCBjcHVfZHAtXHUwMDNlaW5kZXgpO1xuK1x0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VwdHBfc3VwcG9ydCkge1xuK1x0XHQvKiBOb3RoaW5nIGVsc2UgY2FuIGJlIGRvbmUgaGVyZSwgYnV0IGxlYXZpbmcgYSBwb3J0IGVtYmVkZGluZ1xuK1x0XHQgKiB0aW1lIHN0YW1wcyB0aGUgZHJpdmVyIHdpbGwgbm90IHN0cmlwIGNvcnJ1cHRzIGV2ZXJ5IFBUUFxuK1x0XHQgKiBldmVudCBmcmFtZSBpdCByZWNlaXZlcywgc28gbWFrZSB0aGUgZmFpbHVyZSB2aXNpYmxlLlxuK1x0XHQgKi9cbitcdFx0aWYgKG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoY2hpcCkpXG4rXHRcdFx0ZGV2X2VycihjaGlwLVx1MDAzZWRldixcbitcdFx0XHRcdFwiZmFpbGVkIHRvIHJlc3RvcmUgYXJyaXZhbCB0aW1lIHN0YW1wIG1vZGVcXG5cIik7XG4rXHR9XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuaW5kZXggZTk2NmU3YzRjYzVkZWEuLmM3NWE3MTQ2NGIyMGFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG5AQCAtMTgwLDYgKzE4MCwxMyBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8ge1xuIFx0ICogcG9ydCAwLCAxIG1lYW5zIGludGVybmFsIFBIWXMgcmFuZ2Ugc3RhcnRzIGF0IHBvcnQgMSwgZXRjXG4gXHQgKi9cbiBcdHVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDtcbitcbitcdC8qIFRoZSBzd2l0Y2ggY2FuIGVtYmVkIHRoZSBQVFAgYXJyaXZhbCB0aW1lIHN0YW1wIGluIHRoZSByZXNlcnZlZDJcbitcdCAqIGZpZWxkIG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2hpY2ggdGhlIGVkc2EtcHRwLXJlc2VydmVkMi10c1xuK1x0ICogdGFnIHByb3RvY29sIHNlbGVjdHMuIE90aGVyd2lzZSBhcnJpdmFsIHRpbWUgc3RhbXBzIGFyZSBvbmx5XG4rXHQgKiBhdmFpbGFibGUgZnJvbSB0aGUgc3dpdGNoIHJlZ2lzdGVycy5cbitcdCAqL1xuK1x0Ym9vbCBzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHM7XG4gfTtcbiBcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XG5AQCAtNDE5LDkgKzQyNiwxMiBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAge1xuIFx0LyogR1BJTyByZXNvdXJjZXMgKi9cbiBcdHU4IGdwaW9fZGF0YVsyXTtcbiBcbi1cdC8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLlxuLVx0ICogcmVnX2xvY2sgbXVzdCBiZSBoZWxkIGZvciBhbnkgb3BlcmF0aW9uIHRoYXQgcmVhZCgpcy5cbitcdC8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLiBwdHBfY2xvY2tfbG9ja1xuK1x0ICogcHJvdGVjdHMgdHN0YW1wX2NjIGFuZCB0c3RhbXBfdGMuIHRzdGFtcF9jeWNsZXMgY2FjaGVzIHRoZVxuK1x0ICogcmVzdWx0IG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgYnkgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcygpLlxuIFx0ICovXG4rXHRzcGlubG9ja190XHRcdHB0cF9jbG9ja19sb2NrO1xuK1x0dTY0XHRcdFx0dHN0YW1wX2N5Y2xlcztcbiBcdHN0cnVjdCBjeWNsZWNvdW50ZXJcdHRzdGFtcF9jYztcbiBcdHN0cnVjdCB0aW1lY291bnRlclx0dHN0YW1wX3RjO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29ya1x0b3ZlcmZsb3dfd29yaztcbkBAIC04MTUsNiArODI1LDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtdjg4ZTZ4eHhfaGFzX2xhZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRyZXR1cm4gISFjaGlwLVx1MDAzZWluZm8tXHUwMDNlZ2xvYmFsMl9hZGRyO1xuIH1cbiBcbisvKiBXaGV0aGVyIHRoZSBhY3RpdmUgdGFnZ2luZyBwcm90b2NvbCBoYXMgdGhlIHN3aXRjaCBlbWJlZCBhcnJpdmFsIHRpbWUgc3RhbXBzXG4rICogaW4gdGhlIGZyYW1lIGluc3RlYWQgb2YgbGVhdmluZyB0aGVtIGluIHRoZSBQVFAgYXJyaXZhbCByZWdpc3RlcnMuXG4rICovXG4rc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuK3tcbitcdHJldHVybiBjaGlwLVx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUztcbit9XG4rXG4gc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9oYXNfdGNhbShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4ge1xuIFx0cmV0dXJuICEhY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXRjYW1fYWRkcjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li43NGVhYWRlZWViNzg0MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG5AQCAtMTUsNiArMTUsNyBAQFxuICNpbmNsdWRlIFwiaHd0c3RhbXAuaFwiXG4gI2luY2x1ZGUgXCJwdHAuaFwiXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuIFxuICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS1cdTAwM2VjYikpXG4gXG5AQCAtOTQsNiArOTUsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9zZXRfaHd0c3RhbXBfY29uZmlnKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG4gXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHM7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzID0gXHUwMDI2Y2hpcC1cdTAwM2Vwb3J0X2h3dHN0YW1wW3BvcnRdO1xuIFx0Ym9vbCB0c3RhbXBfZW5hYmxlID0gZmFsc2U7XG4rXHRpbnQgZXJyID0gMDtcbiBcbiBcdC8qIFByZXZlbnQgdGhlIFRYL1JYIHBhdGhzIGZyb20gdHJ5aW5nIHRvIGludGVyYWN0IHdpdGggdGhlXG4gXHQgKiB0aW1lc3RhbXAgaGFyZHdhcmUgd2hpbGUgd2UgcmVjb25maWd1cmUgaXQuXG5AQCAtMTQ3LDIwICsxNDksMzAgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuIFx0aWYgKHRzdGFtcF9lbmFibGUpIHtcbiBcdFx0Y2hpcC1cdTAwM2VlbmFibGVfY291bnQgKz0gMTtcbiBcdFx0aWYgKGNoaXAtXHUwMDNlZW5hYmxlX2NvdW50ID09IDEgXHUwMDI2XHUwMDI2IHB0cF9vcHMtXHUwMDNlZ2xvYmFsX2VuYWJsZSlcbi1cdFx0XHRwdHBfb3BzLVx1MDAzZWdsb2JhbF9lbmFibGUoY2hpcCk7XG4tXHRcdGlmIChwdHBfb3BzLVx1MDAzZXBvcnRfZW5hYmxlKVxuLVx0XHRcdHB0cF9vcHMtXHUwMDNlcG9ydF9lbmFibGUoY2hpcCwgcG9ydCk7XG4rXHRcdFx0ZXJyID0gcHRwX29wcy1cdTAwM2VnbG9iYWxfZW5hYmxlKGNoaXApO1xuK1x0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgcHRwX29wcy1cdTAwM2Vwb3J0X2VuYWJsZSlcbitcdFx0XHRlcnIgPSBwdHBfb3BzLVx1MDAzZXBvcnRfZW5hYmxlKGNoaXAsIHBvcnQpO1xuIFx0fSBlbHNlIHtcbiBcdFx0aWYgKHB0cF9vcHMtXHUwMDNlcG9ydF9kaXNhYmxlKVxuLVx0XHRcdHB0cF9vcHMtXHUwMDNlcG9ydF9kaXNhYmxlKGNoaXAsIHBvcnQpO1xuK1x0XHRcdGVyciA9IHB0cF9vcHMtXHUwMDNlcG9ydF9kaXNhYmxlKGNoaXAsIHBvcnQpO1xuIFx0XHRjaGlwLVx1MDAzZWVuYWJsZV9jb3VudCAtPSAxO1xuIFx0XHRpZiAoY2hpcC1cdTAwM2VlbmFibGVfY291bnQgPT0gMCBcdTAwMjZcdTAwMjYgcHRwX29wcy1cdTAwM2VnbG9iYWxfZGlzYWJsZSlcbiBcdFx0XHRwdHBfb3BzLVx1MDAzZWdsb2JhbF9kaXNhYmxlKGNoaXApO1xuIFx0fVxuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuIFx0LyogT25jZSBoYXJkd2FyZSBoYXMgYmVlbiBjb25maWd1cmVkLCBlbmFibGUgdGltZXN0YW1wIGNoZWNrc1xuIFx0ICogaW4gdGhlIFJYL1RYIHBhdGhzLlxuK1x0ICpcbitcdCAqIEluIGVtYmVkZGVkIG1vZGUgdGhlIHN3aXRjaCBzdGFydHMgb3ZlcndyaXRpbmcgdGhlIFBUUCBoZWFkZXInc1xuK1x0ICogcmVzZXJ2ZWQyIGZpZWxkIGFzIHNvb24gYXMgQ0ZHMiBpcyBhcm1lZCBhYm92ZSwgd2hpY2ggaXMgYmVmb3JlIHRoZVxuK1x0ICogUlggcGF0aCBiZWdpbnMgcmVzdG9yaW5nIGl0OyBvbiB0aGUgd2F5IGRvd24gdGhlIFJYIHBhdGggc3RvcHNcbitcdCAqIHJlc3RvcmluZyBiZWZvcmUgdGhlIGhhcmR3YXJlIHN0b3BzIGVtYmVkZGluZy4gQW4gZXZlbnQgZnJhbWVcbitcdCAqIHJlY2VpdmVkIGluc2lkZSBlaXRoZXIgd2luZG93IGlzIGRlbGl2ZXJlZCB3aXRoIHRoZSBzd2l0Y2gnc1xuK1x0ICogYXJyaXZhbCBjb3VudGVyIHN0aWxsIGluIGl0cyBoZWFkZXIuXG4gXHQgKi9cbiBcdGlmICh0c3RhbXBfZW5hYmxlKVxuIFx0XHRzZXRfYml0KE1WODhFNlhYWF9IV1RTVEFNUF9FTkFCTEVELCBcdTAwMjZwcy1cdTAwM2VzdGF0ZSk7XG5AQCAtMjE2LDYgKzIyOCwxMCBAQCBzdGF0aWMgc3RydWN0IHB0cF9oZWFkZXIgKm12ODhlNnh4eF9zaG91bGRfdHN0YW1wKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXB0cF9zdXBwb3J0KVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbitcdC8qIE1hcnZlbGwgc3dpdGNoZXMgZG8gbm90IHN1cHBvcnQgSUVFRSAxNTg4LTIwMDIgKFBUUHYxKS4gKi9cbitcdGlmICgodHlwZSBcdTAwMjYgUFRQX0NMQVNTX1ZNQVNLKSAhPSBQVFBfQ0xBU1NfVjIpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuIFx0aGRyID0gcHRwX3BhcnNlX2hlYWRlcihza2IsIHR5cGUpO1xuIFx0aWYgKCFoZHIpXG4gXHRcdHJldHVybiBOVUxMO1xuQEAgLTI0NSw2ICsyNjEsNTIgQEAgc3RhdGljIGludCBzZXFfbWF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRzX3NlcWlkKVxuIFx0cmV0dXJuIHRzX3NlcWlkID09IG50b2hzKGhkci1cdTAwM2VzZXF1ZW5jZV9pZCk7XG4gfVxuIFxuKy8qIFJlY292ZXIgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIHdyb3RlIG92ZXIgdGhlIHJlc2VydmVkMiBmaWVsZCBvZiB0aGUgUFRQXG4rICogY29tbW9uIGhlYWRlciwgcmVzdG9yaW5nIHRoZSBmaWVsZCBhZnRlcndhcmRzLlxuKyAqL1xuK3N0YXRpYyBib29sIHBhcnNlX2VtYmVkZGVkX3RzKHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpXG4re1xuK1x0dW5zaWduZWQgaW50IG9mZiA9IE1WODhFNlhYWF9QVFBfQVJSX1RTX09GRlNFVDtcbitcdHN0cnVjdCBwdHBfaGVhZGVyICpoZHI7XG4rXG4rXHQqbnMgPSAwO1xuK1xuK1x0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aGRyID0gcHRwX3BhcnNlX2hlYWRlcihza2IsIFNLQl9QVFBfVFlQRShza2IpKTtcbitcdGlmICghaGRyKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHQqbnMgPSBnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICsgb2ZmKTtcbitcdG1lbXNldCgodTggKiloZHIgKyBvZmYsIDAsIDQpO1xuK1x0c2tiX2NoZWNrc3VtX2NvbXBsZXRlX3Vuc2V0KHNrYik7XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4rLyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzXG4rICogaXMgbmVlZGVkLCBzbyB0aGlzIHJ1bnMgaW5saW5lIG9uIHRoZSByZWNlaXZlIHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgaGFuZGVkXG4rICogdG8gdGhlIFBUUCB3b3JrZXIuIFJldHVybnMgZmFsc2UgaWYgdGhlIGZyYW1lIGNvdWxkIG5vdCBiZSByZXN0b3JlZC5cbisgKi9cbitzdGF0aWMgYm9vbCBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4rXHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbit7XG4rXHRzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKnNod3Q7XG4rXHR1NjQgbnM7XG4rXG4rXHRpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKHNrYiwgXHUwMDI2bnMpKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7XG4rXG4rXHRzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpO1xuK1x0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuK1x0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbitcbitcdHJldHVybiB0cnVlO1xuK31cbitcbiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcmVnLFxuQEAgLTI4OSw5ICszNTEsNyBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRpZiAobXY4OGU2eHh4X3RzX3ZhbGlkKHN0YXR1cykgXHUwMDI2XHUwMDI2IHNlcV9tYXRjaChza2IsIHNlcV9pZCkpIHtcbiBcdFx0XHRucyA9IHRpbWVoaSBcdTAwM2NcdTAwM2MgMTYgfCB0aW1lbG87XG4gXG4tXHRcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0XHRcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIG5zKTtcbi1cdFx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbitcdFx0XHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7XG4gXHRcdFx0c2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTtcbiBcdFx0XHRtZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7XG4gXHRcdFx0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbkBAIC0zMDgsNyArMzY4LDYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcbiBcdHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbi1cbiBcdGlmIChza2IpXG4gXHRcdG12ODhlNnh4eF9nZXRfcnh0cyhjaGlwLCBwcywgc2tiLCBwdHBfb3BzLVx1MDAzZWFycjBfc3RzX3JlZyxcbiBcdFx0XHRcdCAgIFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbkBAIC0zMTksOSArMzc4LDE2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdFx0XHRcdCAgIFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlMik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgaXNfcGRlbGF5X3Jlc3AoY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcbitzdGF0aWMgYm9vbCBpc19wZGVsYXlfbXNnKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpXG4ge1xuLVx0cmV0dXJuIChoZHItXHUwMDNldHNtdCBcdTAwMjYgMHhmKSA9PSAzO1xuK1x0c3dpdGNoIChwdHBfZ2V0X21zZ3R5cGUoaGRyLCBQVFBfQ0xBU1NfVjIpKSB7XG4rXHRjYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVE6XG4rXHRcdGZhbGx0aHJvdWdoO1xuK1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4gfVxuIFxuIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbkBAIC0zNDMsNyArNDA5LDIyIEBAIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcbiBcdFNLQl9QVFBfVFlQRShza2IpID0gdHlwZTtcbiBcbi1cdGlmIChpc19wZGVsYXlfcmVzcChoZHIpKVxuK1x0LyogRW1iZWRkZWQgYXJyaXZhbCB0aW1lcyBjYW4gYmUgcmV0dXJuZWQgaW5saW5lLiBUaGUgc3dpdGNoIGhhc1xuK1x0ICogb3ZlcndyaXR0ZW4gdGhlIHJlc2VydmVkMiBmaWVsZDsgaWYgaXQgY2Fubm90IGJlIHJlc3RvcmVkIHRoZSBmcmFtZVxuK1x0ICogaXMgbm8gbG9uZ2VyIHdoYXQgdGhlIHNlbmRlciB0cmFuc21pdHRlZCwgc28gZHJvcCBpdCByYXRoZXIgdGhhblxuK1x0ICogcGFzcyB1cCBhIGNvcnJ1cHRlZCBoZWFkZXIgdGhhdCB3aWxsIGZhaWwgdGhlIFBUUC1vdmVyLVVEUCBjaGVja3N1bVxuK1x0ICogYW55d2F5LlxuK1x0ICovXG4rXHRpZiAobXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSkge1xuK1x0XHRpZiAoIW12ODhlNnh4eF9wdHBfcnhfdGltZXN0YW1wKGNoaXAsIHNrYikpIHtcbitcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX05PTUVNKTtcbitcdFx0XHRyZXR1cm4gdHJ1ZTtcbitcdFx0fVxuK1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4rXHRpZiAoaXNfcGRlbGF5X21zZyhoZHIpKVxuIFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIsIHNrYik7XG4gXHRlbHNlXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlLCBza2IpO1xuQEAgLTQwOSw5ICs0OTAsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcbiBcdG1lbXNldChcdTAwMjZzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7XG4gXHR0aW1lX3JhdyA9ICgodTMyKWRlcGFydHVyZV9ibG9ja1syXSBcdTAwM2NcdTAwM2MgMTYpIHwgZGVwYXJ0dXJlX2Jsb2NrWzFdO1xuLVx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0bnMgPSB0aW1lY291bnRlcl9jeWMydGltZShcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgdGltZV9yYXcpO1xuLVx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4rXHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCB0aW1lX3Jhdyk7XG4gXHRzaGh3dHN0YW1wcy5od3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbiBcbiBcdGRldl9kYmcoY2hpcC1cdTAwM2VkZXYsXG5AQCAtNDU0LDcgKzUzMyw5IEBAIGxvbmcgbXY4OGU2eHh4X2h3dHN0YW1wX3dvcmsoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHApXG4gXHRcdGlmICh0ZXN0X2JpdChNVjg4RTZYWFhfSFdUU1RBTVBfVFhfSU5fUFJPR1JFU1MsIFx1MDAyNnBzLVx1MDAzZXN0YXRlKSlcbiBcdFx0XHRyZXN0YXJ0IHw9IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcbiBcbi1cdFx0bXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xuK1x0XHQvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGFyZSBhcHBsaWVkIG9uIHRoZSByZWNlaXZlIHBhdGguICovXG4rXHRcdGlmICghbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSlcbitcdFx0XHRtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmVzdGFydCA/IDEgOiAtMTtcbkBAIC01MjMsMTQgKzYwNCw0MyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuK1x0aW50IGVycjtcbitcbitcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbitcdFx0XHRcdCAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLCAwKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rLyogUmV0dXJuIHRoZSBDRkcyIEFyclRTTW9kZSBmaWVsZCBmb3IgdGhlIGFjdGl2ZSBhcnJpdmFsIHRpbWUtc3RhbXAgbW9kZS4gKi9cbitzdGF0aWMgdTE2IG12ODhlNnh4eF9hcnJfdHNfY2ZnMihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4re1xuK1x0cmV0dXJuIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkgP1xuK1x0XHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfUkVTRVJWRUQyIDpcbitcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfQVJSX1RTX0RJU0FCTEVEO1xuIH1cbiBcbiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XG4rXHRpbnQgZXJyO1xuK1xuK1x0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLFxuK1x0XHRcdFx0ICAgICAgIG12ODhlNnh4eF9hcnJfdHNfY2ZnMihjaGlwKSk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxuK1x0XHRcdFx0ICAgICAgIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5AQCAtNTQ5LDYgKzY1OSw3MiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLyogUHJvZ3JhbSB0aGUgaGFyZHdhcmUgZm9yIHRoZSBhcnJpdmFsIHRpbWUtc3RhbXAgbW9kZSB0aGUgYWN0aXZlIHRhZ2dpbmdcbisgKiBwcm90b2NvbCBzZWxlY3RzLiBDYWxsZWQgZnJvbSBzZXR1cCBhbmQgYWdhaW4gd2hlbmV2ZXIgdGhlIHByb3RvY29sIGNoYW5nZXMsXG4rICogYXMgdGhhdCBpcyB3aGF0IGRlY2lkZXMgd2hlcmUgYXJyaXZhbCB0aW1lIHN0YW1wcyBhcmUgZGVsaXZlcmVkLlxuKyAqXG4rICogTXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVnaXN0ZXIgbG9jayBoZWxkLlxuKyAqL1xuK2ludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHM7XG4rXHRpbnQgZXJyLCByZXQgPSAwO1xuK1x0aW50IGk7XG4rXG4rXHQvKiBJbiBlbWJlZGRlZCBtb2RlIHRoZSBzd2l0Y2ggc3RhbXBzIGV2ZXJ5IGV2ZW50IG1lc3NhZ2UgaXQgZm9yd2FyZHMsXG4rXHQgKiBwZWVyIGRlbGF5IGluY2x1ZGVkLCBzbyBsZWF2ZSB0aGUgYXJyaXZhbCBjYXB0dXJlIHBvaW50ZXIgYWxvbmVcbitcdCAqIHJhdGhlciB0aGFuIGRpdmVydGluZyBwZWVyIGRlbGF5IG1lc3NhZ2VzIHRvIHRoZSBBUlJJVkFMMSByZWdpc3RlcnMuXG4rXHQgKi9cbitcdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbitcdFx0XHRcdCAgbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSA/IDAgOlxuK1x0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVRIHxcbitcdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0aWYgKCFjaGlwLVx1MDAzZWluZm8tXHUwMDNlc3VwcG9ydHNfcHRwX2VtYmVkZGVkX3RzKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG12ODhlNnh4eF9udW1fcG9ydHMoY2hpcCk7ICsraSkge1xuK1x0XHRzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzID0gXHUwMDI2Y2hpcC1cdTAwM2Vwb3J0X2h3dHN0YW1wW2ldO1xuK1xuK1x0XHQvKiBBbnl0aGluZyBhbHJlYWR5IHF1ZXVlZCB3YXMgcXVldWVkIHVuZGVyIHRoZSBwcmV2aW91cyBtb2RlXG4rXHRcdCAqIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIG1hdGNoZWQgd2l0aCBhbiBhcnJpdmFsIHRpbWUuXG4rXHRcdCAqL1xuK1x0XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuK1x0XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUyKTtcbitcbitcdFx0LyogVGhlIGFycml2YWwgcmVnaXN0ZXJzIGtlZXAgY2FwdHVyaW5nIGluIGVtYmVkZGVkIG1vZGUgd2l0aFxuK1x0XHQgKiBub3RoaW5nIHRvIGRyYWluIHRoZW0sIHNvIGNsZWFyIHRoZSBzdGF0dXMgaGVyZSBvciB0aGVcbitcdFx0ICogcmVnaXN0ZXIgcGF0aCByZXN1bWVzIG9uIGEgc3RhbGUgY2FwdHVyZS5cbitcdFx0ICovXG4rXHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBpLCBwdHBfb3BzLVx1MDAzZWFycjBfc3RzX3JlZywgMCk7XG4rXHRcdGlmIChlcnIgXHUwMDI2XHUwMDI2ICFyZXQpXG4rXHRcdFx0cmV0ID0gZXJyO1xuK1xuK1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgcHRwX29wcy1cdTAwM2VhcnIxX3N0c19yZWcsIDApO1xuK1x0XHRpZiAoZXJyIFx1MDAyNlx1MDAyNiAhcmV0KVxuK1x0XHRcdHJldCA9IGVycjtcbitcbitcdFx0LyogUG9ydHMgdGhhdCBoYXZlIG5vdCBlbmFibGVkIHRpbWUgc3RhbXBpbmcgcGljayB0aGUgbW9kZSB1cCBpblxuK1x0XHQgKiBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoKS5cbitcdFx0ICovXG4rXHRcdGlmIChwcy1cdTAwM2V0c3RhbXBfY29uZmlnLnJ4X2ZpbHRlciA9PSBIV1RTVEFNUF9GSUxURVJfTk9ORSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0LyogUHJvZ3JhbSBldmVyeSBwb3J0IGV2ZW4gaWYgb25lIGZhaWxzLiBBIHBvcnQgbGVmdCBlbWJlZGRpbmdcbitcdFx0ICogdGltZSBzdGFtcHMgdGhhdCB0aGUgZHJpdmVyIG5vIGxvbmdlciBzdHJpcHMgY29ycnVwdHMgdGhlXG4rXHRcdCAqIFBUUCBoZWFkZXIgb2YgZXZlcnkgZXZlbnQgZnJhbWUgaXQgcmVjZWl2ZXMuXG4rXHRcdCAqL1xuK1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXG4rXHRcdFx0XHRcdCAgICAgICBtdjg4ZTZ4eHhfYXJyX3RzX2NmZzIoY2hpcCkpO1xuK1x0XHRpZiAoZXJyIFx1MDAyNlx1MDAyNiAhcmV0KVxuK1x0XHRcdHJldCA9IGVycjtcbitcdH1cbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcHRwX29wcztcbkBAIC01ODQsOSArNzYwLDcgQEAgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0LyogVXNlIEFSUklWQUwxIGZvciBwZWVyIGRlbGF5IHJlc3BvbnNlIG1lc3NhZ2VzLiAqL1xuLVx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxuLVx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcbitcdGVyciA9IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoY2hpcCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLjJmZTdjNzQyOWJmZjFmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbkBAIC0xMyw2ICsxMyw4IEBAXG4gI2lmbmRlZiBfTVY4OEU2WFhYX0hXVFNUQU1QX0hcbiAjZGVmaW5lIF9NVjg4RTZYWFhfSFdUU1RBTVBfSFxuIFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbGFzc2lmeS5oXHUwMDNlXG4rXG4gI2luY2x1ZGUgXCJjaGlwLmhcIlxuIFxuIC8qIEdsb2JhbCA2MzUyIFBUUCByZWdpc3RlcnMgKi9cbkBAIC02NCwxMCArNjYsMjEgQEBcbiBcbiAvKiBPZmZzZXQgMHgwMjogUFRQIENvbmZpZ3VyYXRpb24gMiAqL1xuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJcdFx0XHRcdDB4MDJcbi0jZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0VNQkVEX0FSUklWQUxcdFx0MHgxMDAwXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9ERVBfSVJRX0VOXHRcdDB4MDAwMlxuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfQVJSX0lSUV9FTlx0XHQweDAwMDFcbiBcbisvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXG4rICogc3dpdGNoIGVtYmVkcyB0aGUgYXJyaXZhbCB0aW1lIHN0YW1wIChQVFBBcnIwVGltZSkgaW50byBlbmFibGVkIFBUUCBldmVudFxuKyAqIGZyYW1lcy4gQSBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uXG4rICogaGVhZGVyLCBhdCB3aGljaCB0aGUgc3dpdGNoIG92ZXJ3cml0ZXMgZm91ciBieXRlcyBpbiBwbGFjZTsgd2UgYWx3YXlzIHBvaW50XG4rICogaXQgYXQgdGhlIGhlYWRlcidzIHJlc2VydmVkMiBmaWVsZCBzbyB0aGUgZnJhbWUgbGVuZ3RoIGlzIGxlZnQgYWxvbmUuXG4rICovXG4rI2RlZmluZSBNVjg4RTZYWFhfUFRQX0FSUl9UU19PRkZTRVRcdFx0XHRcXFxuK1x0b2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMilcbisjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19ESVNBQkxFRFx0XHQweDAwMDBcbisjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19SRVNFUlZFRDJcdFxcXG4rXHQoTVY4OEU2WFhYX1BUUF9BUlJfVFNfT0ZGU0VUIFx1MDAzY1x1MDAzYyA4KVxuK1xuIC8qIE9mZnNldCAweDAzOiBQVFAgTEVEIENvbmZpZ3VyYXRpb24gKi9cbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9MRURfQ0ZHXHQweDAzXG4gXG5AQCAtMTI2LDYgKzEzOSw3IEBAIGludCBtdjg4ZTZ4eHhfZ2V0X3RzX2luZm8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcbiBsb25nIG12ODhlNnh4eF9od3RzdGFtcF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKTtcbiBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7XG4raW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbiB2b2lkIG12ODhlNnh4eF9od3RzdGFtcF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7XG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KTtcbiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZGlzYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KTtcbkBAIC0xNzIsNiArMTg2LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBtdjg4ZTZ4eHhfaHd0c3RhbXBfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4ge1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuY1xuaW5kZXggZjc2MDM1NzNkM2E5ODQuLjJhN2Y5NzYyNWUzNzU2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuY1xuQEAgLTIzMSwxNSArMjMxLDM3IEBAIHN0YXRpYyB2b2lkIG12ODhlNjM1Ml90YWlfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVnbHkpXG4gXG4gXHQvKiBXZSBvbmx5IGhhdmUgb25lIHRpbWVzdGFtcGluZyBjaGFubmVsLiAqL1xuIFx0ZXYuaW5kZXggPSAwO1xuLVx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0ZXYudGltZXN0YW1wID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIHJhd190cyk7XG4tXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbitcdGV2LnRpbWVzdGFtcCA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCByYXdfdHMpO1xuIFxuIFx0cHRwX2Nsb2NrX2V2ZW50KGNoaXAtXHUwMDNlcHRwX2Nsb2NrLCBcdTAwMjZldik7XG4gb3V0OlxuIFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNmNoaXAtXHUwMDNldGFpX2V2ZW50X3dvcmssIFRBSV9FVkVOVF9XT1JLX0lOVEVSVkFMKTtcbiB9XG4gXG4rLyogUmVmcmVzaCB0aGUgY2FjaGVkIGNvdW50ZXIgdmFsdWUgdGhhdCB0aGUgcmVhZCgpIGNhbGxiYWNrIHJldHVybnMuIFRoZVxuKyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2tcbisgKiBiZWNhdXNlIE1ESU8gcmVhZHMgY2FuIHNsZWVwLiBUaGUgY2FsbGVyIG11c3QgaG9sZCByZWdfbG9jaywgd2hpY2hcbisgKiBzZXJpYWxpemVzIGFnYWluc3QgdGhlIG90aGVyIHRpbWVjb3VudGVyIHdyaXRlcnMuXG4rICovXG4rc3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4re1xuK1x0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzO1xuK1xuK1x0aWYgKHB0cF9vcHMtXHUwMDNlY2xvY2tfcmVhZClcbitcdFx0Y2hpcC1cdTAwM2V0c3RhbXBfY3ljbGVzID0gcHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX2NjKTtcbit9XG4rXG4rdTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpXG4re1xuK1x0dTY0IG5zO1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuK1x0bnMgPSB0aW1lY291bnRlcl9jeWMydGltZShcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgY3ljbGVzKTtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuK1xuK1x0cmV0dXJuIG5zO1xuK31cbitcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxuIHtcbiBcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IHB0cF90b19jaGlwKHB0cCk7XG5AQCAtMjU4LDkgKzI4MCwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxuIFx0ZGlmZiA9IGRpdl91NjQoYWRqLCBjaGlwLVx1MDAzZWNjX2NvZWZmcy1cdTAwM2VjY19tdWx0X2RlbSk7XG4gXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4rXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xuIFxuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0dGltZWNvdW50ZXJfcmVhZChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90Yyk7XG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5tdWx0ID0gbmVnX2FkaiA/IG11bHQgLSBkaWZmIDogbXVsdCArIGRpZmY7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuIFxuQEAgLTI3MSw4ICsyOTYsMTYgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkanRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbiB7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBwdHBfdG9fY2hpcChwdHApO1xuIFxuK1x0LyogTm8gcmVnaXN0ZXIgYWNjZXNzIGlzIG5lZWRlZCBoZXJlLCBidXQgcmVnX2xvY2sgc3RpbGwgc2VyaWFsaXNlc1xuK1x0ICogdGhpcyBhZ2FpbnN0IHRoZSBvdGhlciB0aW1lY291bnRlciB3cml0ZXJzLCB3aGljaCBkcm9wIGl0IG9ubHlcbitcdCAqIGFmdGVyIHRoZWlyIGhhcmR3YXJlIHJlYWQgaGFzIGNvbXBsZXRlZC5cbitcdCAqL1xuIFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0dGltZWNvdW50ZXJfYWRqdGltZShcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgZGVsdGEpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4rXG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTI4NSw3ICszMTgsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2dldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4gXHR1NjQgbnM7XG4gXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4rXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0bnMgPSB0aW1lY291bnRlcl9yZWFkKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjKTtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuK1xuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG4gXHQqdHMgPSBuc190b190aW1lc3BlYzY0KG5zKTtcbkBAIC0zMDIsNyArMzQwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuIFx0bnMgPSB0aW1lc3BlYzY0X3RvX25zKHRzKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbitcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHR0aW1lY291bnRlcl9pbml0KFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF9jYywgbnMpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4rXG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTQ0NCwxNCArNDg3LDEyIEBAIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyBtdjg4ZTYzOTBfcHRwX29wcyA9IHtcbiBcdFx0KDEgXHUwMDNjXHUwMDNjIEhXVFNUQU1QX0ZJTFRFUl9QVFBfVjJfREVMQVlfUkVRKSxcbiB9O1xuIFxuKy8qIFJldHVybiB0aGUgdmFsdWUgbW9zdCByZWNlbnRseSBmZXRjaGVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKVxuKyAqIHJhdGhlciB0aGFuIHJlYWRpbmcgdGhlIGhhcmR3YXJlIG92ZXIgTURJTy5cbisgKi9cbiBzdGF0aWMgdTY0IG12ODhlNnh4eF9wdHBfY2xvY2tfcmVhZChzdHJ1Y3QgY3ljbGVjb3VudGVyICpjYylcbiB7XG4tXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjY190b19jaGlwKGNjKTtcbi1cbi1cdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHMtXHUwMDNlY2xvY2tfcmVhZClcbi1cdFx0cmV0dXJuIGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKGNjKTtcbi1cbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIGNjX3RvX2NoaXAoY2MpLVx1MDAzZXRzdGFtcF9jeWNsZXM7XG4gfVxuIFxuIC8qIFdpdGggYSAyNTBNSHogaW5wdXQgY2xvY2ssIHRoZSAzMi1iaXQgdGltZXN0YW1wIGNvdW50ZXIgb3ZlcmZsb3dzIGluIH4xNy4yXG5AQCAtNDg2LDYgKzUyNywxMiBAQCBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5tdWx0XHQ9IGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHQ7XG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5zaGlmdFx0PSBjaGlwLVx1MDAzZWNjX2NvZWZmcy1cdTAwM2VjY19zaGlmdDtcbiBcbitcdC8qIFByaW1lIHRoZSBjeWNsZSBjb3VudGVyIGNhY2hlIGZvciB0aGUgdGltZWNvdW50ZXJfaW5pdCgpIGJlbG93LlxuK1x0ICogVGhlIGNhbGxlciBob2xkcyByZWdfbG9jaywgYW5kIG5vdGhpbmcgY2FuIHJlYWNoIHRoZSBQVFAgY2xvY2tcbitcdCAqIHVudGlsIHB0cF9jbG9ja19yZWdpc3RlcigpIGJlbG93LCBzbyBubyBsb2NraW5nIGlzIG5lZWRlZCBoZXJlLlxuK1x0ICovXG4rXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xuK1xuIFx0dGltZWNvdW50ZXJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MsXG4gXHRcdFx0IGt0aW1lX3RvX25zKGt0aW1lX2dldF9yZWFsKCkpKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuaW5kZXggOTViZGRkYjBiZjM5ZjguLjQ0NzE4ZTEyMGRlMjBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuQEAgLTY4LDYgKzY4LDcgQEBcbiBcbiBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xuIHZvaWQgbXY4OGU2eHh4X3B0cF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7XG4rdTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpO1xuIFxuICNkZWZpbmUgcHRwX3RvX2NoaXAocHRwKSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsXHRcXFxuIFx0XHRcdFx0ICAgICAgcHRwX2Nsb2NrX2luZm8pXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZHNhLmggYi9pbmNsdWRlL25ldC9kc2EuaFxuaW5kZXggOGMxNmVmMjNjYzEwMmEuLjJkZmNjNTQ5ZGUyOTY0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvZHNhLmhcbisrKyBiL2luY2x1ZGUvbmV0L2RzYS5oXG5AQCAtNTksNiArNTksNyBAQCBzdHJ1Y3QgdGNfYWN0aW9uO1xuICNkZWZpbmUgRFNBX1RBR19QUk9UT19NWExfR1NXMVhYX1ZBTFVFXHRcdDMxXG4gI2RlZmluZSBEU0FfVEFHX1BST1RPX01YTDg2Ml9WQUxVRVx0XHQzMlxuICNkZWZpbmUgRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFXHRcdDMzXG4rI2RlZmluZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRVx0MzRcbiBcbiBlbnVtIGRzYV90YWdfcHJvdG9jb2wge1xuIFx0RFNBX1RBR19QUk9UT19OT05FXHRcdD0gRFNBX1RBR19QUk9UT19OT05FX1ZBTFVFLFxuQEAgLTk1LDYgKzk2LDcgQEAgZW51bSBkc2FfdGFnX3Byb3RvY29sIHtcbiBcdERTQV9UQUdfUFJPVE9fTVhMX0dTVzFYWFx0PSBEU0FfVEFHX1BST1RPX01YTF9HU1cxWFhfVkFMVUUsXG4gXHREU0FfVEFHX1BST1RPX01YTDg2Mlx0XHQ9IERTQV9UQUdfUFJPVE9fTVhMODYyX1ZBTFVFLFxuIFx0RFNBX1RBR19QUk9UT19ORVRDXHRcdD0gRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFLFxuK1x0RFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSxcbiB9O1xuIFxuIHN0cnVjdCBkc2Ffc3dpdGNoO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2RzYS5jIGIvbmV0L2RzYS90YWdfZHNhLmNcbmluZGV4IGQ1ZmZlZTM1ZmJiNTNiLi43NDkwZWNjMDRhYTU3NCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2RzYS5jXG4rKysgYi9uZXQvZHNhL3RhZ19kc2EuY1xuQEAgLTQwMiw2ICs0MDIsMjMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX25ldGRldl9vcHMgPSB7XG4gXG4gRFNBX1RBR19EUklWRVIoZWRzYV9uZXRkZXZfb3BzKTtcbiBNT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBLCBFRFNBX05BTUUpO1xuK1xuKyNkZWZpbmUgRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUVcdFwiZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzXCJcbitcbisvKiBTYW1lIHdpcmUgZm9ybWF0IGFzIEVEU0EsIGV4Y2VwdCB0aGF0IHRoZSBzd2l0Y2ggb3ZlcndyaXRlcyB0aGUgcmVzZXJ2ZWQyXG4rICogZmllbGQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyIHdpdGggdGhlIGZyYW1lJ3MgYXJyaXZhbCB0aW1lIHN0YW1wLlxuKyAqL1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMgPSB7XG4rXHQubmFtZVx0XHQgPSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSxcbitcdC5wcm90b1x0XHQgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUyxcbitcdC54bWl0XHRcdCA9IGVkc2FfeG1pdCxcbitcdC5yY3ZcdFx0ID0gZWRzYV9yY3YsXG4rXHQubmVlZGVkX2hlYWRyb29tID0gRURTQV9ITEVOLFxuK307XG4rXG4rRFNBX1RBR19EUklWRVIoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpO1xuK01PRFVMRV9BTElBU19EU0FfVEFHX0RSSVZFUihEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUyxcbitcdFx0XHQgICAgRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUpO1xuICNlbmRpZlx0LyogQ09ORklHX05FVF9EU0FfVEFHX0VEU0EgKi9cbiBcbiBzdGF0aWMgc3RydWN0IGRzYV90YWdfZHJpdmVyICpkc2FfdGFnX2RyaXZlcnNbXSA9IHtcbkBAIC00MTAsNiArNDI3LDcgQEAgc3RhdGljIHN0cnVjdCBkc2FfdGFnX2RyaXZlciAqZHNhX3RhZ19kcml2ZXJzW10gPSB7XG4gI2VuZGlmXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfVEFHX0VEU0EpXG4gXHRcdTAwMjZEU0FfVEFHX0RSSVZFUl9OQU1FKGVkc2FfbmV0ZGV2X29wcyksXG4rXHRcdTAwMjZEU0FfVEFHX0RSSVZFUl9OQU1FKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKSxcbiAjZW5kaWZcbiB9O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjI6NDguNjY3OTQxNzQ3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM2MTU4MDEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIFZpcnR1YWxpemF0aW9uIEltcGFjdCBvZiBhIE5ldyBEU0EgVGFnIFByb3RvY29sKipcblxuT2theSwgc28gd2UndmUgZ290IGEgbmV3IHBhdGNoIGludHJvZHVjaW5nIGBlZHNhLXB0cC1yZXNlcnZlZDItdHNgLCB3aGljaCBpcyBhIERTQSB0YWcgcHJvdG9jb2wuIExvb2tzIGxpa2UgaXQncyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gIGFuZCBgbmV0L2RzYS90YWdfZHNhLmNgLiAgUmlnaHQsIHRoYXQgbWVhbnMgaXQncyBhIGRyaXZlciBmb3IgdGhlIE1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2hlcy4gSW50ZXJlc3RpbmcuIEl0IHNlZW1zIHdlIGFyZSBzdXBwb3J0aW5nIFBUUCBhcnJpdmFsIHRpbWVzdGFtcHMgaW4gdGhlIGByZXNlcnZlZDJgIGZpZWxkIG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlci4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIHRoZSBuZXR3b3JrIGRyaXZlci5cblxuTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24sIGFzIGFsd2F5czogaG93IGlzb2xhdGVkIGlzIHRoaXM/IEdpdmVuIHRoYXQgaXQncyBhIERTQSBpbXBsZW1lbnRhdGlvbiwgaXQgaW5oZXJlbnRseSByZWxpZXMgb24gYSBwaHlzaWNhbCBzd2l0Y2ggZGV2aWNlLiAgTXkgbWFpbiBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpcyBnb2luZyB0byBiZSByZXByb2R1Y2libGUsIGFuZCBpZiB0aGlzIHdpbGwgY2F1c2UgaXNzdWVzIGRvd24gdGhlIGxpbmUgd2l0aCB0aGUgY29kZS4gQ2FuIHRoaXMgYmUgcmVhY2hlZCBhbmQgdGVzdGVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyAgRFNBLCBieSBpdHMgdmVyeSBuYXR1cmUsIG5lZWRzIHRoZSBzd2l0Y2guIFRoZSBxdWVzdGlvbiBpczogaXMgYG12ODhlNnh4eGAgZW11bGF0ZWQgaW4gUUVNVT8gSSBkb3VidCBpdC5cblxuTGV0J3MgZG8gYSBxdWljayBzZWFyY2ggdG8gc2VlIGlmIGFueSBRRU1VIGVtdWxhdGlvbiBleGlzdHMgZm9yIHRoZXNlIHNwZWNpZmljIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hlcy4gIEZyYW5rbHksIGl0J3MgcmFyZSB0byBmaW5kIHN1Y2ggZGV0YWlsZWQgaGFyZHdhcmUgZW11bGF0aW9uIGluIFFFTVUsIGVzcGVjaWFsbHkgZm9yIHNvbWV0aGluZyBhcyBzcGVjaWFsaXplZCBhcyBhbiBFdGhlcm5ldCBzd2l0Y2guIEl0IHRlbmRzIHRvIGJlIGFic3RyYWN0ZWQgYXQgYSBoaWdoZXIgbGF5ZXIuICBXZSdyZSBnb2luZyB0byBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbGwgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIGl0c2VsZiBmb3IgYG12ODhlNnh4eGAganVzdCB0byBiZSBjZXJ0YWluLiBJcyB0aGlzIGRyaXZlciBwdXJlbHkgYSBoYXJkd2FyZSBkcml2ZXI/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDkzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjI6NTYuMDI5NTI0OTk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Njc2OTYzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXY4OGU2eHh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMDE0MSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9NzM9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzQtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NzU6c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9MjE9b2JqLXlcXHRcXHRcXHRcXHQrPSBtaWNyb2NoaXAvXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjIyOm9iai15XFx0XFx0XFx0XFx0Kz0gbXY4OGU2eHh4L1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS0yMy1vYmoteVxcdFxcdFxcdFxcdCs9IG14bDg2Mnh4L1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oLTUtICpcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmg6NjogKiBCYXNlZCBvbiBtdjg4ZTZ4eHguaFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC03LSAqIENvcHlyaWdodCAoYykgMjAwOCBNYXJ2ZWxsIFNlbWljb25kdWN0b3JcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWCkgKz0gbXY4OGU2eHh4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjM6bXY4OGU2eHh4LW9ianMgOj0gY2hpcC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo0Om12ODhlNnh4eC1vYmpzICs9IGRldmxpbmsub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NTptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwxLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjY6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMV9hdHUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Nzptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwxX3Z0dS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo4Om12ODhlNnh4eC1vYmpzICs9IGdsb2JhbDIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6OTptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyX2F2Yi5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMDptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyX3NjcmF0Y2gub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTE6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgKz0gaHd0c3RhbXAub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTI6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX0xFRFMpICs9IGxlZHMub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTM6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYxODUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTQ6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYzNTIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTU6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYzOXgub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTY6bXY4OGU2eHh4LW9ianMgKz0gcGh5Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE3Om12ODhlNnh4eC1vYmpzICs9IHBvcnQub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTg6bXY4OGU2eHh4LW9ianMgKz0gcG9ydF9oaWRkZW4ub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTk6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgKz0gcHRwLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIwOm12ODhlNnh4eC1vYmpzICs9IHNlcmRlcy5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMTptdjg4ZTZ4eHgtb2JqcyArPSBzbWkub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjI6bXY4OGU2eHh4LW9ianMgKz0gc3dpdGNoZGV2Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIzOm12ODhlNnh4eC1vYmpzICs9IHRyYWNlLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI0Om12ODhlNnh4eC1vYmpzICs9IHRjZmxvd2VyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI1Om12ODhlNnh4eC1vYmpzICs9IHRjYW0ub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvZHNhL212ODhlNnh4eC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5OnN0YXRpYyB2b2lkIGFzc2VydF9yZWdfbG9jayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTc6aW50IG12ODhlNnh4eF9yZWFkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzOlxcdGVyciA9IG12ODhlNnh4eF9zbWlfcmVhZChjaGlwLCBhZGRyLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjczOmludCBtdjg4ZTZ4eHhfd3JpdGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3OTpcXHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3dyaXRlKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk6aW50IG12ODhlNnh4eF93YWl0X21hc2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MC1cXHRcXHRcXHR1MTYgbWFzaywgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwMS1cXHRmb3IgKGkgPSAwOyB0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSB8fCAoaSBcXHUwMDNjIDIpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMDI6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3JlYWQoY2hpcCwgYWRkciwgcmVnLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTAzLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTE1OlxcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyNjppbnQgbXY4OGU2eHh4X3dhaXRfYml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI3LVxcdFxcdCAgICAgICBpbnQgYml0LCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTI5OlxcdHJldHVybiBtdjg4ZTZ4eHhfd2FpdF9tYXNrKGNoaXAsIGFkZHIsIHJlZywgQklUKGJpdCksXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTMwLVxcdFxcdFxcdFxcdCAgIHZhbCA/IEJJVChiaXQpIDogMHgwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzM6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNTpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM3LVxcdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZjaGlwLVxcdTAwM2VtZGlvcyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzg6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMsIGxpc3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzOS1cXHRpZiAoIW1kaW9fYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NTpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0Ni17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ3OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0OC1cXHR1bnNpZ25lZCBpbnQgbiA9IGQtXFx1MDAzZWh3aXJxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTUyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1MzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU0LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTU6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU2LVxcdHVuc2lnbmVkIGludCBuID0gZC1cXHUwMDNlaHdpcnE7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTYxOnN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MDpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcxOlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MjpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xODYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg3OlxcdFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxODg6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZjdGwxKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xODktXFx0XFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTAtXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTkxOlxcdFxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5Mi11bmxvY2s6XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTkzOlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5NC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjAyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwMzpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA1OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRldl9pZDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA3OlxcdHJldHVybiBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOC19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTEte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMjpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE0OlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTUtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfc3luY191bmxvY2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxOC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyMC1cXHR1MTYgbWFzayA9IEdFTk1BU0soY2hpcC1cXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMjQ6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzMTpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIHJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzUtb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzNjpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzctfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzOC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzk6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXAgPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQwOlxcdC5uYW1lXFx0XFx0XFx0PSBcXFwibXY4OGU2eHh4LWcxXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDE6XFx0LmlycV9tYXNrXFx0XFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX21hc2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQyOlxcdC5pcnFfdW5tYXNrXFx0XFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDM6XFx0LmlycV9idXNfbG9ja1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDQ6XFx0LmlycV9idXNfc3luY191bmxvY2tcXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0NS19O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ4LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaXJxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNTE6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZC1cXHUwMDNlaG9zdF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjA6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYxOlxcdC5tYXBcXHQ9IG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX21hcCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjItXFx0LnhsYXRlXFx0PSBpcnFfZG9tYWluX3hsYXRlX3R3b2NlbGwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjUtLyogVG8gYmUgY2FsbGVkIHdpdGggcmVnX2xvY2sgaGVsZCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2NjpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjcwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3MTpcXHRtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXFx1MDAyNm1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3Mi1cXHRtYXNrIFxcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjczOlxcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI4MzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkxOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTI6XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTM6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk0LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDMtXFx0XFx0TlVMTCwgY2hpcC1cXHUwMDNlZzFfaXJxLm5pcnFzLCAwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMwNDpcXHRcXHRcXHUwMDI2bXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzLCBjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDUtXFx0aWYgKCFjaGlwLVxcdTAwM2VnMV9pcnEuZG9tYWluKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxMTpcXHRjaGlwLVxcdTAwM2VnMV9pcnEuY2hpcCA9IG12ODhlNnh4eF9nMV9pcnFfY2hpcDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTItXFx0Y2hpcC1cXHUwMDNlZzFfaXJxLm1hc2tlZCA9IH4wO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTQ6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxOS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjA6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNC1cXHQvKiBSZWFkaW5nIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIGNsZWFycyAobW9zdCBvZikgdGhlbSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyNTpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzMi1cXHRtYXNrIFxcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzMzOlxcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM0NjpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzUyOlxcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzYyLVxcdHNucHJpbnRmKGNoaXAtXFx1MDAzZWlycV9uYW1lLCBzaXplb2YoY2hpcC1cXHUwMDNlaXJxX25hbWUpLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2MzpcXHRcXHQgXFxcIm12ODhlNnh4eC0lc1xcXCIsIGRldl9uYW1lKGNoaXAtXFx1MDAzZWRldikpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2NC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjU6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY2LVxcdGVyciA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtXFx1MDAzZWlycSwgTlVMTCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjc6XFx0XFx0XFx0XFx0ICAgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4sXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY4LVxcdFxcdFxcdFxcdCAgIElSUUZfT05FU0hPVCB8IElSUUZfU0hBUkVELFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OS1cXHRcXHRcXHRcXHQgICBjaGlwLVxcdTAwM2VpcnFfbmFtZSwgY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzcwOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzEtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzI6XFx0XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbChzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3OC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNvbnRhaW5lcl9vZih3b3JrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDpcXHRcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgxLVxcdFxcdFxcdFxcdFxcdFxcdCAgIGlycV9wb2xsX3dvcmsud29yayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgyOlxcdG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4ODpzdGF0aWMgaW50IG12ODhlNnh4eF9pcnFfcG9sbF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTI6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTYtXFx0a3RocmVhZF9pbml0X2RlbGF5ZWRfd29yayhcXHUwMDI2Y2hpcC1cXHUwMDNlaXJxX3BvbGxfd29yayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTc6XFx0XFx0XFx0XFx0ICBtdjg4ZTZ4eHhfaXJxX3BvbGwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQwOC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MDk6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxMC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE0OlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTU6XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTY6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE3LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDIwLVxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDQwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ0MTpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3NldHVwX21hYyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0Mi1cXHRcXHRcXHRcXHQgICAgaW50IGxpbmssIGludCBzcGVlZCwgaW50IGR1cGxleCwgaW50IHBhdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDY3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ2ODpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsIG1vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2OS1yZXN0b3JlX2xpbms6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDc2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDgzOnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDkxLVxcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VmYW1pbHkgPT0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5MjpcXHRcXHRyZXR1cm4gbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDk0OlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTA1PXN0YXRpYyBjb25zdCB1OCBtdjg4ZTYxODVfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUxNTpzdGF0aWMgdm9pZCBtdjg4ZTYwOTVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MjEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTIyOlxcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIzLVxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfTUlJLCBjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUzMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MzQ6c3RhdGljIHZvaWQgbXY4OGU2MTg1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU0ODpzdGF0aWMgY29uc3QgdTggbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NDktXFx0W01WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9NSUlfUEhZXVxcdD0gUEhZX0lOVEVSRkFDRV9NT0RFX1JFVk1JSSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZSh1OCBjbW9kZSwgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2NC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY1OlxcdGlmIChjbW9kZSBcXHUwMDNjIEFSUkFZX1NJWkUobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY2OlxcdCAgICBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0pXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY3OlxcdFxcdF9fc2V0X2JpdChtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0sIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY4LVxcdGVsc2UgaWYgKGNtb2RlID09IE1WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9SR01JSSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTU3Mj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU3Mzptdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzQtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODA6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4MS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjIyOnN0YXRpYyB2b2lkIG12ODhlNjI1MF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIzLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyNTpcXHRpZiAoIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI2LVxcdFxcdG12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhjaGlwLCBwb3J0LCBjb25maWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzMTpzdGF0aWMgdm9pZCBtdjg4ZTYzNTFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzYtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjM3OlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0MzpzdGF0aWMgaW50IG12ODhlNjN4eF9nZXRfcG9ydF9zZXJkZXNfY21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0ODpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTYtXFx0dmFsID0gcmVnIFxcdTAwMjYgfk1WODhFNlhYWF9QT1JUX1NUU19QSFlfREVURUNUO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY1NzpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU4LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjYxOlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2dmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NS1cXHQvKiBSZXN0b3JlIFBIWV9ERVRFQ1QgdmFsdWUgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjY6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjcyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY3MzpzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3NC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzktXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjgwOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk1LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2OTY6XFx0XFx0XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwMDpzdGF0aWMgdm9pZCBtdjg4ZTYzMnhfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDYtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzA3OlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE4LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MTk6XFx0XFx0XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyMzpzdGF0aWMgdm9pZCBtdjg4ZTYzNDFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjgtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzI5OlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0NTpzdGF0aWMgdm9pZCBtdjg4ZTYzOTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0Ni1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTAtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzUxOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc2NzpzdGF0aWMgdm9pZCBtdjg4ZTYzOTB4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjgtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODAyOnN0YXRpYyB2b2lkIG12ODhlNjM5M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwMy1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MTE6XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVxcdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ2OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0Ny1cXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ4LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NDk6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUyLVxcdGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19nZXRfY2FwcyhjaGlwLCBwb3J0LCBjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MzpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODU1OlxcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU2LVxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz04NjQ9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY1Om12ODhlNnh4eF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjYtXFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjgtXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4Njk6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg3MC1cXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODc5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19wcmVwYXJlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4MC1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODItXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4ODM6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4NC1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5My1cXHQgICAgY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk0OlxcdFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTUtXFx0XFx0ZXJyID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk2LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTElOS19GT1JDRURfRE9XTik7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk3OlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTAzOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkwNC1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDctXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDg6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkwOS1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTI6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTQ6XFx0aWYgKG1vZGUgIT0gTUxPX0FOX1BIWSB8fCAhbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNTpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTE2LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHN0YXRlLVxcdTAwM2VpbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTIxLWVycl91bmxvY2s6XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTIyOlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyNy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5Mjg6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX2ZpbmlzaChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjktXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzEtXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MzI6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzMy1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0MS1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDI6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0Ni1cXHQgICAgICBjaGlwLVxcdTAwM2Vwb3J0c1twb3J0XS5pbnRlcmZhY2UgIT0gaW50ZXJmYWNlKSB8fFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk0NzpcXHQgICAgIChtb2RlID09IE1MT19BTl9QSFkgXFx1MDAyNlxcdTAwMjYgbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoY2hpcCwgcG9ydCkpKSlcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDgtXFx0XFx0ZXJyID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsIExJTktfVU5GT1JDRUQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTA6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTUxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjI6NTcuNjk3MjI5OTA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4NjcwNzI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1hcnZlbGwgODhFNnh4eCBTd2l0Y2ggRW11bGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBkcml2ZXIgZm9yIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGVyZSBhbnkgUUVNVSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgc3dpdGNoPyBJIGtub3cgUUVNVSdzIGdvdCBhIGxvdCBvZiBjYXBhYmlsaXRpZXMsIGJ1dCB0aGVzZSBzcGVjaWFsaXplZCBuZXR3b3JraW5nIGNvbXBvbmVudHMgY2FuIGJlIHRyaWNreS4gVW5mb3J0dW5hdGVseSwgYSBxdWljayBzZWFyY2ggcmV2ZWFscyBubyBzdGFuZGFyZCBRRU1VIGVtdWxhdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNYXJ2ZWxsIDg4RTZ4eHguXG5cbk5vdyBJIG5lZWQgdG8gcmVmaW5lIG15IHNlYXJjaC4gQW0gSSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHRoYXQncyBzdHJpY3RseSBoYXJkd2FyZS1kZXBlbmRlbnQsIG9yIGlzIHRoZXJlIGFueSBwb3NzaWJpbGl0eSBvZiBzb2Z0d2FyZSBlbXVsYXRpb24sIGV2ZW4gaWYgaXQncyBub3QgZGlyZWN0bHkgaW50ZWdyYXRlZCB3aXRoIFFFTVU/IExldCdzIGRpZyBkZWVwZXIuIFRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleHBsb3JlIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlcidzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGZvciBhIHNvZnR3YXJlLWJhc2VkIHJlcHJlc2VudGF0aW9uLCBvciB3aGV0aGVyIGl0J3MgdGlnaHRseSBjb3VwbGVkIHRvIHRoZSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgxODQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzowMi4wODM5NDEzMThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBmYWJyaWMgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQVxcbiAgIDU6XFx0XFx0c2VsZWN0IElSUV9ET01BSU5cXG4gICA2OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19FRFNBXFxuICAgNzpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfRFNBXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgbW9zdCBvZiB0aGUgTWFydmVsbCA4OEU2eHh4IG1vZGVscyBvZlxcbiAgMTA6XFx0XFx0ICBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMsIGV4Y2VwdCA4OEU2MDYwLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfUFRQXFxuICAxMzpcXHRcXHRib29sIFxcXCJQVFAgc3VwcG9ydCBmb3IgTWFydmVsbCA4OEU2eHh4XFxcIlxcbiAgMTQ6XFx0XFx0ZGVmYXVsdCBuXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIChORVRfRFNBX01WODhFNlhYWCA9IHkgXFx1MDAyNlxcdTAwMjYgUFRQXzE1ODhfQ0xPQ0sgPSB5KSB8fCBcXFxcXFxuICAxNjpcXHRcXHQgICAgICAgICAgIChORVRfRFNBX01WODhFNlhYWCA9IG0gXFx1MDAyNlxcdTAwMjYgUFRQXzE1ODhfQ0xPQ0spXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFNheSBZIHRvIGVuYWJsZSBQVFAgaGFyZHdhcmUgdGltZXN0YW1waW5nIG9uIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hcXG4gIDE5OlxcdFxcdCAgY2hpcHMgdGhhdCBzdXBwb3J0IGl0LlxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfTEVEU1xcbiAgMjI6XFx0XFx0Ym9vbCBcXFwiTEVEIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFxcXCJcXG4gIDIzOlxcdFxcdGRlZmF1bHQgeVxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01WODhFNlhYWFxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX01WODhFNlhYWFxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFRoaXMgZW5hYmxlZCBzdXBwb3J0IGZvciBjb250cm9sbGluZyB0aGUgTEVEcyBhdHRhY2hlZCB0byB0aGVcXG4gIDI5OlxcdFxcdCAgTWFydmVsbCA4OEU2eHh4IHN3aXRjaCBjaGlwcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjM6MDIuMDg0MTA3NDk4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUyMjE1NTk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERTQSBEcml2ZXIgSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCdzIGRlZmluaXRlbHkgcmVsYXRlZCB0byBhIGRyaXZlciBmb3IgdGhlIE1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBEU0EsIG9yIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUsIGRlcGVuZHMgb24gaGF2aW5nIGEgKnJlYWwqIHBoeXNpY2FsIHN3aXRjaCBjaGlwIGNvbm5lY3RlZCB2aWEgc29tZXRoaW5nIGxpa2UgTURJTyBvciBTUEkuIFRoaXMgaXNuJ3Qgc29tZXRoaW5nIHRoYXQncyB1c3VhbGx5IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgc2V0dXAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgXCJDYW4gdGhpcyBjb2RlICpldmVuKiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCJcblxuSWYgdGhlcmUncyBubyBRRU1VIGVtdWxhdGlvbiBmb3IgdGhlIGBtdjg4ZTZ4eHhgIGNoaXAsIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiBpcyBnb2luZyB0byBmYWlsIOKAkyBpdCB3b24ndCBmaW5kIHRoZSBoYXJkd2FyZSwgYW5kIHRoZSBkZXZpY2UganVzdCB3b24ndCByZWdpc3Rlci4gU28sIGJlZm9yZSBJIGRpZyB0b28gZGVlcCwgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgbW9ja2luZyBvciBlbXVsYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLCBlaXRoZXIgZm9yIERTQSBpbiBnZW5lcmFsIG9yIHNwZWNpZmljYWxseSBmb3IgdGhpcyBkcml2ZXIuIEknZCBleHBlY3QgRFNBIGRyaXZlcnMgdG8gYmUgZGVzaWduZWQgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLCBzbyB0aGlzIHNlZW1zIHVubGlrZWx5LlxuXG5MZXQncyBzZWXigKYgbWF5YmUgYGRzYV9sb29wYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gQWgsIGBkc2FfbG9vcC5jYCBpcyBpbmRlZWQgYSBtb2NrIERTQSBkcml2ZXIsIGJ1dCBpdCBkb2Vzbid0IHV0aWxpemUgYG12ODhlNnh4eGAgZnVuY3Rpb25hbGl0eSwgc28gaXQncyBhIGRlYWQgZW5kIGZvciBteSBwdXJwb3Nlcy4gT2theSwgc28gdGhlIGNvcmUgY2hhbmdlcyBzZWVtIHRvIGJlIGNvbmNlbnRyYXRlZCBpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gIGFuZCBgbmV0L2RzYS90YWdfZHNhLmNgLlxuXG5UaGUga2V5IGNoYW5nZSBpbiBgdGFnX2RzYS5jYCBhcHBlYXJzIHRvIGJlIGFkZGluZyBhIG5ldyB0YWcgcHJvdG9jb2w6IGBlZHNhLXB0cC1yZXNlcnZlZDItdHNgLiBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiBDYW4gSSBzb21laG93IHRyaWdnZXIgdGhlIHVzZSBvZiB0aGF0IGBlZHNhLXB0cC1yZXNlcnZlZDItdHNgIHRhZyBwcm90b2NvbCAqd2l0aG91dCogdGhlIGBtdjg4ZTZ4eHhgIGRyaXZlciBiZWluZyBzdWNjZXNzZnVsbHkgbG9hZGVkPyBJIG5lZWQgdG8gY2hlY2sgdGhhdCBgbmV0L2RzYS90YWdfZHNhLmNgIGZpbGUgbW9yZSBjbG9zZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTAyNiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjA4LjYwNjI2NzcwMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ0NjY4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2RzYS90YWdfZHNhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2RzYS90YWdfZHNhLmM9NDA0PU1PRFVMRV9BTElBU19EU0FfVEFHX0RSSVZFUihEU0FfVEFHX1BST1RPX0VEU0EsIEVEU0FfTkFNRSk7XFxuLS1cXG5uZXQvZHNhL3RhZ19kc2EuYy00MTAtICovXFxubmV0L2RzYS90YWdfZHNhLmM6NDExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMgPSB7XFxubmV0L2RzYS90YWdfZHNhLmMtNDEyLVxcdC5uYW1lXFx0XFx0ID0gRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUsXFxuLS1cXG5uZXQvZHNhL3RhZ19kc2EuYy00MTgtXFxubmV0L2RzYS90YWdfZHNhLmM6NDE5OkRTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTtcXG5uZXQvZHNhL3RhZ19kc2EuYy00MjAtTU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxcbi0tXFxubmV0L2RzYS90YWdfZHNhLmM9NDI0PXN0YXRpYyBzdHJ1Y3QgZHNhX3RhZ19kcml2ZXIgKmRzYV90YWdfZHJpdmVyc1tdID0ge1xcbi0tXFxubmV0L2RzYS90YWdfZHNhLmMtNDI5LVxcdFxcdTAwMjZEU0FfVEFHX0RSSVZFUl9OQU1FKGVkc2FfbmV0ZGV2X29wcyksXFxubmV0L2RzYS90YWdfZHNhLmM6NDMwOlxcdFxcdTAwMjZEU0FfVEFHX0RSSVZFUl9OQU1FKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKSxcXG5uZXQvZHNhL3RhZ19kc2EuYy00MzEtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjA5LjE3MDc0MDUyMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzMwMDI5NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIFRhZyBEcml2ZXIgQ29tcGF0aWJpbGl0eSoqXG5cblJpZ2h0LCB0aGUgdGFnIGRyaXZlciBpcyByZWdpc3RlcmVkLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMsIGRvZXMgdGhpcyByZWdpc3RyYXRpb24gYWN0dWFsbHkgdHJhbnNsYXRlIGludG8gdXNhYmlsaXR5IGRvd25zdHJlYW0/IFNwZWNpZmljYWxseSwgY2FuIHRoaXMgZHJpdmVyIGJlIGxldmVyYWdlZCBieSBgZHNhX2xvb3BgIG9yIGFueSBvdGhlciBlbXVsYXRlZCBEU0EgZHJpdmVyIEknbSBmYW1pbGlhciB3aXRoPyBJIG5lZWQgdG8gYXNjZXJ0YWluIHRoZSBleHRlbnQgb2YgaXRzIGFjY2Vzc2liaWxpdHkgd2l0aGluIHRoZSBzb2Z0d2FyZSBhcmNoaXRlY3R1cmUuXG5cbkxldCdzIGN1dCBzdHJhaWdodCB0byB0aGUgY2hhc2UgYW5kIHRlc3QgYSBzcGVjaWZpYyBzY2VuYXJpby4gSSB3YW50IHRvIGRldGVybWluZSBpZiBgZHNhX2xvb3BgIGlzIGNhcGFibGUgb2YgdXRpbGl6aW5nIGEgc3BlY2lmaWMgdGFnZ2luZyBwcm90b2NvbCBpZGVudGlmaWVyLCBsZXQncyBnbyB3aXRoIGBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU2AuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIFRoaXMgdGFnIHByb3RvY29sIGlzIGEgZ29vZCB0ZXN0IGNhc2UsIEkga25vdyBpdHMgY2hhcmFjdGVyaXN0aWNzLiBJZiBgZHNhX2xvb3BgIGNhbid0IHV0aWxpemUgdGhpcyBvbmUsIHRoYXQgaXMgYSBnb29kIHNpZ24gdGhlcmUgYXJlIGlzc3VlcyBzb21ld2hlcmUgaW4gdGhlIGRyaXZlci4gQSBzdWNjZXNzZnVsIHRlc3QgaGVyZSB3b3VsZCBnaXZlIG1lIGNvbmZpZGVuY2UgYWJvdXQgdGhlIGRlc2lnbidzIGZsZXhpYmlsaXR5LiBMZXQncyBzZWUgaG93IGl0IGdvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTg5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjM6MTMuMjAzNzQ2NzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTc2NDE4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTMyNjI9c3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXBfcG9ydF9tb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjc0LVxcdGlmIChjaGlwLVxcdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBIHx8XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzI3NTpcXHQgICAgY2hpcC1cXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNzYtXFx0XFx0cmV0dXJuIG12ODhlNnh4eF9zZXRfcG9ydF9tb2RlX2Vkc2EoY2hpcCwgcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz02NjU5PXN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY3MS1cXHRzd2l0Y2ggKHByb3RvKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY3MjpcXHRjYXNlIERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NzMtXFx0XFx0aWYgKCFjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaD04MzE9c3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTgzMi17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmg6ODMzOlxcdHJldHVybiBjaGlwLVxcdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmgtODM0LX1cXG4tLVxcbmluY2x1ZGUvbmV0L2RzYS5oPTI2PXN0cnVjdCB0Y19hY3Rpb247XFxuLS1cXG5pbmNsdWRlL25ldC9kc2EuaC02MS0jZGVmaW5lIERTQV9UQUdfUFJPVE9fTkVUQ19WQUxVRVxcdFxcdDMzXFxuaW5jbHVkZS9uZXQvZHNhLmg6NjI6I2RlZmluZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRVxcdDM0XFxuaW5jbHVkZS9uZXQvZHNhLmgtNjMtXFxuaW5jbHVkZS9uZXQvZHNhLmg9NjQ9ZW51bSBkc2FfdGFnX3Byb3RvY29sIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2RzYS5oLTk4LVxcdERTQV9UQUdfUFJPVE9fTkVUQ1xcdFxcdD0gRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFLFxcbmluY2x1ZGUvbmV0L2RzYS5oOjk5OlxcdERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNfVkFMVUUsXFxuaW5jbHVkZS9uZXQvZHNhLmgtMTAwLX07XFxuLS1cXG5uZXQvZHNhL3RhZ19kc2EuYz00MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyA9IHtcXG5uZXQvZHNhL3RhZ19kc2EuYy00MTItXFx0Lm5hbWVcXHRcXHQgPSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSxcXG5uZXQvZHNhL3RhZ19kc2EuYzo0MTM6XFx0LnByb3RvXFx0XFx0ID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXFxubmV0L2RzYS90YWdfZHNhLmMtNDE0LVxcdC54bWl0XFx0XFx0ID0gZWRzYV94bWl0LFxcbi0tXFxubmV0L2RzYS90YWdfZHNhLmM9NDE5PURTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTtcXG5uZXQvZHNhL3RhZ19kc2EuYzo0MjA6TU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxcbm5ldC9kc2EvdGFnX2RzYS5jLTQyMS1cXHRcXHRcXHQgICAgRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzoxNy43MDEzOTkzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTg1NTE3MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVGFnIFByb3RvY29sIENvbmZpZ3VyYXRpb24gZm9yIEVtdWxhdGVkIERTQSBEZXZpY2VzKipcblxuT2theSwgc28gdGhlIHRhZyBwcm90b2NvbCBzZWVtcyB0byBiZSBleGNsdXNpdmVseSBoYW5kbGVkIGJ5IHRoZSBgbXY4OGU2eHh4YCBkcml2ZXIsIHdoaWNoIHJhaXNlcyBhIHF1ZXN0aW9uLiBJcyB0aGVyZSBhIHdheSwgdmlhIHN5c2ZzIG9yIG5ldGxpbmssIHRvIGNvbmZpZ3VyZSB0aGUgdGFnIHByb3RvY29sIGZvciBlbXVsYXRlZCBkZXZpY2VzIGxpa2UgYGRzYV9sb29wYCwgb3IgcGVyaGFwcyBvdGhlciBzaW1pbGFyIGVtdWxhdGlvbnM/IFRoZSBEU0EgZnJhbWV3b3JrIGl0c2VsZiBvZmZlcnMgdGhlIGFiaWxpdHkgdG8gbW9kaWZ5IHRoZSB0YWcgcHJvdG9jb2wgdGhyb3VnaCB0aGUgYGRzYV9zd2l0Y2hfb3BzLVx1MDAzZWNoYW5nZV90YWdfcHJvdG9jb2xgIGZ1bmN0aW9uLCB3aGljaCBpcyBwcm9taXNpbmcuIEhvd2V2ZXIsIGlmIGEgZGV2aWNlIGxpa2UgYGRzYV9sb29wYCAqZG9lc24ndCogaW1wbGVtZW50IHRoaXMgYGNoYW5nZV90YWdfcHJvdG9jb2xgIGZ1bmN0aW9uLCBpdCdsbCBzaW1wbHkgc3RpY2sgd2l0aCBpdHMgZGVmYXVsdCwgaW5pdGlhbCBwcm90b2NvbC4gVGltZSB0byBkaWcgaW50byBgZHNhX2xvb3AuY2AgYW5kIHNlZSB3aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGxvb2sgbGlrZSwgaWYgYW55LCB0aGVyZS4gTGV0J3Mgc2VlIGlmIHRoYXQgaG9vayBpcyBpbXBsZW1lbnRlZCBhbmQgaG93IGl0IGlzIGJlaGF2aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU0MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzoyMS42ODY5MTk4ODlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODA4NjY2OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hhbmdlX3RhZ19wcm90b2NvbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjM6MjIuMjg1MDE2MTg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMTQyMzEzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipEZWNvZGluZyB0aGUgYGRzYV9sb29wYCBQcm90b2NvbCoqLlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzcGVjaWZpYyB0YWdnaW5nIHByb3RvY29sIHRoYXQgYGRzYV9sb29wYCBlbXBsb3lzLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcCwgcmVhbGx5LiBJIGNhbid0IGFuYWx5emUgb3IgZXZlbiB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBwcm9wZXJseSB3aXRob3V0IGtub3dpbmcgd2hhdCBraW5kIG9mIHRhZ2dpbmcgaXQncyBidWlsdCB1cG9uLiBJcyBpdCBhIHNpbXBsZSBjaGVja3N1bSwgc29tZXRoaW5nIG1vcmUgcm9idXN0IGxpa2UgYSBDUkMsIG9yIHBlcmhhcHMgc29tZXRoaW5nIG1vcmUgYWR2YW5jZWQgdGhhdCBpbmNvcnBvcmF0ZXMgZXJyb3IgY29ycmVjdGlvbiBvciBjcnlwdG9ncmFwaGljIGhhc2hpbmc/IEdvdHRhIGZpZ3VyZSBvdXQgdGhlIGJhc2ljcyBiZWZvcmUgZGl2aW5nIGFueSBkZWVwZXIuIExldCdzIGdldCBjcmFja2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE4OTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzoyNS41OTkyNjAyNjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTc5Nzg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEU0FfVEFHX1BST1RPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTEyNT1zdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTMxOlxcdHJldHVybiBEU0FfVEFHX1BST1RPX05PTkU7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjM6MjUuNzYxMDY2NDM2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzMzIzMDUzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEU0EgQ29kZSBQYXRoIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBgZHNhX2xvb3BgIHVzZXMgYERTQV9UQUdfUFJPVE9fTk9ORWAsIHRoYXQgbXVjaCBpcyBjbGVhci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGVyZSBhbnkgKm90aGVyKiBEU0EgZHJpdmVycyB0aGF0IG1pZ2h0IGJlIGVtdWxhdGVkPyBMZXQncyBjaGVjay4gQWgsIGBkcml2ZXJzL25ldC9kc2EvbW9jay5jYC4uLm5vLCBub3RoaW5nIHRoZXJlLlxuXG5IbW0sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgY2FuIHdlIHRyaWdnZXIgYGVkc2FfeG1pdGAgb3IgYGVkc2FfcmN2YCB3aXRob3V0IHJlbHlpbmcgb24gYG12ODhlNnh4eGA/IEJlY2F1c2UsIHJlYWxpc3RpY2FsbHksIGlmIHNvbWVvbmUgY29uZmlndXJlcyBhIERTQSB0cmVlIHRocm91Z2ggdGhlIGRldmljZSB0cmVlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgd2UncmUgdW5saWtlbHkgdG8gaGF2ZSBhIHdvcmtpbmcgYG12ODhlNnh4eGAgaW5zdGFuY2Ugd2l0aG91dCBhIHNwZWNpYWxpemVkIEkyQy9NRElPIG1vY2suXG5cbldhaXQuLi5TeXprYWxsZXIuIFN5emthbGxlcidzIGdvdCBgc3l6X2dlbmV0bGlua2AgYW5kIG90aGVyIHBzZXVkby1zeXNjYWxscywgYnV0IGl0IGRvZXNuJ3QgKm5hdGl2ZWx5KiBlbXVsYXRlIE1ESU8gZGV2aWNlcy4gSXQgbmVlZHMgYSBzcGVjaWZpYyBkcml2ZXIgZm9yIHRoYXQsIHJpZ2h0PyBVbmxlc3MuLi5cblxuQWgsIHllcywgU3l6a2FsbGVyIGNhbiBpbmplY3QgcGFja2V0cy4gSWYgd2UgY291bGQgY3JlYXRlIGEgZGV2aWNlIHdpdGggYGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzYCwgdGhlbiB3ZSdkIGJlIHVzaW5nIGBlZHNhX3htaXRgIGFuZCBgZWRzYV9yY3ZgLiBCdXQgaG9sZCBvbiwgdGhvc2UgYXJlbid0ICpuZXcqIGZ1bmN0aW9uczsgdGhleSdyZSByZXVzZWQgZnJvbSBgZWRzYV9uZXRkZXZfb3BzYC4gU28gaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29kZSBzbmlwcGV0IGlzOlxuXG5gYGBjXG5zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzID0ge1xuXHQubmFtZVx0XHQgPSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSxcblx0LnByb3RvXHRcdCA9IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxuXHQueG1pdFx0XHQgPSBlZHNhX3htaXQsXG5cdC5yY3ZcdFx0ID0gZWRzYV9yY3YsXG5cdC5uZWVkZWRfaGVhZHJvb20gPSBFRFNBX0hMRU4sXG59O1xuYGBgXG5cblNvIHRoZSBcIm5ld1wiIHRoaW5nIGluIGBuZXQvZHNhL3RhZ19kc2EuY2AgaXMganVzdCB0aGUgKnJlZ2lzdHJhdGlvbiogb2YgdGhhdCBzdHJ1Y3QuIFRoZSBtZWF0IG9mIHRoZSBmdW5jdGlvbmFsaXR5Li4uaXQncyByZWFsbHkgaW4gYGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvYC5cblxuQW5kIHRoYXQncyB0aGUga2lja2VyLiBTaW5jZSBgbXY4OGU2eHh4YCBpcyBhICpoYXJkd2FyZSogZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzLCBhbmQgaXQncyBub3QgZW11bGF0ZWQgaW4gUUVNVSAoYXQgbGVhc3Qgbm90IGJ5IGRlZmF1bHQpLCBpdCdzICp1bnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28gdGhlIGNvZGUgdGhlcmUgaXMgYmFzaWNhbGx5IGRlYWQgY29kZSBpbiBteSBzcGVjaWZpYyB1c2UgY2FzZS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIHRoZXJlJ3MgYW55IHdheSB0byBpbnN0YW50aWF0ZSBgbXY4OGU2eHh4YCB2aWEgc29tZSBraW5kIG9mIHNvZnR3YXJlIG1vY2ssIGJ1dCBteSBndXQgdGVsbHMgbWUgaXQncyBwdXJlbHkgaGFyZHdhcmUtYmFzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTg4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjM0LjA5MzM3NTM4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk4Mjk5MDMzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdjg4ZTZ4eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzozNC40OTE2ODYwMTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk4NTM2ODEwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhIGZpcnN0LXBlcnNvbiwgZXhwZXJ0IHBlcnNwZWN0aXZlLCBhaW1pbmcgZm9yIGEgZnVsc29tZSByZW5kZXJpbmc6XG5cbioqS2VybmVsIFRlc3Rpbmcgb2YgYG12ODhlNnh4eGAgLSBBIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbXY4OGU2eHh4YCBkcml2ZXIgaW4gdGhlIGtlcm5lbCBhZ2FpbiwgYW5kIG15IGZpcnN0IHF1ZXN0aW9uICphbHdheXMqIHBvcHMgdXA6IEFyZSB3ZSB0cnVseSBleGhhdXN0aW5nICphbGwqIHRoZSB0ZXN0aW5nIHBvc3NpYmlsaXRpZXM/IFN1cmUsIEknbSBmYW1pbGlhciB3aXRoIHRoZSBzdGFuZGFyZCBtZXRob2RzLCB0aGUgdHlwaWNhbCBwcm9jZWR1cmVzLCB0aGUgYmFzaWMgY2hlY2tzIHRoYXQgYXJlIGFsbW9zdCBjZXJ0YWlubHkgaW4gcGxhY2UuLi4gYnV0IEkgY2FuJ3QgaGVscCBidXQgd29uZGVyLCBpcyB0aGVyZSBhbm90aGVyIGFuZ2xlPyBJcyB0aGVyZSBhIHN1YnRsZSBjb3JuZXIgY2FzZSwgYW4gb2JzY3VyZSBoYXJkd2FyZSBpbnRlcmFjdGlvbiwgc29tZSBvZmZiZWF0IGNvbmZpZ3VyYXRpb24gc2NlbmFyaW8gdGhhdCB3ZSdyZSBzb21laG93IG1pc3NpbmcgaW4gb3VyIHRlc3Qgc3VpdGU/XG5cbkknbSB0aGlua2luZywgYmV5b25kIHRoZSBvYnZpb3VzLCB3aGF0IGFyZSB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMgd2UncmUgbWFraW5nIGFib3V0IHRoZSBoYXJkd2FyZSdzIGJlaGF2aW9yIG9yIHRoZSBzdXJyb3VuZGluZyBzeXN0ZW0/IEhhdmUgd2UgY292ZXJlZCB0aGUgZWRnZSBjb25kaXRpb25zLCB0aGUgZXJyb3IgcGF0aHMsIHRoZSBsZXNzLXRyYXZlbGVkIGNvbmZpZ3VyYXRpb25zPyBJIHdhbnQgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBqdXN0IGNvbmZpcm1pbmcgd2hhdCB3ZSBhbHJlYWR5IGtub3cgd29ya3MgYnV0IHByb2FjdGl2ZWx5IGh1bnRpbmcgZG93biBwb3RlbnRpYWwgaXNzdWVzIGJlZm9yZSB0aGV5IHN1cmZhY2UgaW4gdGhlIGZpZWxkLiBUaGlzIGlzIG5vdCBhYm91dCBqdXN0IHJ1bm5pbmcgdGhlIHRlc3RzLiBUaGlzIGlzIGFib3V0IG1ha2luZyBzdXJlLCBmcm9tIHRoZSBncm91bmQgdXAsIHdlJ3JlIGJ1aWxkaW5nIGEgcm9jay1zb2xpZCwgcmVsaWFibGUgZHJpdmVyLiBQZXJoYXBzIHRoZSBkb2N1bWVudGF0aW9uIHBvaW50cyB0byBzb21lIG9ic2N1cmUgdGVzdCBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzNTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzozOC40NzcwNTgyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3MDYyNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm12ODhlNnh4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTAxNDEgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTczPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc0LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTIxPW9iai15XFx0XFx0XFx0XFx0Kz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToyMjpvYmoteVxcdFxcdFxcdFxcdCs9IG12ODhlNnh4eC9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtMjMtb2JqLXlcXHRcXHRcXHRcXHQrPSBteGw4NjJ4eC9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC01LSAqXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oOjY6ICogQmFzZWQgb24gbXY4OGU2eHh4LmhcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmgtNy0gKiBDb3B5cmlnaHQgKGMpIDIwMDggTWFydmVsbCBTZW1pY29uZHVjdG9yXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFgpICs9IG12ODhlNnh4eC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTozOm12ODhlNnh4eC1vYmpzIDo9IGNoaXAub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NDptdjg4ZTZ4eHgtb2JqcyArPSBkZXZsaW5rLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjU6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo2Om12ODhlNnh4eC1vYmpzICs9IGdsb2JhbDFfYXR1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjc6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMV92dHUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6ODptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjk6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9hdmIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTA6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9zY3JhdGNoLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjExOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IGh3dHN0YW1wLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEyOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9MRURTKSArPSBsZWRzLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEzOm12ODhlNnh4eC1vYmpzICs9IHBjcy02MTg1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE0Om12ODhlNnh4eC1vYmpzICs9IHBjcy02MzUyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE1Om12ODhlNnh4eC1vYmpzICs9IHBjcy02Mzl4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE2Om12ODhlNnh4eC1vYmpzICs9IHBoeS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNzptdjg4ZTZ4eHgtb2JqcyArPSBwb3J0Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE4Om12ODhlNnh4eC1vYmpzICs9IHBvcnRfaGlkZGVuLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE5Om12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IHB0cC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMDptdjg4ZTZ4eHgtb2JqcyArPSBzZXJkZXMub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjE6bXY4OGU2eHh4LW9ianMgKz0gc21pLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIyOm12ODhlNnh4eC1vYmpzICs9IHN3aXRjaGRldi5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMzptdjg4ZTZ4eHgtb2JqcyArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNDptdjg4ZTZ4eHgtb2JqcyArPSB0Y2Zsb3dlci5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNTptdjg4ZTZ4eHgtb2JqcyArPSB0Y2FtLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RzYS9tdjg4ZTZ4eHguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTpzdGF0aWMgdm9pZCBhc3NlcnRfcmVnX2xvY2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU3OmludCBtdjg4ZTZ4eHhfcmVhZChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzpcXHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3JlYWQoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MzppbnQgbXY4OGU2eHh4X3dyaXRlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Nzk6XFx0ZXJyID0gbXY4OGU2eHh4X3NtaV93cml0ZShjaGlwLCBhZGRyLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5OmludCBtdjg4ZTZ4eHhfd2FpdF9tYXNrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAtXFx0XFx0XFx0dTE2IG1hc2ssIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDEtXFx0Zm9yIChpID0gMDsgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgfHwgKGkgXFx1MDAzYyAyKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTAyOlxcdFxcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwMy1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjExNTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFxcdTAwMjZkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMjY6aW50IG12ODhlNnh4eF93YWl0X2JpdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNy1cXHRcXHQgICAgICAgaW50IGJpdCwgaW50IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyOTpcXHRyZXR1cm4gbXY4OGU2eHh4X3dhaXRfbWFzayhjaGlwLCBhZGRyLCByZWcsIEJJVChiaXQpLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMC1cXHRcXHRcXHRcXHQgICB2YWwgPyBCSVQoYml0KSA6IDB4MDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTMzOnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM0LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzU6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNy1cXHRtZGlvX2J1cyA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM4OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzktXFx0aWYgKCFtZGlvX2J1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNDU6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NzpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDgtXFx0dW5zaWduZWQgaW50IG4gPSBkLVxcdTAwM2Vod2lycTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1NC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU1OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Ni1cXHR1bnNpZ25lZCBpbnQgbiA9IGQtXFx1MDAzZWh3aXJxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE2MTpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzA6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MTpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzI6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4NzpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg4OlxcdFxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2Y3RsMSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg5LVxcdFxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkwLVxcdFxcdFxcdGdvdG8gdW5sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MTpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTItdW5sb2NrOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MzpcXHRcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTQtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwMi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDM6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNTpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkZXZfaWQ7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNzpcXHRyZXR1cm4gbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDgtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTA6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjExLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTI6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxNDpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE1LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxOTpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjAtXFx0dTE2IG1hc2sgPSBHRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjI0OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzE6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM1LW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzY6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM3LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAgbXY4OGU2eHh4X2cxX2lycV9jaGlwID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MDpcXHQubmFtZVxcdFxcdFxcdD0gXFxcIm12ODhlNnh4eC1nMVxcXCIsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQxOlxcdC5pcnFfbWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV9tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MjpcXHQuaXJxX3VubWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV91bm1hc2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQzOlxcdC5pcnFfYnVzX2xvY2tcXHRcXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ0OlxcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDUtfTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0OC1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1MC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjUxOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGQtXFx1MDAzZWhvc3RfZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MTpcXHQubWFwXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYyLVxcdC54bGF0ZVxcdD0gaXJxX2RvbWFpbl94bGF0ZV90d29jZWxsLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY1LS8qIFRvIGJlIGNhbGxlZCB3aXRoIHJlZ19sb2NrIGhlbGQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjY6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzE6XFx0bXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzItXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3MzpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyODM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjkwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkyOlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkzOlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5NC19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NjpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAzLVxcdFxcdE5VTEwsIGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMDQ6XFx0XFx0XFx1MDAyNm12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcywgY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA1LVxcdGlmICghY2hpcC1cXHUwMDNlZzFfaXJxLmRvbWFpbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTE6XFx0Y2hpcC1cXHUwMDNlZzFfaXJxLmNoaXAgPSBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXA7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEyLVxcdGNoaXAtXFx1MDAzZWcxX2lycS5tYXNrZWQgPSB+MDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzE0OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2bWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzIwOlxcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjQtXFx0LyogUmVhZGluZyB0aGUgaW50ZXJydXB0IHN0YXR1cyBjbGVhcnMgKG1vc3Qgb2YpIHRoZW0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjU6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzItXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMzMzpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNDY6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzUxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM1MjpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTMtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Mi1cXHRzbnByaW50ZihjaGlwLVxcdTAwM2VpcnFfbmFtZSwgc2l6ZW9mKGNoaXAtXFx1MDAzZWlycV9uYW1lKSxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjM6XFx0XFx0IFxcXCJtdjg4ZTZ4eHgtJXNcXFwiLCBkZXZfbmFtZShjaGlwLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY1OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Ni1cXHRlcnIgPSByZXF1ZXN0X3RocmVhZGVkX2lycShjaGlwLVxcdTAwM2VpcnEsIE5VTEwsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY3OlxcdFxcdFxcdFxcdCAgIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OC1cXHRcXHRcXHRcXHQgICBJUlFGX09ORVNIT1QgfCBJUlFGX1NIQVJFRCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjktXFx0XFx0XFx0XFx0ICAgY2hpcC1cXHUwMDNlaXJxX25hbWUsIGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MDpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcxLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzcyOlxcdFxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfaXJxX3BvbGwoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3OTpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjb250YWluZXJfb2Yod29yayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4MS1cXHRcXHRcXHRcXHRcXHRcXHQgICBpcnFfcG9sbF93b3JrLndvcmspO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MjpcXHRtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODg6c3RhdGljIGludCBtdjg4ZTZ4eHhfaXJxX3BvbGxfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzkyOlxcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk2LVxcdGt0aHJlYWRfaW5pdF9kZWxheWVkX3dvcmsoXFx1MDAyNmNoaXAtXFx1MDAzZWlycV9wb2xsX3dvcmssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzk3OlxcdFxcdFxcdFxcdCAgbXY4OGU2eHh4X2lycV9wb2xsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MDgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDA5OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDEzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNDpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE1OlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE2OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxNy19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxOTpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQyMC1cXHRcXHRcXHRcXHRcXHQgICBpbnQgcG9ydCwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NDE6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDItXFx0XFx0XFx0XFx0ICAgIGludCBsaW5rLCBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGludCBwYXVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Njg6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LCBtb2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NjktcmVzdG9yZV9saW5rOlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ3NjpzdGF0aWMgaW50IG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDgyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ4MzpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5MS1cXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZmFtaWx5ID09IE1WODhFNlhYWF9GQU1JTFlfNjI1MClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTI6XFx0XFx0cmV0dXJuIG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5NDpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk1LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTUwNT1zdGF0aWMgY29uc3QgdTggbXY4OGU2MTg1X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MTU6c3RhdGljIHZvaWQgbXY4OGU2MDk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUyMjpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyMy1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTM0OnN0YXRpYyB2b2lkIG12ODhlNjE4NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM1LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NDg6c3RhdGljIGNvbnN0IHU4IG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ5LVxcdFtNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfTUlJX1BIWV1cXHQ9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SRVZNSUksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTYzOnN0YXRpYyB2b2lkIG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUodTggY21vZGUsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NTpcXHRpZiAoY21vZGUgXFx1MDAzYyBBUlJBWV9TSVpFKG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NjpcXHQgICAgbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NzpcXHRcXHRfX3NldF9iaXQobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2OC1cXHRlbHNlIGlmIChjbW9kZSA9PSBNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfUkdNSUkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01NzI9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzM6bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc0LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTgwOlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyMjpzdGF0aWMgdm9pZCBtdjg4ZTYyNTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyMy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjU6XFx0aWYgKCFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNi1cXHRcXHRtdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzE6c3RhdGljIHZvaWQgbXY4OGU2MzUxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzItXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM2LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzNzpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDM6c3RhdGljIGludCBtdjg4ZTYzeHhfZ2V0X3BvcnRfc2VyZGVzX2Ntb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDg6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU2LVxcdHZhbCA9IHJlZyBcXHUwMDI2IH5NVjg4RTZYWFhfUE9SVF9TVFNfUEhZX0RFVEVDVDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTc6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2MTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjUtXFx0LyogUmVzdG9yZSBQSFlfREVURUNUIHZhbHVlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY2OlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NzM6c3RhdGljIHZvaWQgbXY4OGU2MzUyX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjc5LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY4MDpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5NS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njk2OlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDA6c3RhdGljIHZvaWQgbXY4OGU2MzJ4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDEtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA2LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwNzpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcxOC1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzE5OlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjM6c3RhdGljIHZvaWQgbXY4OGU2MzQxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI4LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyOTpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0NC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDU6c3RhdGljIHZvaWQgbXY4OGU2MzkwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUwLVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MTpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Njc6c3RhdGljIHZvaWQgbXY4OGU2MzkweF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY4LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwMjpzdGF0aWMgdm9pZCBtdjg4ZTYzOTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDMtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODExOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg0NjpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDctXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTE6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Mi1cXHRjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTM6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NTpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Ni1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9ODY0PXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg2NTptdjg4ZTZ4eHhfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY2LVxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY4LVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzAtXFx0c3RydWN0IHBoeWxpbmtfcGNzICpwY3MgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODc4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg3OTpzdGF0aWMgaW50IG12ODhlNnh4eF9tYWNfcHJlcGFyZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODAtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgyLVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODgzOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODQtXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTMtXFx0ICAgIGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluaykge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NDpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk1LVxcdFxcdGVyciA9IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIExJTktfRk9SQ0VEX0RPV04pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NzpcXHRcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwMzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDQtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA3LVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA4OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDktXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTEyOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTE0OlxcdGlmIChtb2RlICE9IE1MT19BTl9QSFkgfHwgIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTU6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBzdGF0ZS1cXHUwMDNlaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMS1lcnJfdW5sb2NrOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkyMjpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTI4OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19maW5pc2goc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTI5LVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTMxLVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTMyOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzMtXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDEtXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTQyOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDYtXFx0ICAgICAgY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uaW50ZXJmYWNlICE9IGludGVyZmFjZSkgfHxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDc6XFx0ICAgICAobW9kZSA9PSBNTE9fQU5fUEhZIFxcdTAwMjZcXHUwMDI2IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKGNoaXAsIHBvcnQpKSkpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ4LVxcdFxcdGVyciA9IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LCBMSU5LX1VORk9SQ0VEKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTUwOlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjM4LjY3NDEzNDE3NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTE4NDk2OTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiB0aGUgTmV3IFRhZyBQcm90b2NvbCoqXG5cbk9rYXksIHNvIHRoaXMgYG12ODhlNnh4eGAgZHJpdmVyIGlzIHN0cmljdGx5IGhhcmR3YXJlLWZvY3VzZWQsIG5vIFFFTVUgZW11bGF0aW9uIHRoZXJlLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBUaGUgZWRpdHMgaW4gYG5ldC9kc2EvdGFnX2RzYS5jYCBhcmUgc2ltcGx5IHJlZ2lzdGVyaW5nIHRoaXMgbmV3IHRhZyBwcm90b2NvbDsgaXQncyBzcGVjaWZpYyB0byB0aGUgTWFydmVsbCBzd2l0Y2guIE15IGluaXRpYWwgdGhvdWdodCB3YXM6IGNvdWxkIGEgY2xldmVyIHVzZXIgY3JhZnQgYSBkdW1teSBuZXRkZXYgYW5kIHBvaW50IGl0IHRvIHRoZSBuZXcgYGVkc2EtcHRwLXJlc2VydmVkMi10c2AgdGFnPyBCdXQgdGhlbiwgSSByZW1lbWJlcmVkIHRoYXQgRFNBIHRhZyBwcm90b2NvbHMgYXJlIGZ1bmRhbWVudGFsbHkgbGlua2VkIHRvIERTQSBzd2l0Y2hlcy4gVW5sZXNzIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIERTQSBzd2l0Y2gsIHRoaXMgYXBwcm9hY2ggaXMgZGVhZCBpbiB0aGUgd2F0ZXIuXG5cbklmIHdlIGRvbid0IGhhdmUgYSBEU0Egc3dpdGNoIGVtdWxhdGVkLCBhbmQgdGhlIG9ubHkgb25lIGF2YWlsYWJsZSAoYGRzYV9sb29wYCkgbGV2ZXJhZ2VzIGBEU0FfVEFHX1BST1RPX05PTkVgLCB0aGlzIHRhZyBwcm90b2NvbCBpcyB1bnJlYWNoYWJsZS4gSG1tbSwgY291bGQgd2UgbWFuaXB1bGF0ZSBgZHNhX2xvb3BgIGFuZCBvdmVycmlkZSBpdHMgdGFnIHByb3RvY29sPyBJdCdzIGEgbG9uZyBzaG90LCBidXQgd29ydGggY2hlY2tpbmcuIEknbGwgbmVlZCB0byBzZWUgaWYgYGRzYV9sb29wYCBvZmZlcnMgYW55IG1lY2hhbmlzbSB0byBjaGFuZ2UgaXRzIHRhZyBwcm90b2NvbCBkeW5hbWljYWxseS4gQSBxdWljayBzZWFyY2ggZm9yIGBjaGFuZ2VfdGFnX3Byb3RvY29sYCB3aXRoaW4gYGRzYV9sb29wLmNgIHlpZWxkZWQgbm90aGluZy4gSSBuZWVkIHRvIGV4YW1pbmUgdGhlIGBkc2Ffc3dpdGNoX29wc2Agc3RydWN0IHdpdGhpbiBgZHNhX2xvb3AuY2AgbmV4dCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODE3MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzo0NS41OTI2MzQ5NjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTAzOTc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkc2Ffc3dpdGNoX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMjY9c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzM1LVxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjQ1Ljc2NzY4MDU5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMjA4NzUzMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgSSdtIGFib3V0IHRvIGRvOlxuXG4qKkFuYWx5emluZyB0aGUgYGRzYV9sb29wX2RyaXZlcmAgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkc2FfbG9vcF9kcml2ZXJgIGltcGxlbWVudGF0aW9uLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgd2hhdCB0aGlzIGRyaXZlciBkb2VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgcm9sZSBpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSXMgaXQgaGFuZGxpbmcgZGF0YSB0cmFuc2ZlcnMsIG1hbmFnaW5nIHJlc291cmNlcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEknbSBnb2luZyB0byBiZSBsb29raW5nIGZvciBrZXkgZnVuY3Rpb25zLCBkYXRhIHN0cnVjdHVyZXMsIGFuZCBhbnkgc3BlY2lmaWMgYWxnb3JpdGhtcyBpdCBtaWdodCBiZSBlbXBsb3lpbmcuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIHByb2JhYmx5IGdvaW5nIHRvIGJlIG1lbnRhbGx5IG1hcHBpbmcgdGhpcyB0byBvdGhlciBzaW1pbGFyIGRyaXZlcnMgSSd2ZSB3b3JrZWQgd2l0aCBpbiB0aGUgcGFzdCBhbmQgbG9va2luZyBmb3IgY29tbW9uIHBhdHRlcm5zIG9yIGFueSB1bnVzdWFsIGFzcGVjdHMuIEknbGwgbGlrZWx5IGJlIGFzc2Vzc2luZyBpdHMgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGluIG15IGhlYWQgYXMgd2VsbCwgYXMgSSBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg4ODEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzo1MC43ODg1NjE1OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM0LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzM0OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbiAzMzU6XFx0XFx0LmdldF90YWdfcHJvdG9jb2xcXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcXG4gMzM2OlxcdFxcdC5zZXR1cFxcdFxcdFxcdD0gZHNhX2xvb3Bfc2V0dXAsXFxuIDMzNzpcXHRcXHQudGVhcmRvd25cXHRcXHQ9IGRzYV9sb29wX3RlYXJkb3duLFxcbiAzMzg6XFx0XFx0LmdldF9zdHJpbmdzXFx0XFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcXG4gMzM5OlxcdFxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuIDM0MDpcXHRcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxcbiAzNDE6XFx0XFx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuIDM0MjpcXHRcXHQucGh5X3JlYWRcXHRcXHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxcbiAzNDM6XFx0XFx0LnBoeV93cml0ZVxcdFxcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxcbiAzNDQ6XFx0XFx0LnBvcnRfYnJpZGdlX2pvaW5cXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXFxuIDM0NTpcXHRcXHQucG9ydF9icmlkZ2VfbGVhdmVcXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxcbiAzNDY6XFx0XFx0LnBvcnRfc3RwX3N0YXRlX3NldFxcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbiAzNDc6XFx0XFx0LnBvcnRfdmxhbl9maWx0ZXJpbmdcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXFxuIDM0ODpcXHRcXHQucG9ydF92bGFuX2FkZFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcXG4gMzQ5OlxcdFxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxcbiAzNTA6XFx0XFx0LnBvcnRfY2hhbmdlX210dVxcdD0gZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1LFxcbiAzNTE6XFx0XFx0LnBvcnRfbWF4X210dVxcdFxcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxcbiAzNTI6XFx0XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuIDM1MzpcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzo1MC43ODg3MTM2OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDA0MDQ1Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3Qgb24gRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGRvZXNuJ3QgaW1wbGVtZW50IGBjaGFuZ2VfdGFnX3Byb3RvY29sYCwgd2hpY2ggbWVhbnMgYGRzYV9sb29wYCB3aWxsIGRlZmF1bHQgdG8gYERTQV9UQUdfUFJPVE9fTk9ORWAuIE15IGZpcnN0IHRob3VnaHQgaXM6IGFyZSB0aGVyZSAqYW55KiBvdGhlciB3YXlzIHRvIHRlc3QgdGhlc2UgRFNBIHRhZyBwcm90b2NvbHM/IFN5emthbGxlciBoYXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IHBhY2tldHMgaW50byBkZXZpY2VzLCBzbyBpZiBhIG5ldHdvcmsgZGV2aWNlIHVzZXMgYGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzYCwgdGhlbiB0aGVvcmV0aWNhbGx5IGl0cyBgeG1pdGAgYW5kIGByY3ZgIGZ1bmN0aW9ucyBjb3VsZCBiZSB0cmlnZ2VyZWQuXG5cbkJ1dCBoYW5nIG9u4oCmIGBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wc2AgcmVsaWVzIG9uIGBlZHNhX3htaXRgIGFuZCBgZWRzYV9yY3ZgLCB3aGljaCBhcmUgKmFscmVhZHkqIGJlaW5nIGZ1enplZCB0aHJvdWdoIGBlZHNhX25ldGRldl9vcHNgLiBTbywgd2hhdCdzICpuZXcqIGhlcmU/IExvb2tpbmcgYXQgYHRhZ19kc2EuY2AsIGl0IHNlZW1zIHRoZSBvbmx5IGFkZGl0aW9uIGlzIHRoZSByZWdpc3RyYXRpb24gb2YgYSBzdHJ1Y3QuIFRoZSByZWFsIGxvZ2ljIGlzIGFjdHVhbGx5IGJ1cmllZCBpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gLCB3aGljaCBpcyBhIGhhcmR3YXJlIGRyaXZlci5cblxuQW5kIHRoYXQncyB0aGUga2lja2VyLiBTaW5jZSBgbXY4OGU2eHh4YCBpcyBhIGhhcmR3YXJlIGRyaXZlciwgaXQncyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gVGhlIG5ldyBjb2RlIGluIGB0YWdfZHNhLmNgIGlzIGp1c3QgYSBzdHJ1Y3QgZGVmaW5pdGlvbiBhbmQgcmVnaXN0cmF0aW9uIOKAkyBpdCBkb2Vzbid0IGNvbnRhaW4gYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljLCBpdCdzIGp1c3QgcmV1c2luZyBgZWRzYV94bWl0YCBhbmQgYGVkc2FfcmN2YC4gVGhpcyBtZWFucyB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBTbyBJIHNob3VsZCBkZWZpbml0ZWx5IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgaWYgdGhlcmUncyBhbnkgb3RoZXIgcGxhY2Ugd2hlcmUgYERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTYCBpcyBiZWluZyB1c2VkLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTYyOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjU3Ljc5Mjc2MjkyNVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3NTg2MTU2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzI2Mj1zdGF0aWMgaW50IG12ODhlNnh4eF9zZXR1cF9wb3J0X21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNzQtXFx0aWYgKGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0EgfHxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjc1OlxcdCAgICBjaGlwLVxcdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3Ni1cXHRcXHRyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZWRzYShjaGlwLCBwb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTY2NTk9c3RhdGljIGludCBtdjg4ZTZ4eHhfY2hhbmdlX3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjcxLVxcdHN3aXRjaCAocHJvdG8pIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjcyOlxcdGNhc2UgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM6XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY3My1cXHRcXHRpZiAoIWNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oPTgzMT1zdGF0aWMgaW5saW5lIGJvb2wgbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmgtODMyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaDo4MzM6XFx0cmV0dXJuIGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaC04MzQtfVxcbi0tXFxuaW5jbHVkZS9uZXQvZHNhLmg9MjY9c3RydWN0IHRjX2FjdGlvbjtcXG4tLVxcbmluY2x1ZGUvbmV0L2RzYS5oLTYxLSNkZWZpbmUgRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFXFx0XFx0MzNcXG5pbmNsdWRlL25ldC9kc2EuaDo2MjojZGVmaW5lIERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTX1ZBTFVFXFx0MzRcXG5pbmNsdWRlL25ldC9kc2EuaC02My1cXG5pbmNsdWRlL25ldC9kc2EuaD02ND1lbnVtIGRzYV90YWdfcHJvdG9jb2wge1xcbi0tXFxuaW5jbHVkZS9uZXQvZHNhLmgtOTgtXFx0RFNBX1RBR19QUk9UT19ORVRDXFx0XFx0PSBEU0FfVEFHX1BST1RPX05FVENfVkFMVUUsXFxuaW5jbHVkZS9uZXQvZHNhLmg6OTk6XFx0RFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSxcXG5pbmNsdWRlL25ldC9kc2EuaC0xMDAtfTtcXG4tLVxcbm5ldC9kc2EvdGFnX2RzYS5jPTQxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzID0ge1xcbm5ldC9kc2EvdGFnX2RzYS5jLTQxMi1cXHQubmFtZVxcdFxcdCA9IEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FLFxcbm5ldC9kc2EvdGFnX2RzYS5jOjQxMzpcXHQucHJvdG9cXHRcXHQgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUyxcXG5uZXQvZHNhL3RhZ19kc2EuYy00MTQtXFx0LnhtaXRcXHRcXHQgPSBlZHNhX3htaXQsXFxuLS1cXG5uZXQvZHNhL3RhZ19kc2EuYz00MTk9RFNBX1RBR19EUklWRVIoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpO1xcbm5ldC9kc2EvdGFnX2RzYS5jOjQyMDpNT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXFxubmV0L2RzYS90YWdfZHNhLmMtNDIxLVxcdFxcdFxcdCAgICBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjI0OjAxLjg2ODYzMDk2M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzI3ODY3NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgUGF0aCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgaW5kaWNhdGVzIHRoZSB2dWxuZXJhYmlsaXR5ICpvbmx5KiBleGlzdHMgd2l0aGluIHRoZSBgbXY4OGU2eHh4YCBkcml2ZXIgYW5kIGl0cyByZWxhdGVkIGB0YWdfZHNhLmNgIGZpbGUuIFRoZSBwcm9ibGVtLCBhcyBJIHNlZSBpdCwgaXMgdGhhdCBgbXY4OGU2eHh4YCBpcyBhIGhhcmR3YXJlIGRyaXZlci4gQW5kLCBhcyBhIGhhcmR3YXJlIGRyaXZlciwgaXQgaXMgKm5vdCogZW11bGF0ZWQgd2l0aGluIFFFTVUuIFRoYXQgbWVhbnMgdGhlIHNwZWNpZmljIGNvZGUgc2VjdGlvbiBpbiBxdWVzdGlvbiBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGEgUUVNVS1iYXNlZCBmdXp6aW5nIGVudmlyb25tZW50LiBHaXZlbiB0aGlzIGZ1bmRhbWVudGFsIGxpbWl0YXRpb24sIGF0dGVtcHRpbmcgdG8gZnV6eiB0aGlzIGNvZGUgaXMgYSB3YXN0ZSBvZiByZXNvdXJjZXMuIFRoZXJlZm9yZSwgSSB3aWxsIG1hcmsgdGhpcyBjb2RlIHBhdGggYXMgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGNsZWFybHkgc3RhdGUgdGhpcyBoYXJkd2FyZSBkZXBlbmRlbmN5IGFzIHRoZSBwcmltYXJ5IHJlYXNvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0NjMsIk91dHB1dFRva2VucyI6MTY5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjQ6MDguMTk2NTAyNjRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgpIGFuZCBhZGRzIGEgbmV3IERTQSB0YWcgcHJvdG9jb2wgaW4gbmV0L2RzYS90YWdfZHNhLmMuIFRoZSBNYXJ2ZWxsIDg4RTZ4eHggZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBoYXJkd2FyZSBzd2l0Y2hlcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gVGhlIG5ldyB0YWcgcHJvdG9jb2wgaW4gdGFnX2RzYS5jIHNpbXBseSByZXVzZXMgZXhpc3RpbmcgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZnVuY3Rpb25zIChlZHNhX3htaXQsIGVkc2FfcmN2KSBhbmQgY29udGFpbnMgbm8gbmV3IGV4ZWN1dGFibGUgbG9naWMuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgpIGFuZCBhZGRzIGEgbmV3IERTQSB0YWcgcHJvdG9jb2wgaW4gbmV0L2RzYS90YWdfZHNhLmMuIFRoZSBNYXJ2ZWxsIDg4RTZ4eHggZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBoYXJkd2FyZSBzd2l0Y2hlcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gVGhlIG5ldyB0YWcgcHJvdG9jb2wgaW4gdGFnX2RzYS5jIHNpbXBseSByZXVzZXMgZXhpc3RpbmcgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZnVuY3Rpb25zIChlZHNhX3htaXQsIGVkc2FfcmN2KSBhbmQgY29udGFpbnMgbm8gbmV3IGV4ZWN1dGFibGUgbG9naWMuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdvgt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 14:01:08 +0000 UTC FinishedAt: 2026-07-27 14:24:09 +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+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eCkgYW5kIGFkZHMgYSBuZXcgRFNBIHRhZyBwcm90b2NvbCBpbiBuZXQvZHNhL3RhZ19kc2EuYy4gVGhlIE1hcnZlbGwgODhFNnh4eCBkcml2ZXIgaXMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIHN3aXRjaGVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBUaGUgbmV3IHRhZyBwcm90b2NvbCBpbiB0YWdfZHNhLmMgc2ltcGx5IHJldXNlcyBleGlzdGluZyB0cmFuc21pdCBhbmQgcmVjZWl2ZSBmdW5jdGlvbnMgKGVkc2FfeG1pdCwgZWRzYV9yY3YpIGFuZCBjb250YWlucyBubyBuZXcgZXhlY3V0YWJsZSBsb2dpYy4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgaXMgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5ZWU3M2U0NmY0MWYyMjU2NTYzYjdjNGMwM2YxYzNlMWRhMTBkOTViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTQ6MjI6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWxcbmluZGV4IDQ4MDEyMDQ2OTk1MzRiLi44ZDEyYzhmMWJkNTFlYyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWxcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWxcbkBAIC01Myw2ICYjNDM7NTMsNyBAQCBwcm9wZXJ0aWVzOlxuICAgICBlbnVtOlxuICAgICAgIC0gZHNhXG4gICAgICAgLSBlZHNhXG4mIzQzOyAgICAgIC0gZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzXG4gICAgICAgLSBvY2Vsb3RcbiAgICAgICAtIG9jZWxvdC04MDIxcVxuICAgICAgIC0gcnRsOF80XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuaW5kZXggODBiODc3Yzc0NTEzZDYuLmU5MjUyNGJlYjQwYzQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG5AQCAtMzI3MSw3ICYjNDM7MzI3MSw4IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3NldHVwX3BvcnRfbW9kZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIFx0aWYgKGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRFNBKVxuIFx0XHRyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZHNhKGNoaXAsIHBvcnQpO1xuIFxuLVx0aWYgKGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQSlcbiYjNDM7XHRpZiAoY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBIHx8XG4mIzQzO1x0ICAgIGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTKVxuIFx0XHRyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZWRzYShjaGlwLCBwb3J0KTtcbiBcbiBcdHJldHVybiAtRUlOVkFMO1xuQEAgLTYzNzAsNiAmIzQzOzYzNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzQxX29wcyxcbiYjNDM7XHRcdC5zdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMgPSB0cnVlLFxuIFx0fSxcbiBcbiBcdFtNVjg4RTYzNTBdID0ge1xuQEAgLTY0NDcsNiAmIzQzOzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzUyX29wcyxcbiYjNDM7XHRcdC5zdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMgPSB0cnVlLFxuIFx0fSxcbiBcdFtNVjg4RTYzNjFdID0ge1xuIFx0XHQucHJvZF9udW0gPSBNVjg4RTZYWFhfUE9SVF9TV0lUQ0hfSURfUFJPRF82MzYxLFxuQEAgLTY2MzUsNiAmIzQzOzY2MzgsNyBAQCBzdGF0aWMgc3RydWN0IG12ODhlNnh4eF9jaGlwICptdjg4ZTZ4eHhfYWxsb2NfY2hpcChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRjaGlwLVx1MDAzZWRldiA9IGRldjtcbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VyZWdfbG9jayk7XG4mIzQzO1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjaGlwLVx1MDAzZW1kaW9zKTtcbiBcdGlkcl9pbml0KFx1MDAyNmNoaXAtXHUwMDNlcG9saWNpZXMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2hpcC1cdTAwM2Vtc3RzKTtcbkBAIC02NjU4LDkgJiM0Mzs2NjYyLDE3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXHUwMDNlcHJpdjtcbiBcdGVudW0gZHNhX3RhZ19wcm90b2NvbCBvbGRfcHJvdG9jb2w7XG4gXHRzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcDtcbi1cdGludCBlcnI7XG4mIzQzO1x0aW50IGVyciA9IDA7XG4gXG4mIzQzO1x0LyogVGhlIGVtYmVkZGVkIGFycml2YWwtdGltZS1zdGFtcCBwcm90b2NvbCBpcyBhbiBFRFNBIGV4dGVuc2lvbjogRURTQVxuJiM0MztcdCAqIGlzIHRoZSBtb2Rlcm4gdGFnIGZvcm1hdCBmb3IgdGhlc2Ugc3dpdGNoZXMsIHNvIGl0IGlzIHRoZSBvbmUgd2VcbiYjNDM7XHQgKiBleHRlbmQ7IHRoZSBsZWdhY3kgRFNBIHRhZyBpcyBpbnRlbnRpb25hbGx5IGxlZnQgdW4tZXh0ZW5kZWQuXG4mIzQzO1x0ICovXG4gXHRzd2l0Y2ggKHByb3RvKSB7XG4mIzQzO1x0Y2FzZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUzpcbiYjNDM7XHRcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cylcbiYjNDM7XHRcdFx0cmV0dXJuIC1FUFJPVE9OT1NVUFBPUlQ7XG4mIzQzO1x0XHRmYWxsdGhyb3VnaDtcbiBcdGNhc2UgRFNBX1RBR19QUk9UT19FRFNBOlxuIFx0XHRzd2l0Y2ggKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VlZHNhX3N1cHBvcnQpIHtcbiBcdFx0Y2FzZSBNVjg4RTZYWFhfRURTQV9VTlNVUFBPUlRFRDpcbkBAIC02Njg5LDcgJiM0Mzs2NzAxLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIFx0XHRcdGdvdG8gdW53aW5kO1xuIFx0XHR9XG4gXHR9XG4mIzQzO1xuJiM0MztcdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlcHRwX3N1cHBvcnQpXG4mIzQzO1x0XHRlcnIgPSBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKGNoaXApO1xuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdGdvdG8gdW53aW5kO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG5AQCAtNjY5OSw2ICYjNDM7NjcxNiwxNSBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbiBcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnRfY29udGludWVfcmV2ZXJzZShjcHVfZHAsIGRzKVxuIFx0XHRtdjg4ZTZ4eHhfc2V0dXBfcG9ydF9tb2RlKGNoaXAsIGNwdV9kcC1cdTAwM2VpbmRleCk7XG4mIzQzO1x0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VwdHBfc3VwcG9ydCkge1xuJiM0MztcdFx0LyogTm90aGluZyBlbHNlIGNhbiBiZSBkb25lIGhlcmUsIGJ1dCBsZWF2aW5nIGEgcG9ydCBlbWJlZGRpbmdcbiYjNDM7XHRcdCAqIHRpbWUgc3RhbXBzIHRoZSBkcml2ZXIgd2lsbCBub3Qgc3RyaXAgY29ycnVwdHMgZXZlcnkgUFRQXG4mIzQzO1x0XHQgKiBldmVudCBmcmFtZSBpdCByZWNlaXZlcywgc28gbWFrZSB0aGUgZmFpbHVyZSB2aXNpYmxlLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAobXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKSlcbiYjNDM7XHRcdFx0ZGV2X2VycihjaGlwLVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XHRcJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBhcnJpdmFsIHRpbWUgc3RhbXAgbW9kZVxcblwmIzM0Oyk7XG4mIzQzO1x0fVxuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbmluZGV4IGU5NjZlN2M0Y2M1ZGVhLi5jNzVhNzE0NjRiMjBhYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuQEAgLTE4MCw2ICYjNDM7MTgwLDEzIEBAIHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyB7XG4gXHQgKiBwb3J0IDAsIDEgbWVhbnMgaW50ZXJuYWwgUEhZcyByYW5nZSBzdGFydHMgYXQgcG9ydCAxLCBldGNcbiBcdCAqL1xuIFx0dW5zaWduZWQgaW50IGludGVybmFsX3BoeXNfb2Zmc2V0O1xuJiM0MztcbiYjNDM7XHQvKiBUaGUgc3dpdGNoIGNhbiBlbWJlZCB0aGUgUFRQIGFycml2YWwgdGltZSBzdGFtcCBpbiB0aGUgcmVzZXJ2ZWQyXG4mIzQzO1x0ICogZmllbGQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyLCB3aGljaCB0aGUgZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzXG4mIzQzO1x0ICogdGFnIHByb3RvY29sIHNlbGVjdHMuIE90aGVyd2lzZSBhcnJpdmFsIHRpbWUgc3RhbXBzIGFyZSBvbmx5XG4mIzQzO1x0ICogYXZhaWxhYmxlIGZyb20gdGhlIHN3aXRjaCByZWdpc3RlcnMuXG4mIzQzO1x0ICovXG4mIzQzO1x0Ym9vbCBzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHM7XG4gfTtcbiBcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XG5AQCAtNDE5LDkgJiM0Mzs0MjYsMTIgQEAgc3RydWN0IG12ODhlNnh4eF9jaGlwIHtcbiBcdC8qIEdQSU8gcmVzb3VyY2VzICovXG4gXHR1OCBncGlvX2RhdGFbMl07XG4gXG4tXHQvKiBUaGlzIGN5Y2xlY291bnRlciBhYnN0cmFjdHMgdGhlIHN3aXRjaCBQVFAgdGltZS5cbi1cdCAqIHJlZ19sb2NrIG11c3QgYmUgaGVsZCBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IHJlYWQoKXMuXG4mIzQzO1x0LyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuIHB0cF9jbG9ja19sb2NrXG4mIzQzO1x0ICogcHJvdGVjdHMgdHN0YW1wX2NjIGFuZCB0c3RhbXBfdGMuIHRzdGFtcF9jeWNsZXMgY2FjaGVzIHRoZVxuJiM0MztcdCAqIHJlc3VsdCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKS5cbiBcdCAqL1xuJiM0MztcdHNwaW5sb2NrX3RcdFx0cHRwX2Nsb2NrX2xvY2s7XG4mIzQzO1x0dTY0XHRcdFx0dHN0YW1wX2N5Y2xlcztcbiBcdHN0cnVjdCBjeWNsZWNvdW50ZXJcdHRzdGFtcF9jYztcbiBcdHN0cnVjdCB0aW1lY291bnRlclx0dHN0YW1wX3RjO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29ya1x0b3ZlcmZsb3dfd29yaztcbkBAIC04MTUsNiAmIzQzOzgyNSwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbXY4OGU2eHh4X2hhc19sYWcoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFx0cmV0dXJuICEhY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWdsb2JhbDJfYWRkcjtcbiB9XG4gXG4mIzQzOy8qIFdoZXRoZXIgdGhlIGFjdGl2ZSB0YWdnaW5nIHByb3RvY29sIGhhcyB0aGUgc3dpdGNoIGVtYmVkIGFycml2YWwgdGltZSBzdGFtcHNcbiYjNDM7ICogaW4gdGhlIGZyYW1lIGluc3RlYWQgb2YgbGVhdmluZyB0aGVtIGluIHRoZSBQVFAgYXJyaXZhbCByZWdpc3RlcnMuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9oYXNfdGNhbShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4ge1xuIFx0cmV0dXJuICEhY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXRjYW1fYWRkcjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li43NGVhYWRlZWViNzg0MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAjaW5jbHVkZSBcJiMzNDtod3RzdGFtcC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cHRwLmhcJiMzNDtcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuIFxuICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS1cdTAwM2VjYikpXG4gXG5AQCAtOTQsNiAmIzQzOzk1LDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuIFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzO1xuIFx0c3RydWN0IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wICpwcyA9IFx1MDAyNmNoaXAtXHUwMDNlcG9ydF9od3RzdGFtcFtwb3J0XTtcbiBcdGJvb2wgdHN0YW1wX2VuYWJsZSA9IGZhbHNlO1xuJiM0MztcdGludCBlcnIgPSAwO1xuIFxuIFx0LyogUHJldmVudCB0aGUgVFgvUlggcGF0aHMgZnJvbSB0cnlpbmcgdG8gaW50ZXJhY3Qgd2l0aCB0aGVcbiBcdCAqIHRpbWVzdGFtcCBoYXJkd2FyZSB3aGlsZSB3ZSByZWNvbmZpZ3VyZSBpdC5cbkBAIC0xNDcsMjAgJiM0MzsxNDksMzAgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuIFx0aWYgKHRzdGFtcF9lbmFibGUpIHtcbiBcdFx0Y2hpcC1cdTAwM2VlbmFibGVfY291bnQgJiM0Mzs9IDE7XG4gXHRcdGlmIChjaGlwLVx1MDAzZWVuYWJsZV9jb3VudCA9PSAxIFx1MDAyNlx1MDAyNiBwdHBfb3BzLVx1MDAzZWdsb2JhbF9lbmFibGUpXG4tXHRcdFx0cHRwX29wcy1cdTAwM2VnbG9iYWxfZW5hYmxlKGNoaXApO1xuLVx0XHRpZiAocHRwX29wcy1cdTAwM2Vwb3J0X2VuYWJsZSlcbi1cdFx0XHRwdHBfb3BzLVx1MDAzZXBvcnRfZW5hYmxlKGNoaXAsIHBvcnQpO1xuJiM0MztcdFx0XHRlcnIgPSBwdHBfb3BzLVx1MDAzZWdsb2JhbF9lbmFibGUoY2hpcCk7XG4mIzQzO1x0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgcHRwX29wcy1cdTAwM2Vwb3J0X2VuYWJsZSlcbiYjNDM7XHRcdFx0ZXJyID0gcHRwX29wcy1cdTAwM2Vwb3J0X2VuYWJsZShjaGlwLCBwb3J0KTtcbiBcdH0gZWxzZSB7XG4gXHRcdGlmIChwdHBfb3BzLVx1MDAzZXBvcnRfZGlzYWJsZSlcbi1cdFx0XHRwdHBfb3BzLVx1MDAzZXBvcnRfZGlzYWJsZShjaGlwLCBwb3J0KTtcbiYjNDM7XHRcdFx0ZXJyID0gcHRwX29wcy1cdTAwM2Vwb3J0X2Rpc2FibGUoY2hpcCwgcG9ydCk7XG4gXHRcdGNoaXAtXHUwMDNlZW5hYmxlX2NvdW50IC09IDE7XG4gXHRcdGlmIChjaGlwLVx1MDAzZWVuYWJsZV9jb3VudCA9PSAwIFx1MDAyNlx1MDAyNiBwdHBfb3BzLVx1MDAzZWdsb2JhbF9kaXNhYmxlKVxuIFx0XHRcdHB0cF9vcHMtXHUwMDNlZ2xvYmFsX2Rpc2FibGUoY2hpcCk7XG4gXHR9XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiYjNDM7XG4gXHQvKiBPbmNlIGhhcmR3YXJlIGhhcyBiZWVuIGNvbmZpZ3VyZWQsIGVuYWJsZSB0aW1lc3RhbXAgY2hlY2tzXG4gXHQgKiBpbiB0aGUgUlgvVFggcGF0aHMuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBJbiBlbWJlZGRlZCBtb2RlIHRoZSBzd2l0Y2ggc3RhcnRzIG92ZXJ3cml0aW5nIHRoZSBQVFAgaGVhZGVyJiMzOTtzXG4mIzQzO1x0ICogcmVzZXJ2ZWQyIGZpZWxkIGFzIHNvb24gYXMgQ0ZHMiBpcyBhcm1lZCBhYm92ZSwgd2hpY2ggaXMgYmVmb3JlIHRoZVxuJiM0MztcdCAqIFJYIHBhdGggYmVnaW5zIHJlc3RvcmluZyBpdDsgb24gdGhlIHdheSBkb3duIHRoZSBSWCBwYXRoIHN0b3BzXG4mIzQzO1x0ICogcmVzdG9yaW5nIGJlZm9yZSB0aGUgaGFyZHdhcmUgc3RvcHMgZW1iZWRkaW5nLiBBbiBldmVudCBmcmFtZVxuJiM0MztcdCAqIHJlY2VpdmVkIGluc2lkZSBlaXRoZXIgd2luZG93IGlzIGRlbGl2ZXJlZCB3aXRoIHRoZSBzd2l0Y2gmIzM5O3NcbiYjNDM7XHQgKiBhcnJpdmFsIGNvdW50ZXIgc3RpbGwgaW4gaXRzIGhlYWRlci5cbiBcdCAqL1xuIFx0aWYgKHRzdGFtcF9lbmFibGUpXG4gXHRcdHNldF9iaXQoTVY4OEU2WFhYX0hXVFNUQU1QX0VOQUJMRUQsIFx1MDAyNnBzLVx1MDAzZXN0YXRlKTtcbkBAIC0yMTYsNiAmIzQzOzIyOCwxMCBAQCBzdGF0aWMgc3RydWN0IHB0cF9oZWFkZXIgKm12ODhlNnh4eF9zaG91bGRfdHN0YW1wKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXB0cF9zdXBwb3J0KVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiYjNDM7XHQvKiBNYXJ2ZWxsIHN3aXRjaGVzIGRvIG5vdCBzdXBwb3J0IElFRUUgMTU4OC0yMDAyIChQVFB2MSkuICovXG4mIzQzO1x0aWYgKCh0eXBlIFx1MDAyNiBQVFBfQ0xBU1NfVk1BU0spICE9IFBUUF9DTEFTU19WMilcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiBcdGhkciA9IHB0cF9wYXJzZV9oZWFkZXIoc2tiLCB0eXBlKTtcbiBcdGlmICghaGRyKVxuIFx0XHRyZXR1cm4gTlVMTDtcbkBAIC0yNDUsNiAmIzQzOzI2MSw1MiBAQCBzdGF0aWMgaW50IHNlcV9tYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdHNfc2VxaWQpXG4gXHRyZXR1cm4gdHNfc2VxaWQgPT0gbnRvaHMoaGRyLVx1MDAzZXNlcXVlbmNlX2lkKTtcbiB9XG4gXG4mIzQzOy8qIFJlY292ZXIgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIHdyb3RlIG92ZXIgdGhlIHJlc2VydmVkMiBmaWVsZCBvZiB0aGUgUFRQXG4mIzQzOyAqIGNvbW1vbiBoZWFkZXIsIHJlc3RvcmluZyB0aGUgZmllbGQgYWZ0ZXJ3YXJkcy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBib29sIHBhcnNlX2VtYmVkZGVkX3RzKHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgb2ZmID0gTVY4OEU2WFhYX1BUUF9BUlJfVFNfT0ZGU0VUO1xuJiM0MztcdHN0cnVjdCBwdHBfaGVhZGVyICpoZHI7XG4mIzQzO1xuJiM0MztcdCpucyA9IDA7XG4mIzQzO1xuJiM0MztcdGlmIChza2JfbGluZWFyaXplKHNrYikpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGhkciA9IHB0cF9wYXJzZV9oZWFkZXIoc2tiLCBTS0JfUFRQX1RZUEUoc2tiKSk7XG4mIzQzO1x0aWYgKCFoZHIpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdCpucyA9IGdldF91bmFsaWduZWRfYmUzMigodTggKiloZHIgJiM0Mzsgb2ZmKTtcbiYjNDM7XHRtZW1zZXQoKHU4ICopaGRyICYjNDM7IG9mZiwgMCwgNCk7XG4mIzQzO1x0c2tiX2NoZWNrc3VtX2NvbXBsZXRlX3Vuc2V0KHNrYik7XG4mIzQzO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBBcHBseSB0aGUgYXJyaXZhbCB0aW1lIHRoZSBzd2l0Y2ggZW1iZWRkZWQgaW4gdGhlIGZyYW1lLiBObyByZWdpc3RlciBhY2Nlc3NcbiYjNDM7ICogaXMgbmVlZGVkLCBzbyB0aGlzIHJ1bnMgaW5saW5lIG9uIHRoZSByZWNlaXZlIHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgaGFuZGVkXG4mIzQzOyAqIHRvIHRoZSBQVFAgd29ya2VyLiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBmcmFtZSBjb3VsZCBub3QgYmUgcmVzdG9yZWQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgYm9vbCBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKnNod3Q7XG4mIzQzO1x0dTY0IG5zO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKHNrYiwgXHUwMDI2bnMpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7XG4mIzQzO1xuJiM0MztcdHNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7XG4mIzQzO1x0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuJiM0MztcdHNod3QtXHUwMDNlaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiByZWcsXG5AQCAtMjg5LDkgJiM0MzszNTEsNyBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRpZiAobXY4OGU2eHh4X3RzX3ZhbGlkKHN0YXR1cykgXHUwMDI2XHUwMDI2IHNlcV9tYXRjaChza2IsIHNlcV9pZCkpIHtcbiBcdFx0XHRucyA9IHRpbWVoaSBcdTAwM2NcdTAwM2MgMTYgfCB0aW1lbG87XG4gXG4tXHRcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0XHRcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIG5zKTtcbi1cdFx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiYjNDM7XHRcdFx0bnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgbnMpO1xuIFx0XHRcdHNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7XG4gXHRcdFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuIFx0XHRcdHNod3QtXHUwMDNlaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XG5AQCAtMzA4LDcgJiM0MzszNjgsNiBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIFxuIFx0c2tiID0gc2tiX2RlcXVldWUoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuLVxuIFx0aWYgKHNrYilcbiBcdFx0bXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtXHUwMDNlYXJyMF9zdHNfcmVnLFxuIFx0XHRcdFx0ICAgXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuQEAgLTMxOSw5ICYjNDM7Mzc4LDE2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdFx0XHRcdCAgIFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlMik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgaXNfcGRlbGF5X3Jlc3AoY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcbiYjNDM7c3RhdGljIGJvb2wgaXNfcGRlbGF5X21zZyhjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKVxuIHtcbi1cdHJldHVybiAoaGRyLVx1MDAzZXRzbXQgXHUwMDI2IDB4ZikgPT0gMztcbiYjNDM7XHRzd2l0Y2ggKHB0cF9nZXRfbXNndHlwZShoZHIsIFBUUF9DTEFTU19WMikpIHtcbiYjNDM7XHRjYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVE6XG4mIzQzO1x0XHRmYWxsdGhyb3VnaDtcbiYjNDM7XHRjYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVNQOlxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gfVxuIFxuIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbkBAIC0zNDMsNyAmIzQzOzQwOSwyMiBAQCBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHRTS0JfUFRQX1RZUEUoc2tiKSA9IHR5cGU7XG4gXG4tXHRpZiAoaXNfcGRlbGF5X3Jlc3AoaGRyKSlcbiYjNDM7XHQvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGNhbiBiZSByZXR1cm5lZCBpbmxpbmUuIFRoZSBzd2l0Y2ggaGFzXG4mIzQzO1x0ICogb3ZlcndyaXR0ZW4gdGhlIHJlc2VydmVkMiBmaWVsZDsgaWYgaXQgY2Fubm90IGJlIHJlc3RvcmVkIHRoZSBmcmFtZVxuJiM0MztcdCAqIGlzIG5vIGxvbmdlciB3aGF0IHRoZSBzZW5kZXIgdHJhbnNtaXR0ZWQsIHNvIGRyb3AgaXQgcmF0aGVyIHRoYW5cbiYjNDM7XHQgKiBwYXNzIHVwIGEgY29ycnVwdGVkIGhlYWRlciB0aGF0IHdpbGwgZmFpbCB0aGUgUFRQLW92ZXItVURQIGNoZWNrc3VtXG4mIzQzO1x0ICogYW55d2F5LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChtdjg4ZTZ4eHhfcHRwX2VtYmVkZGVkX3RzKGNoaXApKSB7XG4mIzQzO1x0XHRpZiAoIW12ODhlNnh4eF9wdHBfcnhfdGltZXN0YW1wKGNoaXAsIHNrYikpIHtcbiYjNDM7XHRcdFx0a2ZyZWVfc2tiX3JlYXNvbihza2IsIFNLQl9EUk9QX1JFQVNPTl9OT01FTSk7XG4mIzQzO1x0XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChpc19wZGVsYXlfbXNnKGhkcikpXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlMiwgc2tiKTtcbiBcdGVsc2VcbiBcdFx0c2tiX3F1ZXVlX3RhaWwoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUsIHNrYik7XG5AQCAtNDA5LDkgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcbiBcdG1lbXNldChcdTAwMjZzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7XG4gXHR0aW1lX3JhdyA9ICgodTMyKWRlcGFydHVyZV9ibG9ja1syXSBcdTAwM2NcdTAwM2MgMTYpIHwgZGVwYXJ0dXJlX2Jsb2NrWzFdO1xuLVx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0bnMgPSB0aW1lY291bnRlcl9jeWMydGltZShcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgdGltZV9yYXcpO1xuLVx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4mIzQzO1x0bnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgdGltZV9yYXcpO1xuIFx0c2hod3RzdGFtcHMuaHd0c3RhbXAgPSBuc190b19rdGltZShucyk7XG4gXG4gXHRkZXZfZGJnKGNoaXAtXHUwMDNlZGV2LFxuQEAgLTQ1NCw3ICYjNDM7NTMzLDkgQEAgbG9uZyBtdjg4ZTZ4eHhfaHd0c3RhbXBfd29yayhzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cClcbiBcdFx0aWYgKHRlc3RfYml0KE1WODhFNlhYWF9IV1RTVEFNUF9UWF9JTl9QUk9HUkVTUywgXHUwMDI2cHMtXHUwMDNlc3RhdGUpKVxuIFx0XHRcdHJlc3RhcnQgfD0gbXY4OGU2eHh4X3R4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xuIFxuLVx0XHRtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7XG4mIzQzO1x0XHQvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGFyZSBhcHBsaWVkIG9uIHRoZSByZWNlaXZlIHBhdGguICovXG4mIzQzO1x0XHRpZiAoIW12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkpXG4mIzQzO1x0XHRcdG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcbiBcdH1cbiBcbiBcdHJldHVybiByZXN0YXJ0ID8gMSA6IC0xO1xuQEAgLTUyMywxNCAmIzQzOzYwNCw0MyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsIDApO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogUmV0dXJuIHRoZSBDRkcyIEFyclRTTW9kZSBmaWVsZCBmb3IgdGhlIGFjdGl2ZSBhcnJpdmFsIHRpbWUtc3RhbXAgbW9kZS4gKi9cbiYjNDM7c3RhdGljIHUxNiBtdjg4ZTZ4eHhfYXJyX3RzX2NmZzIoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkgP1xuJiM0MztcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfQVJSX1RTX1JFU0VSVkVEMiA6XG4mIzQzO1x0XHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfRElTQUJMRUQ7XG4gfVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbiB7XG4tXHRyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxuLVx0XHRcdFx0XHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1RTUEVDX01BVENIKTtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXG4mIzQzO1x0XHRcdFx0ICAgICAgIG12ODhlNnh4eF9hcnJfdHNfY2ZnMihjaGlwKSk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbiYjNDM7XHRcdFx0XHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5AQCAtNTQ5LDYgJiM0Mzs2NTksNzIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKiBQcm9ncmFtIHRoZSBoYXJkd2FyZSBmb3IgdGhlIGFycml2YWwgdGltZS1zdGFtcCBtb2RlIHRoZSBhY3RpdmUgdGFnZ2luZ1xuJiM0MzsgKiBwcm90b2NvbCBzZWxlY3RzLiBDYWxsZWQgZnJvbSBzZXR1cCBhbmQgYWdhaW4gd2hlbmV2ZXIgdGhlIHByb3RvY29sIGNoYW5nZXMsXG4mIzQzOyAqIGFzIHRoYXQgaXMgd2hhdCBkZWNpZGVzIHdoZXJlIGFycml2YWwgdGltZSBzdGFtcHMgYXJlIGRlbGl2ZXJlZC5cbiYjNDM7ICpcbiYjNDM7ICogTXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVnaXN0ZXIgbG9jayBoZWxkLlxuJiM0MzsgKi9cbiYjNDM7aW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzO1xuJiM0MztcdGludCBlcnIsIHJldCA9IDA7XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdC8qIEluIGVtYmVkZGVkIG1vZGUgdGhlIHN3aXRjaCBzdGFtcHMgZXZlcnkgZXZlbnQgbWVzc2FnZSBpdCBmb3J3YXJkcyxcbiYjNDM7XHQgKiBwZWVyIGRlbGF5IGluY2x1ZGVkLCBzbyBsZWF2ZSB0aGUgYXJyaXZhbCBjYXB0dXJlIHBvaW50ZXIgYWxvbmVcbiYjNDM7XHQgKiByYXRoZXIgdGhhbiBkaXZlcnRpbmcgcGVlciBkZWxheSBtZXNzYWdlcyB0byB0aGUgQVJSSVZBTDEgcmVnaXN0ZXJzLlxuJiM0MztcdCAqL1xuJiM0MztcdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbiYjNDM7XHRcdFx0XHQgIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkgPyAwIDpcbiYjNDM7XHRcdFx0XHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxuJiM0MztcdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuJiM0MztcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cylcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtdjg4ZTZ4eHhfbnVtX3BvcnRzKGNoaXApOyAmIzQzOyYjNDM7aSkge1xuJiM0MztcdFx0c3RydWN0IG12ODhlNnh4eF9wb3J0X2h3dHN0YW1wICpwcyA9IFx1MDAyNmNoaXAtXHUwMDNlcG9ydF9od3RzdGFtcFtpXTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBBbnl0aGluZyBhbHJlYWR5IHF1ZXVlZCB3YXMgcXVldWVkIHVuZGVyIHRoZSBwcmV2aW91cyBtb2RlXG4mIzQzO1x0XHQgKiBhbmQgY2FuIG5vIGxvbmdlciBiZSBtYXRjaGVkIHdpdGggYW4gYXJyaXZhbCB0aW1lLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuJiM0MztcdFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlMik7XG4mIzQzO1xuJiM0MztcdFx0LyogVGhlIGFycml2YWwgcmVnaXN0ZXJzIGtlZXAgY2FwdHVyaW5nIGluIGVtYmVkZGVkIG1vZGUgd2l0aFxuJiM0MztcdFx0ICogbm90aGluZyB0byBkcmFpbiB0aGVtLCBzbyBjbGVhciB0aGUgc3RhdHVzIGhlcmUgb3IgdGhlXG4mIzQzO1x0XHQgKiByZWdpc3RlciBwYXRoIHJlc3VtZXMgb24gYSBzdGFsZSBjYXB0dXJlLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgcHRwX29wcy1cdTAwM2VhcnIwX3N0c19yZWcsIDApO1xuJiM0MztcdFx0aWYgKGVyciBcdTAwMjZcdTAwMjYgIXJldClcbiYjNDM7XHRcdFx0cmV0ID0gZXJyO1xuJiM0MztcbiYjNDM7XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBpLCBwdHBfb3BzLVx1MDAzZWFycjFfc3RzX3JlZywgMCk7XG4mIzQzO1x0XHRpZiAoZXJyIFx1MDAyNlx1MDAyNiAhcmV0KVxuJiM0MztcdFx0XHRyZXQgPSBlcnI7XG4mIzQzO1xuJiM0MztcdFx0LyogUG9ydHMgdGhhdCBoYXZlIG5vdCBlbmFibGVkIHRpbWUgc3RhbXBpbmcgcGljayB0aGUgbW9kZSB1cCBpblxuJiM0MztcdFx0ICogbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKCkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChwcy1cdTAwM2V0c3RhbXBfY29uZmlnLnJ4X2ZpbHRlciA9PSBIV1RTVEFNUF9GSUxURVJfTk9ORSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0LyogUHJvZ3JhbSBldmVyeSBwb3J0IGV2ZW4gaWYgb25lIGZhaWxzLiBBIHBvcnQgbGVmdCBlbWJlZGRpbmdcbiYjNDM7XHRcdCAqIHRpbWUgc3RhbXBzIHRoYXQgdGhlIGRyaXZlciBubyBsb25nZXIgc3RyaXBzIGNvcnJ1cHRzIHRoZVxuJiM0MztcdFx0ICogUFRQIGhlYWRlciBvZiBldmVyeSBldmVudCBmcmFtZSBpdCByZWNlaXZlcy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIGksIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIG12ODhlNnh4eF9hcnJfdHNfY2ZnMihjaGlwKSk7XG4mIzQzO1x0XHRpZiAoZXJyIFx1MDAyNlx1MDAyNiAhcmV0KVxuJiM0MztcdFx0XHRyZXQgPSBlcnI7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcHRwX29wcztcbkBAIC01ODQsOSAmIzQzOzc2MCw3IEBAIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdC8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi9cbi1cdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbi1cdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4mIzQzO1x0ZXJyID0gbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG5pbmRleCBjMzU5ODIxZDVhNmVhYS4uMmZlN2M3NDI5YmZmMWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuQEAgLTEzLDYgJiM0MzsxMyw4IEBAXG4gI2lmbmRlZiBfTVY4OEU2WFhYX0hXVFNUQU1QX0hcbiAjZGVmaW5lIF9NVjg4RTZYWFhfSFdUU1RBTVBfSFxuIFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFx1MDAzZVxuJiM0MztcbiAjaW5jbHVkZSBcJiMzNDtjaGlwLmhcJiMzNDtcbiBcbiAvKiBHbG9iYWwgNjM1MiBQVFAgcmVnaXN0ZXJzICovXG5AQCAtNjQsMTAgJiM0Mzs2NiwyMSBAQFxuIFxuIC8qIE9mZnNldCAweDAyOiBQVFAgQ29uZmlndXJhdGlvbiAyICovXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMlx0XHRcdFx0MHgwMlxuLSNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfRU1CRURfQVJSSVZBTFx0XHQweDEwMDBcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0RFUF9JUlFfRU5cdFx0MHgwMDAyXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfSVJRX0VOXHRcdDB4MDAwMVxuIFxuJiM0MzsvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXG4mIzQzOyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnRcbiYjNDM7ICogZnJhbWVzLiBBIG5vbi16ZXJvIHZhbHVlIGlzIHRoZSBieXRlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIFBUUCBjb21tb25cbiYjNDM7ICogaGVhZGVyLCBhdCB3aGljaCB0aGUgc3dpdGNoIG92ZXJ3cml0ZXMgZm91ciBieXRlcyBpbiBwbGFjZTsgd2UgYWx3YXlzIHBvaW50XG4mIzQzOyAqIGl0IGF0IHRoZSBoZWFkZXImIzM5O3MgcmVzZXJ2ZWQyIGZpZWxkIHNvIHRoZSBmcmFtZSBsZW5ndGggaXMgbGVmdCBhbG9uZS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfT0ZGU0VUXHRcdFx0XFxcbiYjNDM7XHRvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKVxuJiM0MzsjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19ESVNBQkxFRFx0XHQweDAwMDBcbiYjNDM7I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfUkVTRVJWRUQyXHRcXFxuJiM0MztcdChNVjg4RTZYWFhfUFRQX0FSUl9UU19PRkZTRVQgXHUwMDNjXHUwMDNjIDgpXG4mIzQzO1xuIC8qIE9mZnNldCAweDAzOiBQVFAgTEVEIENvbmZpZ3VyYXRpb24gKi9cbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9MRURfQ0ZHXHQweDAzXG4gXG5AQCAtMTI2LDYgJiM0MzsxMzksNyBAQCBpbnQgbXY4OGU2eHh4X2dldF90c19pbmZvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gbG9uZyBtdjg4ZTZ4eHhfaHd0c3RhbXBfd29yayhzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCk7XG4gaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xuJiM0MztpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xuIHZvaWQgbXY4OGU2eHh4X2h3dHN0YW1wX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpO1xuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpO1xuQEAgLTE3Miw2ICYjNDM7MTg2LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSB2b2lkIG12ODhlNnh4eF9od3RzdGFtcF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbiB7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5pbmRleCBmNzYwMzU3M2QzYTk4NC4uMmE3Zjk3NjI1ZTM3NTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXG5AQCAtMjMxLDE1ICYjNDM7MjMxLDM3IEBAIHN0YXRpYyB2b2lkIG12ODhlNjM1Ml90YWlfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVnbHkpXG4gXG4gXHQvKiBXZSBvbmx5IGhhdmUgb25lIHRpbWVzdGFtcGluZyBjaGFubmVsLiAqL1xuIFx0ZXYuaW5kZXggPSAwO1xuLVx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0ZXYudGltZXN0YW1wID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIHJhd190cyk7XG4tXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiYjNDM7XHRldi50aW1lc3RhbXAgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgcmF3X3RzKTtcbiBcbiBcdHB0cF9jbG9ja19ldmVudChjaGlwLVx1MDAzZXB0cF9jbG9jaywgXHUwMDI2ZXYpO1xuIG91dDpcbiBcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZjaGlwLVx1MDAzZXRhaV9ldmVudF93b3JrLCBUQUlfRVZFTlRfV09SS19JTlRFUlZBTCk7XG4gfVxuIFxuJiM0MzsvKiBSZWZyZXNoIHRoZSBjYWNoZWQgY291bnRlciB2YWx1ZSB0aGF0IHRoZSByZWFkKCkgY2FsbGJhY2sgcmV0dXJucy4gVGhlXG4mIzQzOyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2tcbiYjNDM7ICogYmVjYXVzZSBNRElPIHJlYWRzIGNhbiBzbGVlcC4gVGhlIGNhbGxlciBtdXN0IGhvbGQgcmVnX2xvY2ssIHdoaWNoXG4mIzQzOyAqIHNlcmlhbGl6ZXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzO1xuJiM0MztcbiYjNDM7XHRpZiAocHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKVxuJiM0MztcdFx0Y2hpcC1cdTAwM2V0c3RhbXBfY3ljbGVzID0gcHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX2NjKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpXG4mIzQzO3tcbiYjNDM7XHR1NjQgbnM7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBjeWNsZXMpO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbnM7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbiB7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBwdHBfdG9fY2hpcChwdHApO1xuQEAgLTI1OCw5ICYjNDM7MjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXG4gXHRkaWZmID0gZGl2X3U2NChhZGosIGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHRfZGVtKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbiYjNDM7XHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xuIFxuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdHRpbWVjb3VudGVyX3JlYWQoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMpO1xuIFx0Y2hpcC1cdTAwM2V0c3RhbXBfY2MubXVsdCA9IG5lZ19hZGogPyBtdWx0IC0gZGlmZiA6IG11bHQgJiM0MzsgZGlmZjtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuIFxuQEAgLTI3MSw4ICYjNDM7Mjk2LDE2IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXG4ge1xuIFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTtcbiBcbiYjNDM7XHQvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzXG4mIzQzO1x0ICogdGhpcyBhZ2FpbnN0IHRoZSBvdGhlciB0aW1lY291bnRlciB3cml0ZXJzLCB3aGljaCBkcm9wIGl0IG9ubHlcbiYjNDM7XHQgKiBhZnRlciB0aGVpciBoYXJkd2FyZSByZWFkIGhhcyBjb21wbGV0ZWQuXG4mIzQzO1x0ICovXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdHRpbWVjb3VudGVyX2FkanRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIGRlbHRhKTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTI4NSw3ICYjNDM7MzE4LDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9nZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuIFx0dTY0IG5zO1xuIFxuIFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuJiM0MztcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcdG5zID0gdGltZWNvdW50ZXJfcmVhZChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90Yyk7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4mIzQzO1xuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG4gXHQqdHMgPSBuc190b190aW1lc3BlYzY0KG5zKTtcbkBAIC0zMDIsNyAmIzQzOzM0MCwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfc2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbiBcdG5zID0gdGltZXNwZWM2NF90b19ucyh0cyk7XG4gXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4mIzQzO1x0bXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0dGltZWNvdW50ZXJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MsIG5zKTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiYjNDM7XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTQ0NCwxNCAmIzQzOzQ4NywxMiBAQCBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgbXY4OGU2MzkwX3B0cF9vcHMgPSB7XG4gXHRcdCgxIFx1MDAzY1x1MDAzYyBIV1RTVEFNUF9GSUxURVJfUFRQX1YyX0RFTEFZX1JFUSksXG4gfTtcbiBcbiYjNDM7LyogUmV0dXJuIHRoZSB2YWx1ZSBtb3N0IHJlY2VudGx5IGZldGNoZWQgYnkgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcygpXG4mIzQzOyAqIHJhdGhlciB0aGFuIHJlYWRpbmcgdGhlIGhhcmR3YXJlIG92ZXIgTURJTy5cbiYjNDM7ICovXG4gc3RhdGljIHU2NCBtdjg4ZTZ4eHhfcHRwX2Nsb2NrX3JlYWQoc3RydWN0IGN5Y2xlY291bnRlciAqY2MpXG4ge1xuLVx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gY2NfdG9fY2hpcChjYyk7XG4tXG4tXHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzLVx1MDAzZWNsb2NrX3JlYWQpXG4tXHRcdHJldHVybiBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHMtXHUwMDNlY2xvY2tfcmVhZChjYyk7XG4tXG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRyZXR1cm4gY2NfdG9fY2hpcChjYyktXHUwMDNldHN0YW1wX2N5Y2xlcztcbiB9XG4gXG4gLyogV2l0aCBhIDI1ME1IeiBpbnB1dCBjbG9jaywgdGhlIDMyLWJpdCB0aW1lc3RhbXAgY291bnRlciBvdmVyZmxvd3MgaW4gfjE3LjJcbkBAIC00ODYsNiAmIzQzOzUyNywxMiBAQCBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5tdWx0XHQ9IGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHQ7XG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5zaGlmdFx0PSBjaGlwLVx1MDAzZWNjX2NvZWZmcy1cdTAwM2VjY19zaGlmdDtcbiBcbiYjNDM7XHQvKiBQcmltZSB0aGUgY3ljbGUgY291bnRlciBjYWNoZSBmb3IgdGhlIHRpbWVjb3VudGVyX2luaXQoKSBiZWxvdy5cbiYjNDM7XHQgKiBUaGUgY2FsbGVyIGhvbGRzIHJlZ19sb2NrLCBhbmQgbm90aGluZyBjYW4gcmVhY2ggdGhlIFBUUCBjbG9ja1xuJiM0MztcdCAqIHVudGlsIHB0cF9jbG9ja19yZWdpc3RlcigpIGJlbG93LCBzbyBubyBsb2NraW5nIGlzIG5lZWRlZCBoZXJlLlxuJiM0MztcdCAqL1xuJiM0MztcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4mIzQzO1xuIFx0dGltZWNvdW50ZXJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MsXG4gXHRcdFx0IGt0aW1lX3RvX25zKGt0aW1lX2dldF9yZWFsKCkpKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuaW5kZXggOTViZGRkYjBiZjM5ZjguLjQ0NzE4ZTEyMGRlMjBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuQEAgLTY4LDYgJiM0Mzs2OCw3IEBAXG4gXG4gaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbiB2b2lkIG12ODhlNnh4eF9wdHBfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xuJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7XG4gXG4gI2RlZmluZSBwdHBfdG9fY2hpcChwdHApIGNvbnRhaW5lcl9vZihwdHAsIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcdFxcXG4gXHRcdFx0XHQgICAgICBwdHBfY2xvY2tfaW5mbylcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kc2EuaCBiL2luY2x1ZGUvbmV0L2RzYS5oXG5pbmRleCA4YzE2ZWYyM2NjMTAyYS4uMmRmY2M1NDlkZTI5NjQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9kc2EuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvZHNhLmhcbkBAIC01OSw2ICYjNDM7NTksNyBAQCBzdHJ1Y3QgdGNfYWN0aW9uO1xuICNkZWZpbmUgRFNBX1RBR19QUk9UT19NWExfR1NXMVhYX1ZBTFVFXHRcdDMxXG4gI2RlZmluZSBEU0FfVEFHX1BST1RPX01YTDg2Ml9WQUxVRVx0XHQzMlxuICNkZWZpbmUgRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFXHRcdDMzXG4mIzQzOyNkZWZpbmUgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNfVkFMVUVcdDM0XG4gXG4gZW51bSBkc2FfdGFnX3Byb3RvY29sIHtcbiBcdERTQV9UQUdfUFJPVE9fTk9ORVx0XHQ9IERTQV9UQUdfUFJPVE9fTk9ORV9WQUxVRSxcbkBAIC05NSw2ICYjNDM7OTYsNyBAQCBlbnVtIGRzYV90YWdfcHJvdG9jb2wge1xuIFx0RFNBX1RBR19QUk9UT19NWExfR1NXMVhYXHQ9IERTQV9UQUdfUFJPVE9fTVhMX0dTVzFYWF9WQUxVRSxcbiBcdERTQV9UQUdfUFJPVE9fTVhMODYyXHRcdD0gRFNBX1RBR19QUk9UT19NWEw4NjJfVkFMVUUsXG4gXHREU0FfVEFHX1BST1RPX05FVENcdFx0PSBEU0FfVEFHX1BST1RPX05FVENfVkFMVUUsXG4mIzQzO1x0RFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSxcbiB9O1xuIFxuIHN0cnVjdCBkc2Ffc3dpdGNoO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2RzYS5jIGIvbmV0L2RzYS90YWdfZHNhLmNcbmluZGV4IGQ1ZmZlZTM1ZmJiNTNiLi43NDkwZWNjMDRhYTU3NCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2RzYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19kc2EuY1xuQEAgLTQwMiw2ICYjNDM7NDAyLDIzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgZWRzYV9uZXRkZXZfb3BzID0ge1xuIFxuIERTQV9UQUdfRFJJVkVSKGVkc2FfbmV0ZGV2X29wcyk7XG4gTU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fRURTQSwgRURTQV9OQU1FKTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUVcdFwmIzM0O2Vkc2EtcHRwLXJlc2VydmVkMi10c1wmIzM0O1xuJiM0MztcbiYjNDM7LyogU2FtZSB3aXJlIGZvcm1hdCBhcyBFRFNBLCBleGNlcHQgdGhhdCB0aGUgc3dpdGNoIG92ZXJ3cml0ZXMgdGhlIHJlc2VydmVkMlxuJiM0MzsgKiBmaWVsZCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIgd2l0aCB0aGUgZnJhbWUmIzM5O3MgYXJyaXZhbCB0aW1lIHN0YW1wLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyA9IHtcbiYjNDM7XHQubmFtZVx0XHQgPSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSxcbiYjNDM7XHQucHJvdG9cdFx0ID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXG4mIzQzO1x0LnhtaXRcdFx0ID0gZWRzYV94bWl0LFxuJiM0MztcdC5yY3ZcdFx0ID0gZWRzYV9yY3YsXG4mIzQzO1x0Lm5lZWRlZF9oZWFkcm9vbSA9IEVEU0FfSExFTixcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO0RTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTtcbiYjNDM7TU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxuJiM0MztcdFx0XHQgICAgRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUpO1xuICNlbmRpZlx0LyogQ09ORklHX05FVF9EU0FfVEFHX0VEU0EgKi9cbiBcbiBzdGF0aWMgc3RydWN0IGRzYV90YWdfZHJpdmVyICpkc2FfdGFnX2RyaXZlcnNbXSA9IHtcbkBAIC00MTAsNiAmIzQzOzQyNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHNhX3RhZ19kcml2ZXIgKmRzYV90YWdfZHJpdmVyc1tdID0ge1xuICNlbmRpZlxuICNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1RBR19FRFNBKVxuIFx0XHUwMDI2RFNBX1RBR19EUklWRVJfTkFNRShlZHNhX25ldGRldl9vcHMpLFxuJiM0MztcdFx1MDAyNkRTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpLFxuICNlbmRpZlxuIH07XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eCkgYW5kIGFkZHMgYSBuZXcgRFNBIHRhZyBwcm90b2NvbCBpbiBuZXQvZHNhL3RhZ19kc2EuYy4gVGhlIE1hcnZlbGwgODhFNnh4eCBkcml2ZXIgaXMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIHN3aXRjaGVzIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBUaGUgbmV3IHRhZyBwcm90b2NvbCBpbiB0YWdfZHNhLmMgc2ltcGx5IHJldXNlcyBleGlzdGluZyB0cmFuc21pdCBhbmQgcmVjZWl2ZSBmdW5jdGlvbnMgKGVkc2FfeG1pdCwgZWRzYV9yY3YpIGFuZCBjb250YWlucyBubyBuZXcgZXhlY3V0YWJsZSBsb2dpYy4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgaXMgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZWU3M2U0NmY0MWYyMjU2NTYzYjdjNGMwM2YxYzNlMWRhMTBkOTViCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMjcgMTQ6MjI6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9kc2EtcG9ydC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbAppbmRleCA0ODAxMjA0Njk5NTM0Yi4uOGQxMmM4ZjFiZDUxZWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbApAQCAtNTMsNiAmIzQzOzUzLDcgQEAgcHJvcGVydGllczoKICAgICBlbnVtOgogICAgICAgLSBkc2EKICAgICAgIC0gZWRzYQomIzQzOyAgICAgIC0gZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzCiAgICAgICAtIG9jZWxvdAogICAgICAgLSBvY2Vsb3QtODAyMXEKICAgICAgIC0gcnRsOF80CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jCmluZGV4IDgwYjg3N2M3NDUxM2Q2Li5lOTI1MjRiZWI0MGM0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMKQEAgLTMyNzEsNyAmIzQzOzMyNzEsOCBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9zZXR1cF9wb3J0X21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCkKIAlpZiAoY2hpcC0mZ3Q7dGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRFNBKQogCQlyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZHNhKGNoaXAsIHBvcnQpOwogCi0JaWYgKGNoaXAtJmd0O3RhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0EpCiYjNDM7CWlmIChjaGlwLSZndDt0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBIHx8CiYjNDM7CSAgICBjaGlwLSZndDt0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMpCiAJCXJldHVybiBtdjg4ZTZ4eHhfc2V0X3BvcnRfbW9kZV9lZHNhKGNoaXAsIHBvcnQpOwogCiAJcmV0dXJuIC1FSU5WQUw7CkBAIC02MzcwLDYgJiM0Mzs2MzcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHsKIAkJLmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCwKIAkJLnB0cF9zdXBwb3J0ID0gdHJ1ZSwKIAkJLm9wcyA9ICZhbXA7bXY4OGU2MzQxX29wcywKJiM0MzsJCS5zdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMgPSB0cnVlLAogCX0sCiAKIAlbTVY4OEU2MzUwXSA9IHsKQEAgLTY0NDcsNiAmIzQzOzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0gewogCQkuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELAogCQkucHRwX3N1cHBvcnQgPSB0cnVlLAogCQkub3BzID0gJmFtcDttdjg4ZTYzNTJfb3BzLAomIzQzOwkJLnN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cyA9IHRydWUsCiAJfSwKIAlbTVY4OEU2MzYxXSA9IHsKIAkJLnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSwKQEAgLTY2MzUsNiAmIzQzOzY2MzgsNyBAQCBzdGF0aWMgc3RydWN0IG12ODhlNnh4eF9jaGlwICptdjg4ZTZ4eHhfYWxsb2NfY2hpcChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJY2hpcC0mZ3Q7ZGV2ID0gZGV2OwogCiAJbXV0ZXhfaW5pdCgmYW1wO2NoaXAtJmd0O3JlZ19sb2NrKTsKJiM0MzsJc3Bpbl9sb2NrX2luaXQoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtjaGlwLSZndDttZGlvcyk7CiAJaWRyX2luaXQoJmFtcDtjaGlwLSZndDtwb2xpY2llcyk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtjaGlwLSZndDttc3RzKTsKQEAgLTY2NTgsOSAmIzQzOzY2NjIsMTcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfY2hhbmdlX3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsCiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtJmd0O3ByaXY7CiAJZW51bSBkc2FfdGFnX3Byb3RvY29sIG9sZF9wcm90b2NvbDsKIAlzdHJ1Y3QgZHNhX3BvcnQgKmNwdV9kcDsKLQlpbnQgZXJyOwomIzQzOwlpbnQgZXJyID0gMDsKIAomIzQzOwkvKiBUaGUgZW1iZWRkZWQgYXJyaXZhbC10aW1lLXN0YW1wIHByb3RvY29sIGlzIGFuIEVEU0EgZXh0ZW5zaW9uOiBFRFNBCiYjNDM7CSAqIGlzIHRoZSBtb2Rlcm4gdGFnIGZvcm1hdCBmb3IgdGhlc2Ugc3dpdGNoZXMsIHNvIGl0IGlzIHRoZSBvbmUgd2UKJiM0MzsJICogZXh0ZW5kOyB0aGUgbGVnYWN5IERTQSB0YWcgaXMgaW50ZW50aW9uYWxseSBsZWZ0IHVuLWV4dGVuZGVkLgomIzQzOwkgKi8KIAlzd2l0Y2ggKHByb3RvKSB7CiYjNDM7CWNhc2UgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM6CiYjNDM7CQlpZiAoIWNoaXAtJmd0O2luZm8tJmd0O3N1cHBvcnRzX3B0cF9lbWJlZGRlZF90cykKJiM0MzsJCQlyZXR1cm4gLUVQUk9UT05PU1VQUE9SVDsKJiM0MzsJCWZhbGx0aHJvdWdoOwogCWNhc2UgRFNBX1RBR19QUk9UT19FRFNBOgogCQlzd2l0Y2ggKGNoaXAtJmd0O2luZm8tJmd0O2Vkc2Ffc3VwcG9ydCkgewogCQljYXNlIE1WODhFNlhYWF9FRFNBX1VOU1VQUE9SVEVEOgpAQCAtNjY4OSw3ICYjNDM7NjcwMSwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywKIAkJCWdvdG8gdW53aW5kOwogCQl9CiAJfQomIzQzOwomIzQzOwlpZiAoY2hpcC0mZ3Q7aW5mby0mZ3Q7cHRwX3N1cHBvcnQpCiYjNDM7CQllcnIgPSBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKGNoaXApOwogCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJZ290byB1bndpbmQ7CiAKIAlyZXR1cm4gMDsKIApAQCAtNjY5OSw2ICYjNDM7NjcxNiwxNSBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywKIAltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7CiAJZHNhX3N3aXRjaF9mb3JfZWFjaF9jcHVfcG9ydF9jb250aW51ZV9yZXZlcnNlKGNwdV9kcCwgZHMpCiAJCW12ODhlNnh4eF9zZXR1cF9wb3J0X21vZGUoY2hpcCwgY3B1X2RwLSZndDtpbmRleCk7CiYjNDM7CWlmIChjaGlwLSZndDtpbmZvLSZndDtwdHBfc3VwcG9ydCkgewomIzQzOwkJLyogTm90aGluZyBlbHNlIGNhbiBiZSBkb25lIGhlcmUsIGJ1dCBsZWF2aW5nIGEgcG9ydCBlbWJlZGRpbmcKJiM0MzsJCSAqIHRpbWUgc3RhbXBzIHRoZSBkcml2ZXIgd2lsbCBub3Qgc3RyaXAgY29ycnVwdHMgZXZlcnkgUFRQCiYjNDM7CQkgKiBldmVudCBmcmFtZSBpdCByZWNlaXZlcywgc28gbWFrZSB0aGUgZmFpbHVyZSB2aXNpYmxlLgomIzQzOwkJICovCiYjNDM7CQlpZiAobXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKSkKJiM0MzsJCQlkZXZfZXJyKGNoaXAtJmd0O2RldiwKJiM0MzsJCQkJJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBhcnJpdmFsIHRpbWUgc3RhbXAgbW9kZVxuJiMzNDspOwomIzQzOwl9CiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKIAlyZXR1cm4gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaAppbmRleCBlOTY2ZTdjNGNjNWRlYS4uYzc1YTcxNDY0YjIwYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oCkBAIC0xODAsNiAmIzQzOzE4MCwxMyBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gewogCSAqIHBvcnQgMCwgMSBtZWFucyBpbnRlcm5hbCBQSFlzIHJhbmdlIHN0YXJ0cyBhdCBwb3J0IDEsIGV0YwogCSAqLwogCXVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDsKJiM0MzsKJiM0MzsJLyogVGhlIHN3aXRjaCBjYW4gZW1iZWQgdGhlIFBUUCBhcnJpdmFsIHRpbWUgc3RhbXAgaW4gdGhlIHJlc2VydmVkMgomIzQzOwkgKiBmaWVsZCBvZiB0aGUgUFRQIGNvbW1vbiBoZWFkZXIsIHdoaWNoIHRoZSBlZHNhLXB0cC1yZXNlcnZlZDItdHMKJiM0MzsJICogdGFnIHByb3RvY29sIHNlbGVjdHMuIE90aGVyd2lzZSBhcnJpdmFsIHRpbWUgc3RhbXBzIGFyZSBvbmx5CiYjNDM7CSAqIGF2YWlsYWJsZSBmcm9tIHRoZSBzd2l0Y2ggcmVnaXN0ZXJzLgomIzQzOwkgKi8KJiM0MzsJYm9vbCBzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHM7CiB9OwogCiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7CkBAIC00MTksOSAmIzQzOzQyNiwxMiBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgewogCS8qIEdQSU8gcmVzb3VyY2VzICovCiAJdTggZ3Bpb19kYXRhWzJdOwogCi0JLyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuCi0JICogcmVnX2xvY2sgbXVzdCBiZSBoZWxkIGZvciBhbnkgb3BlcmF0aW9uIHRoYXQgcmVhZCgpcy4KJiM0MzsJLyogVGhpcyBjeWNsZWNvdW50ZXIgYWJzdHJhY3RzIHRoZSBzd2l0Y2ggUFRQIHRpbWUuIHB0cF9jbG9ja19sb2NrCiYjNDM7CSAqIHByb3RlY3RzIHRzdGFtcF9jYyBhbmQgdHN0YW1wX3RjLiB0c3RhbXBfY3ljbGVzIGNhY2hlcyB0aGUKJiM0MzsJICogcmVzdWx0IG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgYnkgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcygpLgogCSAqLwomIzQzOwlzcGlubG9ja190CQlwdHBfY2xvY2tfbG9jazsKJiM0MzsJdTY0CQkJdHN0YW1wX2N5Y2xlczsKIAlzdHJ1Y3QgY3ljbGVjb3VudGVyCXRzdGFtcF9jYzsKIAlzdHJ1Y3QgdGltZWNvdW50ZXIJdHN0YW1wX3RjOwogCXN0cnVjdCBkZWxheWVkX3dvcmsJb3ZlcmZsb3dfd29yazsKQEAgLTgxNSw2ICYjNDM7ODI1LDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtdjg4ZTZ4eHhfaGFzX2xhZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiAJcmV0dXJuICEhY2hpcC0mZ3Q7aW5mby0mZ3Q7Z2xvYmFsMl9hZGRyOwogfQogCiYjNDM7LyogV2hldGhlciB0aGUgYWN0aXZlIHRhZ2dpbmcgcHJvdG9jb2wgaGFzIHRoZSBzd2l0Y2ggZW1iZWQgYXJyaXZhbCB0aW1lIHN0YW1wcwomIzQzOyAqIGluIHRoZSBmcmFtZSBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlbSBpbiB0aGUgUFRQIGFycml2YWwgcmVnaXN0ZXJzLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBtdjg4ZTZ4eHhfcHRwX2VtYmVkZGVkX3RzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKJiM0Mzt7CiYjNDM7CXJldHVybiBjaGlwLSZndDt0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9oYXNfdGNhbShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiB7CiAJcmV0dXJuICEhY2hpcC0mZ3Q7aW5mby0mZ3Q7dGNhbV9hZGRyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jCmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li43NGVhYWRlZWViNzg0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYwpAQCAtMTUsNiAmIzQzOzE1LDcgQEAKICNpbmNsdWRlICYjMzQ7aHd0c3RhbXAuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3B0cC5oJiMzNDsKICNpbmNsdWRlICZsdDtsaW51eC9wdHBfY2xhc3NpZnkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAKICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS0mZ3Q7Y2IpKQogCkBAIC05NCw2ICYjNDM7OTUsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9zZXRfaHd0c3RhbXBfY29uZmlnKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsCiAJY29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC0mZ3Q7aW5mby0mZ3Q7b3BzLSZndDtwdHBfb3BzOwogCXN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMgPSAmYW1wO2NoaXAtJmd0O3BvcnRfaHd0c3RhbXBbcG9ydF07CiAJYm9vbCB0c3RhbXBfZW5hYmxlID0gZmFsc2U7CiYjNDM7CWludCBlcnIgPSAwOwogCiAJLyogUHJldmVudCB0aGUgVFgvUlggcGF0aHMgZnJvbSB0cnlpbmcgdG8gaW50ZXJhY3Qgd2l0aCB0aGUKIAkgKiB0aW1lc3RhbXAgaGFyZHdhcmUgd2hpbGUgd2UgcmVjb25maWd1cmUgaXQuCkBAIC0xNDcsMjAgJiM0MzsxNDksMzAgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LAogCWlmICh0c3RhbXBfZW5hYmxlKSB7CiAJCWNoaXAtJmd0O2VuYWJsZV9jb3VudCAmIzQzOz0gMTsKIAkJaWYgKGNoaXAtJmd0O2VuYWJsZV9jb3VudCA9PSAxICZhbXA7JmFtcDsgcHRwX29wcy0mZ3Q7Z2xvYmFsX2VuYWJsZSkKLQkJCXB0cF9vcHMtJmd0O2dsb2JhbF9lbmFibGUoY2hpcCk7Ci0JCWlmIChwdHBfb3BzLSZndDtwb3J0X2VuYWJsZSkKLQkJCXB0cF9vcHMtJmd0O3BvcnRfZW5hYmxlKGNoaXAsIHBvcnQpOwomIzQzOwkJCWVyciA9IHB0cF9vcHMtJmd0O2dsb2JhbF9lbmFibGUoY2hpcCk7CiYjNDM7CQlpZiAoIWVyciAmYW1wOyZhbXA7IHB0cF9vcHMtJmd0O3BvcnRfZW5hYmxlKQomIzQzOwkJCWVyciA9IHB0cF9vcHMtJmd0O3BvcnRfZW5hYmxlKGNoaXAsIHBvcnQpOwogCX0gZWxzZSB7CiAJCWlmIChwdHBfb3BzLSZndDtwb3J0X2Rpc2FibGUpCi0JCQlwdHBfb3BzLSZndDtwb3J0X2Rpc2FibGUoY2hpcCwgcG9ydCk7CiYjNDM7CQkJZXJyID0gcHRwX29wcy0mZ3Q7cG9ydF9kaXNhYmxlKGNoaXAsIHBvcnQpOwogCQljaGlwLSZndDtlbmFibGVfY291bnQgLT0gMTsKIAkJaWYgKGNoaXAtJmd0O2VuYWJsZV9jb3VudCA9PSAwICZhbXA7JmFtcDsgcHRwX29wcy0mZ3Q7Z2xvYmFsX2Rpc2FibGUpCiAJCQlwdHBfb3BzLSZndDtnbG9iYWxfZGlzYWJsZShjaGlwKTsKIAl9CiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiAJLyogT25jZSBoYXJkd2FyZSBoYXMgYmVlbiBjb25maWd1cmVkLCBlbmFibGUgdGltZXN0YW1wIGNoZWNrcwogCSAqIGluIHRoZSBSWC9UWCBwYXRocy4KJiM0MzsJICoKJiM0MzsJICogSW4gZW1iZWRkZWQgbW9kZSB0aGUgc3dpdGNoIHN0YXJ0cyBvdmVyd3JpdGluZyB0aGUgUFRQIGhlYWRlciYjMzk7cwomIzQzOwkgKiByZXNlcnZlZDIgZmllbGQgYXMgc29vbiBhcyBDRkcyIGlzIGFybWVkIGFib3ZlLCB3aGljaCBpcyBiZWZvcmUgdGhlCiYjNDM7CSAqIFJYIHBhdGggYmVnaW5zIHJlc3RvcmluZyBpdDsgb24gdGhlIHdheSBkb3duIHRoZSBSWCBwYXRoIHN0b3BzCiYjNDM7CSAqIHJlc3RvcmluZyBiZWZvcmUgdGhlIGhhcmR3YXJlIHN0b3BzIGVtYmVkZGluZy4gQW4gZXZlbnQgZnJhbWUKJiM0MzsJICogcmVjZWl2ZWQgaW5zaWRlIGVpdGhlciB3aW5kb3cgaXMgZGVsaXZlcmVkIHdpdGggdGhlIHN3aXRjaCYjMzk7cwomIzQzOwkgKiBhcnJpdmFsIGNvdW50ZXIgc3RpbGwgaW4gaXRzIGhlYWRlci4KIAkgKi8KIAlpZiAodHN0YW1wX2VuYWJsZSkKIAkJc2V0X2JpdChNVjg4RTZYWFhfSFdUU1RBTVBfRU5BQkxFRCwgJmFtcDtwcy0mZ3Q7c3RhdGUpOwpAQCAtMjE2LDYgJiM0MzsyMjgsMTAgQEAgc3RhdGljIHN0cnVjdCBwdHBfaGVhZGVyICptdjg4ZTZ4eHhfc2hvdWxkX3RzdGFtcChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiAJaWYgKCFjaGlwLSZndDtpbmZvLSZndDtwdHBfc3VwcG9ydCkKIAkJcmV0dXJuIE5VTEw7CiAKJiM0MzsJLyogTWFydmVsbCBzd2l0Y2hlcyBkbyBub3Qgc3VwcG9ydCBJRUVFIDE1ODgtMjAwMiAoUFRQdjEpLiAqLwomIzQzOwlpZiAoKHR5cGUgJmFtcDsgUFRQX0NMQVNTX1ZNQVNLKSAhPSBQVFBfQ0xBU1NfVjIpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKIAloZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgdHlwZSk7CiAJaWYgKCFoZHIpCiAJCXJldHVybiBOVUxMOwpAQCAtMjQ1LDYgJiM0MzsyNjEsNTIgQEAgc3RhdGljIGludCBzZXFfbWF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRzX3NlcWlkKQogCXJldHVybiB0c19zZXFpZCA9PSBudG9ocyhoZHItJmd0O3NlcXVlbmNlX2lkKTsKIH0KIAomIzQzOy8qIFJlY292ZXIgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIHdyb3RlIG92ZXIgdGhlIHJlc2VydmVkMiBmaWVsZCBvZiB0aGUgUFRQCiYjNDM7ICogY29tbW9uIGhlYWRlciwgcmVzdG9yaW5nIHRoZSBmaWVsZCBhZnRlcndhcmRzLgomIzQzOyAqLwomIzQzO3N0YXRpYyBib29sIHBhcnNlX2VtYmVkZGVkX3RzKHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpCiYjNDM7ewomIzQzOwl1bnNpZ25lZCBpbnQgb2ZmID0gTVY4OEU2WFhYX1BUUF9BUlJfVFNfT0ZGU0VUOwomIzQzOwlzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyOwomIzQzOwomIzQzOwkqbnMgPSAwOwomIzQzOwomIzQzOwlpZiAoc2tiX2xpbmVhcml6ZShza2IpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwloZHIgPSBwdHBfcGFyc2VfaGVhZGVyKHNrYiwgU0tCX1BUUF9UWVBFKHNrYikpOwomIzQzOwlpZiAoIWhkcikKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJKm5zID0gZ2V0X3VuYWxpZ25lZF9iZTMyKCh1OCAqKWhkciAmIzQzOyBvZmYpOwomIzQzOwltZW1zZXQoKHU4ICopaGRyICYjNDM7IG9mZiwgMCwgNCk7CiYjNDM7CXNrYl9jaGVja3N1bV9jb21wbGV0ZV91bnNldChza2IpOwomIzQzOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzCiYjNDM7ICogaXMgbmVlZGVkLCBzbyB0aGlzIHJ1bnMgaW5saW5lIG9uIHRoZSByZWNlaXZlIHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgaGFuZGVkCiYjNDM7ICogdG8gdGhlIFBUUCB3b3JrZXIuIFJldHVybnMgZmFsc2UgaWYgdGhlIGZyYW1lIGNvdWxkIG5vdCBiZSByZXN0b3JlZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgYm9vbCBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsCiYjNDM7CQkJCSAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJc3RydWN0IHNrYl9zaGFyZWRfaHd0c3RhbXBzICpzaHd0OwomIzQzOwl1NjQgbnM7CiYjNDM7CiYjNDM7CWlmICghcGFyc2VfZW1iZWRkZWRfdHMoc2tiLCAmYW1wO25zKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJbnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgbnMpOwomIzQzOwomIzQzOwlzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpOwomIzQzOwltZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7CiYjNDM7CXNod3QtJmd0O2h3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpOwomIzQzOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLAogCQkJICAgICAgIHN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcCAqcHMsCiAJCQkgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJlZywKQEAgLTI4OSw5ICYjNDM7MzUxLDcgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X2dldF9yeHRzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAkJaWYgKG12ODhlNnh4eF90c192YWxpZChzdGF0dXMpICZhbXA7JmFtcDsgc2VxX21hdGNoKHNrYiwgc2VxX2lkKSkgewogCQkJbnMgPSB0aW1laGkgJmx0OyZsdDsgMTYgfCB0aW1lbG87CiAKLQkJCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKLQkJCW5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoJmFtcDtjaGlwLSZndDt0c3RhbXBfdGMsIG5zKTsKLQkJCW12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApOwomIzQzOwkJCW5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTsKIAkJCXNod3QgPSBza2JfaHd0c3RhbXBzKHNrYik7CiAJCQltZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7CiAJCQlzaHd0LSZndDtod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTsKQEAgLTMwOCw3ICYjNDM7MzY4LDYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLAogCXN0cnVjdCBza19idWZmICpza2I7CiAKIAlza2IgPSBza2JfZGVxdWV1ZSgmYW1wO3BzLSZndDtyeF9xdWV1ZSk7Ci0KIAlpZiAoc2tiKQogCQltdjg4ZTZ4eHhfZ2V0X3J4dHMoY2hpcCwgcHMsIHNrYiwgcHRwX29wcy0mZ3Q7YXJyMF9zdHNfcmVnLAogCQkJCSAgICZhbXA7cHMtJmd0O3J4X3F1ZXVlKTsKQEAgLTMxOSw5ICYjNDM7Mzc4LDE2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAkJCQkgICAmYW1wO3BzLSZndDtyeF9xdWV1ZTIpOwogfQogCi1zdGF0aWMgaW50IGlzX3BkZWxheV9yZXNwKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpCiYjNDM7c3RhdGljIGJvb2wgaXNfcGRlbGF5X21zZyhjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKQogewotCXJldHVybiAoaGRyLSZndDt0c210ICZhbXA7IDB4ZikgPT0gMzsKJiM0MzsJc3dpdGNoIChwdHBfZ2V0X21zZ3R5cGUoaGRyLCBQVFBfQ0xBU1NfVjIpKSB7CiYjNDM7CWNhc2UgUFRQX01TR1RZUEVfUERFTEFZX1JFUToKJiM0MzsJCWZhbGx0aHJvdWdoOwomIzQzOwljYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVNQOgomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIH0KIAogYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LApAQCAtMzQzLDcgJiM0Mzs0MDksMjIgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCiAJU0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlOwogCi0JaWYgKGlzX3BkZWxheV9yZXNwKGhkcikpCiYjNDM7CS8qIEVtYmVkZGVkIGFycml2YWwgdGltZXMgY2FuIGJlIHJldHVybmVkIGlubGluZS4gVGhlIHN3aXRjaCBoYXMKJiM0MzsJICogb3ZlcndyaXR0ZW4gdGhlIHJlc2VydmVkMiBmaWVsZDsgaWYgaXQgY2Fubm90IGJlIHJlc3RvcmVkIHRoZSBmcmFtZQomIzQzOwkgKiBpcyBubyBsb25nZXIgd2hhdCB0aGUgc2VuZGVyIHRyYW5zbWl0dGVkLCBzbyBkcm9wIGl0IHJhdGhlciB0aGFuCiYjNDM7CSAqIHBhc3MgdXAgYSBjb3JydXB0ZWQgaGVhZGVyIHRoYXQgd2lsbCBmYWlsIHRoZSBQVFAtb3Zlci1VRFAgY2hlY2tzdW0KJiM0MzsJICogYW55d2F5LgomIzQzOwkgKi8KJiM0MzsJaWYgKG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkpIHsKJiM0MzsJCWlmICghbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoY2hpcCwgc2tiKSkgewomIzQzOwkJCWtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fTk9NRU0pOwomIzQzOwkJCXJldHVybiB0cnVlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChpc19wZGVsYXlfbXNnKGhkcikpCiAJCXNrYl9xdWV1ZV90YWlsKCZhbXA7cHMtJmd0O3J4X3F1ZXVlMiwgc2tiKTsKIAllbHNlCiAJCXNrYl9xdWV1ZV90YWlsKCZhbXA7cHMtJmd0O3J4X3F1ZXVlLCBza2IpOwpAQCAtNDA5LDkgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwKIAogCW1lbXNldCgmYW1wO3NoaHd0c3RhbXBzLCAwLCBzaXplb2Yoc2hod3RzdGFtcHMpKTsKIAl0aW1lX3JhdyA9ICgodTMyKWRlcGFydHVyZV9ibG9ja1syXSAmbHQ7Jmx0OyAxNikgfCBkZXBhcnR1cmVfYmxvY2tbMV07Ci0JbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOwotCW5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoJmFtcDtjaGlwLSZndDt0c3RhbXBfdGMsIHRpbWVfcmF3KTsKLQltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKJiM0MzsJbnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgdGltZV9yYXcpOwogCXNoaHd0c3RhbXBzLmh3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpOwogCiAJZGV2X2RiZyhjaGlwLSZndDtkZXYsCkBAIC00NTQsNyAmIzQzOzUzMyw5IEBAIGxvbmcgbXY4OGU2eHh4X2h3dHN0YW1wX3dvcmsoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHApCiAJCWlmICh0ZXN0X2JpdChNVjg4RTZYWFhfSFdUU1RBTVBfVFhfSU5fUFJPR1JFU1MsICZhbXA7cHMtJmd0O3N0YXRlKSkKIAkJCXJlc3RhcnQgfD0gbXY4OGU2eHh4X3R4dHN0YW1wX3dvcmsoY2hpcCwgcHMpOwogCi0JCW12ODhlNnh4eF9yeHRzdGFtcF93b3JrKGNoaXAsIHBzKTsKJiM0MzsJCS8qIEVtYmVkZGVkIGFycml2YWwgdGltZXMgYXJlIGFwcGxpZWQgb24gdGhlIHJlY2VpdmUgcGF0aC4gKi8KJiM0MzsJCWlmICghbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSkKJiM0MzsJCQltdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7CiAJfQogCiAJcmV0dXJuIHJlc3RhcnQgPyAxIDogLTE7CkBAIC01MjMsMTQgJiM0Mzs2MDQsNDMgQEAgaW50IG12ODhlNjE2NV9nbG9iYWxfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKIAogaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2Rpc2FibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCkKIHsKLQlyZXR1cm4gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLAotCQkJCQlNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCwKJiM0MzsJCQkJICAgICAgIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfUFRQKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMiwgMCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7LyogUmV0dXJuIHRoZSBDRkcyIEFyclRTTW9kZSBmaWVsZCBmb3IgdGhlIGFjdGl2ZSBhcnJpdmFsIHRpbWUtc3RhbXAgbW9kZS4gKi8KJiM0MztzdGF0aWMgdTE2IG12ODhlNnh4eF9hcnJfdHNfY2ZnMihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiYjNDM7ewomIzQzOwlyZXR1cm4gbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSA/CiYjNDM7CQlNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfUkVTRVJWRUQyIDoKJiM0MzsJCU1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19ESVNBQkxFRDsKIH0KIAogaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQogewotCXJldHVybiBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzAsCi0JCQkJCU1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsCiYjNDM7CQkJCSAgICAgICBtdjg4ZTZ4eHhfYXJyX3RzX2NmZzIoY2hpcCkpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLAomIzQzOwkJCQkgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQpAQCAtNTQ5LDYgJiM0Mzs2NTksNzIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KQogCXJldHVybiAwOwogfQogCiYjNDM7LyogUHJvZ3JhbSB0aGUgaGFyZHdhcmUgZm9yIHRoZSBhcnJpdmFsIHRpbWUtc3RhbXAgbW9kZSB0aGUgYWN0aXZlIHRhZ2dpbmcKJiM0MzsgKiBwcm90b2NvbCBzZWxlY3RzLiBDYWxsZWQgZnJvbSBzZXR1cCBhbmQgYWdhaW4gd2hlbmV2ZXIgdGhlIHByb3RvY29sIGNoYW5nZXMsCiYjNDM7ICogYXMgdGhhdCBpcyB3aGF0IGRlY2lkZXMgd2hlcmUgYXJyaXZhbCB0aW1lIHN0YW1wcyBhcmUgZGVsaXZlcmVkLgomIzQzOyAqCiYjNDM7ICogTXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVnaXN0ZXIgbG9jayBoZWxkLgomIzQzOyAqLwomIzQzO2ludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wczsKJiM0MzsJaW50IGVyciwgcmV0ID0gMDsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CS8qIEluIGVtYmVkZGVkIG1vZGUgdGhlIHN3aXRjaCBzdGFtcHMgZXZlcnkgZXZlbnQgbWVzc2FnZSBpdCBmb3J3YXJkcywKJiM0MzsJICogcGVlciBkZWxheSBpbmNsdWRlZCwgc28gbGVhdmUgdGhlIGFycml2YWwgY2FwdHVyZSBwb2ludGVyIGFsb25lCiYjNDM7CSAqIHJhdGhlciB0aGFuIGRpdmVydGluZyBwZWVyIGRlbGF5IG1lc3NhZ2VzIHRvIHRoZSBBUlJJVkFMMSByZWdpc3RlcnMuCiYjNDM7CSAqLwomIzQzOwllcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsCiYjNDM7CQkJCSAgbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSA/IDAgOgomIzQzOwkJCQkgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfAomIzQzOwkJCQkgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKJiM0MzsJaWYgKCFjaGlwLSZndDtpbmZvLSZndDtzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG12ODhlNnh4eF9udW1fcG9ydHMoY2hpcCk7ICYjNDM7JiM0MztpKSB7CiYjNDM7CQlzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzID0gJmFtcDtjaGlwLSZndDtwb3J0X2h3dHN0YW1wW2ldOwomIzQzOwomIzQzOwkJLyogQW55dGhpbmcgYWxyZWFkeSBxdWV1ZWQgd2FzIHF1ZXVlZCB1bmRlciB0aGUgcHJldmlvdXMgbW9kZQomIzQzOwkJICogYW5kIGNhbiBubyBsb25nZXIgYmUgbWF0Y2hlZCB3aXRoIGFuIGFycml2YWwgdGltZS4KJiM0MzsJCSAqLwomIzQzOwkJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7cHMtJmd0O3J4X3F1ZXVlKTsKJiM0MzsJCXNrYl9xdWV1ZV9wdXJnZSgmYW1wO3BzLSZndDtyeF9xdWV1ZTIpOwomIzQzOwomIzQzOwkJLyogVGhlIGFycml2YWwgcmVnaXN0ZXJzIGtlZXAgY2FwdHVyaW5nIGluIGVtYmVkZGVkIG1vZGUgd2l0aAomIzQzOwkJICogbm90aGluZyB0byBkcmFpbiB0aGVtLCBzbyBjbGVhciB0aGUgc3RhdHVzIGhlcmUgb3IgdGhlCiYjNDM7CQkgKiByZWdpc3RlciBwYXRoIHJlc3VtZXMgb24gYSBzdGFsZSBjYXB0dXJlLgomIzQzOwkJICovCiYjNDM7CQllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgcHRwX29wcy0mZ3Q7YXJyMF9zdHNfcmVnLCAwKTsKJiM0MzsJCWlmIChlcnIgJmFtcDsmYW1wOyAhcmV0KQomIzQzOwkJCXJldCA9IGVycjsKJiM0MzsKJiM0MzsJCWVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBpLCBwdHBfb3BzLSZndDthcnIxX3N0c19yZWcsIDApOwomIzQzOwkJaWYgKGVyciAmYW1wOyZhbXA7ICFyZXQpCiYjNDM7CQkJcmV0ID0gZXJyOwomIzQzOwomIzQzOwkJLyogUG9ydHMgdGhhdCBoYXZlIG5vdCBlbmFibGVkIHRpbWUgc3RhbXBpbmcgcGljayB0aGUgbW9kZSB1cCBpbgomIzQzOwkJICogbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKCkuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChwcy0mZ3Q7dHN0YW1wX2NvbmZpZy5yeF9maWx0ZXIgPT0gSFdUU1RBTVBfRklMVEVSX05PTkUpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkvKiBQcm9ncmFtIGV2ZXJ5IHBvcnQgZXZlbiBpZiBvbmUgZmFpbHMuIEEgcG9ydCBsZWZ0IGVtYmVkZGluZwomIzQzOwkJICogdGltZSBzdGFtcHMgdGhhdCB0aGUgZHJpdmVyIG5vIGxvbmdlciBzdHJpcHMgY29ycnVwdHMgdGhlCiYjNDM7CQkgKiBQVFAgaGVhZGVyIG9mIGV2ZXJ5IGV2ZW50IGZyYW1lIGl0IHJlY2VpdmVzLgomIzQzOwkJICovCiYjNDM7CQllcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsCiYjNDM7CQkJCQkgICAgICAgbXY4OGU2eHh4X2Fycl90c19jZmcyKGNoaXApKTsKJiM0MzsJCWlmIChlcnIgJmFtcDsmYW1wOyAhcmV0KQomIzQzOwkJCXJldCA9IGVycjsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQogewogCWNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wczsKQEAgLTU4NCw5ICYjNDM7NzYwLDcgQEAgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCS8qIFVzZSBBUlJJVkFMMSBmb3IgcGVlciBkZWxheSByZXNwb25zZSBtZXNzYWdlcy4gKi8KLQllcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsCi0JCQkJICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTsKJiM0MzsJZXJyID0gbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmgKaW5kZXggYzM1OTgyMWQ1YTZlYWEuLjJmZTdjNzQyOWJmZjFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oCkBAIC0xMyw2ICYjNDM7MTMsOCBAQAogI2lmbmRlZiBfTVY4OEU2WFhYX0hXVFNUQU1QX0gKICNkZWZpbmUgX01WODhFNlhYWF9IV1RTVEFNUF9ICiAKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHRwX2NsYXNzaWZ5LmgmZ3Q7CiYjNDM7CiAjaW5jbHVkZSAmIzM0O2NoaXAuaCYjMzQ7CiAKIC8qIEdsb2JhbCA2MzUyIFBUUCByZWdpc3RlcnMgKi8KQEAgLTY0LDEwICYjNDM7NjYsMjEgQEAKIAogLyogT2Zmc2V0IDB4MDI6IFBUUCBDb25maWd1cmF0aW9uIDIgKi8KICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIJCQkJMHgwMgotI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9FTUJFRF9BUlJJVkFMCQkweDEwMDAKICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfREVQX0lSUV9FTgkJMHgwMDAyCiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9JUlFfRU4JCTB4MDAwMQogCiYjNDM7LyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSksIENGRzIgYml0cyBbMTU6OF06IGNvbmZpZ3VyZXMgaG93IHRoZQomIzQzOyAqIHN3aXRjaCBlbWJlZHMgdGhlIGFycml2YWwgdGltZSBzdGFtcCAoUFRQQXJyMFRpbWUpIGludG8gZW5hYmxlZCBQVFAgZXZlbnQKJiM0MzsgKiBmcmFtZXMuIEEgbm9uLXplcm8gdmFsdWUgaXMgdGhlIGJ5dGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgUFRQIGNvbW1vbgomIzQzOyAqIGhlYWRlciwgYXQgd2hpY2ggdGhlIHN3aXRjaCBvdmVyd3JpdGVzIGZvdXIgYnl0ZXMgaW4gcGxhY2U7IHdlIGFsd2F5cyBwb2ludAomIzQzOyAqIGl0IGF0IHRoZSBoZWFkZXImIzM5O3MgcmVzZXJ2ZWQyIGZpZWxkIHNvIHRoZSBmcmFtZSBsZW5ndGggaXMgbGVmdCBhbG9uZS4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIE1WODhFNlhYWF9QVFBfQVJSX1RTX09GRlNFVAkJCVwKJiM0MzsJb2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMikKJiM0MzsjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19ESVNBQkxFRAkJMHgwMDAwCiYjNDM7I2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfUkVTRVJWRUQyCVwKJiM0MzsJKE1WODhFNlhYWF9QVFBfQVJSX1RTX09GRlNFVCAmbHQ7Jmx0OyA4KQomIzQzOwogLyogT2Zmc2V0IDB4MDM6IFBUUCBMRUQgQ29uZmlndXJhdGlvbiAqLwogI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGRwkweDAzCiAKQEAgLTEyNiw2ICYjNDM7MTM5LDcgQEAgaW50IG12ODhlNnh4eF9nZXRfdHNfaW5mbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCiBsb25nIG12ODhlNnh4eF9od3RzdGFtcF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKTsKIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTsKJiM0MztpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApOwogdm9pZCBtdjg4ZTZ4eHhfaHd0c3RhbXBfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApOwogaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KTsKIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpOwpAQCAtMTcyLDYgJiM0MzsxODYsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQomIzQzO3sKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSB2b2lkIG12ODhlNnh4eF9od3RzdGFtcF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCkKIHsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jCmluZGV4IGY3NjAzNTczZDNhOTg0Li4yYTdmOTc2MjVlMzc1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jCkBAIC0yMzEsMTUgJiM0MzsyMzEsMzcgQEAgc3RhdGljIHZvaWQgbXY4OGU2MzUyX3RhaV9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdWdseSkKIAogCS8qIFdlIG9ubHkgaGF2ZSBvbmUgdGltZXN0YW1waW5nIGNoYW5uZWwuICovCiAJZXYuaW5kZXggPSAwOwotCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKLQlldi50aW1lc3RhbXAgPSB0aW1lY291bnRlcl9jeWMydGltZSgmYW1wO2NoaXAtJmd0O3RzdGFtcF90YywgcmF3X3RzKTsKLQltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKJiM0MzsJZXYudGltZXN0YW1wID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIHJhd190cyk7CiAKIAlwdHBfY2xvY2tfZXZlbnQoY2hpcC0mZ3Q7cHRwX2Nsb2NrLCAmYW1wO2V2KTsKIG91dDoKIAlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmFtcDtjaGlwLSZndDt0YWlfZXZlbnRfd29yaywgVEFJX0VWRU5UX1dPUktfSU5URVJWQUwpOwogfQogCiYjNDM7LyogUmVmcmVzaCB0aGUgY2FjaGVkIGNvdW50ZXIgdmFsdWUgdGhhdCB0aGUgcmVhZCgpIGNhbGxiYWNrIHJldHVybnMuIFRoZQomIzQzOyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2sKJiM0MzsgKiBiZWNhdXNlIE1ESU8gcmVhZHMgY2FuIHNsZWVwLiBUaGUgY2FsbGVyIG11c3QgaG9sZCByZWdfbG9jaywgd2hpY2gKJiM0MzsgKiBzZXJpYWxpemVzIGFnYWluc3QgdGhlIG90aGVyIHRpbWVjb3VudGVyIHdyaXRlcnMuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLSZndDtpbmZvLSZndDtvcHMtJmd0O3B0cF9vcHM7CiYjNDM7CiYjNDM7CWlmIChwdHBfb3BzLSZndDtjbG9ja19yZWFkKQomIzQzOwkJY2hpcC0mZ3Q7dHN0YW1wX2N5Y2xlcyA9IHB0cF9vcHMtJmd0O2Nsb2NrX3JlYWQoJmFtcDtjaGlwLSZndDt0c3RhbXBfY2MpOwomIzQzO30KJiM0MzsKJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcykKJiM0Mzt7CiYjNDM7CXU2NCBuczsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7Y2hpcC0mZ3Q7cHRwX2Nsb2NrX2xvY2spOwomIzQzOwlucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCBjeWNsZXMpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG5zOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pCiB7CiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTsKQEAgLTI1OCw5ICYjNDM7MjgwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGpmaW5lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pCiAJZGlmZiA9IGRpdl91NjQoYWRqLCBjaGlwLSZndDtjY19jb2VmZnMtJmd0O2NjX211bHRfZGVtKTsKIAogCW12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTsKJiM0MzsJbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTsKIAomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJdGltZWNvdW50ZXJfcmVhZCgmYW1wO2NoaXAtJmd0O3RzdGFtcF90Yyk7CiAJY2hpcC0mZ3Q7dHN0YW1wX2NjLm11bHQgPSBuZWdfYWRqID8gbXVsdCAtIGRpZmYgOiBtdWx0ICYjNDM7IGRpZmY7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7Y2hpcC0mZ3Q7cHRwX2Nsb2NrX2xvY2spOwogCiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKQEAgLTI3MSw4ICYjNDM7Mjk2LDE2IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpCiB7CiAJc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTsKIAomIzQzOwkvKiBObyByZWdpc3RlciBhY2Nlc3MgaXMgbmVlZGVkIGhlcmUsIGJ1dCByZWdfbG9jayBzdGlsbCBzZXJpYWxpc2VzCiYjNDM7CSAqIHRoaXMgYWdhaW5zdCB0aGUgb3RoZXIgdGltZWNvdW50ZXIgd3JpdGVycywgd2hpY2ggZHJvcCBpdCBvbmx5CiYjNDM7CSAqIGFmdGVyIHRoZWlyIGhhcmR3YXJlIHJlYWQgaGFzIGNvbXBsZXRlZC4KJiM0MzsJICovCiAJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJdGltZWNvdW50ZXJfYWRqdGltZSgmYW1wO2NoaXAtJmd0O3RzdGFtcF90YywgZGVsdGEpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKIAltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKIAogCXJldHVybiAwOwpAQCAtMjg1LDcgJiM0MzszMTgsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2dldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsCiAJdTY0IG5zOwogCiAJbXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApOwomIzQzOwltdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApOwomIzQzOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiAJbnMgPSB0aW1lY291bnRlcl9yZWFkKCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjKTsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtjaGlwLSZndDtwdHBfY2xvY2tfbG9jayk7CiYjNDM7CiAJbXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7CiAKIAkqdHMgPSBuc190b190aW1lc3BlYzY0KG5zKTsKQEAgLTMwMiw3ICYjNDM7MzQwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLAogCW5zID0gdGltZXNwZWM2NF90b19ucyh0cyk7CiAKIAltdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7CiYjNDM7CW12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKIAl0aW1lY291bnRlcl9pbml0KCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCAmYW1wO2NoaXAtJmd0O3RzdGFtcF9jYywgbnMpOwomIzQzOwlzcGluX3VubG9ja19iaCgmYW1wO2NoaXAtJmd0O3B0cF9jbG9ja19sb2NrKTsKJiM0MzsKIAltdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTsKIAogCXJldHVybiAwOwpAQCAtNDQ0LDE0ICYjNDM7NDg3LDEyIEBAIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyBtdjg4ZTYzOTBfcHRwX29wcyA9IHsKIAkJKDEgJmx0OyZsdDsgSFdUU1RBTVBfRklMVEVSX1BUUF9WMl9ERUxBWV9SRVEpLAogfTsKIAomIzQzOy8qIFJldHVybiB0aGUgdmFsdWUgbW9zdCByZWNlbnRseSBmZXRjaGVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKQomIzQzOyAqIHJhdGhlciB0aGFuIHJlYWRpbmcgdGhlIGhhcmR3YXJlIG92ZXIgTURJTy4KJiM0MzsgKi8KIHN0YXRpYyB1NjQgbXY4OGU2eHh4X3B0cF9jbG9ja19yZWFkKHN0cnVjdCBjeWNsZWNvdW50ZXIgKmNjKQogewotCXN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNjX3RvX2NoaXAoY2MpOwotCi0JaWYgKGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wcy0mZ3Q7Y2xvY2tfcmVhZCkKLQkJcmV0dXJuIGNoaXAtJmd0O2luZm8tJmd0O29wcy0mZ3Q7cHRwX29wcy0mZ3Q7Y2xvY2tfcmVhZChjYyk7Ci0KLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIGNjX3RvX2NoaXAoY2MpLSZndDt0c3RhbXBfY3ljbGVzOwogfQogCiAvKiBXaXRoIGEgMjUwTUh6IGlucHV0IGNsb2NrLCB0aGUgMzItYml0IHRpbWVzdGFtcCBjb3VudGVyIG92ZXJmbG93cyBpbiB+MTcuMgpAQCAtNDg2LDYgJiM0Mzs1MjcsMTIgQEAgaW50IG12ODhlNnh4eF9wdHBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKQogCWNoaXAtJmd0O3RzdGFtcF9jYy5tdWx0CT0gY2hpcC0mZ3Q7Y2NfY29lZmZzLSZndDtjY19tdWx0OwogCWNoaXAtJmd0O3RzdGFtcF9jYy5zaGlmdAk9IGNoaXAtJmd0O2NjX2NvZWZmcy0mZ3Q7Y2Nfc2hpZnQ7CiAKJiM0MzsJLyogUHJpbWUgdGhlIGN5Y2xlIGNvdW50ZXIgY2FjaGUgZm9yIHRoZSB0aW1lY291bnRlcl9pbml0KCkgYmVsb3cuCiYjNDM7CSAqIFRoZSBjYWxsZXIgaG9sZHMgcmVnX2xvY2ssIGFuZCBub3RoaW5nIGNhbiByZWFjaCB0aGUgUFRQIGNsb2NrCiYjNDM7CSAqIHVudGlsIHB0cF9jbG9ja19yZWdpc3RlcigpIGJlbG93LCBzbyBubyBsb2NraW5nIGlzIG5lZWRlZCBoZXJlLgomIzQzOwkgKi8KJiM0MzsJbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTsKJiM0MzsKIAl0aW1lY291bnRlcl9pbml0KCZhbXA7Y2hpcC0mZ3Q7dHN0YW1wX3RjLCAmYW1wO2NoaXAtJmd0O3RzdGFtcF9jYywKIAkJCSBrdGltZV90b19ucyhrdGltZV9nZXRfcmVhbCgpKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oCmluZGV4IDk1YmRkZGIwYmYzOWY4Li40NDcxOGUxMjBkZTIwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oCkBAIC02OCw2ICYjNDM7NjgsNyBAQAogCiBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApOwogdm9pZCBtdjg4ZTZ4eHhfcHRwX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTsKJiM0Mzt1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7CiAKICNkZWZpbmUgcHRwX3RvX2NoaXAocHRwKSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsCVwKIAkJCQkgICAgICBwdHBfY2xvY2tfaW5mbykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmgKaW5kZXggOGMxNmVmMjNjYzEwMmEuLjJkZmNjNTQ5ZGUyOTY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9kc2EuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9kc2EuaApAQCAtNTksNiAmIzQzOzU5LDcgQEAgc3RydWN0IHRjX2FjdGlvbjsKICNkZWZpbmUgRFNBX1RBR19QUk9UT19NWExfR1NXMVhYX1ZBTFVFCQkzMQogI2RlZmluZSBEU0FfVEFHX1BST1RPX01YTDg2Ml9WQUxVRQkJMzIKICNkZWZpbmUgRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFCQkzMwomIzQzOyNkZWZpbmUgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNfVkFMVUUJMzQKIAogZW51bSBkc2FfdGFnX3Byb3RvY29sIHsKIAlEU0FfVEFHX1BST1RPX05PTkUJCT0gRFNBX1RBR19QUk9UT19OT05FX1ZBTFVFLApAQCAtOTUsNiAmIzQzOzk2LDcgQEAgZW51bSBkc2FfdGFnX3Byb3RvY29sIHsKIAlEU0FfVEFHX1BST1RPX01YTF9HU1cxWFgJPSBEU0FfVEFHX1BST1RPX01YTF9HU1cxWFhfVkFMVUUsCiAJRFNBX1RBR19QUk9UT19NWEw4NjIJCT0gRFNBX1RBR19QUk9UT19NWEw4NjJfVkFMVUUsCiAJRFNBX1RBR19QUk9UT19ORVRDCQk9IERTQV9UQUdfUFJPVE9fTkVUQ19WQUxVRSwKJiM0MzsJRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSwKIH07CiAKIHN0cnVjdCBkc2Ffc3dpdGNoOwpkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfZHNhLmMgYi9uZXQvZHNhL3RhZ19kc2EuYwppbmRleCBkNWZmZWUzNWZiYjUzYi4uNzQ5MGVjYzA0YWE1NzQgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX2RzYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX2RzYS5jCkBAIC00MDIsNiAmIzQzOzQwMiwyMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfbmV0ZGV2X29wcyA9IHsKIAogRFNBX1RBR19EUklWRVIoZWRzYV9uZXRkZXZfb3BzKTsKIE1PRFVMRV9BTElBU19EU0FfVEFHX0RSSVZFUihEU0FfVEFHX1BST1RPX0VEU0EsIEVEU0FfTkFNRSk7CiYjNDM7CiYjNDM7I2RlZmluZSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRQkmIzM0O2Vkc2EtcHRwLXJlc2VydmVkMi10cyYjMzQ7CiYjNDM7CiYjNDM7LyogU2FtZSB3aXJlIGZvcm1hdCBhcyBFRFNBLCBleGNlcHQgdGhhdCB0aGUgc3dpdGNoIG92ZXJ3cml0ZXMgdGhlIHJlc2VydmVkMgomIzQzOyAqIGZpZWxkIG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciB3aXRoIHRoZSBmcmFtZSYjMzk7cyBhcnJpdmFsIHRpbWUgc3RhbXAuCiYjNDM7ICovCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyA9IHsKJiM0MzsJLm5hbWUJCSA9IEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FLAomIzQzOwkucHJvdG8JCSA9IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLAomIzQzOwkueG1pdAkJID0gZWRzYV94bWl0LAomIzQzOwkucmN2CQkgPSBlZHNhX3JjdiwKJiM0MzsJLm5lZWRlZF9oZWFkcm9vbSA9IEVEU0FfSExFTiwKJiM0Mzt9OwomIzQzOwomIzQzO0RTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTsKJiM0MztNT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsCiYjNDM7CQkJICAgIEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FKTsKICNlbmRpZgkvKiBDT05GSUdfTkVUX0RTQV9UQUdfRURTQSAqLwogCiBzdGF0aWMgc3RydWN0IGRzYV90YWdfZHJpdmVyICpkc2FfdGFnX2RyaXZlcnNbXSA9IHsKQEAgLTQxMCw2ICYjNDM7NDI3LDcgQEAgc3RhdGljIHN0cnVjdCBkc2FfdGFnX2RyaXZlciAqZHNhX3RhZ19kcml2ZXJzW10gPSB7CiAjZW5kaWYKICNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1RBR19FRFNBKQogCSZhbXA7RFNBX1RBR19EUklWRVJfTkFNRShlZHNhX25ldGRldl9vcHMpLAomIzQzOwkmYW1wO0RTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpLAogI2VuZGlmCiB9OwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDkzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgVmlydHVhbGl6YXRpb24gSW1wYWN0IG9mIGEgTmV3IERTQSBUYWcgUHJvdG9jb2wqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIG5ldyBwYXRjaCBpbnRyb2R1Y2luZyBgZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzYCwgd2hpY2ggaXMgYSBEU0EgdGFnIHByb3RvY29sLiBMb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2AgYW5kIGBuZXQvZHNhL3RhZ19kc2EuY2AuICBSaWdodCwgdGhhdCBtZWFucyBpdCYjMzk7cyBhIGRyaXZlciBmb3IgdGhlIE1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2hlcy4gSW50ZXJlc3RpbmcuIEl0IHNlZW1zIHdlIGFyZSBzdXBwb3J0aW5nIFBUUCBhcnJpdmFsIHRpbWVzdGFtcHMgaW4gdGhlIGByZXNlcnZlZDJgIGZpZWxkIG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlci4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIHRoZSBuZXR3b3JrIGRyaXZlci4KCk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLCBhcyBhbHdheXM6IGhvdyBpc29sYXRlZCBpcyB0aGlzPyBHaXZlbiB0aGF0IGl0JiMzOTtzIGEgRFNBIGltcGxlbWVudGF0aW9uLCBpdCBpbmhlcmVudGx5IHJlbGllcyBvbiBhIHBoeXNpY2FsIHN3aXRjaCBkZXZpY2UuICBNeSBtYWluIGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGlzIGdvaW5nIHRvIGJlIHJlcHJvZHVjaWJsZSwgYW5kIGlmIHRoaXMgd2lsbCBjYXVzZSBpc3N1ZXMgZG93biB0aGUgbGluZSB3aXRoIHRoZSBjb2RlLiBDYW4gdGhpcyBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/ICBEU0EsIGJ5IGl0cyB2ZXJ5IG5hdHVyZSwgbmVlZHMgdGhlIHN3aXRjaC4gVGhlIHF1ZXN0aW9uIGlzOiBpcyBgbXY4OGU2eHh4YCBlbXVsYXRlZCBpbiBRRU1VPyBJIGRvdWJ0IGl0LgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2VhcmNoIHRvIHNlZSBpZiBhbnkgUUVNVSBlbXVsYXRpb24gZXhpc3RzIGZvciB0aGVzZSBzcGVjaWZpYyBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoZXMuICBGcmFua2x5LCBpdCYjMzk7cyByYXJlIHRvIGZpbmQgc3VjaCBkZXRhaWxlZCBoYXJkd2FyZSBlbXVsYXRpb24gaW4gUUVNVSwgZXNwZWNpYWxseSBmb3Igc29tZXRoaW5nIGFzIHNwZWNpYWxpemVkIGFzIGFuIEV0aGVybmV0IHN3aXRjaC4gSXQgdGVuZHMgdG8gYmUgYWJzdHJhY3RlZCBhdCBhIGhpZ2hlciBsYXllci4gIFdlJiMzOTtyZSBnb2luZyB0byBuZWVkIHRvIGRpZyBkZWVwZXIuIEkmIzM5O2xsIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSBpdHNlbGYgZm9yIGBtdjg4ZTZ4eHhgIGp1c3QgdG8gYmUgY2VydGFpbi4gSXMgdGhpcyBkcml2ZXIgcHVyZWx5IGEgaGFyZHdhcmUgZHJpdmVyPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O212ODhlNnh4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwMTQxIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZz03Mz1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy03NC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc1OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0yMT1vYmoteVx0XHRcdFx0JiM0Mzs9IG1pY3JvY2hpcC9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToyMjpvYmoteVx0XHRcdFx0JiM0Mzs9IG12ODhlNnh4eC9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS0yMy1vYmoteVx0XHRcdFx0JiM0Mzs9IG14bDg2Mnh4L1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC01LSAqXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmg6NjogKiBCYXNlZCBvbiBtdjg4ZTZ4eHguaFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oLTctICogQ29weXJpZ2h0IChjKSAyMDA4IE1hcnZlbGwgU2VtaWNvbmR1Y3RvclxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYKSAmIzQzOz0gbXY4OGU2eHh4Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Mzptdjg4ZTZ4eHgtb2JqcyA6PSBjaGlwLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZGV2bGluay5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjU6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDEub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo2Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwxX2F0dS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjc6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDFfdnR1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6ODptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjk6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDJfYXZiLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTA6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDJfc2NyYXRjaC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjExOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICYjNDM7PSBod3RzdGFtcC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEyOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9MRURTKSAmIzQzOz0gbGVkcy5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEzOm12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjE4NS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE0Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjM1Mi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE1Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwY3MtNjM5eC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE2Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwaHkub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gcG9ydC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE4Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwb3J0X2hpZGRlbi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE5Om12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICYjNDM7PSBwdHAub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gc2VyZGVzLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjE6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHNtaS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIyOm12ODhlNnh4eC1vYmpzICYjNDM7PSBzd2l0Y2hkZXYub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdHJhY2Uub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdGNmbG93ZXIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gdGNhbS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTI2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2RzYS9tdjg4ZTZ4eHguaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYtI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4LSNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX21kaW8uaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk6I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAtI2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDk6c3RhdGljIHZvaWQgYXNzZXJ0X3JlZ19sb2NrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU3OmludCBtdjg4ZTZ4eHhfcmVhZChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgKnZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzOlx0ZXJyID0gbXY4OGU2eHh4X3NtaV9yZWFkKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjczOmludCBtdjg4ZTZ4eHhfd3JpdGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc5Olx0ZXJyID0gbXY4OGU2eHh4X3NtaV93cml0ZShjaGlwLCBhZGRyLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4OTppbnQgbXY4OGU2eHh4X3dhaXRfbWFzayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAtXHRcdFx0dTE2IG1hc2ssIHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTAxLVx0Zm9yIChpID0gMDsgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgfHwgKGkgXHUwMDNjIDIpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTAyOlx0XHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFx1MDAyNmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTAzLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjExNTpcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyNjppbnQgbXY4OGU2eHh4X3dhaXRfYml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjctXHRcdCAgICAgICBpbnQgYml0LCBpbnQgdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyOTpcdHJldHVybiBtdjg4ZTZ4eHhfd2FpdF9tYXNrKGNoaXAsIGFkZHIsIHJlZywgQklUKGJpdCksXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzAtXHRcdFx0XHQgICB2YWwgPyBCSVQoYml0KSA6IDB4MDAwMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTMyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTMzOnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzQte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM1Olx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXM7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzctXHRtZGlvX2J1cyA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZjaGlwLVx1MDAzZW1kaW9zLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM4Olx0XHRcdFx0XHQgICAgc3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cywgbGlzdCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzktXHRpZiAoIW1kaW9fYnVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NTpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NzpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ4LVx0dW5zaWduZWQgaW50IG4gPSBkLVx1MDAzZWh3aXJxO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1MzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNTQte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU1Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNTYtXHR1bnNpZ25lZCBpbnQgbiA9IGQtXHUwMDNlaHdpcnE7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTYxOnN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2Mi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTY5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcwOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcxOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MjpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE4Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4NzpcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg4Olx0XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2Y3RsMSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xODktXHRcdGlmIChlcnIpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTAtXHRcdFx0Z290byB1bmxvY2s7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxOTE6XHRcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTItdW5sb2NrOlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTkzOlx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5NC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDM6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDU6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkZXZfaWQ7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDc6XHRyZXR1cm4gbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOC19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTA6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTEte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjEyOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTQ6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTUtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxOC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTk6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyMC1cdHUxNiBtYXNrID0gR0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjIzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjI0Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzMTpcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM1LW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzNjpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM3LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzOC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzOTpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9jaGlwIG12ODhlNnh4eF9nMV9pcnFfY2hpcCA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MDpcdC5uYW1lXHRcdFx0PSBcJiMzNDttdjg4ZTZ4eHgtZzFcJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDE6XHQuaXJxX21hc2tcdFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX21hc2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDI6XHQuaXJxX3VubWFza1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfdW5tYXNrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQzOlx0LmlycV9idXNfbG9ja1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDQ6XHQuaXJxX2J1c19zeW5jX3VubG9ja1x0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0NS19O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ4LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBpcnEsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUwLXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI1MTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGQtXHUwMDNlaG9zdF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MDpzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MTpcdC5tYXBcdD0gbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYyLVx0LnhsYXRlXHQ9IGlycV9kb21haW5feGxhdGVfdHdvY2VsbCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjUtLyogVG8gYmUgY2FsbGVkIHdpdGggcmVnX2xvY2sgaGVsZCAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjY2OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzE6XHRtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2bWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzItXHRtYXNrIFx1MDAyNj0gfkdFTk1BU0soY2hpcC1cdTAwM2VnMV9pcnEubmlycXMsIDApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjczOlx0bXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3NC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyODM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjkwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkxOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkyOlx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MzpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk0LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NjpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAzLVx0XHROVUxMLCBjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMwNDpcdFx0XHUwMDI2bXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzLCBjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMwNS1cdGlmICghY2hpcC1cdTAwM2VnMV9pcnEuZG9tYWluKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxMTpcdGNoaXAtXHUwMDNlZzFfaXJxLmNoaXAgPSBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXA7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTItXHRjaGlwLVx1MDAzZWcxX2lycS5tYXNrZWQgPSB+MDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxNDpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxNS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzIwOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyMS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI0LVx0LyogUmVhZGluZyB0aGUgaW50ZXJydXB0IHN0YXR1cyBjbGVhcnMgKG1vc3Qgb2YpIHRoZW0gKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyNTpcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzMi1cdG1hc2sgXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMzM6XHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzM0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM0NjpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNTI6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzYyLVx0c25wcmludGYoY2hpcC1cdTAwM2VpcnFfbmFtZSwgc2l6ZW9mKGNoaXAtXHUwMDNlaXJxX25hbWUpLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzYzOlx0XHQgXCYjMzQ7bXY4OGU2eHh4LSVzXCYjMzQ7LCBkZXZfbmFtZShjaGlwLVx1MDAzZWRldikpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY1Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjYtXHRlcnIgPSByZXF1ZXN0X3RocmVhZGVkX2lycShjaGlwLVx1MDAzZWlycSwgTlVMTCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2NzpcdFx0XHRcdCAgIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY4LVx0XHRcdFx0ICAgSVJRRl9PTkVTSE9UIHwgSVJRRl9TSEFSRUQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjktXHRcdFx0XHQgICBjaGlwLVx1MDAzZWlycV9uYW1lLCBjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MDpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3MS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzI6XHRcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbChzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3OTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNvbnRhaW5lcl9vZih3b3JrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgwOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4MS1cdFx0XHRcdFx0XHQgICBpcnFfcG9sbF93b3JrLndvcmspO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgyOlx0bXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODg6c3RhdGljIGludCBtdjg4ZTZ4eHhfaXJxX3BvbGxfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTI6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk2LVx0a3RocmVhZF9pbml0X2RlbGF5ZWRfd29yayhcdTAwMjZjaGlwLVx1MDAzZWlycV9wb2xsX3dvcmssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTc6XHRcdFx0XHQgIG12ODhlNnh4eF9pcnFfcG9sbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDA4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDA5OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDEzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE0Olx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE1Olx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNjpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE3LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxOC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxOTpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDIwLVx0XHRcdFx0XHQgICBpbnQgcG9ydCwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NDE6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0Mi1cdFx0XHRcdCAgICBpbnQgbGluaywgaW50IHNwZWVkLCBpbnQgZHVwbGV4LCBpbnQgcGF1c2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDY3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDY4Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LCBtb2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2OS1yZXN0b3JlX2xpbms6XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDc2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0ODM6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9wcHVfdXBkYXRlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDg0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTEtXHRpZiAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWZhbWlseSA9PSBNVjg4RTZYWFhfRkFNSUxZXzYyNTApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTI6XHRcdHJldHVybiBtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDkzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDk0Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTUtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTA1PXN0YXRpYyBjb25zdCB1OCBtdjg4ZTYxODVfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUxNTpzdGF0aWMgdm9pZCBtdjg4ZTYwOTVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE2LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUyMjpcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MjMtXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfTUlJLCBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUzMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUzNDpzdGF0aWMgdm9pZCBtdjg4ZTYxODVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU0ODpzdGF0aWMgY29uc3QgdTggbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0OS1cdFtNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfTUlJX1BIWV1cdD0gUEhZX0lOVEVSRkFDRV9NT0RFX1JFVk1JSSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZSh1OCBjbW9kZSwgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY0LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NTpcdGlmIChjbW9kZSBcdTAwM2MgQVJSQVlfU0laRShtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2RlcykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjY6XHQgICAgbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY3Olx0XHRfX3NldF9iaXQobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY4LVx0ZWxzZSBpZiAoY21vZGUgPT0gTVY4OEU2WFhYX1BPUlRfU1RTX0NNT0RFX1JHTUlJKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTU3Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTczOm12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc0LVx0XHRcdFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODA6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4MS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjI6c3RhdGljIHZvaWQgbXY4OGU2MjUwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyMy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjU6XHRpZiAoIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjYtXHRcdG12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhjaGlwLCBwb3J0LCBjb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzMTpzdGF0aWMgdm9pZCBtdjg4ZTYzNTFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzNi1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjM3Olx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0MzpzdGF0aWMgaW50IG12ODhlNjN4eF9nZXRfcG9ydF9zZXJkZXNfY21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjQ4Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFx1MDAyNnJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1Ni1cdHZhbCA9IHJlZyBcdTAwMjYgfk1WODhFNlhYWF9QT1JUX1NUU19QSFlfREVURUNUO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjU3Olx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjE6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2dmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY1LVx0LyogUmVzdG9yZSBQSFlfREVURUNUIHZhbHVlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjY6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHJlZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY3MzpzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjc0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3OS1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjgwOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5NS1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njk2Olx0XHRcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTctXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzAwOnN0YXRpYyB2b2lkIG12ODhlNjMyeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDEtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA2LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDc6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE4LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MTk6XHRcdFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjM6c3RhdGljIHZvaWQgbXY4OGU2MzQxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjgtXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyOTpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDU6c3RhdGljIHZvaWQgbXY4OGU2MzkwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0Ni1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTAtXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MTpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Njc6c3RhdGljIHZvaWQgbXY4OGU2MzkweF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjgtXHRcdFx0XHRcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwMjpzdGF0aWMgdm9pZCBtdjg4ZTYzOTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwMy1cdFx0XHRcdFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODExOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg0NjpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0Ny1cdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDgte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ5Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MTpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Mi1cdGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcGh5bGlua19nZXRfY2FwcyhjaGlwLCBwb3J0LCBjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUzOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTU6XHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU2LVx0XHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTg2ND1zdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg2NTptdjg4ZTZ4eHhfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjYtXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY4LVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg2OTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzAtXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODc4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODc5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19wcmVwYXJlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgwLVx0XHRcdFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4Mi1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4ODM6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODg0LVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTMtXHQgICAgY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2Vwb3J0X3NldF9saW5rKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4OTQ6XHRcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5NS1cdFx0ZXJyID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTYtXHRcdFx0XHRcdFx0ICAgICBMSU5LX0ZPUkNFRF9ET1dOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NzpcdFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTAzOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA0LVx0XHRcdFx0IHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkwNy1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDg6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA5LVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTEtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTI6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTQ6XHRpZiAobW9kZSAhPSBNTE9fQU5fUEhZIHx8ICFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTU6XHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2UoY2hpcCwgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNi1cdFx0XHRcdFx0XHQgICAgICBzdGF0ZS1cdTAwM2VpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMS1lcnJfdW5sb2NrOlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTIyOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTI3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTI4OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19maW5pc2goc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjktXHRcdFx0XHR1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzEtXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTMyOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzMy1cdGludCBwb3J0ID0gZHAtXHUwMDNlaW5kZXg7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQxLVx0ICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDI6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ2LVx0ICAgICAgY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5pbnRlcmZhY2UgIT0gaW50ZXJmYWNlKSB8fFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTQ3Olx0ICAgICAobW9kZSA9PSBNTE9fQU5fUEhZIFx1MDAyNlx1MDAyNiBtdjg4ZTZ4eHhfcG9ydF9wcHVfdXBkYXRlcyhjaGlwLCBwb3J0KSkpKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ4LVx0XHRlcnIgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmsoY2hpcCwgcG9ydCwgTElOS19VTkZPUkNFRCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTA6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NTYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODE4NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTWFydmVsbCA4OEU2eHh4IFN3aXRjaCBFbXVsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgZHJpdmVyIGZvciBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhlcmUgYW55IFFFTVUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaD8gSSBrbm93IFFFTVUmIzM5O3MgZ290IGEgbG90IG9mIGNhcGFiaWxpdGllcywgYnV0IHRoZXNlIHNwZWNpYWxpemVkIG5ldHdvcmtpbmcgY29tcG9uZW50cyBjYW4gYmUgdHJpY2t5LiBVbmZvcnR1bmF0ZWx5LCBhIHF1aWNrIHNlYXJjaCByZXZlYWxzIG5vIHN0YW5kYXJkIFFFTVUgZW11bGF0aW9uIHNwZWNpZmljYWxseSBmb3IgdGhlIE1hcnZlbGwgODhFNnh4eC4KCk5vdyBJIG5lZWQgdG8gcmVmaW5lIG15IHNlYXJjaC4gQW0gSSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHRoYXQmIzM5O3Mgc3RyaWN0bHkgaGFyZHdhcmUtZGVwZW5kZW50LCBvciBpcyB0aGVyZSBhbnkgcG9zc2liaWxpdHkgb2Ygc29mdHdhcmUgZW11bGF0aW9uLCBldmVuIGlmIGl0JiMzOTtzIG5vdCBkaXJlY3RseSBpbnRlZ3JhdGVkIHdpdGggUUVNVT8gTGV0JiMzOTtzIGRpZyBkZWVwZXIuIFRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleHBsb3JlIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlciYjMzk7cyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBmb3IgYSBzb2Z0d2FyZS1iYXNlZCByZXByZXNlbnRhdGlvbiwgb3Igd2hldGhlciBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBORVRfRFNBX01WODhFNlhYWFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBmYWJyaWMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBXG4gICA1Olx0XHRzZWxlY3QgSVJRX0RPTUFJTlxuICAgNjpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX0VEU0FcbiAgIDc6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19EU0FcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBtb3N0IG9mIHRoZSBNYXJ2ZWxsIDg4RTZ4eHggbW9kZWxzIG9mXG4gIDEwOlx0XHQgIEV0aGVybmV0IHN3aXRjaCBjaGlwcywgZXhjZXB0IDg4RTYwNjAuXG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYX1BUUFxuICAxMzpcdFx0Ym9vbCBcJiMzNDtQVFAgc3VwcG9ydCBmb3IgTWFydmVsbCA4OEU2eHh4XCYjMzQ7XG4gIDE0Olx0XHRkZWZhdWx0IG5cbiAgMTU6XHRcdGRlcGVuZHMgb24gKE5FVF9EU0FfTVY4OEU2WFhYID0geSBcdTAwMjZcdTAwMjYgUFRQXzE1ODhfQ0xPQ0sgPSB5KSB8fCBcXFxuICAxNjpcdFx0ICAgICAgICAgICAoTkVUX0RTQV9NVjg4RTZYWFggPSBtIFx1MDAyNlx1MDAyNiBQVFBfMTU4OF9DTE9DSylcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU2F5IFkgdG8gZW5hYmxlIFBUUCBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgb24gTWFydmVsbCA4OEU2eHh4IHN3aXRjaFxuICAxOTpcdFx0ICBjaGlwcyB0aGF0IHN1cHBvcnQgaXQuXG4gIDIwOlx0XG4gIDIxOlx0Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYX0xFRFNcbiAgMjI6XHRcdGJvb2wgXCYjMzQ7TEVEIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFwmIzM0O1xuICAyMzpcdFx0ZGVmYXVsdCB5XG4gIDI0Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTVY4OEU2WFhYXG4gIDI1Olx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfTVY4OEU2WFhYXG4gIDI2Olx0XHRkZXBlbmRzIG9uIExFRFNfVFJJR0dFUlNcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgVGhpcyBlbmFibGVkIHN1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIHRoZSBMRURzIGF0dGFjaGVkIHRvIHRoZVxuICAyOTpcdFx0ICBNYXJ2ZWxsIDg4RTZ4eHggc3dpdGNoIGNoaXBzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MDI2CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRFNBIERyaXZlciBJbnRlcmFjdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSByZWxhdGVkIHRvIGEgZHJpdmVyIGZvciB0aGUgTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBjaGlwcy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGF0IERTQSwgb3IgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSwgZGVwZW5kcyBvbiBoYXZpbmcgYSAqcmVhbCogcGh5c2ljYWwgc3dpdGNoIGNoaXAgY29ubmVjdGVkIHZpYSBzb21ldGhpbmcgbGlrZSBNRElPIG9yIFNQSS4gVGhpcyBpc24mIzM5O3Qgc29tZXRoaW5nIHRoYXQmIzM5O3MgdXN1YWxseSBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIHNldHVwLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsICYjMzQ7Q2FuIHRoaXMgY29kZSAqZXZlbiogYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7CgpJZiB0aGVyZSYjMzk7cyBubyBRRU1VIGVtdWxhdGlvbiBmb3IgdGhlIGBtdjg4ZTZ4eHhgIGNoaXAsIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gaXMgZ29pbmcgdG8gZmFpbCDigJMgaXQgd29uJiMzOTt0IGZpbmQgdGhlIGhhcmR3YXJlLCBhbmQgdGhlIGRldmljZSBqdXN0IHdvbiYjMzk7dCByZWdpc3Rlci4gU28sIGJlZm9yZSBJIGRpZyB0b28gZGVlcCwgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgY2xldmVyIG1vY2tpbmcgb3IgZW11bGF0aW9uIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZiwgZWl0aGVyIGZvciBEU0EgaW4gZ2VuZXJhbCBvciBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgZHJpdmVyLiBJJiMzOTtkIGV4cGVjdCBEU0EgZHJpdmVycyB0byBiZSBkZXNpZ25lZCBmb3IgcGh5c2ljYWwgaGFyZHdhcmUsIHNvIHRoaXMgc2VlbXMgdW5saWtlbHkuCgpMZXQmIzM5O3Mgc2Vl4oCmIG1heWJlIGBkc2FfbG9vcGAgb3Igc29tZXRoaW5nIHNpbWlsYXI/IEFoLCBgZHNhX2xvb3AuY2AgaXMgaW5kZWVkIGEgbW9jayBEU0EgZHJpdmVyLCBidXQgaXQgZG9lc24mIzM5O3QgdXRpbGl6ZSBgbXY4OGU2eHh4YCBmdW5jdGlvbmFsaXR5LCBzbyBpdCYjMzk7cyBhIGRlYWQgZW5kIGZvciBteSBwdXJwb3Nlcy4gT2theSwgc28gdGhlIGNvcmUgY2hhbmdlcyBzZWVtIHRvIGJlIGNvbmNlbnRyYXRlZCBpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gIGFuZCBgbmV0L2RzYS90YWdfZHNhLmNgLgoKVGhlIGtleSBjaGFuZ2UgaW4gYHRhZ19kc2EuY2AgYXBwZWFycyB0byBiZSBhZGRpbmcgYSBuZXcgdGFnIHByb3RvY29sOiBgZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzYC4gTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogQ2FuIEkgc29tZWhvdyB0cmlnZ2VyIHRoZSB1c2Ugb2YgdGhhdCBgZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzYCB0YWcgcHJvdG9jb2wgKndpdGhvdXQqIHRoZSBgbXY4OGU2eHh4YCBkcml2ZXIgYmVpbmcgc3VjY2Vzc2Z1bGx5IGxvYWRlZD8gSSBuZWVkIHRvIGNoZWNrIHRoYXQgYG5ldC9kc2EvdGFnX2RzYS5jYCBmaWxlIG1vcmUgY2xvc2VseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kc2EvdGFnX2RzYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kc2EvdGFnX2RzYS5jPTQwND1NT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBLCBFRFNBX05BTUUpO1xuLS1cbm5ldC9kc2EvdGFnX2RzYS5jLTQxMC0gKi9cbm5ldC9kc2EvdGFnX2RzYS5jOjQxMTpzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzID0ge1xubmV0L2RzYS90YWdfZHNhLmMtNDEyLVx0Lm5hbWVcdFx0ID0gRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUsXG4tLVxubmV0L2RzYS90YWdfZHNhLmMtNDE4LVxubmV0L2RzYS90YWdfZHNhLmM6NDE5OkRTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTtcbm5ldC9kc2EvdGFnX2RzYS5jLTQyMC1NT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXG4tLVxubmV0L2RzYS90YWdfZHNhLmM9NDI0PXN0YXRpYyBzdHJ1Y3QgZHNhX3RhZ19kcml2ZXIgKmRzYV90YWdfZHJpdmVyc1tdID0ge1xuLS1cbm5ldC9kc2EvdGFnX2RzYS5jLTQyOS1cdFx1MDAyNkRTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9uZXRkZXZfb3BzKSxcbm5ldC9kc2EvdGFnX2RzYS5jOjQzMDpcdFx1MDAyNkRTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpLFxubmV0L2RzYS90YWdfZHNhLmMtNDMxLSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTg5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgVGFnIERyaXZlciBDb21wYXRpYmlsaXR5KioKClJpZ2h0LCB0aGUgdGFnIGRyaXZlciBpcyByZWdpc3RlcmVkLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMsIGRvZXMgdGhpcyByZWdpc3RyYXRpb24gYWN0dWFsbHkgdHJhbnNsYXRlIGludG8gdXNhYmlsaXR5IGRvd25zdHJlYW0/IFNwZWNpZmljYWxseSwgY2FuIHRoaXMgZHJpdmVyIGJlIGxldmVyYWdlZCBieSBgZHNhX2xvb3BgIG9yIGFueSBvdGhlciBlbXVsYXRlZCBEU0EgZHJpdmVyIEkmIzM5O20gZmFtaWxpYXIgd2l0aD8gSSBuZWVkIHRvIGFzY2VydGFpbiB0aGUgZXh0ZW50IG9mIGl0cyBhY2Nlc3NpYmlsaXR5IHdpdGhpbiB0aGUgc29mdHdhcmUgYXJjaGl0ZWN0dXJlLgoKTGV0JiMzOTtzIGN1dCBzdHJhaWdodCB0byB0aGUgY2hhc2UgYW5kIHRlc3QgYSBzcGVjaWZpYyBzY2VuYXJpby4gSSB3YW50IHRvIGRldGVybWluZSBpZiBgZHNhX2xvb3BgIGlzIGNhcGFibGUgb2YgdXRpbGl6aW5nIGEgc3BlY2lmaWMgdGFnZ2luZyBwcm90b2NvbCBpZGVudGlmaWVyLCBsZXQmIzM5O3MgZ28gd2l0aCBgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNgLiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBUaGlzIHRhZyBwcm90b2NvbCBpcyBhIGdvb2QgdGVzdCBjYXNlLCBJIGtub3cgaXRzIGNoYXJhY3RlcmlzdGljcy4gSWYgYGRzYV9sb29wYCBjYW4mIzM5O3QgdXRpbGl6ZSB0aGlzIG9uZSwgdGhhdCBpcyBhIGdvb2Qgc2lnbiB0aGVyZSBhcmUgaXNzdWVzIHNvbWV3aGVyZSBpbiB0aGUgZHJpdmVyLiBBIHN1Y2Nlc3NmdWwgdGVzdCBoZXJlIHdvdWxkIGdpdmUgbWUgY29uZmlkZW5jZSBhYm91dCB0aGUgZGVzaWduJiMzOTtzIGZsZXhpYmlsaXR5LiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCBnb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zMjYyPXN0YXRpYyBpbnQgbXY4OGU2eHh4X3NldHVwX3BvcnRfbW9kZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNzQtXHRpZiAoY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBIHx8XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjc1Olx0ICAgIGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3Ni1cdFx0cmV0dXJuIG12ODhlNnh4eF9zZXRfcG9ydF9tb2RlX2Vkc2EoY2hpcCwgcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NjY1OT1zdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjcxLVx0c3dpdGNoIChwcm90bykge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY3MjpcdGNhc2UgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjczLVx0XHRpZiAoIWNoaXAtXHUwMDNlaW5mby1cdTAwM2VzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmg9ODMxPXN0YXRpYyBpbmxpbmUgYm9vbCBtdjg4ZTZ4eHhfcHRwX2VtYmVkZGVkX3RzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTgzMi17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaDo4MzM6XHRyZXR1cm4gY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaC04MzQtfVxuLS1cbmluY2x1ZGUvbmV0L2RzYS5oPTI2PXN0cnVjdCB0Y19hY3Rpb247XG4tLVxuaW5jbHVkZS9uZXQvZHNhLmgtNjEtI2RlZmluZSBEU0FfVEFHX1BST1RPX05FVENfVkFMVUVcdFx0MzNcbmluY2x1ZGUvbmV0L2RzYS5oOjYyOiNkZWZpbmUgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNfVkFMVUVcdDM0XG5pbmNsdWRlL25ldC9kc2EuaC02My1cbmluY2x1ZGUvbmV0L2RzYS5oPTY0PWVudW0gZHNhX3RhZ19wcm90b2NvbCB7XG4tLVxuaW5jbHVkZS9uZXQvZHNhLmgtOTgtXHREU0FfVEFHX1BST1RPX05FVENcdFx0PSBEU0FfVEFHX1BST1RPX05FVENfVkFMVUUsXG5pbmNsdWRlL25ldC9kc2EuaDo5OTpcdERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNfVkFMVUUsXG5pbmNsdWRlL25ldC9kc2EuaC0xMDAtfTtcbi0tXG5uZXQvZHNhL3RhZ19kc2EuYz00MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyA9IHtcbm5ldC9kc2EvdGFnX2RzYS5jLTQxMi1cdC5uYW1lXHRcdCA9IEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FLFxubmV0L2RzYS90YWdfZHNhLmM6NDEzOlx0LnByb3RvXHRcdCA9IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxubmV0L2RzYS90YWdfZHNhLmMtNDE0LVx0LnhtaXRcdFx0ID0gZWRzYV94bWl0LFxuLS1cbm5ldC9kc2EvdGFnX2RzYS5jPTQxOT1EU0FfVEFHX0RSSVZFUihlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyk7XG5uZXQvZHNhL3RhZ19kc2EuYzo0MjA6TU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxubmV0L2RzYS90YWdfZHNhLmMtNDIxLVx0XHRcdCAgICBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNTQxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVGFnIFByb3RvY29sIENvbmZpZ3VyYXRpb24gZm9yIEVtdWxhdGVkIERTQSBEZXZpY2VzKioKCk9rYXksIHNvIHRoZSB0YWcgcHJvdG9jb2wgc2VlbXMgdG8gYmUgZXhjbHVzaXZlbHkgaGFuZGxlZCBieSB0aGUgYG12ODhlNnh4eGAgZHJpdmVyLCB3aGljaCByYWlzZXMgYSBxdWVzdGlvbi4gSXMgdGhlcmUgYSB3YXksIHZpYSBzeXNmcyBvciBuZXRsaW5rLCB0byBjb25maWd1cmUgdGhlIHRhZyBwcm90b2NvbCBmb3IgZW11bGF0ZWQgZGV2aWNlcyBsaWtlIGBkc2FfbG9vcGAsIG9yIHBlcmhhcHMgb3RoZXIgc2ltaWxhciBlbXVsYXRpb25zPyBUaGUgRFNBIGZyYW1ld29yayBpdHNlbGYgb2ZmZXJzIHRoZSBhYmlsaXR5IHRvIG1vZGlmeSB0aGUgdGFnIHByb3RvY29sIHRocm91Z2ggdGhlIGBkc2Ffc3dpdGNoX29wcy0mZ3Q7Y2hhbmdlX3RhZ19wcm90b2NvbGAgZnVuY3Rpb24sIHdoaWNoIGlzIHByb21pc2luZy4gSG93ZXZlciwgaWYgYSBkZXZpY2UgbGlrZSBgZHNhX2xvb3BgICpkb2VzbiYjMzk7dCogaW1wbGVtZW50IHRoaXMgYGNoYW5nZV90YWdfcHJvdG9jb2xgIGZ1bmN0aW9uLCBpdCYjMzk7bGwgc2ltcGx5IHN0aWNrIHdpdGggaXRzIGRlZmF1bHQsIGluaXRpYWwgcHJvdG9jb2wuIFRpbWUgdG8gZGlnIGludG8gYGRzYV9sb29wLmNgIGFuZCBzZWUgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBsb29rIGxpa2UsIGlmIGFueSwgdGhlcmUuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBob29rIGlzIGltcGxlbWVudGVkIGFuZCBob3cgaXQgaXMgYmVoYXZpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hhbmdlX3RhZ19wcm90b2NvbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE4OTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipEZWNvZGluZyB0aGUgYGRzYV9sb29wYCBQcm90b2NvbCoqLgoKUmlnaHQsIHNvIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgc3BlY2lmaWMgdGFnZ2luZyBwcm90b2NvbCB0aGF0IGBkc2FfbG9vcGAgZW1wbG95cy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzdGVwLCByZWFsbHkuIEkgY2FuJiMzOTt0IGFuYWx5emUgb3IgZXZlbiB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBwcm9wZXJseSB3aXRob3V0IGtub3dpbmcgd2hhdCBraW5kIG9mIHRhZ2dpbmcgaXQmIzM5O3MgYnVpbHQgdXBvbi4gSXMgaXQgYSBzaW1wbGUgY2hlY2tzdW0sIHNvbWV0aGluZyBtb3JlIHJvYnVzdCBsaWtlIGEgQ1JDLCBvciBwZXJoYXBzIHNvbWV0aGluZyBtb3JlIGFkdmFuY2VkIHRoYXQgaW5jb3Jwb3JhdGVzIGVycm9yIGNvcnJlY3Rpb24gb3IgY3J5cHRvZ3JhcGhpYyBoYXNoaW5nPyBHb3R0YSBmaWd1cmUgb3V0IHRoZSBiYXNpY3MgYmVmb3JlIGRpdmluZyBhbnkgZGVlcGVyLiBMZXQmIzM5O3MgZ2V0IGNyYWNraW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEU0FfVEFHX1BST1RPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MTI1PXN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzE6XHRyZXR1cm4gRFNBX1RBR19QUk9UT19OT05FO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxODgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEU0EgQ29kZSBQYXRoIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gYGRzYV9sb29wYCB1c2VzIGBEU0FfVEFHX1BST1RPX05PTkVgLCB0aGF0IG11Y2ggaXMgY2xlYXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgdGhlcmUgYW55ICpvdGhlciogRFNBIGRyaXZlcnMgdGhhdCBtaWdodCBiZSBlbXVsYXRlZD8gTGV0JiMzOTtzIGNoZWNrLiBBaCwgYGRyaXZlcnMvbmV0L2RzYS9tb2NrLmNgLi4ubm8sIG5vdGhpbmcgdGhlcmUuCgpIbW0sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgY2FuIHdlIHRyaWdnZXIgYGVkc2FfeG1pdGAgb3IgYGVkc2FfcmN2YCB3aXRob3V0IHJlbHlpbmcgb24gYG12ODhlNnh4eGA/IEJlY2F1c2UsIHJlYWxpc3RpY2FsbHksIGlmIHNvbWVvbmUgY29uZmlndXJlcyBhIERTQSB0cmVlIHRocm91Z2ggdGhlIGRldmljZSB0cmVlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgd2UmIzM5O3JlIHVubGlrZWx5IHRvIGhhdmUgYSB3b3JraW5nIGBtdjg4ZTZ4eHhgIGluc3RhbmNlIHdpdGhvdXQgYSBzcGVjaWFsaXplZCBJMkMvTURJTyBtb2NrLgoKV2FpdC4uLlN5emthbGxlci4gU3l6a2FsbGVyJiMzOTtzIGdvdCBgc3l6X2dlbmV0bGlua2AgYW5kIG90aGVyIHBzZXVkby1zeXNjYWxscywgYnV0IGl0IGRvZXNuJiMzOTt0ICpuYXRpdmVseSogZW11bGF0ZSBNRElPIGRldmljZXMuIEl0IG5lZWRzIGEgc3BlY2lmaWMgZHJpdmVyIGZvciB0aGF0LCByaWdodD8gVW5sZXNzLi4uCgpBaCwgeWVzLCBTeXprYWxsZXIgY2FuIGluamVjdCBwYWNrZXRzLiBJZiB3ZSBjb3VsZCBjcmVhdGUgYSBkZXZpY2Ugd2l0aCBgZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHNgLCB0aGVuIHdlJiMzOTtkIGJlIHVzaW5nIGBlZHNhX3htaXRgIGFuZCBgZWRzYV9yY3ZgLiBCdXQgaG9sZCBvbiwgdGhvc2UgYXJlbiYjMzk7dCAqbmV3KiBmdW5jdGlvbnM7IHRoZXkmIzM5O3JlIHJldXNlZCBmcm9tIGBlZHNhX25ldGRldl9vcHNgLiBTbyBpdCBsb29rcyBsaWtlIHRoZSByZWxldmFudCBjb2RlIHNuaXBwZXQgaXM6CgpgYGBjCnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMgPSB7CgkubmFtZQkJID0gRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUsCgkucHJvdG8JCSA9IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLAoJLnhtaXQJCSA9IGVkc2FfeG1pdCwKCS5yY3YJCSA9IGVkc2FfcmN2LAoJLm5lZWRlZF9oZWFkcm9vbSA9IEVEU0FfSExFTiwKfTsKYGBgCgpTbyB0aGUgJiMzNDtuZXcmIzM0OyB0aGluZyBpbiBgbmV0L2RzYS90YWdfZHNhLmNgIGlzIGp1c3QgdGhlICpyZWdpc3RyYXRpb24qIG9mIHRoYXQgc3RydWN0LiBUaGUgbWVhdCBvZiB0aGUgZnVuY3Rpb25hbGl0eS4uLml0JiMzOTtzIHJlYWxseSBpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gLgoKQW5kIHRoYXQmIzM5O3MgdGhlIGtpY2tlci4gU2luY2UgYG12ODhlNnh4eGAgaXMgYSAqaGFyZHdhcmUqIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcywgYW5kIGl0JiMzOTtzIG5vdCBlbXVsYXRlZCBpbiBRRU1VIChhdCBsZWFzdCBub3QgYnkgZGVmYXVsdCksIGl0JiMzOTtzICp1bnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28gdGhlIGNvZGUgdGhlcmUgaXMgYmFzaWNhbGx5IGRlYWQgY29kZSBpbiBteSBzcGVjaWZpYyB1c2UgY2FzZS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSB3YXkgdG8gaW5zdGFudGlhdGUgYG12ODhlNnh4eGAgdmlhIHNvbWUga2luZCBvZiBzb2Z0d2FyZSBtb2NrLCBidXQgbXkgZ3V0IHRlbGxzIG1lIGl0JiMzOTtzIHB1cmVseSBoYXJkd2FyZS1iYXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdjg4ZTZ4eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzM1OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhIGZpcnN0LXBlcnNvbiwgZXhwZXJ0IHBlcnNwZWN0aXZlLCBhaW1pbmcgZm9yIGEgZnVsc29tZSByZW5kZXJpbmc6CgoqKktlcm5lbCBUZXN0aW5nIG9mIGBtdjg4ZTZ4eHhgIC0gQSBEZWVwIERpdmUqKgoKQWxyaWdodCwgSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgbXY4OGU2eHh4YCBkcml2ZXIgaW4gdGhlIGtlcm5lbCBhZ2FpbiwgYW5kIG15IGZpcnN0IHF1ZXN0aW9uICphbHdheXMqIHBvcHMgdXA6IEFyZSB3ZSB0cnVseSBleGhhdXN0aW5nICphbGwqIHRoZSB0ZXN0aW5nIHBvc3NpYmlsaXRpZXM/IFN1cmUsIEkmIzM5O20gZmFtaWxpYXIgd2l0aCB0aGUgc3RhbmRhcmQgbWV0aG9kcywgdGhlIHR5cGljYWwgcHJvY2VkdXJlcywgdGhlIGJhc2ljIGNoZWNrcyB0aGF0IGFyZSBhbG1vc3QgY2VydGFpbmx5IGluIHBsYWNlLi4uIGJ1dCBJIGNhbiYjMzk7dCBoZWxwIGJ1dCB3b25kZXIsIGlzIHRoZXJlIGFub3RoZXIgYW5nbGU/IElzIHRoZXJlIGEgc3VidGxlIGNvcm5lciBjYXNlLCBhbiBvYnNjdXJlIGhhcmR3YXJlIGludGVyYWN0aW9uLCBzb21lIG9mZmJlYXQgY29uZmlndXJhdGlvbiBzY2VuYXJpbyB0aGF0IHdlJiMzOTtyZSBzb21laG93IG1pc3NpbmcgaW4gb3VyIHRlc3Qgc3VpdGU/CgpJJiMzOTttIHRoaW5raW5nLCBiZXlvbmQgdGhlIG9idmlvdXMsIHdoYXQgYXJlIHRoZSBpbXBsaWNpdCBhc3N1bXB0aW9ucyB3ZSYjMzk7cmUgbWFraW5nIGFib3V0IHRoZSBoYXJkd2FyZSYjMzk7cyBiZWhhdmlvciBvciB0aGUgc3Vycm91bmRpbmcgc3lzdGVtPyBIYXZlIHdlIGNvdmVyZWQgdGhlIGVkZ2UgY29uZGl0aW9ucywgdGhlIGVycm9yIHBhdGhzLCB0aGUgbGVzcy10cmF2ZWxlZCBjb25maWd1cmF0aW9ucz8gSSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgbm90IGp1c3QgY29uZmlybWluZyB3aGF0IHdlIGFscmVhZHkga25vdyB3b3JrcyBidXQgcHJvYWN0aXZlbHkgaHVudGluZyBkb3duIHBvdGVudGlhbCBpc3N1ZXMgYmVmb3JlIHRoZXkgc3VyZmFjZSBpbiB0aGUgZmllbGQuIFRoaXMgaXMgbm90IGFib3V0IGp1c3QgcnVubmluZyB0aGUgdGVzdHMuIFRoaXMgaXMgYWJvdXQgbWFraW5nIHN1cmUsIGZyb20gdGhlIGdyb3VuZCB1cCwgd2UmIzM5O3JlIGJ1aWxkaW5nIGEgcm9jay1zb2xpZCwgcmVsaWFibGUgZHJpdmVyLiBQZXJoYXBzIHRoZSBkb2N1bWVudGF0aW9uIHBvaW50cyB0byBzb21lIG9ic2N1cmUgdGVzdCBwYXRocy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXY4OGU2eHh4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTAxNDEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTczPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc0LVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NzU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTIxPW9iai15XHRcdFx0XHQmIzQzOz0gbWljcm9jaGlwL1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjIyOm9iai15XHRcdFx0XHQmIzQzOz0gbXY4OGU2eHh4L1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTIzLW9iai15XHRcdFx0XHQmIzQzOz0gbXhsODYyeHgvXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oLTUtICpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaDo2OiAqIEJhc2VkIG9uIG12ODhlNnh4eC5oXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmgtNy0gKiBDb3B5cmlnaHQgKGMpIDIwMDggTWFydmVsbCBTZW1pY29uZHVjdG9yXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFgpICYjNDM7PSBtdjg4ZTZ4eHgub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTozOm12ODhlNnh4eC1vYmpzIDo9IGNoaXAub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo0Om12ODhlNnh4eC1vYmpzICYjNDM7PSBkZXZsaW5rLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjY6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IGdsb2JhbDFfYXR1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Nzptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMV92dHUub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo4Om12ODhlNnh4eC1vYmpzICYjNDM7PSBnbG9iYWwyLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6OTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMl9hdmIub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMDptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gZ2xvYmFsMl9zY3JhdGNoLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTE6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgJiM0Mzs9IGh3dHN0YW1wLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTI6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX0xFRFMpICYjNDM7PSBsZWRzLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTM6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02MTg1Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTQ6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02MzUyLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTU6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBjcy02Mzl4Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTY6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBoeS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE3Om12ODhlNnh4eC1vYmpzICYjNDM7PSBwb3J0Lm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTg6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHBvcnRfaGlkZGVuLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTk6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgJiM0Mzs9IHB0cC5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIwOm12ODhlNnh4eC1vYmpzICYjNDM7PSBzZXJkZXMub1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMTptdjg4ZTZ4eHgtb2JqcyAmIzQzOz0gc21pLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjI6bXY4OGU2eHh4LW9ianMgJiM0Mzs9IHN3aXRjaGRldi5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIzOm12ODhlNnh4eC1vYmpzICYjNDM7PSB0cmFjZS5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI0Om12ODhlNnh4eC1vYmpzICYjNDM7PSB0Y2Zsb3dlci5vXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI1Om12ODhlNnh4eC1vYmpzICYjNDM7PSB0Y2FtLm9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMjYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvZHNhL212ODhlNnh4eC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgtI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTojaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kYXRhL212ODhlNnh4eC5oXHUwMDNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9wcm9wZXJ0eS5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTpzdGF0aWMgdm9pZCBhc3NlcnRfcmVnX2xvY2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTc6aW50IG12ODhlNnh4eF9yZWFkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiAqdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjM6XHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3JlYWQoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzM6aW50IG12ODhlNnh4eF93cml0ZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Nzk6XHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3dyaXRlKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5OmludCBtdjg4ZTZ4eHhfd2FpdF9tYXNrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MC1cdFx0XHR1MTYgbWFzaywgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDEtXHRmb3IgKGkgPSAwOyB0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSB8fCAoaSBcdTAwM2MgMik7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMDI6XHRcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDMtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTE1Olx0ZXJyID0gbXY4OGU2eHh4X3JlYWQoY2hpcCwgYWRkciwgcmVnLCBcdTAwMjZkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTI2OmludCBtdjg4ZTZ4eHhfd2FpdF9iaXQoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNy1cdFx0ICAgICAgIGludCBiaXQsIGludCB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjgte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTI5Olx0cmV0dXJuIG12ODhlNnh4eF93YWl0X21hc2soY2hpcCwgYWRkciwgcmVnLCBCSVQoYml0KSxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMC1cdFx0XHRcdCAgIHZhbCA/IEJJVChiaXQpIDogMHgwMDAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzM6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzU6XHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNy1cdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmNoaXAtXHUwMDNlbWRpb3MsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzg6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzOS1cdGlmICghbWRpb19idXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ1OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDYte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ3Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDgtXHR1bnNpZ25lZCBpbnQgbiA9IGQtXHUwMDNlaHdpcnE7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTUzOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfdW5tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1NC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTU6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Ni1cdHVuc2lnbmVkIGludCBuID0gZC1cdTAwM2Vod2lycTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNjE6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzA6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzE6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcyOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg2LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg3Olx0XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxODg6XHRcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZjdGwxKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE4OS1cdFx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5MC1cdFx0XHRnb3RvIHVubG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MTpcdFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5Mi11bmxvY2s6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxOTM6XHRcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTk0LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwMzpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA0LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRldl9pZDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNzpcdHJldHVybiBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA4LX1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMS17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTI6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxNDpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNS19XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfc3luY191bmxvY2soc3RydWN0IGlycV9kYXRhICpkKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxOTpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjIwLVx0dTE2IG1hc2sgPSBHRU5NQVNLKGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMjQ6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjMxOlx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzUtb3V0OlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjM2Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzctfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAgbXY4OGU2eHh4X2cxX2lycV9jaGlwID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQwOlx0Lm5hbWVcdFx0XHQ9IFwmIzM0O212ODhlNnh4eC1nMVwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MTpcdC5pcnFfbWFza1x0XHQ9IG12ODhlNnh4eF9nMV9pcnFfbWFzayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MjpcdC5pcnFfdW5tYXNrXHRcdD0gbXY4OGU2eHh4X2cxX2lycV91bm1hc2ssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDM6XHQuaXJxX2J1c19sb2NrXHRcdD0gbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0NDpcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ1LX07XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDgtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGlycSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTAte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjUxOlx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZC1cdTAwM2Vob3N0X2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjU5LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYxOlx0Lm1hcFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjItXHQueGxhdGVcdD0gaXJxX2RvbWFpbl94bGF0ZV90d29jZWxsLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI2NS0vKiBUbyBiZSBjYWxsZWQgd2l0aCByZWdfbG9jayBoZWxkICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjY6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3MTpcdG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcdTAwMjZtYXNrKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3Mi1cdG1hc2sgXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVx1MDAzZWcxX2lycS5uaXJxcywgMCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzM6XHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjc0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI4MzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjg0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTE6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTI6XHRtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkzOlx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTQtfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDMtXHRcdE5VTEwsIGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzA0Olx0XHRcdTAwMjZtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9vcHMsIGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA1LVx0aWYgKCFjaGlwLVx1MDAzZWcxX2lycS5kb21haW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzExOlx0Y2hpcC1cdTAwM2VnMV9pcnEuY2hpcCA9IG12ODhlNnh4eF9nMV9pcnFfY2hpcDtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMi1cdGNoaXAtXHUwMDNlZzFfaXJxLm1hc2tlZCA9IH4wO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzE0Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFx1MDAyNm1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjA6XHRlcnIgPSBtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjQtXHQvKiBSZWFkaW5nIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIGNsZWFycyAobW9zdCBvZikgdGhlbSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzI1Olx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzMyLVx0bWFzayBcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMzMzpcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzQ2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM1MjpcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzUzLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjItXHRzbnByaW50ZihjaGlwLVx1MDAzZWlycV9uYW1lLCBzaXplb2YoY2hpcC1cdTAwM2VpcnFfbmFtZSksXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjM6XHRcdCBcJiMzNDttdjg4ZTZ4eHgtJXNcJiMzNDssIGRldl9uYW1lKGNoaXAtXHUwMDNlZGV2KSk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjU6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Ni1cdGVyciA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtXHUwMDNlaXJxLCBOVUxMLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY3Olx0XHRcdFx0ICAgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4sXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjgtXHRcdFx0XHQgICBJUlFGX09ORVNIT1QgfCBJUlFGX1NIQVJFRCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OS1cdFx0XHRcdCAgIGNoaXAtXHUwMDNlaXJxX25hbWUsIGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzcwOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcxLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MjpcdFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzYtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzgte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc5Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gY29udGFpbmVyX29mKHdvcmssXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODA6XHRcdFx0XHRcdFx0ICAgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgxLVx0XHRcdFx0XHRcdCAgIGlycV9wb2xsX3dvcmsud29yayk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODI6XHRtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4ODpzdGF0aWMgaW50IG12ODhlNnh4eF9pcnFfcG9sbF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5MjpcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkzLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTYtXHRrdGhyZWFkX2luaXRfZGVsYXllZF93b3JrKFx1MDAyNmNoaXAtXHUwMDNlaXJxX3BvbGxfd29yayxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM5NzpcdFx0XHRcdCAgbXY4OGU2eHh4X2lycV9wb2xsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MDgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MDk6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDEwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTQ6XHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTU6XHRtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE2Olx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTctfVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE4LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MjAtXHRcdFx0XHRcdCAgIGludCBwb3J0LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ0MTpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3NldHVwX21hYyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDQyLVx0XHRcdFx0ICAgIGludCBsaW5rLCBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGludCBwYXVzZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NjctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Njg6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsIG1vZGUpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDY5LXJlc3RvcmVfbGluazpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzUtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NzY6c3RhdGljIGludCBtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00Nzcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ4Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ4MzpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5MS1cdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlZmFtaWx5ID09IE1WODhFNlhYWF9GQU1JTFlfNjI1MClcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5MjpcdFx0cmV0dXJuIG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTQ6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5NS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01MDU9c3RhdGljIGNvbnN0IHU4IG12ODhlNjE4NV9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE0LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTE1OnN0YXRpYyB2b2lkIG12ODhlNjA5NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTYtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTIyOlx0aWYgKG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyMy1cdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUksIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTMzLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTM0OnN0YXRpYyB2b2lkIG12ODhlNjE4NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzUtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTQ4OnN0YXRpYyBjb25zdCB1OCBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ5LVx0W01WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9NSUlfUEhZXVx0PSBQSFlfSU5URVJGQUNFX01PREVfUkVWTUlJLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2MzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKHU4IGNtb2RlLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjQte1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY1Olx0aWYgKGNtb2RlIFx1MDAzYyBBUlJBWV9TSVpFKG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NjpcdCAgICBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0pXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1Njc6XHRcdF9fc2V0X2JpdChtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0sIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjgtXHRlbHNlIGlmIChjbW9kZSA9PSBNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfUkdNSUkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTcyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzM6bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzQtXHRcdFx0XHQgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU4MDpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZyZWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTgxLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyMjpzdGF0aWMgdm9pZCBtdjg4ZTYyNTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIzLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0LXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyNTpcdGlmICghbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSlcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNi1cdFx0bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKGNoaXAsIHBvcnQsIGNvbmZpZyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjMxOnN0YXRpYyB2b2lkIG12ODhlNjM1MV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzItXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM2LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2Mzc6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjQzOnN0YXRpYyBpbnQgbXY4OGU2M3h4X2dldF9wb3J0X3NlcmRlc19jbW9kZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDg6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXHUwMDI2cmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0OS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU2LVx0dmFsID0gcmVnIFx1MDAyNiB+TVY4OEU2WFhYX1BPUlRfU1RTX1BIWV9ERVRFQ1Q7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTc6XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2MC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2MTpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjUtXHQvKiBSZXN0b3JlIFBIWV9ERVRFQ1QgdmFsdWUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2NjpcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgcmVnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjcyLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjczOnN0YXRpYyB2b2lkIG12ODhlNjM1Ml9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzQtXHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjc5LVx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2ODA6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02ODEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk1LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2OTY6XHRcdFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTktXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDA6c3RhdGljIHZvaWQgbXY4OGU2MzJ4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDYtXHQvKiBUcmFuc2xhdGUgdGhlIGRlZmF1bHQgY21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwNzpcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwOC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MTgtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcxOTpcdFx0XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMi1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyMzpzdGF0aWMgdm9pZCBtdjg4ZTYzNDFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyOC1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzI5Olx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0NC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0NTpzdGF0aWMgdm9pZCBtdjg4ZTYzOTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQ2LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1MC1cdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzUxOlx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc2NzpzdGF0aWMgdm9pZCBtdjg4ZTYzOTB4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2OC1cdFx0XHRcdFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAxLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODAyOnN0YXRpYyB2b2lkIG12ODhlNjM5M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAzLVx0XHRcdFx0XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTAtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MTE6XHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ1LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ2OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ3LVx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OC17XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NDk6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUwLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODUxOlx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUyLVx0Y2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX2dldF9jYXBzKGNoaXAsIHBvcnQsIGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTM6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1NC1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NTpcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTYtXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9ODY0PXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKlxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY1Om12ODhlNnh4eF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg2Ni1cdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjgtXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY5Olx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg3MC1cdHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzgtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4Nzk6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX3ByZXBhcmUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODAtXHRcdFx0XHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgyLVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg4MzpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODQtXHRpbnQgcG9ydCA9IGRwLVx1MDAzZWluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5My1cdCAgICBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmspIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NDpcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk1LVx0XHRlcnIgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXBvcnRfc2V0X2xpbmsoY2hpcCwgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5Ni1cdFx0XHRcdFx0XHQgICAgIExJTktfRk9SQ0VEX0RPV04pO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk3Olx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5OC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDItXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDQtXHRcdFx0XHQgdW5zaWduZWQgaW50IG1vZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA3LVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwODpcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDktXHRpbnQgcG9ydCA9IGRwLVx1MDAzZWluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxMjpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMy1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNDpcdGlmIChtb2RlICE9IE1MT19BTl9QSFkgfHwgIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNTpcdFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTE2LVx0XHRcdFx0XHRcdCAgICAgIHN0YXRlLVx1MDAzZWludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTIxLWVycl91bmxvY2s6XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MjI6XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjctXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5Mjg6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX2ZpbmlzaChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyOS1cdFx0XHRcdHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzMS1cdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MzI6XHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTMzLVx0aW50IHBvcnQgPSBkcC1cdTAwM2VpbmRleDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDEtXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk0MjpcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDYtXHQgICAgICBjaGlwLVx1MDAzZXBvcnRzW3BvcnRdLmludGVyZmFjZSAhPSBpbnRlcmZhY2UpIHx8XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDc6XHQgICAgIChtb2RlID09IE1MT19BTl9QSFkgXHUwMDI2XHUwMDI2IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKGNoaXAsIHBvcnQpKSkpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDgtXHRcdGVyciA9IGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LCBMSU5LX1VORk9SQ0VEKTtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0OS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1MDpcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTUxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODE3MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgdGhlIE5ldyBUYWcgUHJvdG9jb2wqKgoKT2theSwgc28gdGhpcyBgbXY4OGU2eHh4YCBkcml2ZXIgaXMgc3RyaWN0bHkgaGFyZHdhcmUtZm9jdXNlZCwgbm8gUUVNVSBlbXVsYXRpb24gdGhlcmUsIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQuIFRoZSBlZGl0cyBpbiBgbmV0L2RzYS90YWdfZHNhLmNgIGFyZSBzaW1wbHkgcmVnaXN0ZXJpbmcgdGhpcyBuZXcgdGFnIHByb3RvY29sOyBpdCYjMzk7cyBzcGVjaWZpYyB0byB0aGUgTWFydmVsbCBzd2l0Y2guIE15IGluaXRpYWwgdGhvdWdodCB3YXM6IGNvdWxkIGEgY2xldmVyIHVzZXIgY3JhZnQgYSBkdW1teSBuZXRkZXYgYW5kIHBvaW50IGl0IHRvIHRoZSBuZXcgYGVkc2EtcHRwLXJlc2VydmVkMi10c2AgdGFnPyBCdXQgdGhlbiwgSSByZW1lbWJlcmVkIHRoYXQgRFNBIHRhZyBwcm90b2NvbHMgYXJlIGZ1bmRhbWVudGFsbHkgbGlua2VkIHRvIERTQSBzd2l0Y2hlcy4gVW5sZXNzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBEU0Egc3dpdGNoLCB0aGlzIGFwcHJvYWNoIGlzIGRlYWQgaW4gdGhlIHdhdGVyLgoKSWYgd2UgZG9uJiMzOTt0IGhhdmUgYSBEU0Egc3dpdGNoIGVtdWxhdGVkLCBhbmQgdGhlIG9ubHkgb25lIGF2YWlsYWJsZSAoYGRzYV9sb29wYCkgbGV2ZXJhZ2VzIGBEU0FfVEFHX1BST1RPX05PTkVgLCB0aGlzIHRhZyBwcm90b2NvbCBpcyB1bnJlYWNoYWJsZS4gSG1tbSwgY291bGQgd2UgbWFuaXB1bGF0ZSBgZHNhX2xvb3BgIGFuZCBvdmVycmlkZSBpdHMgdGFnIHByb3RvY29sPyBJdCYjMzk7cyBhIGxvbmcgc2hvdCwgYnV0IHdvcnRoIGNoZWNraW5nLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiBgZHNhX2xvb3BgIG9mZmVycyBhbnkgbWVjaGFuaXNtIHRvIGNoYW5nZSBpdHMgdGFnIHByb3RvY29sIGR5bmFtaWNhbGx5LiBBIHF1aWNrIHNlYXJjaCBmb3IgYGNoYW5nZV90YWdfcHJvdG9jb2xgIHdpdGhpbiBgZHNhX2xvb3AuY2AgeWllbGRlZCBub3RoaW5nLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgYGRzYV9zd2l0Y2hfb3BzYCBzdHJ1Y3Qgd2l0aGluIGBkc2FfbG9vcC5jYCBuZXh0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYV9zd2l0Y2hfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzI2PXN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzM1LVx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODg4MQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgSSYjMzk7bSBhYm91dCB0byBkbzoKCioqQW5hbHl6aW5nIHRoZSBgZHNhX2xvb3BfZHJpdmVyYCBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHNhX2xvb3BfZHJpdmVyYCBpbXBsZW1lbnRhdGlvbi4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHdoYXQgdGhpcyBkcml2ZXIgZG9lcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIHJvbGUgaW4gdGhlIGxhcmdlciBzeXN0ZW0uIElzIGl0IGhhbmRsaW5nIGRhdGEgdHJhbnNmZXJzLCBtYW5hZ2luZyByZXNvdXJjZXMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBJJiMzOTttIGdvaW5nIHRvIGJlIGxvb2tpbmcgZm9yIGtleSBmdW5jdGlvbnMsIGRhdGEgc3RydWN0dXJlcywgYW5kIGFueSBzcGVjaWZpYyBhbGdvcml0aG1zIGl0IG1pZ2h0IGJlIGVtcGxveWluZy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIHByb2JhYmx5IGdvaW5nIHRvIGJlIG1lbnRhbGx5IG1hcHBpbmcgdGhpcyB0byBvdGhlciBzaW1pbGFyIGRyaXZlcnMgSSYjMzk7dmUgd29ya2VkIHdpdGggaW4gdGhlIHBhc3QgYW5kIGxvb2tpbmcgZm9yIGNvbW1vbiBwYXR0ZXJucyBvciBhbnkgdW51c3VhbCBhc3BlY3RzLiBJJiMzOTtsbCBsaWtlbHkgYmUgYXNzZXNzaW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgaW4gbXkgaGVhZCBhcyB3ZWxsLCBhcyBJIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMzQ6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcbiAzMzU6XHRcdC5nZXRfdGFnX3Byb3RvY29sXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcbiAzMzY6XHRcdC5zZXR1cFx0XHRcdD0gZHNhX2xvb3Bfc2V0dXAsXG4gMzM3Olx0XHQudGVhcmRvd25cdFx0PSBkc2FfbG9vcF90ZWFyZG93bixcbiAzMzg6XHRcdC5nZXRfc3RyaW5nc1x0XHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxuIDMzOTpcdFx0LmdldF9ldGh0b29sX3N0YXRzXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxuIDM0MDpcdFx0LmdldF9zc2V0X2NvdW50XHRcdD0gZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQsXG4gMzQxOlx0XHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxuIDM0MjpcdFx0LnBoeV9yZWFkXHRcdD0gZHNhX2xvb3BfcGh5X3JlYWQsXG4gMzQzOlx0XHQucGh5X3dyaXRlXHRcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxuIDM0NDpcdFx0LnBvcnRfYnJpZGdlX2pvaW5cdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcbiAzNDU6XHRcdC5wb3J0X2JyaWRnZV9sZWF2ZVx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcbiAzNDY6XHRcdC5wb3J0X3N0cF9zdGF0ZV9zZXRcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxuIDM0NzpcdFx0LnBvcnRfdmxhbl9maWx0ZXJpbmdcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcbiAzNDg6XHRcdC5wb3J0X3ZsYW5fYWRkXHRcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcbiAzNDk6XHRcdC5wb3J0X3ZsYW5fZGVsXHRcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2RlbCxcbiAzNTA6XHRcdC5wb3J0X2NoYW5nZV9tdHVcdD0gZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1LFxuIDM1MTpcdFx0LnBvcnRfbWF4X210dVx0XHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcbiAzNTI6XHRcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXG4gMzUzOlx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk2MjgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3Qgb24gRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW1wbGVtZW50IGBjaGFuZ2VfdGFnX3Byb3RvY29sYCwgd2hpY2ggbWVhbnMgYGRzYV9sb29wYCB3aWxsIGRlZmF1bHQgdG8gYERTQV9UQUdfUFJPVE9fTk9ORWAuIE15IGZpcnN0IHRob3VnaHQgaXM6IGFyZSB0aGVyZSAqYW55KiBvdGhlciB3YXlzIHRvIHRlc3QgdGhlc2UgRFNBIHRhZyBwcm90b2NvbHM/IFN5emthbGxlciBoYXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IHBhY2tldHMgaW50byBkZXZpY2VzLCBzbyBpZiBhIG5ldHdvcmsgZGV2aWNlIHVzZXMgYGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzYCwgdGhlbiB0aGVvcmV0aWNhbGx5IGl0cyBgeG1pdGAgYW5kIGByY3ZgIGZ1bmN0aW9ucyBjb3VsZCBiZSB0cmlnZ2VyZWQuCgpCdXQgaGFuZyBvbuKApiBgZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHNgIHJlbGllcyBvbiBgZWRzYV94bWl0YCBhbmQgYGVkc2FfcmN2YCwgd2hpY2ggYXJlICphbHJlYWR5KiBiZWluZyBmdXp6ZWQgdGhyb3VnaCBgZWRzYV9uZXRkZXZfb3BzYC4gU28sIHdoYXQmIzM5O3MgKm5ldyogaGVyZT8gTG9va2luZyBhdCBgdGFnX2RzYS5jYCwgaXQgc2VlbXMgdGhlIG9ubHkgYWRkaXRpb24gaXMgdGhlIHJlZ2lzdHJhdGlvbiBvZiBhIHN0cnVjdC4gVGhlIHJlYWwgbG9naWMgaXMgYWN0dWFsbHkgYnVyaWVkIGluIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2AsIHdoaWNoIGlzIGEgaGFyZHdhcmUgZHJpdmVyLgoKQW5kIHRoYXQmIzM5O3MgdGhlIGtpY2tlci4gU2luY2UgYG12ODhlNnh4eGAgaXMgYSBoYXJkd2FyZSBkcml2ZXIsIGl0JiMzOTtzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLiBUaGUgbmV3IGNvZGUgaW4gYHRhZ19kc2EuY2AgaXMganVzdCBhIHN0cnVjdCBkZWZpbml0aW9uIGFuZCByZWdpc3RyYXRpb24g4oCTIGl0IGRvZXNuJiMzOTt0IGNvbnRhaW4gYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljLCBpdCYjMzk7cyBqdXN0IHJldXNpbmcgYGVkc2FfeG1pdGAgYW5kIGBlZHNhX3JjdmAuIFRoaXMgbWVhbnMgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyByZWFjaGFibGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFNvIEkgc2hvdWxkIGRlZmluaXRlbHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSBvdGhlciBwbGFjZSB3aGVyZSBgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNgIGlzIGJlaW5nIHVzZWQsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTMyNjI9c3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXBfcG9ydF9tb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3NC1cdGlmIChjaGlwLVx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0EgfHxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyNzU6XHQgICAgY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMpXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjc2LVx0XHRyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZWRzYShjaGlwLCBwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz02NjU5PXN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NzEtXHRzd2l0Y2ggKHByb3RvKSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjcyOlx0Y2FzZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUzpcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NzMtXHRcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaD04MzE9c3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmgtODMyLXtcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oOjgzMzpcdHJldHVybiBjaGlwLVx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUztcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTgzNC19XG4tLVxuaW5jbHVkZS9uZXQvZHNhLmg9MjY9c3RydWN0IHRjX2FjdGlvbjtcbi0tXG5pbmNsdWRlL25ldC9kc2EuaC02MS0jZGVmaW5lIERTQV9UQUdfUFJPVE9fTkVUQ19WQUxVRVx0XHQzM1xuaW5jbHVkZS9uZXQvZHNhLmg6NjI6I2RlZmluZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRVx0MzRcbmluY2x1ZGUvbmV0L2RzYS5oLTYzLVxuaW5jbHVkZS9uZXQvZHNhLmg9NjQ9ZW51bSBkc2FfdGFnX3Byb3RvY29sIHtcbi0tXG5pbmNsdWRlL25ldC9kc2EuaC05OC1cdERTQV9UQUdfUFJPVE9fTkVUQ1x0XHQ9IERTQV9UQUdfUFJPVE9fTkVUQ19WQUxVRSxcbmluY2x1ZGUvbmV0L2RzYS5oOjk5Olx0RFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSxcbmluY2x1ZGUvbmV0L2RzYS5oLTEwMC19O1xuLS1cbm5ldC9kc2EvdGFnX2RzYS5jPTQxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzID0ge1xubmV0L2RzYS90YWdfZHNhLmMtNDEyLVx0Lm5hbWVcdFx0ID0gRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUsXG5uZXQvZHNhL3RhZ19kc2EuYzo0MTM6XHQucHJvdG9cdFx0ID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXG5uZXQvZHNhL3RhZ19kc2EuYy00MTQtXHQueG1pdFx0XHQgPSBlZHNhX3htaXQsXG4tLVxubmV0L2RzYS90YWdfZHNhLmM9NDE5PURTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTtcbm5ldC9kc2EvdGFnX2RzYS5jOjQyMDpNT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXG5uZXQvZHNhL3RhZ19kc2EuYy00MjEtXHRcdFx0ICAgIEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0NjMKCQkJCQkJCW91dHB1dDogMTY5CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBQYXRoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIGluZGljYXRlcyB0aGUgdnVsbmVyYWJpbGl0eSAqb25seSogZXhpc3RzIHdpdGhpbiB0aGUgYG12ODhlNnh4eGAgZHJpdmVyIGFuZCBpdHMgcmVsYXRlZCBgdGFnX2RzYS5jYCBmaWxlLiBUaGUgcHJvYmxlbSwgYXMgSSBzZWUgaXQsIGlzIHRoYXQgYG12ODhlNnh4eGAgaXMgYSBoYXJkd2FyZSBkcml2ZXIuIEFuZCwgYXMgYSBoYXJkd2FyZSBkcml2ZXIsIGl0IGlzICpub3QqIGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBUaGF0IG1lYW5zIHRoZSBzcGVjaWZpYyBjb2RlIHNlY3Rpb24gaW4gcXVlc3Rpb24gaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBhIFFFTVUtYmFzZWQgZnV6emluZyBlbnZpcm9ubWVudC4gR2l2ZW4gdGhpcyBmdW5kYW1lbnRhbCBsaW1pdGF0aW9uLCBhdHRlbXB0aW5nIHRvIGZ1enogdGhpcyBjb2RlIGlzIGEgd2FzdGUgb2YgcmVzb3VyY2VzLiBUaGVyZWZvcmUsIEkgd2lsbCBtYXJrIHRoaXMgY29kZSBwYXRoIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGFuZCBjbGVhcmx5IHN0YXRlIHRoaXMgaGFyZHdhcmUgZGVwZW5kZW5jeSBhcyB0aGUgcHJpbWFyeSByZWFzb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4KSBhbmQgYWRkcyBhIG5ldyBEU0EgdGFnIHByb3RvY29sIGluIG5ldC9kc2EvdGFnX2RzYS5jLiBUaGUgTWFydmVsbCA4OEU2eHh4IGRyaXZlciBpcyBmb3IgcGh5c2ljYWwgaGFyZHdhcmUgc3dpdGNoZXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIFRoZSBuZXcgdGFnIHByb3RvY29sIGluIHRhZ19kc2EuYyBzaW1wbHkgcmV1c2VzIGV4aXN0aW5nIHRyYW5zbWl0IGFuZCByZWNlaXZlIGZ1bmN0aW9ucyAoZWRzYV94bWl0LCBlZHNhX3JjdikgYW5kIGNvbnRhaW5zIG5vIG5ldyBleGVjdXRhYmxlIGxvZ2ljLiBUaGVyZWZvcmUsIHRoZSBuZXcgY29kZSBpcyB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4KSBhbmQgYWRkcyBhIG5ldyBEU0EgdGFnIHByb3RvY29sIGluIG5ldC9kc2EvdGFnX2RzYS5jLiBUaGUgTWFydmVsbCA4OEU2eHh4IGRyaXZlciBpcyBmb3IgcGh5c2ljYWwgaGFyZHdhcmUgc3dpdGNoZXMgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIFRoZSBuZXcgdGFnIHByb3RvY29sIGluIHRhZ19kc2EuYyBzaW1wbHkgcmV1c2VzIGV4aXN0aW5nIHRyYW5zbWl0IGFuZCByZWNlaXZlIGZ1bmN0aW9ucyAoZWRzYV94bWl0LCBlZHNhX3JjdikgYW5kIGNvbnRhaW5zIG5vIG5ldyBleGVjdXRhYmxlIGxvZ2ljLiBUaGVyZWZvcmUsIHRoZSBuZXcgY29kZSBpcyB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIyOjQ3LjI5MDE4MTc4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwOTA2Mzg1MjE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgpIGFuZCBhZGRzIGEgbmV3IERTQSB0YWcgcHJvdG9jb2wgaW4gbmV0L2RzYS90YWdfZHNhLmMuIFRoZSBNYXJ2ZWxsIDg4RTZ4eHggZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBoYXJkd2FyZSBzd2l0Y2hlcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gVGhlIG5ldyB0YWcgcHJvdG9jb2wgaW4gdGFnX2RzYS5jIHNpbXBseSByZXVzZXMgZXhpc3RpbmcgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZnVuY3Rpb25zIChlZHNhX3htaXQsIGVkc2FfcmN2KSBhbmQgY29udGFpbnMgbm8gbmV3IGV4ZWN1dGFibGUgbG9naWMuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMjo0Ny4yOTAxODkxMTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzY3NDU3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZWU3M2U0NmY0MWYyMjU2NTYzYjdjNGMwM2YxYzNlMWRhMTBkOTViXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDI3IDE0OjIyOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9kc2EtcG9ydC55YW1sXFxuaW5kZXggNDgwMTIwNDY5OTUzNGIuLjhkMTJjOGYxYmQ1MWVjIDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS1wb3J0LnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9kc2EtcG9ydC55YW1sXFxuQEAgLTUzLDYgKzUzLDcgQEAgcHJvcGVydGllczpcXG4gICAgIGVudW06XFxuICAgICAgIC0gZHNhXFxuICAgICAgIC0gZWRzYVxcbisgICAgICAtIGVkc2EtcHRwLXJlc2VydmVkMi10c1xcbiAgICAgICAtIG9jZWxvdFxcbiAgICAgICAtIG9jZWxvdC04MDIxcVxcbiAgICAgICAtIHJ0bDhfNFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXFxuaW5kZXggODBiODc3Yzc0NTEzZDYuLmU5MjUyNGJlYjQwYzQ2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcXG5AQCAtMzI3MSw3ICszMjcxLDggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXBfcG9ydF9tb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuIFxcdGlmIChjaGlwLVxcdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19EU0EpXFxuIFxcdFxcdHJldHVybiBtdjg4ZTZ4eHhfc2V0X3BvcnRfbW9kZV9kc2EoY2hpcCwgcG9ydCk7XFxuIFxcbi1cXHRpZiAoY2hpcC1cXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQSlcXG4rXFx0aWYgKGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0EgfHxcXG4rXFx0ICAgIGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUylcXG4gXFx0XFx0cmV0dXJuIG12ODhlNnh4eF9zZXRfcG9ydF9tb2RlX2Vkc2EoY2hpcCwgcG9ydCk7XFxuIFxcbiBcXHRyZXR1cm4gLUVJTlZBTDtcXG5AQCAtNjM3MCw2ICs2MzcxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfaW5mbyBtdjg4ZTZ4eHhfdGFibGVbXSA9IHtcXG4gXFx0XFx0LmVkc2Ffc3VwcG9ydCA9IE1WODhFNlhYWF9FRFNBX1NVUFBPUlRFRCxcXG4gXFx0XFx0LnB0cF9zdXBwb3J0ID0gdHJ1ZSxcXG4gXFx0XFx0Lm9wcyA9IFxcdTAwMjZtdjg4ZTYzNDFfb3BzLFxcbitcXHRcXHQuc3VwcG9ydHNfcHRwX2VtYmVkZGVkX3RzID0gdHJ1ZSxcXG4gXFx0fSxcXG4gXFxuIFxcdFtNVjg4RTYzNTBdID0ge1xcbkBAIC02NDQ3LDYgKzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xcbiBcXHRcXHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxcbiBcXHRcXHQucHRwX3N1cHBvcnQgPSB0cnVlLFxcbiBcXHRcXHQub3BzID0gXFx1MDAyNm12ODhlNjM1Ml9vcHMsXFxuK1xcdFxcdC5zdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMgPSB0cnVlLFxcbiBcXHR9LFxcbiBcXHRbTVY4OEU2MzYxXSA9IHtcXG4gXFx0XFx0LnByb2RfbnVtID0gTVY4OEU2WFhYX1BPUlRfU1dJVENIX0lEX1BST0RfNjM2MSxcXG5AQCAtNjYzNSw2ICs2NjM4LDcgQEAgc3RhdGljIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqbXY4OGU2eHh4X2FsbG9jX2NoaXAoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRjaGlwLVxcdTAwM2VkZXYgPSBkZXY7XFxuIFxcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2VyZWdfbG9jayk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjaGlwLVxcdTAwM2VtZGlvcyk7XFxuIFxcdGlkcl9pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2Vwb2xpY2llcyk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjaGlwLVxcdTAwM2Vtc3RzKTtcXG5AQCAtNjY1OCw5ICs2NjYyLDE3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbiBcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cXHUwMDNlcHJpdjtcXG4gXFx0ZW51bSBkc2FfdGFnX3Byb3RvY29sIG9sZF9wcm90b2NvbDtcXG4gXFx0c3RydWN0IGRzYV9wb3J0ICpjcHVfZHA7XFxuLVxcdGludCBlcnI7XFxuK1xcdGludCBlcnIgPSAwO1xcbiBcXG4rXFx0LyogVGhlIGVtYmVkZGVkIGFycml2YWwtdGltZS1zdGFtcCBwcm90b2NvbCBpcyBhbiBFRFNBIGV4dGVuc2lvbjogRURTQVxcbitcXHQgKiBpcyB0aGUgbW9kZXJuIHRhZyBmb3JtYXQgZm9yIHRoZXNlIHN3aXRjaGVzLCBzbyBpdCBpcyB0aGUgb25lIHdlXFxuK1xcdCAqIGV4dGVuZDsgdGhlIGxlZ2FjeSBEU0EgdGFnIGlzIGludGVudGlvbmFsbHkgbGVmdCB1bi1leHRlbmRlZC5cXG4rXFx0ICovXFxuIFxcdHN3aXRjaCAocHJvdG8pIHtcXG4rXFx0Y2FzZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUzpcXG4rXFx0XFx0aWYgKCFjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpXFxuK1xcdFxcdFxcdHJldHVybiAtRVBST1RPTk9TVVBQT1JUO1xcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFx0Y2FzZSBEU0FfVEFHX1BST1RPX0VEU0E6XFxuIFxcdFxcdHN3aXRjaCAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZWRzYV9zdXBwb3J0KSB7XFxuIFxcdFxcdGNhc2UgTVY4OEU2WFhYX0VEU0FfVU5TVVBQT1JURUQ6XFxuQEAgLTY2ODksNyArNjcwMSwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG4gXFx0XFx0XFx0Z290byB1bndpbmQ7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbitcXG4rXFx0aWYgKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9zdXBwb3J0KVxcbitcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKGNoaXApO1xcbiBcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0Z290byB1bndpbmQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuQEAgLTY2OTksNiArNjcxNiwxNSBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG4gXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbiBcXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX2NwdV9wb3J0X2NvbnRpbnVlX3JldmVyc2UoY3B1X2RwLCBkcylcXG4gXFx0XFx0bXY4OGU2eHh4X3NldHVwX3BvcnRfbW9kZShjaGlwLCBjcHVfZHAtXFx1MDAzZWluZGV4KTtcXG4rXFx0aWYgKGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXB0cF9zdXBwb3J0KSB7XFxuK1xcdFxcdC8qIE5vdGhpbmcgZWxzZSBjYW4gYmUgZG9uZSBoZXJlLCBidXQgbGVhdmluZyBhIHBvcnQgZW1iZWRkaW5nXFxuK1xcdFxcdCAqIHRpbWUgc3RhbXBzIHRoZSBkcml2ZXIgd2lsbCBub3Qgc3RyaXAgY29ycnVwdHMgZXZlcnkgUFRQXFxuK1xcdFxcdCAqIGV2ZW50IGZyYW1lIGl0IHJlY2VpdmVzLCBzbyBtYWtlIHRoZSBmYWlsdXJlIHZpc2libGUuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAobXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKSlcXG4rXFx0XFx0XFx0ZGV2X2VycihjaGlwLVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcdFxcXCJmYWlsZWQgdG8gcmVzdG9yZSBhcnJpdmFsIHRpbWUgc3RhbXAgbW9kZVxcXFxuXFxcIik7XFxuK1xcdH1cXG4gXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXFxuaW5kZXggZTk2NmU3YzRjYzVkZWEuLmM3NWE3MTQ2NGIyMGFiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcXG5AQCAtMTgwLDYgKzE4MCwxMyBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8ge1xcbiBcXHQgKiBwb3J0IDAsIDEgbWVhbnMgaW50ZXJuYWwgUEhZcyByYW5nZSBzdGFydHMgYXQgcG9ydCAxLCBldGNcXG4gXFx0ICovXFxuIFxcdHVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDtcXG4rXFxuK1xcdC8qIFRoZSBzd2l0Y2ggY2FuIGVtYmVkIHRoZSBQVFAgYXJyaXZhbCB0aW1lIHN0YW1wIGluIHRoZSByZXNlcnZlZDJcXG4rXFx0ICogZmllbGQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyLCB3aGljaCB0aGUgZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzXFxuK1xcdCAqIHRhZyBwcm90b2NvbCBzZWxlY3RzLiBPdGhlcndpc2UgYXJyaXZhbCB0aW1lIHN0YW1wcyBhcmUgb25seVxcbitcXHQgKiBhdmFpbGFibGUgZnJvbSB0aGUgc3dpdGNoIHJlZ2lzdGVycy5cXG4rXFx0ICovXFxuK1xcdGJvb2wgc3VwcG9ydHNfcHRwX2VtYmVkZGVkX3RzO1xcbiB9O1xcbiBcXG4gc3RydWN0IG12ODhlNnh4eF9hdHVfZW50cnkge1xcbkBAIC00MTksOSArNDI2LDEyIEBAIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCB7XFxuIFxcdC8qIEdQSU8gcmVzb3VyY2VzICovXFxuIFxcdHU4IGdwaW9fZGF0YVsyXTtcXG4gXFxuLVxcdC8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLlxcbi1cXHQgKiByZWdfbG9jayBtdXN0IGJlIGhlbGQgZm9yIGFueSBvcGVyYXRpb24gdGhhdCByZWFkKClzLlxcbitcXHQvKiBUaGlzIGN5Y2xlY291bnRlciBhYnN0cmFjdHMgdGhlIHN3aXRjaCBQVFAgdGltZS4gcHRwX2Nsb2NrX2xvY2tcXG4rXFx0ICogcHJvdGVjdHMgdHN0YW1wX2NjIGFuZCB0c3RhbXBfdGMuIHRzdGFtcF9jeWNsZXMgY2FjaGVzIHRoZVxcbitcXHQgKiByZXN1bHQgbW9zdCByZWNlbnRseSByZXR1cm5lZCBieSBtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKCkuXFxuIFxcdCAqL1xcbitcXHRzcGlubG9ja190XFx0XFx0cHRwX2Nsb2NrX2xvY2s7XFxuK1xcdHU2NFxcdFxcdFxcdHRzdGFtcF9jeWNsZXM7XFxuIFxcdHN0cnVjdCBjeWNsZWNvdW50ZXJcXHR0c3RhbXBfY2M7XFxuIFxcdHN0cnVjdCB0aW1lY291bnRlclxcdHRzdGFtcF90YztcXG4gXFx0c3RydWN0IGRlbGF5ZWRfd29ya1xcdG92ZXJmbG93X3dvcms7XFxuQEAgLTgxNSw2ICs4MjUsMTQgQEAgc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9oYXNfbGFnKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4gXFx0cmV0dXJuICEhY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZ2xvYmFsMl9hZGRyO1xcbiB9XFxuIFxcbisvKiBXaGV0aGVyIHRoZSBhY3RpdmUgdGFnZ2luZyBwcm90b2NvbCBoYXMgdGhlIHN3aXRjaCBlbWJlZCBhcnJpdmFsIHRpbWUgc3RhbXBzXFxuKyAqIGluIHRoZSBmcmFtZSBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlbSBpbiB0aGUgUFRQIGFycml2YWwgcmVnaXN0ZXJzLlxcbisgKi9cXG4rc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbit7XFxuK1xcdHJldHVybiBjaGlwLVxcdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBtdjg4ZTZ4eHhfaGFzX3RjYW0oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbiB7XFxuIFxcdHJldHVybiAhIWNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXRjYW1fYWRkcjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXFxuaW5kZXggNmU2NDcyYTNiNzVhZDcuLjc0ZWFhZGVlZWI3ODQyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xcbkBAIC0xNSw2ICsxNSw3IEBAXFxuICNpbmNsdWRlIFxcXCJod3RzdGFtcC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwicHRwLmhcXFwiXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wdHBfY2xhc3NpZnkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiBcXG4gI2RlZmluZSBTS0JfUFRQX1RZUEUoX19za2IpICgqKHVuc2lnbmVkIGludCAqKSgoX19za2IpLVxcdTAwM2VjYikpXFxuIFxcbkBAIC05NCw2ICs5NSw3IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3NldF9od3RzdGFtcF9jb25maWcoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG4gXFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzO1xcbiBcXHRzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzID0gXFx1MDAyNmNoaXAtXFx1MDAzZXBvcnRfaHd0c3RhbXBbcG9ydF07XFxuIFxcdGJvb2wgdHN0YW1wX2VuYWJsZSA9IGZhbHNlO1xcbitcXHRpbnQgZXJyID0gMDtcXG4gXFxuIFxcdC8qIFByZXZlbnQgdGhlIFRYL1JYIHBhdGhzIGZyb20gdHJ5aW5nIHRvIGludGVyYWN0IHdpdGggdGhlXFxuIFxcdCAqIHRpbWVzdGFtcCBoYXJkd2FyZSB3aGlsZSB3ZSByZWNvbmZpZ3VyZSBpdC5cXG5AQCAtMTQ3LDIwICsxNDksMzAgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbiBcXHRpZiAodHN0YW1wX2VuYWJsZSkge1xcbiBcXHRcXHRjaGlwLVxcdTAwM2VlbmFibGVfY291bnQgKz0gMTtcXG4gXFx0XFx0aWYgKGNoaXAtXFx1MDAzZWVuYWJsZV9jb3VudCA9PSAxIFxcdTAwMjZcXHUwMDI2IHB0cF9vcHMtXFx1MDAzZWdsb2JhbF9lbmFibGUpXFxuLVxcdFxcdFxcdHB0cF9vcHMtXFx1MDAzZWdsb2JhbF9lbmFibGUoY2hpcCk7XFxuLVxcdFxcdGlmIChwdHBfb3BzLVxcdTAwM2Vwb3J0X2VuYWJsZSlcXG4tXFx0XFx0XFx0cHRwX29wcy1cXHUwMDNlcG9ydF9lbmFibGUoY2hpcCwgcG9ydCk7XFxuK1xcdFxcdFxcdGVyciA9IHB0cF9vcHMtXFx1MDAzZWdsb2JhbF9lbmFibGUoY2hpcCk7XFxuK1xcdFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IHB0cF9vcHMtXFx1MDAzZXBvcnRfZW5hYmxlKVxcbitcXHRcXHRcXHRlcnIgPSBwdHBfb3BzLVxcdTAwM2Vwb3J0X2VuYWJsZShjaGlwLCBwb3J0KTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0aWYgKHB0cF9vcHMtXFx1MDAzZXBvcnRfZGlzYWJsZSlcXG4tXFx0XFx0XFx0cHRwX29wcy1cXHUwMDNlcG9ydF9kaXNhYmxlKGNoaXAsIHBvcnQpO1xcbitcXHRcXHRcXHRlcnIgPSBwdHBfb3BzLVxcdTAwM2Vwb3J0X2Rpc2FibGUoY2hpcCwgcG9ydCk7XFxuIFxcdFxcdGNoaXAtXFx1MDAzZWVuYWJsZV9jb3VudCAtPSAxO1xcbiBcXHRcXHRpZiAoY2hpcC1cXHUwMDNlZW5hYmxlX2NvdW50ID09IDAgXFx1MDAyNlxcdTAwMjYgcHRwX29wcy1cXHUwMDNlZ2xvYmFsX2Rpc2FibGUpXFxuIFxcdFxcdFxcdHB0cF9vcHMtXFx1MDAzZWdsb2JhbF9kaXNhYmxlKGNoaXApO1xcbiBcXHR9XFxuIFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbiBcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuIFxcdC8qIE9uY2UgaGFyZHdhcmUgaGFzIGJlZW4gY29uZmlndXJlZCwgZW5hYmxlIHRpbWVzdGFtcCBjaGVja3NcXG4gXFx0ICogaW4gdGhlIFJYL1RYIHBhdGhzLlxcbitcXHQgKlxcbitcXHQgKiBJbiBlbWJlZGRlZCBtb2RlIHRoZSBzd2l0Y2ggc3RhcnRzIG92ZXJ3cml0aW5nIHRoZSBQVFAgaGVhZGVyJ3NcXG4rXFx0ICogcmVzZXJ2ZWQyIGZpZWxkIGFzIHNvb24gYXMgQ0ZHMiBpcyBhcm1lZCBhYm92ZSwgd2hpY2ggaXMgYmVmb3JlIHRoZVxcbitcXHQgKiBSWCBwYXRoIGJlZ2lucyByZXN0b3JpbmcgaXQ7IG9uIHRoZSB3YXkgZG93biB0aGUgUlggcGF0aCBzdG9wc1xcbitcXHQgKiByZXN0b3JpbmcgYmVmb3JlIHRoZSBoYXJkd2FyZSBzdG9wcyBlbWJlZGRpbmcuIEFuIGV2ZW50IGZyYW1lXFxuK1xcdCAqIHJlY2VpdmVkIGluc2lkZSBlaXRoZXIgd2luZG93IGlzIGRlbGl2ZXJlZCB3aXRoIHRoZSBzd2l0Y2gnc1xcbitcXHQgKiBhcnJpdmFsIGNvdW50ZXIgc3RpbGwgaW4gaXRzIGhlYWRlci5cXG4gXFx0ICovXFxuIFxcdGlmICh0c3RhbXBfZW5hYmxlKVxcbiBcXHRcXHRzZXRfYml0KE1WODhFNlhYWF9IV1RTVEFNUF9FTkFCTEVELCBcXHUwMDI2cHMtXFx1MDAzZXN0YXRlKTtcXG5AQCAtMjE2LDYgKzIyOCwxMCBAQCBzdGF0aWMgc3RydWN0IHB0cF9oZWFkZXIgKm12ODhlNnh4eF9zaG91bGRfdHN0YW1wKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0aWYgKCFjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VwdHBfc3VwcG9ydClcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbitcXHQvKiBNYXJ2ZWxsIHN3aXRjaGVzIGRvIG5vdCBzdXBwb3J0IElFRUUgMTU4OC0yMDAyIChQVFB2MSkuICovXFxuK1xcdGlmICgodHlwZSBcXHUwMDI2IFBUUF9DTEFTU19WTUFTSykgIT0gUFRQX0NMQVNTX1YyKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuIFxcdGhkciA9IHB0cF9wYXJzZV9oZWFkZXIoc2tiLCB0eXBlKTtcXG4gXFx0aWYgKCFoZHIpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbkBAIC0yNDUsNiArMjYxLDUyIEBAIHN0YXRpYyBpbnQgc2VxX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0c19zZXFpZClcXG4gXFx0cmV0dXJuIHRzX3NlcWlkID09IG50b2hzKGhkci1cXHUwMDNlc2VxdWVuY2VfaWQpO1xcbiB9XFxuIFxcbisvKiBSZWNvdmVyIHRoZSBhcnJpdmFsIHRpbWUgdGhlIHN3aXRjaCB3cm90ZSBvdmVyIHRoZSByZXNlcnZlZDIgZmllbGQgb2YgdGhlIFBUUFxcbisgKiBjb21tb24gaGVhZGVyLCByZXN0b3JpbmcgdGhlIGZpZWxkIGFmdGVyd2FyZHMuXFxuKyAqL1xcbitzdGF0aWMgYm9vbCBwYXJzZV9lbWJlZGRlZF90cyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1NjQgKm5zKVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBvZmYgPSBNVjg4RTZYWFhfUFRQX0FSUl9UU19PRkZTRVQ7XFxuK1xcdHN0cnVjdCBwdHBfaGVhZGVyICpoZHI7XFxuK1xcbitcXHQqbnMgPSAwO1xcbitcXG4rXFx0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aGRyID0gcHRwX3BhcnNlX2hlYWRlcihza2IsIFNLQl9QVFBfVFlQRShza2IpKTtcXG4rXFx0aWYgKCFoZHIpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdCpucyA9IGdldF91bmFsaWduZWRfYmUzMigodTggKiloZHIgKyBvZmYpO1xcbitcXHRtZW1zZXQoKHU4ICopaGRyICsgb2ZmLCAwLCA0KTtcXG4rXFx0c2tiX2NoZWNrc3VtX2NvbXBsZXRlX3Vuc2V0KHNrYik7XFxuK1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4rLyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzXFxuKyAqIGlzIG5lZWRlZCwgc28gdGhpcyBydW5zIGlubGluZSBvbiB0aGUgcmVjZWl2ZSBwYXRoIHJhdGhlciB0aGFuIGJlaW5nIGhhbmRlZFxcbisgKiB0byB0aGUgUFRQIHdvcmtlci4gUmV0dXJucyBmYWxzZSBpZiB0aGUgZnJhbWUgY291bGQgbm90IGJlIHJlc3RvcmVkLlxcbisgKi9cXG4rc3RhdGljIGJvb2wgbXY4OGU2eHh4X3B0cF9yeF90aW1lc3RhbXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbitcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4re1xcbitcXHRzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKnNod3Q7XFxuK1xcdHU2NCBucztcXG4rXFxuK1xcdGlmICghcGFyc2VfZW1iZWRkZWRfdHMoc2tiLCBcXHUwMDI2bnMpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7XFxuK1xcbitcXHRzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpO1xcbitcXHRtZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7XFxuK1xcdHNod3QtXFx1MDAzZWh3dHN0YW1wID0gbnNfdG9fa3RpbWUobnMpO1xcbitcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxcbiBcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHJlZyxcXG5AQCAtMjg5LDkgKzM1MSw3IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfcnh0cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuIFxcdFxcdGlmIChtdjg4ZTZ4eHhfdHNfdmFsaWQoc3RhdHVzKSBcXHUwMDI2XFx1MDAyNiBzZXFfbWF0Y2goc2tiLCBzZXFfaWQpKSB7XFxuIFxcdFxcdFxcdG5zID0gdGltZWhpIFxcdTAwM2NcXHUwMDNjIDE2IHwgdGltZWxvO1xcbiBcXG4tXFx0XFx0XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbi1cXHRcXHRcXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIG5zKTtcXG4tXFx0XFx0XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuK1xcdFxcdFxcdG5zID0gbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKGNoaXAsIG5zKTtcXG4gXFx0XFx0XFx0c2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTtcXG4gXFx0XFx0XFx0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xcbiBcXHRcXHRcXHRzaHd0LVxcdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcXG5AQCAtMzA4LDcgKzM2OCw2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gXFxuIFxcdHNrYiA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZwcy1cXHUwMDNlcnhfcXVldWUpO1xcbi1cXG4gXFx0aWYgKHNrYilcXG4gXFx0XFx0bXY4OGU2eHh4X2dldF9yeHRzKGNoaXAsIHBzLCBza2IsIHB0cF9vcHMtXFx1MDAzZWFycjBfc3RzX3JlZyxcXG4gXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuQEAgLTMxOSw5ICszNzgsMTYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbiBcXHRcXHRcXHRcXHQgICBcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlMik7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgaXNfcGRlbGF5X3Jlc3AoY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcXG4rc3RhdGljIGJvb2wgaXNfcGRlbGF5X21zZyhjb25zdCBzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyKVxcbiB7XFxuLVxcdHJldHVybiAoaGRyLVxcdTAwM2V0c210IFxcdTAwMjYgMHhmKSA9PSAzO1xcbitcXHRzd2l0Y2ggKHB0cF9nZXRfbXNndHlwZShoZHIsIFBUUF9DTEFTU19WMikpIHtcXG4rXFx0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVROlxcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4rXFx0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiB9XFxuIFxcbiBib29sIG12ODhlNnh4eF9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuQEAgLTM0Myw3ICs0MDksMjIgQEAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXG4gXFx0U0tCX1BUUF9UWVBFKHNrYikgPSB0eXBlO1xcbiBcXG4tXFx0aWYgKGlzX3BkZWxheV9yZXNwKGhkcikpXFxuK1xcdC8qIEVtYmVkZGVkIGFycml2YWwgdGltZXMgY2FuIGJlIHJldHVybmVkIGlubGluZS4gVGhlIHN3aXRjaCBoYXNcXG4rXFx0ICogb3ZlcndyaXR0ZW4gdGhlIHJlc2VydmVkMiBmaWVsZDsgaWYgaXQgY2Fubm90IGJlIHJlc3RvcmVkIHRoZSBmcmFtZVxcbitcXHQgKiBpcyBubyBsb25nZXIgd2hhdCB0aGUgc2VuZGVyIHRyYW5zbWl0dGVkLCBzbyBkcm9wIGl0IHJhdGhlciB0aGFuXFxuK1xcdCAqIHBhc3MgdXAgYSBjb3JydXB0ZWQgaGVhZGVyIHRoYXQgd2lsbCBmYWlsIHRoZSBQVFAtb3Zlci1VRFAgY2hlY2tzdW1cXG4rXFx0ICogYW55d2F5LlxcbitcXHQgKi9cXG4rXFx0aWYgKG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkpIHtcXG4rXFx0XFx0aWYgKCFtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcChjaGlwLCBza2IpKSB7XFxuK1xcdFxcdFxcdGtmcmVlX3NrYl9yZWFzb24oc2tiLCBTS0JfRFJPUF9SRUFTT05fTk9NRU0pO1xcbitcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoaXNfcGRlbGF5X21zZyhoZHIpKVxcbiBcXHRcXHRza2JfcXVldWVfdGFpbChcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlMiwgc2tiKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRza2JfcXVldWVfdGFpbChcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlLCBza2IpO1xcbkBAIC00MDksOSArNDkwLDcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfdHh0c3RhbXBfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuIFxcbiBcXHRtZW1zZXQoXFx1MDAyNnNoaHd0c3RhbXBzLCAwLCBzaXplb2Yoc2hod3RzdGFtcHMpKTtcXG4gXFx0dGltZV9yYXcgPSAoKHUzMilkZXBhcnR1cmVfYmxvY2tbMl0gXFx1MDAzY1xcdTAwM2MgMTYpIHwgZGVwYXJ0dXJlX2Jsb2NrWzFdO1xcbi1cXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuLVxcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90YywgdGltZV9yYXcpO1xcbi1cXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4rXFx0bnMgPSBtdjg4ZTZ4eHhfdGltZWNvdW50ZXJfY3ljMnRpbWUoY2hpcCwgdGltZV9yYXcpO1xcbiBcXHRzaGh3dHN0YW1wcy5od3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcXG4gXFxuIFxcdGRldl9kYmcoY2hpcC1cXHUwMDNlZGV2LFxcbkBAIC00NTQsNyArNTMzLDkgQEAgbG9uZyBtdjg4ZTZ4eHhfaHd0c3RhbXBfd29yayhzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cClcXG4gXFx0XFx0aWYgKHRlc3RfYml0KE1WODhFNlhYWF9IV1RTVEFNUF9UWF9JTl9QUk9HUkVTUywgXFx1MDAyNnBzLVxcdTAwM2VzdGF0ZSkpXFxuIFxcdFxcdFxcdHJlc3RhcnQgfD0gbXY4OGU2eHh4X3R4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xcbiBcXG4tXFx0XFx0bXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xcbitcXHRcXHQvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGFyZSBhcHBsaWVkIG9uIHRoZSByZWNlaXZlIHBhdGguICovXFxuK1xcdFxcdGlmICghbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSlcXG4rXFx0XFx0XFx0bXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gcmVzdGFydCA/IDEgOiAtMTtcXG5AQCAtNTIzLDE0ICs2MDQsNDMgQEAgaW50IG12ODhlNjE2NV9nbG9iYWxfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4gXFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuIHtcXG4tXFx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcXG4tXFx0XFx0XFx0XFx0XFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLCAwKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbisvKiBSZXR1cm4gdGhlIENGRzIgQXJyVFNNb2RlIGZpZWxkIGZvciB0aGUgYWN0aXZlIGFycml2YWwgdGltZS1zdGFtcCBtb2RlLiAqL1xcbitzdGF0aWMgdTE2IG12ODhlNnh4eF9hcnJfdHNfY2ZnMihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuK3tcXG4rXFx0cmV0dXJuIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkgP1xcbitcXHRcXHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfUkVTRVJWRUQyIDpcXG4rXFx0XFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfQVJSX1RTX0RJU0FCTEVEO1xcbiB9XFxuIFxcbiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuIHtcXG4tXFx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcXG4tXFx0XFx0XFx0XFx0XFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXFxuK1xcdFxcdFxcdFxcdCAgICAgICBtdjg4ZTZ4eHhfYXJyX3RzX2NmZzIoY2hpcCkpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxcbitcXHRcXHRcXHRcXHQgICAgICAgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfcG9ydF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxcbkBAIC01NDksNiArNjU5LDcyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3BvcnRfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuKy8qIFByb2dyYW0gdGhlIGhhcmR3YXJlIGZvciB0aGUgYXJyaXZhbCB0aW1lLXN0YW1wIG1vZGUgdGhlIGFjdGl2ZSB0YWdnaW5nXFxuKyAqIHByb3RvY29sIHNlbGVjdHMuIENhbGxlZCBmcm9tIHNldHVwIGFuZCBhZ2FpbiB3aGVuZXZlciB0aGUgcHJvdG9jb2wgY2hhbmdlcyxcXG4rICogYXMgdGhhdCBpcyB3aGF0IGRlY2lkZXMgd2hlcmUgYXJyaXZhbCB0aW1lIHN0YW1wcyBhcmUgZGVsaXZlcmVkLlxcbisgKlxcbisgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSByZWdpc3RlciBsb2NrIGhlbGQuXFxuKyAqL1xcbitpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzO1xcbitcXHRpbnQgZXJyLCByZXQgPSAwO1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdC8qIEluIGVtYmVkZGVkIG1vZGUgdGhlIHN3aXRjaCBzdGFtcHMgZXZlcnkgZXZlbnQgbWVzc2FnZSBpdCBmb3J3YXJkcyxcXG4rXFx0ICogcGVlciBkZWxheSBpbmNsdWRlZCwgc28gbGVhdmUgdGhlIGFycml2YWwgY2FwdHVyZSBwb2ludGVyIGFsb25lXFxuK1xcdCAqIHJhdGhlciB0aGFuIGRpdmVydGluZyBwZWVyIGRlbGF5IG1lc3NhZ2VzIHRvIHRoZSBBUlJJVkFMMSByZWdpc3RlcnMuXFxuK1xcdCAqL1xcbitcXHRlcnIgPSBtdjg4ZTZ4eHhfcHRwX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9QVFBfVFNfQVJSSVZBTF9QVFIsXFxuK1xcdFxcdFxcdFxcdCAgbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSA/IDAgOlxcbitcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVEgfFxcbitcXHRcXHRcXHRcXHQgIE1WODhFNlhYWF9QVFBfTVNHVFlQRV9QRExBWV9SRVMpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbitcXG4rXFx0aWYgKCFjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG12ODhlNnh4eF9udW1fcG9ydHMoY2hpcCk7ICsraSkge1xcbitcXHRcXHRzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzID0gXFx1MDAyNmNoaXAtXFx1MDAzZXBvcnRfaHd0c3RhbXBbaV07XFxuK1xcbitcXHRcXHQvKiBBbnl0aGluZyBhbHJlYWR5IHF1ZXVlZCB3YXMgcXVldWVkIHVuZGVyIHRoZSBwcmV2aW91cyBtb2RlXFxuK1xcdFxcdCAqIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIG1hdGNoZWQgd2l0aCBhbiBhcnJpdmFsIHRpbWUuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNnBzLVxcdTAwM2VyeF9xdWV1ZSk7XFxuK1xcdFxcdHNrYl9xdWV1ZV9wdXJnZShcXHUwMDI2cHMtXFx1MDAzZXJ4X3F1ZXVlMik7XFxuK1xcbitcXHRcXHQvKiBUaGUgYXJyaXZhbCByZWdpc3RlcnMga2VlcCBjYXB0dXJpbmcgaW4gZW1iZWRkZWQgbW9kZSB3aXRoXFxuK1xcdFxcdCAqIG5vdGhpbmcgdG8gZHJhaW4gdGhlbSwgc28gY2xlYXIgdGhlIHN0YXR1cyBoZXJlIG9yIHRoZVxcbitcXHRcXHQgKiByZWdpc3RlciBwYXRoIHJlc3VtZXMgb24gYSBzdGFsZSBjYXB0dXJlLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIGksIHB0cF9vcHMtXFx1MDAzZWFycjBfc3RzX3JlZywgMCk7XFxuK1xcdFxcdGlmIChlcnIgXFx1MDAyNlxcdTAwMjYgIXJldClcXG4rXFx0XFx0XFx0cmV0ID0gZXJyO1xcbitcXG4rXFx0XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIGksIHB0cF9vcHMtXFx1MDAzZWFycjFfc3RzX3JlZywgMCk7XFxuK1xcdFxcdGlmIChlcnIgXFx1MDAyNlxcdTAwMjYgIXJldClcXG4rXFx0XFx0XFx0cmV0ID0gZXJyO1xcbitcXG4rXFx0XFx0LyogUG9ydHMgdGhhdCBoYXZlIG5vdCBlbmFibGVkIHRpbWUgc3RhbXBpbmcgcGljayB0aGUgbW9kZSB1cCBpblxcbitcXHRcXHQgKiBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoKS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChwcy1cXHUwMDNldHN0YW1wX2NvbmZpZy5yeF9maWx0ZXIgPT0gSFdUU1RBTVBfRklMVEVSX05PTkUpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0LyogUHJvZ3JhbSBldmVyeSBwb3J0IGV2ZW4gaWYgb25lIGZhaWxzLiBBIHBvcnQgbGVmdCBlbWJlZGRpbmdcXG4rXFx0XFx0ICogdGltZSBzdGFtcHMgdGhhdCB0aGUgZHJpdmVyIG5vIGxvbmdlciBzdHJpcHMgY29ycnVwdHMgdGhlXFxuK1xcdFxcdCAqIFBUUCBoZWFkZXIgb2YgZXZlcnkgZXZlbnQgZnJhbWUgaXQgcmVjZWl2ZXMuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBtdjg4ZTZ4eHhfYXJyX3RzX2NmZzIoY2hpcCkpO1xcbitcXHRcXHRpZiAoZXJyIFxcdTAwMjZcXHUwMDI2ICFyZXQpXFxuK1xcdFxcdFxcdHJldCA9IGVycjtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4gaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzO1xcbkBAIC01ODQsOSArNzYwLDcgQEAgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHQvKiBVc2UgQVJSSVZBTDEgZm9yIHBlZXIgZGVsYXkgcmVzcG9uc2UgbWVzc2FnZXMuICovXFxuLVxcdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcXG4tXFx0XFx0XFx0XFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcXG4rXFx0ZXJyID0gbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxcbmluZGV4IGMzNTk4MjFkNWE2ZWFhLi4yZmU3Yzc0MjliZmYxZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcXG5AQCAtMTMsNiArMTMsOCBAQFxcbiAjaWZuZGVmIF9NVjg4RTZYWFhfSFdUU1RBTVBfSFxcbiAjZGVmaW5lIF9NVjg4RTZYWFhfSFdUU1RBTVBfSFxcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3B0cF9jbGFzc2lmeS5oXFx1MDAzZVxcbitcXG4gI2luY2x1ZGUgXFxcImNoaXAuaFxcXCJcXG4gXFxuIC8qIEdsb2JhbCA2MzUyIFBUUCByZWdpc3RlcnMgKi9cXG5AQCAtNjQsMTAgKzY2LDIxIEBAXFxuIFxcbiAvKiBPZmZzZXQgMHgwMjogUFRQIENvbmZpZ3VyYXRpb24gMiAqL1xcbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyXFx0XFx0XFx0XFx0MHgwMlxcbi0jZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0VNQkVEX0FSUklWQUxcXHRcXHQweDEwMDBcXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9ERVBfSVJRX0VOXFx0XFx0MHgwMDAyXFxuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfQVJSX0lSUV9FTlxcdFxcdDB4MDAwMVxcbiBcXG4rLyogQXJyaXZhbCBUaW1lIFN0YW1wIE1vZGUgKEFyclRTTW9kZSksIENGRzIgYml0cyBbMTU6OF06IGNvbmZpZ3VyZXMgaG93IHRoZVxcbisgKiBzd2l0Y2ggZW1iZWRzIHRoZSBhcnJpdmFsIHRpbWUgc3RhbXAgKFBUUEFycjBUaW1lKSBpbnRvIGVuYWJsZWQgUFRQIGV2ZW50XFxuKyAqIGZyYW1lcy4gQSBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uXFxuKyAqIGhlYWRlciwgYXQgd2hpY2ggdGhlIHN3aXRjaCBvdmVyd3JpdGVzIGZvdXIgYnl0ZXMgaW4gcGxhY2U7IHdlIGFsd2F5cyBwb2ludFxcbisgKiBpdCBhdCB0aGUgaGVhZGVyJ3MgcmVzZXJ2ZWQyIGZpZWxkIHNvIHRoZSBmcmFtZSBsZW5ndGggaXMgbGVmdCBhbG9uZS5cXG4rICovXFxuKyNkZWZpbmUgTVY4OEU2WFhYX1BUUF9BUlJfVFNfT0ZGU0VUXFx0XFx0XFx0XFxcXFxcbitcXHRvZmZzZXRvZihzdHJ1Y3QgcHRwX2hlYWRlciwgcmVzZXJ2ZWQyKVxcbisjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19ESVNBQkxFRFxcdFxcdDB4MDAwMFxcbisjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19SRVNFUlZFRDJcXHRcXFxcXFxuK1xcdChNVjg4RTZYWFhfUFRQX0FSUl9UU19PRkZTRVQgXFx1MDAzY1xcdTAwM2MgOClcXG4rXFxuIC8qIE9mZnNldCAweDAzOiBQVFAgTEVEIENvbmZpZ3VyYXRpb24gKi9cXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfTEVEX0NGR1xcdDB4MDNcXG4gXFxuQEAgLTEyNiw2ICsxMzksNyBAQCBpbnQgbXY4OGU2eHh4X2dldF90c19pbmZvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIFxcbiBsb25nIG12ODhlNnh4eF9od3RzdGFtcF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKTtcXG4gaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xcbitpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xcbiB2b2lkIG12ODhlNnh4eF9od3RzdGFtcF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7XFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCk7XFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpO1xcbkBAIC0xNzIsNiArMTg2LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4re1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gc3RhdGljIGlubGluZSB2b2lkIG12ODhlNnh4eF9od3RzdGFtcF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG4ge1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXFxuaW5kZXggZjc2MDM1NzNkM2E5ODQuLjJhN2Y5NzYyNWUzNzU2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvcHRwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jXFxuQEAgLTIzMSwxNSArMjMxLDM3IEBAIHN0YXRpYyB2b2lkIG12ODhlNjM1Ml90YWlfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVnbHkpXFxuIFxcbiBcXHQvKiBXZSBvbmx5IGhhdmUgb25lIHRpbWVzdGFtcGluZyBjaGFubmVsLiAqL1xcbiBcXHRldi5pbmRleCA9IDA7XFxuLVxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG4tXFx0ZXYudGltZXN0YW1wID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90YywgcmF3X3RzKTtcXG4tXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuK1xcdGV2LnRpbWVzdGFtcCA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCByYXdfdHMpO1xcbiBcXG4gXFx0cHRwX2Nsb2NrX2V2ZW50KGNoaXAtXFx1MDAzZXB0cF9jbG9jaywgXFx1MDAyNmV2KTtcXG4gb3V0OlxcbiBcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNmNoaXAtXFx1MDAzZXRhaV9ldmVudF93b3JrLCBUQUlfRVZFTlRfV09SS19JTlRFUlZBTCk7XFxuIH1cXG4gXFxuKy8qIFJlZnJlc2ggdGhlIGNhY2hlZCBjb3VudGVyIHZhbHVlIHRoYXQgdGhlIHJlYWQoKSBjYWxsYmFjayByZXR1cm5zLiBUaGVcXG4rICogcmVhZCBjYW5ub3QgYWNxdWlyZSB0aGUgcmVnaXN0ZXIgbG9jayB3aGlsc3QgaG9sZGluZyBwdHBfY2xvY2tfbG9ja1xcbisgKiBiZWNhdXNlIE1ESU8gcmVhZHMgY2FuIHNsZWVwLiBUaGUgY2FsbGVyIG11c3QgaG9sZCByZWdfbG9jaywgd2hpY2hcXG4rICogc2VyaWFsaXplcyBhZ2FpbnN0IHRoZSBvdGhlciB0aW1lY291bnRlciB3cml0ZXJzLlxcbisgKi9cXG4rc3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2VwdHBfb3BzO1xcbitcXG4rXFx0aWYgKHB0cF9vcHMtXFx1MDAzZWNsb2NrX3JlYWQpXFxuK1xcdFxcdGNoaXAtXFx1MDAzZXRzdGFtcF9jeWNsZXMgPSBwdHBfb3BzLVxcdTAwM2VjbG9ja19yZWFkKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfY2MpO1xcbit9XFxuK1xcbit1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcylcXG4re1xcbitcXHR1NjQgbnM7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4rXFx0bnMgPSB0aW1lY291bnRlcl9jeWMydGltZShcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX3RjLCBjeWNsZXMpO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbitcXG4rXFx0cmV0dXJuIG5zO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxcbiB7XFxuIFxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IHB0cF90b19jaGlwKHB0cCk7XFxuQEAgLTI1OCw5ICsyODAsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkamZpbmUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcXG4gXFx0ZGlmZiA9IGRpdl91NjQoYWRqLCBjaGlwLVxcdTAwM2VjY19jb2VmZnMtXFx1MDAzZWNjX211bHRfZGVtKTtcXG4gXFxuIFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG4rXFx0bXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhjaGlwKTtcXG4gXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbiBcXHR0aW1lY291bnRlcl9yZWFkKFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMpO1xcbiBcXHRjaGlwLVxcdTAwM2V0c3RhbXBfY2MubXVsdCA9IG5lZ19hZGogPyBtdWx0IC0gZGlmZiA6IG11bHQgKyBkaWZmO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbiBcXG4gXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuIFxcbkBAIC0yNzEsOCArMjk2LDE2IEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9hZGp0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXFxuIHtcXG4gXFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gcHRwX3RvX2NoaXAocHRwKTtcXG4gXFxuK1xcdC8qIE5vIHJlZ2lzdGVyIGFjY2VzcyBpcyBuZWVkZWQgaGVyZSwgYnV0IHJlZ19sb2NrIHN0aWxsIHNlcmlhbGlzZXNcXG4rXFx0ICogdGhpcyBhZ2FpbnN0IHRoZSBvdGhlciB0aW1lY291bnRlciB3cml0ZXJzLCB3aGljaCBkcm9wIGl0IG9ubHlcXG4rXFx0ICogYWZ0ZXIgdGhlaXIgaGFyZHdhcmUgcmVhZCBoYXMgY29tcGxldGVkLlxcbitcXHQgKi9cXG4gXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuIFxcdHRpbWVjb3VudGVyX2FkanRpbWUoXFx1MDAyNmNoaXAtXFx1MDAzZXRzdGFtcF90YywgZGVsdGEpO1xcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y2hpcC1cXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xcbitcXG4gXFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtMjg1LDcgKzMxOCwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfZ2V0dGltZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG4gXFx0dTY0IG5zO1xcbiBcXG4gXFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbitcXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xcbitcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuIFxcdG5zID0gdGltZWNvdW50ZXJfcmVhZChcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX3RjKTtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4rXFxuIFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbiBcXG4gXFx0KnRzID0gbnNfdG9fdGltZXNwZWM2NChucyk7XFxuQEAgLTMwMiw3ICszNDAsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX3NldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuIFxcdG5zID0gdGltZXNwZWM2NF90b19ucyh0cyk7XFxuIFxcbiBcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuK1xcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmNoaXAtXFx1MDAzZXB0cF9jbG9ja19sb2NrKTtcXG4gXFx0dGltZWNvdW50ZXJfaW5pdChcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX3RjLCBcXHUwMDI2Y2hpcC1cXHUwMDNldHN0YW1wX2NjLCBucyk7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjaGlwLVxcdTAwM2VwdHBfY2xvY2tfbG9jayk7XFxuK1xcbiBcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbkBAIC00NDQsMTQgKzQ4NywxMiBAQCBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgbXY4OGU2MzkwX3B0cF9vcHMgPSB7XFxuIFxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIEhXVFNUQU1QX0ZJTFRFUl9QVFBfVjJfREVMQVlfUkVRKSxcXG4gfTtcXG4gXFxuKy8qIFJldHVybiB0aGUgdmFsdWUgbW9zdCByZWNlbnRseSBmZXRjaGVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKVxcbisgKiByYXRoZXIgdGhhbiByZWFkaW5nIHRoZSBoYXJkd2FyZSBvdmVyIE1ESU8uXFxuKyAqL1xcbiBzdGF0aWMgdTY0IG12ODhlNnh4eF9wdHBfY2xvY2tfcmVhZChzdHJ1Y3QgY3ljbGVjb3VudGVyICpjYylcXG4ge1xcbi1cXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjY190b19jaGlwKGNjKTtcXG4tXFxuLVxcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZXB0cF9vcHMtXFx1MDAzZWNsb2NrX3JlYWQpXFxuLVxcdFxcdHJldHVybiBjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZXB0cF9vcHMtXFx1MDAzZWNsb2NrX3JlYWQoY2MpO1xcbi1cXG4tXFx0cmV0dXJuIDA7XFxuK1xcdHJldHVybiBjY190b19jaGlwKGNjKS1cXHUwMDNldHN0YW1wX2N5Y2xlcztcXG4gfVxcbiBcXG4gLyogV2l0aCBhIDI1ME1IeiBpbnB1dCBjbG9jaywgdGhlIDMyLWJpdCB0aW1lc3RhbXAgY291bnRlciBvdmVyZmxvd3MgaW4gfjE3LjJcXG5AQCAtNDg2LDYgKzUyNywxMiBAQCBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuIFxcdGNoaXAtXFx1MDAzZXRzdGFtcF9jYy5tdWx0XFx0PSBjaGlwLVxcdTAwM2VjY19jb2VmZnMtXFx1MDAzZWNjX211bHQ7XFxuIFxcdGNoaXAtXFx1MDAzZXRzdGFtcF9jYy5zaGlmdFxcdD0gY2hpcC1cXHUwMDNlY2NfY29lZmZzLVxcdTAwM2VjY19zaGlmdDtcXG4gXFxuK1xcdC8qIFByaW1lIHRoZSBjeWNsZSBjb3VudGVyIGNhY2hlIGZvciB0aGUgdGltZWNvdW50ZXJfaW5pdCgpIGJlbG93LlxcbitcXHQgKiBUaGUgY2FsbGVyIGhvbGRzIHJlZ19sb2NrLCBhbmQgbm90aGluZyBjYW4gcmVhY2ggdGhlIFBUUCBjbG9ja1xcbitcXHQgKiB1bnRpbCBwdHBfY2xvY2tfcmVnaXN0ZXIoKSBiZWxvdywgc28gbm8gbG9ja2luZyBpcyBuZWVkZWQgaGVyZS5cXG4rXFx0ICovXFxuK1xcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XFxuK1xcbiBcXHR0aW1lY291bnRlcl9pbml0KFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfdGMsIFxcdTAwMjZjaGlwLVxcdTAwM2V0c3RhbXBfY2MsXFxuIFxcdFxcdFxcdCBrdGltZV90b19ucyhrdGltZV9nZXRfcmVhbCgpKSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxcbmluZGV4IDk1YmRkZGIwYmYzOWY4Li40NDcxOGUxMjBkZTIwYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxcbkBAIC02OCw2ICs2OCw3IEBAXFxuIFxcbiBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xcbiB2b2lkIG12ODhlNnh4eF9wdHBfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xcbit1NjQgbXY4OGU2eHh4X3RpbWVjb3VudGVyX2N5YzJ0aW1lKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgdTY0IGN5Y2xlcyk7XFxuIFxcbiAjZGVmaW5lIHB0cF90b19jaGlwKHB0cCkgY29udGFpbmVyX29mKHB0cCwgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0ICAgICAgcHRwX2Nsb2NrX2luZm8pXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmhcXG5pbmRleCA4YzE2ZWYyM2NjMTAyYS4uMmRmY2M1NDlkZTI5NjQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvZHNhLmhcXG4rKysgYi9pbmNsdWRlL25ldC9kc2EuaFxcbkBAIC01OSw2ICs1OSw3IEBAIHN0cnVjdCB0Y19hY3Rpb247XFxuICNkZWZpbmUgRFNBX1RBR19QUk9UT19NWExfR1NXMVhYX1ZBTFVFXFx0XFx0MzFcXG4gI2RlZmluZSBEU0FfVEFHX1BST1RPX01YTDg2Ml9WQUxVRVxcdFxcdDMyXFxuICNkZWZpbmUgRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFXFx0XFx0MzNcXG4rI2RlZmluZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRVxcdDM0XFxuIFxcbiBlbnVtIGRzYV90YWdfcHJvdG9jb2wge1xcbiBcXHREU0FfVEFHX1BST1RPX05PTkVcXHRcXHQ9IERTQV9UQUdfUFJPVE9fTk9ORV9WQUxVRSxcXG5AQCAtOTUsNiArOTYsNyBAQCBlbnVtIGRzYV90YWdfcHJvdG9jb2wge1xcbiBcXHREU0FfVEFHX1BST1RPX01YTF9HU1cxWFhcXHQ9IERTQV9UQUdfUFJPVE9fTVhMX0dTVzFYWF9WQUxVRSxcXG4gXFx0RFNBX1RBR19QUk9UT19NWEw4NjJcXHRcXHQ9IERTQV9UQUdfUFJPVE9fTVhMODYyX1ZBTFVFLFxcbiBcXHREU0FfVEFHX1BST1RPX05FVENcXHRcXHQ9IERTQV9UQUdfUFJPVE9fTkVUQ19WQUxVRSxcXG4rXFx0RFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSxcXG4gfTtcXG4gXFxuIHN0cnVjdCBkc2Ffc3dpdGNoO1xcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19kc2EuYyBiL25ldC9kc2EvdGFnX2RzYS5jXFxuaW5kZXggZDVmZmVlMzVmYmI1M2IuLjc0OTBlY2MwNGFhNTc0IDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX2RzYS5jXFxuKysrIGIvbmV0L2RzYS90YWdfZHNhLmNcXG5AQCAtNDAyLDYgKzQwMiwyMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfbmV0ZGV2X29wcyA9IHtcXG4gXFxuIERTQV9UQUdfRFJJVkVSKGVkc2FfbmV0ZGV2X29wcyk7XFxuIE1PRFVMRV9BTElBU19EU0FfVEFHX0RSSVZFUihEU0FfVEFHX1BST1RPX0VEU0EsIEVEU0FfTkFNRSk7XFxuK1xcbisjZGVmaW5lIEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FXFx0XFxcImVkc2EtcHRwLXJlc2VydmVkMi10c1xcXCJcXG4rXFxuKy8qIFNhbWUgd2lyZSBmb3JtYXQgYXMgRURTQSwgZXhjZXB0IHRoYXQgdGhlIHN3aXRjaCBvdmVyd3JpdGVzIHRoZSByZXNlcnZlZDJcXG4rICogZmllbGQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyIHdpdGggdGhlIGZyYW1lJ3MgYXJyaXZhbCB0aW1lIHN0YW1wLlxcbisgKi9cXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyA9IHtcXG4rXFx0Lm5hbWVcXHRcXHQgPSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSxcXG4rXFx0LnByb3RvXFx0XFx0ID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXFxuK1xcdC54bWl0XFx0XFx0ID0gZWRzYV94bWl0LFxcbitcXHQucmN2XFx0XFx0ID0gZWRzYV9yY3YsXFxuK1xcdC5uZWVkZWRfaGVhZHJvb20gPSBFRFNBX0hMRU4sXFxuK307XFxuK1xcbitEU0FfVEFHX0RSSVZFUihlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyk7XFxuK01PRFVMRV9BTElBU19EU0FfVEFHX0RSSVZFUihEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUyxcXG4rXFx0XFx0XFx0ICAgIEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FKTtcXG4gI2VuZGlmXFx0LyogQ09ORklHX05FVF9EU0FfVEFHX0VEU0EgKi9cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgZHNhX3RhZ19kcml2ZXIgKmRzYV90YWdfZHJpdmVyc1tdID0ge1xcbkBAIC00MTAsNiArNDI3LDcgQEAgc3RhdGljIHN0cnVjdCBkc2FfdGFnX2RyaXZlciAqZHNhX3RhZ19kcml2ZXJzW10gPSB7XFxuICNlbmRpZlxcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9UQUdfRURTQSlcXG4gXFx0XFx1MDAyNkRTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9uZXRkZXZfb3BzKSxcXG4rXFx0XFx1MDAyNkRTQV9UQUdfRFJJVkVSX05BTUUoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpLFxcbiAjZW5kaWZcXG4gfTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIyOjQ4LjY2NzkzOTIwN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc5NTI4NjExODUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgpIGFuZCBhZGRzIGEgbmV3IERTQSB0YWcgcHJvdG9jb2wgaW4gbmV0L2RzYS90YWdfZHNhLmMuIFRoZSBNYXJ2ZWxsIDg4RTZ4eHggZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBoYXJkd2FyZSBzd2l0Y2hlcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gVGhlIG5ldyB0YWcgcHJvdG9jb2wgaW4gdGFnX2RzYS5jIHNpbXBseSByZXVzZXMgZXhpc3RpbmcgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZnVuY3Rpb25zIChlZHNhX3htaXQsIGVkc2FfcmN2KSBhbmQgY29udGFpbnMgbm8gbmV3IGV4ZWN1dGFibGUgbG9naWMuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5ZWU3M2U0NmY0MWYyMjU2NTYzYjdjNGMwM2YxYzNlMWRhMTBkOTViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTQ6MjI6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9kc2EtcG9ydC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbFxuaW5kZXggNDgwMTIwNDY5OTUzNGIuLjhkMTJjOGYxYmQ1MWVjIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvZHNhLXBvcnQueWFtbFxuQEAgLTUzLDYgKzUzLDcgQEAgcHJvcGVydGllczpcbiAgICAgZW51bTpcbiAgICAgICAtIGRzYVxuICAgICAgIC0gZWRzYVxuKyAgICAgIC0gZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzXG4gICAgICAgLSBvY2Vsb3RcbiAgICAgICAtIG9jZWxvdC04MDIxcVxuICAgICAgIC0gcnRsOF80XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuY1xuaW5kZXggODBiODc3Yzc0NTEzZDYuLmU5MjUyNGJlYjQwYzQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jXG5AQCAtMzI3MSw3ICszMjcxLDggQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXBfcG9ydF9tb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4gXHRpZiAoY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19EU0EpXG4gXHRcdHJldHVybiBtdjg4ZTZ4eHhfc2V0X3BvcnRfbW9kZV9kc2EoY2hpcCwgcG9ydCk7XG4gXG4tXHRpZiAoY2hpcC1cdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBKVxuK1x0aWYgKGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQSB8fFxuK1x0ICAgIGNoaXAtXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTKVxuIFx0XHRyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZWRzYShjaGlwLCBwb3J0KTtcbiBcbiBcdHJldHVybiAtRUlOVkFMO1xuQEAgLTYzNzAsNiArNjM3MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8gbXY4OGU2eHh4X3RhYmxlW10gPSB7XG4gXHRcdC5lZHNhX3N1cHBvcnQgPSBNVjg4RTZYWFhfRURTQV9TVVBQT1JURUQsXG4gXHRcdC5wdHBfc3VwcG9ydCA9IHRydWUsXG4gXHRcdC5vcHMgPSBcdTAwMjZtdjg4ZTYzNDFfb3BzLFxuK1x0XHQuc3VwcG9ydHNfcHRwX2VtYmVkZGVkX3RzID0gdHJ1ZSxcbiBcdH0sXG4gXG4gXHRbTVY4OEU2MzUwXSA9IHtcbkBAIC02NDQ3LDYgKzY0NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG12ODhlNnh4eF9pbmZvIG12ODhlNnh4eF90YWJsZVtdID0ge1xuIFx0XHQuZWRzYV9zdXBwb3J0ID0gTVY4OEU2WFhYX0VEU0FfU1VQUE9SVEVELFxuIFx0XHQucHRwX3N1cHBvcnQgPSB0cnVlLFxuIFx0XHQub3BzID0gXHUwMDI2bXY4OGU2MzUyX29wcyxcbitcdFx0LnN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cyA9IHRydWUsXG4gXHR9LFxuIFx0W01WODhFNjM2MV0gPSB7XG4gXHRcdC5wcm9kX251bSA9IE1WODhFNlhYWF9QT1JUX1NXSVRDSF9JRF9QUk9EXzYzNjEsXG5AQCAtNjYzNSw2ICs2NjM4LDcgQEAgc3RhdGljIHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqbXY4OGU2eHh4X2FsbG9jX2NoaXAoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0Y2hpcC1cdTAwM2VkZXYgPSBkZXY7XG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNmNoaXAtXHUwMDNlcmVnX2xvY2spO1xuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZjaGlwLVx1MDAzZW1kaW9zKTtcbiBcdGlkcl9pbml0KFx1MDAyNmNoaXAtXHUwMDNlcG9saWNpZXMpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y2hpcC1cdTAwM2Vtc3RzKTtcbkBAIC02NjU4LDkgKzY2NjIsMTcgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfY2hhbmdlX3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkcy1cdTAwM2Vwcml2O1xuIFx0ZW51bSBkc2FfdGFnX3Byb3RvY29sIG9sZF9wcm90b2NvbDtcbiBcdHN0cnVjdCBkc2FfcG9ydCAqY3B1X2RwO1xuLVx0aW50IGVycjtcbitcdGludCBlcnIgPSAwO1xuIFxuK1x0LyogVGhlIGVtYmVkZGVkIGFycml2YWwtdGltZS1zdGFtcCBwcm90b2NvbCBpcyBhbiBFRFNBIGV4dGVuc2lvbjogRURTQVxuK1x0ICogaXMgdGhlIG1vZGVybiB0YWcgZm9ybWF0IGZvciB0aGVzZSBzd2l0Y2hlcywgc28gaXQgaXMgdGhlIG9uZSB3ZVxuK1x0ICogZXh0ZW5kOyB0aGUgbGVnYWN5IERTQSB0YWcgaXMgaW50ZW50aW9uYWxseSBsZWZ0IHVuLWV4dGVuZGVkLlxuK1x0ICovXG4gXHRzd2l0Y2ggKHByb3RvKSB7XG4rXHRjYXNlIERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTOlxuK1x0XHRpZiAoIWNoaXAtXHUwMDNlaW5mby1cdTAwM2VzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpXG4rXHRcdFx0cmV0dXJuIC1FUFJPVE9OT1NVUFBPUlQ7XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSBEU0FfVEFHX1BST1RPX0VEU0E6XG4gXHRcdHN3aXRjaCAoY2hpcC1cdTAwM2VpbmZvLVx1MDAzZWVkc2Ffc3VwcG9ydCkge1xuIFx0XHRjYXNlIE1WODhFNlhYWF9FRFNBX1VOU1VQUE9SVEVEOlxuQEAgLTY2ODksNyArNjcwMSwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbiBcdFx0XHRnb3RvIHVud2luZDtcbiBcdFx0fVxuIFx0fVxuK1xuK1x0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VwdHBfc3VwcG9ydClcbitcdFx0ZXJyID0gbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhjaGlwKTtcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuK1x0aWYgKGVycilcbitcdFx0Z290byB1bndpbmQ7XG4gXG4gXHRyZXR1cm4gMDtcbiBcbkBAIC02Njk5LDYgKzY3MTYsMTUgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfY2hhbmdlX3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4gXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX2NwdV9wb3J0X2NvbnRpbnVlX3JldmVyc2UoY3B1X2RwLCBkcylcbiBcdFx0bXY4OGU2eHh4X3NldHVwX3BvcnRfbW9kZShjaGlwLCBjcHVfZHAtXHUwMDNlaW5kZXgpO1xuK1x0aWYgKGNoaXAtXHUwMDNlaW5mby1cdTAwM2VwdHBfc3VwcG9ydCkge1xuK1x0XHQvKiBOb3RoaW5nIGVsc2UgY2FuIGJlIGRvbmUgaGVyZSwgYnV0IGxlYXZpbmcgYSBwb3J0IGVtYmVkZGluZ1xuK1x0XHQgKiB0aW1lIHN0YW1wcyB0aGUgZHJpdmVyIHdpbGwgbm90IHN0cmlwIGNvcnJ1cHRzIGV2ZXJ5IFBUUFxuK1x0XHQgKiBldmVudCBmcmFtZSBpdCByZWNlaXZlcywgc28gbWFrZSB0aGUgZmFpbHVyZSB2aXNpYmxlLlxuK1x0XHQgKi9cbitcdFx0aWYgKG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoY2hpcCkpXG4rXHRcdFx0ZGV2X2VycihjaGlwLVx1MDAzZWRldixcbitcdFx0XHRcdFwiZmFpbGVkIHRvIHJlc3RvcmUgYXJyaXZhbCB0aW1lIHN0YW1wIG1vZGVcXG5cIik7XG4rXHR9XG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmggYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaFxuaW5kZXggZTk2NmU3YzRjYzVkZWEuLmM3NWE3MTQ2NGIyMGFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmhcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oXG5AQCAtMTgwLDYgKzE4MCwxMyBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2luZm8ge1xuIFx0ICogcG9ydCAwLCAxIG1lYW5zIGludGVybmFsIFBIWXMgcmFuZ2Ugc3RhcnRzIGF0IHBvcnQgMSwgZXRjXG4gXHQgKi9cbiBcdHVuc2lnbmVkIGludCBpbnRlcm5hbF9waHlzX29mZnNldDtcbitcbitcdC8qIFRoZSBzd2l0Y2ggY2FuIGVtYmVkIHRoZSBQVFAgYXJyaXZhbCB0aW1lIHN0YW1wIGluIHRoZSByZXNlcnZlZDJcbitcdCAqIGZpZWxkIG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlciwgd2hpY2ggdGhlIGVkc2EtcHRwLXJlc2VydmVkMi10c1xuK1x0ICogdGFnIHByb3RvY29sIHNlbGVjdHMuIE90aGVyd2lzZSBhcnJpdmFsIHRpbWUgc3RhbXBzIGFyZSBvbmx5XG4rXHQgKiBhdmFpbGFibGUgZnJvbSB0aGUgc3dpdGNoIHJlZ2lzdGVycy5cbitcdCAqL1xuK1x0Ym9vbCBzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHM7XG4gfTtcbiBcbiBzdHJ1Y3QgbXY4OGU2eHh4X2F0dV9lbnRyeSB7XG5AQCAtNDE5LDkgKzQyNiwxMiBAQCBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAge1xuIFx0LyogR1BJTyByZXNvdXJjZXMgKi9cbiBcdHU4IGdwaW9fZGF0YVsyXTtcbiBcbi1cdC8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLlxuLVx0ICogcmVnX2xvY2sgbXVzdCBiZSBoZWxkIGZvciBhbnkgb3BlcmF0aW9uIHRoYXQgcmVhZCgpcy5cbitcdC8qIFRoaXMgY3ljbGVjb3VudGVyIGFic3RyYWN0cyB0aGUgc3dpdGNoIFBUUCB0aW1lLiBwdHBfY2xvY2tfbG9ja1xuK1x0ICogcHJvdGVjdHMgdHN0YW1wX2NjIGFuZCB0c3RhbXBfdGMuIHRzdGFtcF9jeWNsZXMgY2FjaGVzIHRoZVxuK1x0ICogcmVzdWx0IG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgYnkgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcygpLlxuIFx0ICovXG4rXHRzcGlubG9ja190XHRcdHB0cF9jbG9ja19sb2NrO1xuK1x0dTY0XHRcdFx0dHN0YW1wX2N5Y2xlcztcbiBcdHN0cnVjdCBjeWNsZWNvdW50ZXJcdHRzdGFtcF9jYztcbiBcdHN0cnVjdCB0aW1lY291bnRlclx0dHN0YW1wX3RjO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29ya1x0b3ZlcmZsb3dfd29yaztcbkBAIC04MTUsNiArODI1LDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtdjg4ZTZ4eHhfaGFzX2xhZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRyZXR1cm4gISFjaGlwLVx1MDAzZWluZm8tXHUwMDNlZ2xvYmFsMl9hZGRyO1xuIH1cbiBcbisvKiBXaGV0aGVyIHRoZSBhY3RpdmUgdGFnZ2luZyBwcm90b2NvbCBoYXMgdGhlIHN3aXRjaCBlbWJlZCBhcnJpdmFsIHRpbWUgc3RhbXBzXG4rICogaW4gdGhlIGZyYW1lIGluc3RlYWQgb2YgbGVhdmluZyB0aGVtIGluIHRoZSBQVFAgYXJyaXZhbCByZWdpc3RlcnMuXG4rICovXG4rc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuK3tcbitcdHJldHVybiBjaGlwLVx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUztcbit9XG4rXG4gc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9oYXNfdGNhbShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4ge1xuIFx0cmV0dXJuICEhY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXRjYW1fYWRkcjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmMgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmNcbmluZGV4IDZlNjQ3MmEzYjc1YWQ3Li43NGVhYWRlZWViNzg0MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jXG5AQCAtMTUsNiArMTUsNyBAQFxuICNpbmNsdWRlIFwiaHd0c3RhbXAuaFwiXG4gI2luY2x1ZGUgXCJwdHAuaFwiXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2NsYXNzaWZ5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuIFxuICNkZWZpbmUgU0tCX1BUUF9UWVBFKF9fc2tiKSAoKih1bnNpZ25lZCBpbnQgKikoKF9fc2tiKS1cdTAwM2VjYikpXG4gXG5AQCAtOTQsNiArOTUsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9zZXRfaHd0c3RhbXBfY29uZmlnKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXG4gXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHM7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzID0gXHUwMDI2Y2hpcC1cdTAwM2Vwb3J0X2h3dHN0YW1wW3BvcnRdO1xuIFx0Ym9vbCB0c3RhbXBfZW5hYmxlID0gZmFsc2U7XG4rXHRpbnQgZXJyID0gMDtcbiBcbiBcdC8qIFByZXZlbnQgdGhlIFRYL1JYIHBhdGhzIGZyb20gdHJ5aW5nIHRvIGludGVyYWN0IHdpdGggdGhlXG4gXHQgKiB0aW1lc3RhbXAgaGFyZHdhcmUgd2hpbGUgd2UgcmVjb25maWd1cmUgaXQuXG5AQCAtMTQ3LDIwICsxNDksMzAgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0X2h3dHN0YW1wX2NvbmZpZyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxuIFx0aWYgKHRzdGFtcF9lbmFibGUpIHtcbiBcdFx0Y2hpcC1cdTAwM2VlbmFibGVfY291bnQgKz0gMTtcbiBcdFx0aWYgKGNoaXAtXHUwMDNlZW5hYmxlX2NvdW50ID09IDEgXHUwMDI2XHUwMDI2IHB0cF9vcHMtXHUwMDNlZ2xvYmFsX2VuYWJsZSlcbi1cdFx0XHRwdHBfb3BzLVx1MDAzZWdsb2JhbF9lbmFibGUoY2hpcCk7XG4tXHRcdGlmIChwdHBfb3BzLVx1MDAzZXBvcnRfZW5hYmxlKVxuLVx0XHRcdHB0cF9vcHMtXHUwMDNlcG9ydF9lbmFibGUoY2hpcCwgcG9ydCk7XG4rXHRcdFx0ZXJyID0gcHRwX29wcy1cdTAwM2VnbG9iYWxfZW5hYmxlKGNoaXApO1xuK1x0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgcHRwX29wcy1cdTAwM2Vwb3J0X2VuYWJsZSlcbitcdFx0XHRlcnIgPSBwdHBfb3BzLVx1MDAzZXBvcnRfZW5hYmxlKGNoaXAsIHBvcnQpO1xuIFx0fSBlbHNlIHtcbiBcdFx0aWYgKHB0cF9vcHMtXHUwMDNlcG9ydF9kaXNhYmxlKVxuLVx0XHRcdHB0cF9vcHMtXHUwMDNlcG9ydF9kaXNhYmxlKGNoaXAsIHBvcnQpO1xuK1x0XHRcdGVyciA9IHB0cF9vcHMtXHUwMDNlcG9ydF9kaXNhYmxlKGNoaXAsIHBvcnQpO1xuIFx0XHRjaGlwLVx1MDAzZWVuYWJsZV9jb3VudCAtPSAxO1xuIFx0XHRpZiAoY2hpcC1cdTAwM2VlbmFibGVfY291bnQgPT0gMCBcdTAwMjZcdTAwMjYgcHRwX29wcy1cdTAwM2VnbG9iYWxfZGlzYWJsZSlcbiBcdFx0XHRwdHBfb3BzLVx1MDAzZWdsb2JhbF9kaXNhYmxlKGNoaXApO1xuIFx0fVxuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuIFx0LyogT25jZSBoYXJkd2FyZSBoYXMgYmVlbiBjb25maWd1cmVkLCBlbmFibGUgdGltZXN0YW1wIGNoZWNrc1xuIFx0ICogaW4gdGhlIFJYL1RYIHBhdGhzLlxuK1x0ICpcbitcdCAqIEluIGVtYmVkZGVkIG1vZGUgdGhlIHN3aXRjaCBzdGFydHMgb3ZlcndyaXRpbmcgdGhlIFBUUCBoZWFkZXInc1xuK1x0ICogcmVzZXJ2ZWQyIGZpZWxkIGFzIHNvb24gYXMgQ0ZHMiBpcyBhcm1lZCBhYm92ZSwgd2hpY2ggaXMgYmVmb3JlIHRoZVxuK1x0ICogUlggcGF0aCBiZWdpbnMgcmVzdG9yaW5nIGl0OyBvbiB0aGUgd2F5IGRvd24gdGhlIFJYIHBhdGggc3RvcHNcbitcdCAqIHJlc3RvcmluZyBiZWZvcmUgdGhlIGhhcmR3YXJlIHN0b3BzIGVtYmVkZGluZy4gQW4gZXZlbnQgZnJhbWVcbitcdCAqIHJlY2VpdmVkIGluc2lkZSBlaXRoZXIgd2luZG93IGlzIGRlbGl2ZXJlZCB3aXRoIHRoZSBzd2l0Y2gnc1xuK1x0ICogYXJyaXZhbCBjb3VudGVyIHN0aWxsIGluIGl0cyBoZWFkZXIuXG4gXHQgKi9cbiBcdGlmICh0c3RhbXBfZW5hYmxlKVxuIFx0XHRzZXRfYml0KE1WODhFNlhYWF9IV1RTVEFNUF9FTkFCTEVELCBcdTAwMjZwcy1cdTAwM2VzdGF0ZSk7XG5AQCAtMjE2LDYgKzIyOCwxMCBAQCBzdGF0aWMgc3RydWN0IHB0cF9oZWFkZXIgKm12ODhlNnh4eF9zaG91bGRfdHN0YW1wKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdGlmICghY2hpcC1cdTAwM2VpbmZvLVx1MDAzZXB0cF9zdXBwb3J0KVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbitcdC8qIE1hcnZlbGwgc3dpdGNoZXMgZG8gbm90IHN1cHBvcnQgSUVFRSAxNTg4LTIwMDIgKFBUUHYxKS4gKi9cbitcdGlmICgodHlwZSBcdTAwMjYgUFRQX0NMQVNTX1ZNQVNLKSAhPSBQVFBfQ0xBU1NfVjIpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuIFx0aGRyID0gcHRwX3BhcnNlX2hlYWRlcihza2IsIHR5cGUpO1xuIFx0aWYgKCFoZHIpXG4gXHRcdHJldHVybiBOVUxMO1xuQEAgLTI0NSw2ICsyNjEsNTIgQEAgc3RhdGljIGludCBzZXFfbWF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRzX3NlcWlkKVxuIFx0cmV0dXJuIHRzX3NlcWlkID09IG50b2hzKGhkci1cdTAwM2VzZXF1ZW5jZV9pZCk7XG4gfVxuIFxuKy8qIFJlY292ZXIgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIHdyb3RlIG92ZXIgdGhlIHJlc2VydmVkMiBmaWVsZCBvZiB0aGUgUFRQXG4rICogY29tbW9uIGhlYWRlciwgcmVzdG9yaW5nIHRoZSBmaWVsZCBhZnRlcndhcmRzLlxuKyAqL1xuK3N0YXRpYyBib29sIHBhcnNlX2VtYmVkZGVkX3RzKHN0cnVjdCBza19idWZmICpza2IsIHU2NCAqbnMpXG4re1xuK1x0dW5zaWduZWQgaW50IG9mZiA9IE1WODhFNlhYWF9QVFBfQVJSX1RTX09GRlNFVDtcbitcdHN0cnVjdCBwdHBfaGVhZGVyICpoZHI7XG4rXG4rXHQqbnMgPSAwO1xuK1xuK1x0aWYgKHNrYl9saW5lYXJpemUoc2tiKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aGRyID0gcHRwX3BhcnNlX2hlYWRlcihza2IsIFNLQl9QVFBfVFlQRShza2IpKTtcbitcdGlmICghaGRyKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHQqbnMgPSBnZXRfdW5hbGlnbmVkX2JlMzIoKHU4ICopaGRyICsgb2ZmKTtcbitcdG1lbXNldCgodTggKiloZHIgKyBvZmYsIDAsIDQpO1xuK1x0c2tiX2NoZWNrc3VtX2NvbXBsZXRlX3Vuc2V0KHNrYik7XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4rLyogQXBwbHkgdGhlIGFycml2YWwgdGltZSB0aGUgc3dpdGNoIGVtYmVkZGVkIGluIHRoZSBmcmFtZS4gTm8gcmVnaXN0ZXIgYWNjZXNzXG4rICogaXMgbmVlZGVkLCBzbyB0aGlzIHJ1bnMgaW5saW5lIG9uIHRoZSByZWNlaXZlIHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgaGFuZGVkXG4rICogdG8gdGhlIFBUUCB3b3JrZXIuIFJldHVybnMgZmFsc2UgaWYgdGhlIGZyYW1lIGNvdWxkIG5vdCBiZSByZXN0b3JlZC5cbisgKi9cbitzdGF0aWMgYm9vbCBtdjg4ZTZ4eHhfcHRwX3J4X3RpbWVzdGFtcChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4rXHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbit7XG4rXHRzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKnNod3Q7XG4rXHR1NjQgbnM7XG4rXG4rXHRpZiAoIXBhcnNlX2VtYmVkZGVkX3RzKHNrYiwgXHUwMDI2bnMpKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7XG4rXG4rXHRzaHd0ID0gc2tiX2h3dHN0YW1wcyhza2IpO1xuK1x0bWVtc2V0KHNod3QsIDAsIHNpemVvZigqc2h3dCkpO1xuK1x0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbitcbitcdHJldHVybiB0cnVlO1xuK31cbitcbiBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgcmVnLFxuQEAgLTI4OSw5ICszNTEsNyBAQCBzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X3J4dHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0XHRpZiAobXY4OGU2eHh4X3RzX3ZhbGlkKHN0YXR1cykgXHUwMDI2XHUwMDI2IHNlcV9tYXRjaChza2IsIHNlcV9pZCkpIHtcbiBcdFx0XHRucyA9IHRpbWVoaSBcdTAwM2NcdTAwM2MgMTYgfCB0aW1lbG87XG4gXG4tXHRcdFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0XHRcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIG5zKTtcbi1cdFx0XHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbitcdFx0XHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCBucyk7XG4gXHRcdFx0c2h3dCA9IHNrYl9od3RzdGFtcHMoc2tiKTtcbiBcdFx0XHRtZW1zZXQoc2h3dCwgMCwgc2l6ZW9mKCpzaHd0KSk7XG4gXHRcdFx0c2h3dC1cdTAwM2Vod3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbkBAIC0zMDgsNyArMzY4LDYgQEAgc3RhdGljIHZvaWQgbXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcbiBcdHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbi1cbiBcdGlmIChza2IpXG4gXHRcdG12ODhlNnh4eF9nZXRfcnh0cyhjaGlwLCBwcywgc2tiLCBwdHBfb3BzLVx1MDAzZWFycjBfc3RzX3JlZyxcbiBcdFx0XHRcdCAgIFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlKTtcbkBAIC0zMTksOSArMzc4LDE2IEBAIHN0YXRpYyB2b2lkIG12ODhlNnh4eF9yeHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcdFx0XHRcdCAgIFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlMik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgaXNfcGRlbGF5X3Jlc3AoY29uc3Qgc3RydWN0IHB0cF9oZWFkZXIgKmhkcilcbitzdGF0aWMgYm9vbCBpc19wZGVsYXlfbXNnKGNvbnN0IHN0cnVjdCBwdHBfaGVhZGVyICpoZHIpXG4ge1xuLVx0cmV0dXJuIChoZHItXHUwMDNldHNtdCBcdTAwMjYgMHhmKSA9PSAzO1xuK1x0c3dpdGNoIChwdHBfZ2V0X21zZ3R5cGUoaGRyLCBQVFBfQ0xBU1NfVjIpKSB7XG4rXHRjYXNlIFBUUF9NU0dUWVBFX1BERUxBWV9SRVE6XG4rXHRcdGZhbGx0aHJvdWdoO1xuK1x0Y2FzZSBQVFBfTVNHVFlQRV9QREVMQVlfUkVTUDpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4gfVxuIFxuIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbkBAIC0zNDMsNyArNDA5LDIyIEBAIGJvb2wgbXY4OGU2eHh4X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcbiBcdFNLQl9QVFBfVFlQRShza2IpID0gdHlwZTtcbiBcbi1cdGlmIChpc19wZGVsYXlfcmVzcChoZHIpKVxuK1x0LyogRW1iZWRkZWQgYXJyaXZhbCB0aW1lcyBjYW4gYmUgcmV0dXJuZWQgaW5saW5lLiBUaGUgc3dpdGNoIGhhc1xuK1x0ICogb3ZlcndyaXR0ZW4gdGhlIHJlc2VydmVkMiBmaWVsZDsgaWYgaXQgY2Fubm90IGJlIHJlc3RvcmVkIHRoZSBmcmFtZVxuK1x0ICogaXMgbm8gbG9uZ2VyIHdoYXQgdGhlIHNlbmRlciB0cmFuc21pdHRlZCwgc28gZHJvcCBpdCByYXRoZXIgdGhhblxuK1x0ICogcGFzcyB1cCBhIGNvcnJ1cHRlZCBoZWFkZXIgdGhhdCB3aWxsIGZhaWwgdGhlIFBUUC1vdmVyLVVEUCBjaGVja3N1bVxuK1x0ICogYW55d2F5LlxuK1x0ICovXG4rXHRpZiAobXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSkge1xuK1x0XHRpZiAoIW12ODhlNnh4eF9wdHBfcnhfdGltZXN0YW1wKGNoaXAsIHNrYikpIHtcbitcdFx0XHRrZnJlZV9za2JfcmVhc29uKHNrYiwgU0tCX0RST1BfUkVBU09OX05PTUVNKTtcbitcdFx0XHRyZXR1cm4gdHJ1ZTtcbitcdFx0fVxuK1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4rXHRpZiAoaXNfcGRlbGF5X21zZyhoZHIpKVxuIFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZwcy1cdTAwM2VyeF9xdWV1ZTIsIHNrYik7XG4gXHRlbHNlXG4gXHRcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNnBzLVx1MDAzZXJ4X3F1ZXVlLCBza2IpO1xuQEAgLTQwOSw5ICs0OTAsNyBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbiBcbiBcdG1lbXNldChcdTAwMjZzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7XG4gXHR0aW1lX3JhdyA9ICgodTMyKWRlcGFydHVyZV9ibG9ja1syXSBcdTAwM2NcdTAwM2MgMTYpIHwgZGVwYXJ0dXJlX2Jsb2NrWzFdO1xuLVx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0bnMgPSB0aW1lY291bnRlcl9jeWMydGltZShcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgdGltZV9yYXcpO1xuLVx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4rXHRucyA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCB0aW1lX3Jhdyk7XG4gXHRzaGh3dHN0YW1wcy5od3RzdGFtcCA9IG5zX3RvX2t0aW1lKG5zKTtcbiBcbiBcdGRldl9kYmcoY2hpcC1cdTAwM2VkZXYsXG5AQCAtNDU0LDcgKzUzMyw5IEBAIGxvbmcgbXY4OGU2eHh4X2h3dHN0YW1wX3dvcmsoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHApXG4gXHRcdGlmICh0ZXN0X2JpdChNVjg4RTZYWFhfSFdUU1RBTVBfVFhfSU5fUFJPR1JFU1MsIFx1MDAyNnBzLVx1MDAzZXN0YXRlKSlcbiBcdFx0XHRyZXN0YXJ0IHw9IG12ODhlNnh4eF90eHRzdGFtcF93b3JrKGNoaXAsIHBzKTtcbiBcbi1cdFx0bXY4OGU2eHh4X3J4dHN0YW1wX3dvcmsoY2hpcCwgcHMpO1xuK1x0XHQvKiBFbWJlZGRlZCBhcnJpdmFsIHRpbWVzIGFyZSBhcHBsaWVkIG9uIHRoZSByZWNlaXZlIHBhdGguICovXG4rXHRcdGlmICghbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSlcbitcdFx0XHRtdjg4ZTZ4eHhfcnh0c3RhbXBfd29yayhjaGlwLCBwcyk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmVzdGFydCA/IDEgOiAtMTtcbkBAIC01MjMsMTQgKzYwNCw0MyBAQCBpbnQgbXY4OGU2MTY1X2dsb2JhbF9lbmFibGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIFxuIGludCBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9kaXNhYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9QVFApO1xuK1x0aW50IGVycjtcbitcbitcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbitcdFx0XHRcdCAgICAgICBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMF9ESVNBQkxFX1BUUCk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLCAwKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rLyogUmV0dXJuIHRoZSBDRkcyIEFyclRTTW9kZSBmaWVsZCBmb3IgdGhlIGFjdGl2ZSBhcnJpdmFsIHRpbWUtc3RhbXAgbW9kZS4gKi9cbitzdGF0aWMgdTE2IG12ODhlNnh4eF9hcnJfdHNfY2ZnMihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4re1xuK1x0cmV0dXJuIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoY2hpcCkgP1xuK1x0XHRNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9BUlJfVFNfUkVTRVJWRUQyIDpcbitcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfQVJSX1RTX0RJU0FCTEVEO1xuIH1cbiBcbiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZW5hYmxlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4ge1xuLVx0cmV0dXJuIG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMCxcbi1cdFx0XHRcdFx0TVY4OEU2WFhYX1BPUlRfUFRQX0NGRzBfRElTQUJMRV9UU1BFQ19NQVRDSCk7XG4rXHRpbnQgZXJyO1xuK1xuK1x0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyLFxuK1x0XHRcdFx0ICAgICAgIG12ODhlNnh4eF9hcnJfdHNfY2ZnMihjaGlwKSk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcHRwX3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwLFxuK1x0XHRcdFx0ICAgICAgIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcwX0RJU0FCTEVfVFNQRUNfTUFUQ0gpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG5AQCAtNTQ5LDYgKzY1OSw3MiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9od3RzdGFtcF9wb3J0X3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLyogUHJvZ3JhbSB0aGUgaGFyZHdhcmUgZm9yIHRoZSBhcnJpdmFsIHRpbWUtc3RhbXAgbW9kZSB0aGUgYWN0aXZlIHRhZ2dpbmdcbisgKiBwcm90b2NvbCBzZWxlY3RzLiBDYWxsZWQgZnJvbSBzZXR1cCBhbmQgYWdhaW4gd2hlbmV2ZXIgdGhlIHByb3RvY29sIGNoYW5nZXMsXG4rICogYXMgdGhhdCBpcyB3aGF0IGRlY2lkZXMgd2hlcmUgYXJyaXZhbCB0aW1lIHN0YW1wcyBhcmUgZGVsaXZlcmVkLlxuKyAqXG4rICogTXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVnaXN0ZXIgbG9jayBoZWxkLlxuKyAqL1xuK2ludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXBfYXJyX3RzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgbXY4OGU2eHh4X3B0cF9vcHMgKnB0cF9vcHMgPSBjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHM7XG4rXHRpbnQgZXJyLCByZXQgPSAwO1xuK1x0aW50IGk7XG4rXG4rXHQvKiBJbiBlbWJlZGRlZCBtb2RlIHRoZSBzd2l0Y2ggc3RhbXBzIGV2ZXJ5IGV2ZW50IG1lc3NhZ2UgaXQgZm9yd2FyZHMsXG4rXHQgKiBwZWVyIGRlbGF5IGluY2x1ZGVkLCBzbyBsZWF2ZSB0aGUgYXJyaXZhbCBjYXB0dXJlIHBvaW50ZXIgYWxvbmVcbitcdCAqIHJhdGhlciB0aGFuIGRpdmVydGluZyBwZWVyIGRlbGF5IG1lc3NhZ2VzIHRvIHRoZSBBUlJJVkFMMSByZWdpc3RlcnMuXG4rXHQgKi9cbitcdGVyciA9IG12ODhlNnh4eF9wdHBfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX1BUUF9UU19BUlJJVkFMX1BUUixcbitcdFx0XHRcdCAgbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhjaGlwKSA/IDAgOlxuK1x0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVRIHxcbitcdFx0XHRcdCAgTVY4OEU2WFhYX1BUUF9NU0dUWVBFX1BETEFZX1JFUyk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuK1xuK1x0aWYgKCFjaGlwLVx1MDAzZWluZm8tXHUwMDNlc3VwcG9ydHNfcHRwX2VtYmVkZGVkX3RzKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG12ODhlNnh4eF9udW1fcG9ydHMoY2hpcCk7ICsraSkge1xuK1x0XHRzdHJ1Y3QgbXY4OGU2eHh4X3BvcnRfaHd0c3RhbXAgKnBzID0gXHUwMDI2Y2hpcC1cdTAwM2Vwb3J0X2h3dHN0YW1wW2ldO1xuK1xuK1x0XHQvKiBBbnl0aGluZyBhbHJlYWR5IHF1ZXVlZCB3YXMgcXVldWVkIHVuZGVyIHRoZSBwcmV2aW91cyBtb2RlXG4rXHRcdCAqIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIG1hdGNoZWQgd2l0aCBhbiBhcnJpdmFsIHRpbWUuXG4rXHRcdCAqL1xuK1x0XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUpO1xuK1x0XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2cHMtXHUwMDNlcnhfcXVldWUyKTtcbitcbitcdFx0LyogVGhlIGFycml2YWwgcmVnaXN0ZXJzIGtlZXAgY2FwdHVyaW5nIGluIGVtYmVkZGVkIG1vZGUgd2l0aFxuK1x0XHQgKiBub3RoaW5nIHRvIGRyYWluIHRoZW0sIHNvIGNsZWFyIHRoZSBzdGF0dXMgaGVyZSBvciB0aGVcbitcdFx0ICogcmVnaXN0ZXIgcGF0aCByZXN1bWVzIG9uIGEgc3RhbGUgY2FwdHVyZS5cbitcdFx0ICovXG4rXHRcdGVyciA9IG12ODhlNnh4eF9wb3J0X3B0cF93cml0ZShjaGlwLCBpLCBwdHBfb3BzLVx1MDAzZWFycjBfc3RzX3JlZywgMCk7XG4rXHRcdGlmIChlcnIgXHUwMDI2XHUwMDI2ICFyZXQpXG4rXHRcdFx0cmV0ID0gZXJyO1xuK1xuK1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgcHRwX29wcy1cdTAwM2VhcnIxX3N0c19yZWcsIDApO1xuK1x0XHRpZiAoZXJyIFx1MDAyNlx1MDAyNiAhcmV0KVxuK1x0XHRcdHJldCA9IGVycjtcbitcbitcdFx0LyogUG9ydHMgdGhhdCBoYXZlIG5vdCBlbmFibGVkIHRpbWUgc3RhbXBpbmcgcGljayB0aGUgbW9kZSB1cCBpblxuK1x0XHQgKiBtdjg4ZTYzNTJfaHd0c3RhbXBfcG9ydF9lbmFibGUoKS5cbitcdFx0ICovXG4rXHRcdGlmIChwcy1cdTAwM2V0c3RhbXBfY29uZmlnLnJ4X2ZpbHRlciA9PSBIV1RTVEFNUF9GSUxURVJfTk9ORSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0LyogUHJvZ3JhbSBldmVyeSBwb3J0IGV2ZW4gaWYgb25lIGZhaWxzLiBBIHBvcnQgbGVmdCBlbWJlZGRpbmdcbitcdFx0ICogdGltZSBzdGFtcHMgdGhhdCB0aGUgZHJpdmVyIG5vIGxvbmdlciBzdHJpcHMgY29ycnVwdHMgdGhlXG4rXHRcdCAqIFBUUCBoZWFkZXIgb2YgZXZlcnkgZXZlbnQgZnJhbWUgaXQgcmVjZWl2ZXMuXG4rXHRcdCAqL1xuK1x0XHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9wdHBfd3JpdGUoY2hpcCwgaSwgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzIsXG4rXHRcdFx0XHRcdCAgICAgICBtdjg4ZTZ4eHhfYXJyX3RzX2NmZzIoY2hpcCkpO1xuK1x0XHRpZiAoZXJyIFx1MDAyNlx1MDAyNiAhcmV0KVxuK1x0XHRcdHJldCA9IGVycjtcbitcdH1cbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIGludCBtdjg4ZTZ4eHhfaHd0c3RhbXBfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyAqcHRwX29wcyA9IGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcHRwX29wcztcbkBAIC01ODQsOSArNzYwLDcgQEAgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0LyogVXNlIEFSUklWQUwxIGZvciBwZWVyIGRlbGF5IHJlc3BvbnNlIG1lc3NhZ2VzLiAqL1xuLVx0ZXJyID0gbXY4OGU2eHh4X3B0cF93cml0ZShjaGlwLCBNVjg4RTZYWFhfUFRQX1RTX0FSUklWQUxfUFRSLFxuLVx0XHRcdFx0ICBNVjg4RTZYWFhfUFRQX01TR1RZUEVfUERMQVlfUkVTKTtcbitcdGVyciA9IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoY2hpcCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaCBiL2RyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuaFxuaW5kZXggYzM1OTgyMWQ1YTZlYWEuLjJmZTdjNzQyOWJmZjFmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmhcbkBAIC0xMyw2ICsxMyw4IEBAXG4gI2lmbmRlZiBfTVY4OEU2WFhYX0hXVFNUQU1QX0hcbiAjZGVmaW5lIF9NVjg4RTZYWFhfSFdUU1RBTVBfSFxuIFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3B0cF9jbGFzc2lmeS5oXHUwMDNlXG4rXG4gI2luY2x1ZGUgXCJjaGlwLmhcIlxuIFxuIC8qIEdsb2JhbCA2MzUyIFBUUCByZWdpc3RlcnMgKi9cbkBAIC02NCwxMCArNjYsMjEgQEBcbiBcbiAvKiBPZmZzZXQgMHgwMjogUFRQIENvbmZpZ3VyYXRpb24gMiAqL1xuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJcdFx0XHRcdDB4MDJcbi0jZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0VNQkVEX0FSUklWQUxcdFx0MHgxMDAwXG4gI2RlZmluZSBNVjg4RTZYWFhfUE9SVF9QVFBfQ0ZHMl9ERVBfSVJRX0VOXHRcdDB4MDAwMlxuICNkZWZpbmUgTVY4OEU2WFhYX1BPUlRfUFRQX0NGRzJfQVJSX0lSUV9FTlx0XHQweDAwMDFcbiBcbisvKiBBcnJpdmFsIFRpbWUgU3RhbXAgTW9kZSAoQXJyVFNNb2RlKSwgQ0ZHMiBiaXRzIFsxNTo4XTogY29uZmlndXJlcyBob3cgdGhlXG4rICogc3dpdGNoIGVtYmVkcyB0aGUgYXJyaXZhbCB0aW1lIHN0YW1wIChQVFBBcnIwVGltZSkgaW50byBlbmFibGVkIFBUUCBldmVudFxuKyAqIGZyYW1lcy4gQSBub24temVybyB2YWx1ZSBpcyB0aGUgYnl0ZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBQVFAgY29tbW9uXG4rICogaGVhZGVyLCBhdCB3aGljaCB0aGUgc3dpdGNoIG92ZXJ3cml0ZXMgZm91ciBieXRlcyBpbiBwbGFjZTsgd2UgYWx3YXlzIHBvaW50XG4rICogaXQgYXQgdGhlIGhlYWRlcidzIHJlc2VydmVkMiBmaWVsZCBzbyB0aGUgZnJhbWUgbGVuZ3RoIGlzIGxlZnQgYWxvbmUuXG4rICovXG4rI2RlZmluZSBNVjg4RTZYWFhfUFRQX0FSUl9UU19PRkZTRVRcdFx0XHRcXFxuK1x0b2Zmc2V0b2Yoc3RydWN0IHB0cF9oZWFkZXIsIHJlc2VydmVkMilcbisjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19ESVNBQkxFRFx0XHQweDAwMDBcbisjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9DRkcyX0FSUl9UU19SRVNFUlZFRDJcdFxcXG4rXHQoTVY4OEU2WFhYX1BUUF9BUlJfVFNfT0ZGU0VUIFx1MDAzY1x1MDAzYyA4KVxuK1xuIC8qIE9mZnNldCAweDAzOiBQVFAgTEVEIENvbmZpZ3VyYXRpb24gKi9cbiAjZGVmaW5lIE1WODhFNlhYWF9QT1JUX1BUUF9MRURfQ0ZHXHQweDAzXG4gXG5AQCAtMTI2LDYgKzEzOSw3IEBAIGludCBtdjg4ZTZ4eHhfZ2V0X3RzX2luZm8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcbiBsb25nIG12ODhlNnh4eF9od3RzdGFtcF93b3JrKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwKTtcbiBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7XG4raW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cF9hcnJfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKTtcbiB2b2lkIG12ODhlNnh4eF9od3RzdGFtcF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7XG4gaW50IG12ODhlNjM1Ml9od3RzdGFtcF9wb3J0X2VuYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KTtcbiBpbnQgbXY4OGU2MzUyX2h3dHN0YW1wX3BvcnRfZGlzYWJsZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KTtcbkBAIC0xNzIsNiArMTg2LDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IG12ODhlNnh4eF9od3RzdGFtcF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBpbnQgbXY4OGU2eHh4X2h3dHN0YW1wX3NldHVwX2Fycl90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBtdjg4ZTZ4eHhfaHd0c3RhbXBfZnJlZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4ge1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5jIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuY1xuaW5kZXggZjc2MDM1NzNkM2E5ODQuLjJhN2Y5NzYyNWUzNzU2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuY1xuQEAgLTIzMSwxNSArMjMxLDM3IEBAIHN0YXRpYyB2b2lkIG12ODhlNjM1Ml90YWlfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVnbHkpXG4gXG4gXHQvKiBXZSBvbmx5IGhhdmUgb25lIHRpbWVzdGFtcGluZyBjaGFubmVsLiAqL1xuIFx0ZXYuaW5kZXggPSAwO1xuLVx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuLVx0ZXYudGltZXN0YW1wID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfdGMsIHJhd190cyk7XG4tXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbitcdGV2LnRpbWVzdGFtcCA9IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShjaGlwLCByYXdfdHMpO1xuIFxuIFx0cHRwX2Nsb2NrX2V2ZW50KGNoaXAtXHUwMDNlcHRwX2Nsb2NrLCBcdTAwMjZldik7XG4gb3V0OlxuIFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNmNoaXAtXHUwMDNldGFpX2V2ZW50X3dvcmssIFRBSV9FVkVOVF9XT1JLX0lOVEVSVkFMKTtcbiB9XG4gXG4rLyogUmVmcmVzaCB0aGUgY2FjaGVkIGNvdW50ZXIgdmFsdWUgdGhhdCB0aGUgcmVhZCgpIGNhbGxiYWNrIHJldHVybnMuIFRoZVxuKyAqIHJlYWQgY2Fubm90IGFjcXVpcmUgdGhlIHJlZ2lzdGVyIGxvY2sgd2hpbHN0IGhvbGRpbmcgcHRwX2Nsb2NrX2xvY2tcbisgKiBiZWNhdXNlIE1ESU8gcmVhZHMgY2FuIHNsZWVwLiBUaGUgY2FsbGVyIG11c3QgaG9sZCByZWdfbG9jaywgd2hpY2hcbisgKiBzZXJpYWxpemVzIGFnYWluc3QgdGhlIG90aGVyIHRpbWVjb3VudGVyIHdyaXRlcnMuXG4rICovXG4rc3RhdGljIHZvaWQgbXY4OGU2eHh4X3B0cF9yZWFkX2N5Y2xlcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4re1xuK1x0Y29uc3Qgc3RydWN0IG12ODhlNnh4eF9wdHBfb3BzICpwdHBfb3BzID0gY2hpcC1cdTAwM2VpbmZvLVx1MDAzZW9wcy1cdTAwM2VwdHBfb3BzO1xuK1xuK1x0aWYgKHB0cF9vcHMtXHUwMDNlY2xvY2tfcmVhZClcbitcdFx0Y2hpcC1cdTAwM2V0c3RhbXBfY3ljbGVzID0gcHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX2NjKTtcbit9XG4rXG4rdTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpXG4re1xuK1x0dTY0IG5zO1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuK1x0bnMgPSB0aW1lY291bnRlcl9jeWMydGltZShcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgY3ljbGVzKTtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuK1xuK1x0cmV0dXJuIG5zO1xuK31cbitcbiBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxuIHtcbiBcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IHB0cF90b19jaGlwKHB0cCk7XG5AQCAtMjU4LDkgKzI4MCwxMiBAQCBzdGF0aWMgaW50IG12ODhlNnh4eF9wdHBfYWRqZmluZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxuIFx0ZGlmZiA9IGRpdl91NjQoYWRqLCBjaGlwLVx1MDAzZWNjX2NvZWZmcy1cdTAwM2VjY19tdWx0X2RlbSk7XG4gXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4rXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xuIFxuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0dGltZWNvdW50ZXJfcmVhZChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90Yyk7XG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5tdWx0ID0gbmVnX2FkaiA/IG11bHQgLSBkaWZmIDogbXVsdCArIGRpZmY7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZjaGlwLVx1MDAzZXB0cF9jbG9ja19sb2NrKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xuIFxuQEAgLTI3MSw4ICsyOTYsMTYgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2FkanRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbiB7XG4gXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBwdHBfdG9fY2hpcChwdHApO1xuIFxuK1x0LyogTm8gcmVnaXN0ZXIgYWNjZXNzIGlzIG5lZWRlZCBoZXJlLCBidXQgcmVnX2xvY2sgc3RpbGwgc2VyaWFsaXNlc1xuK1x0ICogdGhpcyBhZ2FpbnN0IHRoZSBvdGhlciB0aW1lY291bnRlciB3cml0ZXJzLCB3aGljaCBkcm9wIGl0IG9ubHlcbitcdCAqIGFmdGVyIHRoZWlyIGhhcmR3YXJlIHJlYWQgaGFzIGNvbXBsZXRlZC5cbitcdCAqL1xuIFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0dGltZWNvdW50ZXJfYWRqdGltZShcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgZGVsdGEpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4rXG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTI4NSw3ICszMTgsMTIgQEAgc3RhdGljIGludCBtdjg4ZTZ4eHhfcHRwX2dldHRpbWUoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4gXHR1NjQgbnM7XG4gXG4gXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XG4rXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuIFx0bnMgPSB0aW1lY291bnRlcl9yZWFkKFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjKTtcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNoaXAtXHUwMDNlcHRwX2Nsb2NrX2xvY2spO1xuK1xuIFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XG4gXG4gXHQqdHMgPSBuc190b190aW1lc3BlYzY0KG5zKTtcbkBAIC0zMDIsNyArMzQwLDEyIEBAIHN0YXRpYyBpbnQgbXY4OGU2eHh4X3B0cF9zZXR0aW1lKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuIFx0bnMgPSB0aW1lc3BlYzY0X3RvX25zKHRzKTtcbiBcbiBcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcbitcdG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoY2hpcCk7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4gXHR0aW1lY291bnRlcl9pbml0KFx1MDAyNmNoaXAtXHUwMDNldHN0YW1wX3RjLCBcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF9jYywgbnMpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y2hpcC1cdTAwM2VwdHBfY2xvY2tfbG9jayk7XG4rXG4gXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTQ0NCwxNCArNDg3LDEyIEBAIGNvbnN0IHN0cnVjdCBtdjg4ZTZ4eHhfcHRwX29wcyBtdjg4ZTYzOTBfcHRwX29wcyA9IHtcbiBcdFx0KDEgXHUwMDNjXHUwMDNjIEhXVFNUQU1QX0ZJTFRFUl9QVFBfVjJfREVMQVlfUkVRKSxcbiB9O1xuIFxuKy8qIFJldHVybiB0aGUgdmFsdWUgbW9zdCByZWNlbnRseSBmZXRjaGVkIGJ5IG12ODhlNnh4eF9wdHBfcmVhZF9jeWNsZXMoKVxuKyAqIHJhdGhlciB0aGFuIHJlYWRpbmcgdGhlIGhhcmR3YXJlIG92ZXIgTURJTy5cbisgKi9cbiBzdGF0aWMgdTY0IG12ODhlNnh4eF9wdHBfY2xvY2tfcmVhZChzdHJ1Y3QgY3ljbGVjb3VudGVyICpjYylcbiB7XG4tXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjY190b19jaGlwKGNjKTtcbi1cbi1cdGlmIChjaGlwLVx1MDAzZWluZm8tXHUwMDNlb3BzLVx1MDAzZXB0cF9vcHMtXHUwMDNlY2xvY2tfcmVhZClcbi1cdFx0cmV0dXJuIGNoaXAtXHUwMDNlaW5mby1cdTAwM2VvcHMtXHUwMDNlcHRwX29wcy1cdTAwM2VjbG9ja19yZWFkKGNjKTtcbi1cbi1cdHJldHVybiAwO1xuK1x0cmV0dXJuIGNjX3RvX2NoaXAoY2MpLVx1MDAzZXRzdGFtcF9jeWNsZXM7XG4gfVxuIFxuIC8qIFdpdGggYSAyNTBNSHogaW5wdXQgY2xvY2ssIHRoZSAzMi1iaXQgdGltZXN0YW1wIGNvdW50ZXIgb3ZlcmZsb3dzIGluIH4xNy4yXG5AQCAtNDg2LDYgKzUyNywxMiBAQCBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5tdWx0XHQ9IGNoaXAtXHUwMDNlY2NfY29lZmZzLVx1MDAzZWNjX211bHQ7XG4gXHRjaGlwLVx1MDAzZXRzdGFtcF9jYy5zaGlmdFx0PSBjaGlwLVx1MDAzZWNjX2NvZWZmcy1cdTAwM2VjY19zaGlmdDtcbiBcbitcdC8qIFByaW1lIHRoZSBjeWNsZSBjb3VudGVyIGNhY2hlIGZvciB0aGUgdGltZWNvdW50ZXJfaW5pdCgpIGJlbG93LlxuK1x0ICogVGhlIGNhbGxlciBob2xkcyByZWdfbG9jaywgYW5kIG5vdGhpbmcgY2FuIHJlYWNoIHRoZSBQVFAgY2xvY2tcbitcdCAqIHVudGlsIHB0cF9jbG9ja19yZWdpc3RlcigpIGJlbG93LCBzbyBubyBsb2NraW5nIGlzIG5lZWRlZCBoZXJlLlxuK1x0ICovXG4rXHRtdjg4ZTZ4eHhfcHRwX3JlYWRfY3ljbGVzKGNoaXApO1xuK1xuIFx0dGltZWNvdW50ZXJfaW5pdChcdTAwMjZjaGlwLVx1MDAzZXRzdGFtcF90YywgXHUwMDI2Y2hpcC1cdTAwM2V0c3RhbXBfY2MsXG4gXHRcdFx0IGt0aW1lX3RvX25zKGt0aW1lX2dldF9yZWFsKCkpKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L3B0cC5oIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuaW5kZXggOTViZGRkYjBiZjM5ZjguLjQ0NzE4ZTEyMGRlMjBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9wdHAuaFxuQEAgLTY4LDYgKzY4LDcgQEBcbiBcbiBpbnQgbXY4OGU2eHh4X3B0cF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApO1xuIHZvaWQgbXY4OGU2eHh4X3B0cF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCk7XG4rdTY0IG12ODhlNnh4eF90aW1lY291bnRlcl9jeWMydGltZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIHU2NCBjeWNsZXMpO1xuIFxuICNkZWZpbmUgcHRwX3RvX2NoaXAocHRwKSBjb250YWluZXJfb2YocHRwLCBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsXHRcXFxuIFx0XHRcdFx0ICAgICAgcHRwX2Nsb2NrX2luZm8pXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZHNhLmggYi9pbmNsdWRlL25ldC9kc2EuaFxuaW5kZXggOGMxNmVmMjNjYzEwMmEuLjJkZmNjNTQ5ZGUyOTY0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvZHNhLmhcbisrKyBiL2luY2x1ZGUvbmV0L2RzYS5oXG5AQCAtNTksNiArNTksNyBAQCBzdHJ1Y3QgdGNfYWN0aW9uO1xuICNkZWZpbmUgRFNBX1RBR19QUk9UT19NWExfR1NXMVhYX1ZBTFVFXHRcdDMxXG4gI2RlZmluZSBEU0FfVEFHX1BST1RPX01YTDg2Ml9WQUxVRVx0XHQzMlxuICNkZWZpbmUgRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFXHRcdDMzXG4rI2RlZmluZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRVx0MzRcbiBcbiBlbnVtIGRzYV90YWdfcHJvdG9jb2wge1xuIFx0RFNBX1RBR19QUk9UT19OT05FXHRcdD0gRFNBX1RBR19QUk9UT19OT05FX1ZBTFVFLFxuQEAgLTk1LDYgKzk2LDcgQEAgZW51bSBkc2FfdGFnX3Byb3RvY29sIHtcbiBcdERTQV9UQUdfUFJPVE9fTVhMX0dTVzFYWFx0PSBEU0FfVEFHX1BST1RPX01YTF9HU1cxWFhfVkFMVUUsXG4gXHREU0FfVEFHX1BST1RPX01YTDg2Mlx0XHQ9IERTQV9UQUdfUFJPVE9fTVhMODYyX1ZBTFVFLFxuIFx0RFNBX1RBR19QUk9UT19ORVRDXHRcdD0gRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFLFxuK1x0RFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSxcbiB9O1xuIFxuIHN0cnVjdCBkc2Ffc3dpdGNoO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2RzYS5jIGIvbmV0L2RzYS90YWdfZHNhLmNcbmluZGV4IGQ1ZmZlZTM1ZmJiNTNiLi43NDkwZWNjMDRhYTU3NCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2RzYS5jXG4rKysgYi9uZXQvZHNhL3RhZ19kc2EuY1xuQEAgLTQwMiw2ICs0MDIsMjMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX25ldGRldl9vcHMgPSB7XG4gXG4gRFNBX1RBR19EUklWRVIoZWRzYV9uZXRkZXZfb3BzKTtcbiBNT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBLCBFRFNBX05BTUUpO1xuK1xuKyNkZWZpbmUgRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUVcdFwiZWRzYS1wdHAtcmVzZXJ2ZWQyLXRzXCJcbitcbisvKiBTYW1lIHdpcmUgZm9ybWF0IGFzIEVEU0EsIGV4Y2VwdCB0aGF0IHRoZSBzd2l0Y2ggb3ZlcndyaXRlcyB0aGUgcmVzZXJ2ZWQyXG4rICogZmllbGQgb2YgdGhlIFBUUCBjb21tb24gaGVhZGVyIHdpdGggdGhlIGZyYW1lJ3MgYXJyaXZhbCB0aW1lIHN0YW1wLlxuKyAqL1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMgPSB7XG4rXHQubmFtZVx0XHQgPSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSxcbitcdC5wcm90b1x0XHQgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUyxcbitcdC54bWl0XHRcdCA9IGVkc2FfeG1pdCxcbitcdC5yY3ZcdFx0ID0gZWRzYV9yY3YsXG4rXHQubmVlZGVkX2hlYWRyb29tID0gRURTQV9ITEVOLFxuK307XG4rXG4rRFNBX1RBR19EUklWRVIoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpO1xuK01PRFVMRV9BTElBU19EU0FfVEFHX0RSSVZFUihEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUyxcbitcdFx0XHQgICAgRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUpO1xuICNlbmRpZlx0LyogQ09ORklHX05FVF9EU0FfVEFHX0VEU0EgKi9cbiBcbiBzdGF0aWMgc3RydWN0IGRzYV90YWdfZHJpdmVyICpkc2FfdGFnX2RyaXZlcnNbXSA9IHtcbkBAIC00MTAsNiArNDI3LDcgQEAgc3RhdGljIHN0cnVjdCBkc2FfdGFnX2RyaXZlciAqZHNhX3RhZ19kcml2ZXJzW10gPSB7XG4gI2VuZGlmXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfVEFHX0VEU0EpXG4gXHRcdTAwMjZEU0FfVEFHX0RSSVZFUl9OQU1FKGVkc2FfbmV0ZGV2X29wcyksXG4rXHRcdTAwMjZEU0FfVEFHX0RSSVZFUl9OQU1FKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKSxcbiAjZW5kaWZcbiB9O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjI6NDguNjY3OTQxNzQ3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM2MTU4MDEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIFZpcnR1YWxpemF0aW9uIEltcGFjdCBvZiBhIE5ldyBEU0EgVGFnIFByb3RvY29sKipcblxuT2theSwgc28gd2UndmUgZ290IGEgbmV3IHBhdGNoIGludHJvZHVjaW5nIGBlZHNhLXB0cC1yZXNlcnZlZDItdHNgLCB3aGljaCBpcyBhIERTQSB0YWcgcHJvdG9jb2wuIExvb2tzIGxpa2UgaXQncyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gIGFuZCBgbmV0L2RzYS90YWdfZHNhLmNgLiAgUmlnaHQsIHRoYXQgbWVhbnMgaXQncyBhIGRyaXZlciBmb3IgdGhlIE1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2hlcy4gSW50ZXJlc3RpbmcuIEl0IHNlZW1zIHdlIGFyZSBzdXBwb3J0aW5nIFBUUCBhcnJpdmFsIHRpbWVzdGFtcHMgaW4gdGhlIGByZXNlcnZlZDJgIGZpZWxkIG9mIHRoZSBQVFAgY29tbW9uIGhlYWRlci4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIHRoZSBuZXR3b3JrIGRyaXZlci5cblxuTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24sIGFzIGFsd2F5czogaG93IGlzb2xhdGVkIGlzIHRoaXM/IEdpdmVuIHRoYXQgaXQncyBhIERTQSBpbXBsZW1lbnRhdGlvbiwgaXQgaW5oZXJlbnRseSByZWxpZXMgb24gYSBwaHlzaWNhbCBzd2l0Y2ggZGV2aWNlLiAgTXkgbWFpbiBjb25jZXJuIGlzIHdoZXRoZXIgdGhpcyBpcyBnb2luZyB0byBiZSByZXByb2R1Y2libGUsIGFuZCBpZiB0aGlzIHdpbGwgY2F1c2UgaXNzdWVzIGRvd24gdGhlIGxpbmUgd2l0aCB0aGUgY29kZS4gQ2FuIHRoaXMgYmUgcmVhY2hlZCBhbmQgdGVzdGVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyAgRFNBLCBieSBpdHMgdmVyeSBuYXR1cmUsIG5lZWRzIHRoZSBzd2l0Y2guIFRoZSBxdWVzdGlvbiBpczogaXMgYG12ODhlNnh4eGAgZW11bGF0ZWQgaW4gUUVNVT8gSSBkb3VidCBpdC5cblxuTGV0J3MgZG8gYSBxdWljayBzZWFyY2ggdG8gc2VlIGlmIGFueSBRRU1VIGVtdWxhdGlvbiBleGlzdHMgZm9yIHRoZXNlIHNwZWNpZmljIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hlcy4gIEZyYW5rbHksIGl0J3MgcmFyZSB0byBmaW5kIHN1Y2ggZGV0YWlsZWQgaGFyZHdhcmUgZW11bGF0aW9uIGluIFFFTVUsIGVzcGVjaWFsbHkgZm9yIHNvbWV0aGluZyBhcyBzcGVjaWFsaXplZCBhcyBhbiBFdGhlcm5ldCBzd2l0Y2guIEl0IHRlbmRzIHRvIGJlIGFic3RyYWN0ZWQgYXQgYSBoaWdoZXIgbGF5ZXIuICBXZSdyZSBnb2luZyB0byBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbGwgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIGl0c2VsZiBmb3IgYG12ODhlNnh4eGAganVzdCB0byBiZSBjZXJ0YWluLiBJcyB0aGlzIGRyaXZlciBwdXJlbHkgYSBoYXJkd2FyZSBkcml2ZXI/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDkzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjI6NTYuMDI5NTI0OTk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Njc2OTYzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXY4OGU2eHh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMDE0MSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc9NzM9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzQtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NzU6c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNzYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9MjE9b2JqLXlcXHRcXHRcXHRcXHQrPSBtaWNyb2NoaXAvXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjIyOm9iai15XFx0XFx0XFx0XFx0Kz0gbXY4OGU2eHh4L1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS0yMy1vYmoteVxcdFxcdFxcdFxcdCs9IG14bDg2Mnh4L1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oLTUtICpcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmg6NjogKiBCYXNlZCBvbiBtdjg4ZTZ4eHguaFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC03LSAqIENvcHlyaWdodCAoYykgMjAwOCBNYXJ2ZWxsIFNlbWljb25kdWN0b3JcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWCkgKz0gbXY4OGU2eHh4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjM6bXY4OGU2eHh4LW9ianMgOj0gY2hpcC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo0Om12ODhlNnh4eC1vYmpzICs9IGRldmxpbmsub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NTptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwxLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjY6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMV9hdHUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6Nzptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwxX3Z0dS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo4Om12ODhlNnh4eC1vYmpzICs9IGdsb2JhbDIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6OTptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyX2F2Yi5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxMDptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyX3NjcmF0Y2gub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTE6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgKz0gaHd0c3RhbXAub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTI6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX0xFRFMpICs9IGxlZHMub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTM6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYxODUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTQ6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYzNTIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTU6bXY4OGU2eHh4LW9ianMgKz0gcGNzLTYzOXgub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTY6bXY4OGU2eHh4LW9ianMgKz0gcGh5Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE3Om12ODhlNnh4eC1vYmpzICs9IHBvcnQub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTg6bXY4OGU2eHh4LW9ianMgKz0gcG9ydF9oaWRkZW4ub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTk6bXY4OGU2eHh4LSQoQ09ORklHX05FVF9EU0FfTVY4OEU2WFhYX1BUUCkgKz0gcHRwLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIwOm12ODhlNnh4eC1vYmpzICs9IHNlcmRlcy5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMTptdjg4ZTZ4eHgtb2JqcyArPSBzbWkub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjI6bXY4OGU2eHh4LW9ianMgKz0gc3dpdGNoZGV2Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIzOm12ODhlNnh4eC1vYmpzICs9IHRyYWNlLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI0Om12ODhlNnh4eC1vYmpzICs9IHRjZmxvd2VyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjI1Om12ODhlNnh4eC1vYmpzICs9IHRjYW0ub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGUtMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvZHNhL212ODhlNnh4eC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX21kaW8uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTojaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGF0YS9tdjg4ZTZ4eHguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5OnN0YXRpYyB2b2lkIGFzc2VydF9yZWdfbG9jayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTc6aW50IG12ODhlNnh4eF9yZWFkKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzOlxcdGVyciA9IG12ODhlNnh4eF9zbWlfcmVhZChjaGlwLCBhZGRyLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjczOmludCBtdjg4ZTZ4eHhfd3JpdGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3OTpcXHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3dyaXRlKGNoaXAsIGFkZHIsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk6aW50IG12ODhlNnh4eF93YWl0X21hc2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgYWRkciwgaW50IHJlZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MC1cXHRcXHRcXHR1MTYgbWFzaywgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwMS1cXHRmb3IgKGkgPSAwOyB0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSB8fCAoaSBcXHUwMDNjIDIpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMDI6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3JlYWQoY2hpcCwgYWRkciwgcmVnLCBcXHUwMDI2ZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTAzLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTE1OlxcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTExNi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyNjppbnQgbXY4OGU2eHh4X3dhaXRfYml0KHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTI3LVxcdFxcdCAgICAgICBpbnQgYml0LCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyOC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTI5OlxcdHJldHVybiBtdjg4ZTZ4eHhfd2FpdF9tYXNrKGNoaXAsIGFkZHIsIHJlZywgQklUKGJpdCksXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTMwLVxcdFxcdFxcdFxcdCAgIHZhbCA/IEJJVChiaXQpIDogMHgwMDAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzM6c3RydWN0IG1paV9idXMgKm12ODhlNnh4eF9kZWZhdWx0X21kaW9fYnVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEzNTpcXHRzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzICptZGlvX2J1cztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM3LVxcdG1kaW9fYnVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZjaGlwLVxcdTAwM2VtZGlvcyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzg6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtdjg4ZTZ4eHhfbWRpb19idXMsIGxpc3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzOS1cXHRpZiAoIW1kaW9fYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NTpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0Ni17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTQ3OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0OC1cXHR1bnNpZ25lZCBpbnQgbiA9IGQtXFx1MDAzZWh3aXJxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTUyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE1MzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU0LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTU6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTU2LVxcdHVuc2lnbmVkIGludCBuID0gZC1cXHUwMDNlaHdpcnE7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTYxOnN0YXRpYyBpcnFyZXR1cm5fdCBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MDpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTcxOlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MjpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xODYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg3OlxcdFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxODg6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZjdGwxKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xODktXFx0XFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTAtXFx0XFx0XFx0Z290byB1bmxvY2s7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTkxOlxcdFxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5Mi11bmxvY2s6XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTkzOlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE5NC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjAyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwMzpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4oaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwNC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA1OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRldl9pZDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjA3OlxcdHJldHVybiBtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOC19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMDpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTEte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxMjpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE0OlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTUtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxNi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfc3luY191bmxvY2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIxOC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyMC1cXHR1MTYgbWFzayA9IEdFTk1BU0soY2hpcC1cXHUwMDNlZzFfaXJxLm5pcnFzLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMjQ6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIyNS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzMTpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIHJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjMyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzUtb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIzNjpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzctfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzOC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzk6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXAgPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQwOlxcdC5uYW1lXFx0XFx0XFx0PSBcXFwibXY4OGU2eHh4LWcxXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDE6XFx0LmlycV9tYXNrXFx0XFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX21hc2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQyOlxcdC5pcnFfdW5tYXNrXFx0XFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX3VubWFzayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDM6XFx0LmlycV9idXNfbG9ja1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDQ6XFx0LmlycV9idXNfc3luY191bmxvY2tcXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0NS19O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNDc6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21haW4gKmQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjQ4LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaXJxLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjUwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNTE6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZC1cXHUwMDNlaG9zdF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjA6c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYxOlxcdC5tYXBcXHQ9IG12ODhlNnh4eF9nMV9pcnFfZG9tYWluX21hcCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjItXFx0LnhsYXRlXFx0PSBpcnFfZG9tYWluX3hsYXRlX3R3b2NlbGwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjUtLyogVG8gYmUgY2FsbGVkIHdpdGggcmVnX2xvY2sgaGVsZCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2NjpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWVfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjcwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3MTpcXHRtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgXFx1MDAyNm1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3Mi1cXHRtYXNrIFxcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjczOlxcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI4MzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZzFfaXJxX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkxOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTI6XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyOTM6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk0LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDMtXFx0XFx0TlVMTCwgY2hpcC1cXHUwMDNlZzFfaXJxLm5pcnFzLCAwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMwNDpcXHRcXHRcXHUwMDI2bXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzLCBjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMDUtXFx0aWYgKCFjaGlwLVxcdTAwM2VnMV9pcnEuZG9tYWluKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMxMTpcXHRjaGlwLVxcdTAwM2VnMV9pcnEuY2hpcCA9IG12ODhlNnh4eF9nMV9pcnFfY2hpcDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTItXFx0Y2hpcC1cXHUwMDNlZzFfaXJxLm1hc2tlZCA9IH4wO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTQ6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxOS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjA6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNC1cXHQvKiBSZWFkaW5nIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIGNsZWFycyAobW9zdCBvZikgdGhlbSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMyNTpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzMi1cXHRtYXNrIFxcdTAwMjY9IH5HRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzMzOlxcdG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM0NjpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzUyOlxcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM1My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzYyLVxcdHNucHJpbnRmKGNoaXAtXFx1MDAzZWlycV9uYW1lLCBzaXplb2YoY2hpcC1cXHUwMDNlaXJxX25hbWUpLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM2MzpcXHRcXHQgXFxcIm12ODhlNnh4eC0lc1xcXCIsIGRldl9uYW1lKGNoaXAtXFx1MDAzZWRldikpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2NC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjU6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY2LVxcdGVyciA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtXFx1MDAzZWlycSwgTlVMTCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjc6XFx0XFx0XFx0XFx0ICAgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfZm4sXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzY4LVxcdFxcdFxcdFxcdCAgIElSUUZfT05FU0hPVCB8IElSUUZfU0hBUkVELFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OS1cXHRcXHRcXHRcXHQgICBjaGlwLVxcdTAwM2VpcnFfbmFtZSwgY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzcwOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzEtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNzI6XFx0XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbChzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM3OC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzc5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGNvbnRhaW5lcl9vZih3b3JrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MDpcXHRcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgxLVxcdFxcdFxcdFxcdFxcdFxcdCAgIGlycV9wb2xsX3dvcmsud29yayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzgyOlxcdG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX3dvcmsoY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzgzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4ODpzdGF0aWMgaW50IG12ODhlNnh4eF9pcnFfcG9sbF9zZXR1cChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5MS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTI6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX2lycV9zZXR1cF9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzkzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTYtXFx0a3RocmVhZF9pbml0X2RlbGF5ZWRfd29yayhcXHUwMDI2Y2hpcC1cXHUwMDNlaXJxX3BvbGxfd29yayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozOTc6XFx0XFx0XFx0XFx0ICBtdjg4ZTZ4eHhfaXJxX3BvbGwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQwOC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MDk6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2lycV9wb2xsX2ZyZWUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxMC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE0OlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTU6XFx0bXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0MTY6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE3LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDIwLVxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDQwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ0MTpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3NldHVwX21hYyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0Mi1cXHRcXHRcXHRcXHQgICAgaW50IGxpbmssIGludCBzcGVlZCwgaW50IGR1cGxleCwgaW50IHBhdXNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDY3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ2ODpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsIG1vZGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2OS1yZXN0b3JlX2xpbms6XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NzUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDc2OnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDgzOnN0YXRpYyBpbnQgbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00ODQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDkxLVxcdGlmIChjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VmYW1pbHkgPT0gTVY4OEU2WFhYX0ZBTUlMWV82MjUwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5MjpcXHRcXHRyZXR1cm4gbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDk0OlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OTUtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NTA1PXN0YXRpYyBjb25zdCB1OCBtdjg4ZTYxODVfcGh5X2ludGVyZmFjZV9tb2Rlc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUxNTpzdGF0aWMgdm9pZCBtdjg4ZTYwOTVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MjEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTIyOlxcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIzLVxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfTUlJLCBjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUzMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MzQ6c3RhdGljIHZvaWQgbXY4OGU2MTg1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzUtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU0ODpzdGF0aWMgY29uc3QgdTggbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NDktXFx0W01WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9NSUlfUEhZXVxcdD0gUEhZX0lOVEVSRkFDRV9NT0RFX1JFVk1JSSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NjM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZSh1OCBjbW9kZSwgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2NC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY1OlxcdGlmIChjbW9kZSBcXHUwMDNjIEFSUkFZX1NJWkUobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY2OlxcdCAgICBtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0pXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTY3OlxcdFxcdF9fc2V0X2JpdChtdjg4ZTZ4eHhfcGh5X2ludGVyZmFjZV9tb2Rlc1tjbW9kZV0sIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTY4LVxcdGVsc2UgaWYgKGNtb2RlID09IE1WODhFNlhYWF9QT1JUX1NUU19DTU9ERV9SR01JSSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTU3Mj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU3Mzptdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzQtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU3OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1ODA6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU4MS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjIyOnN0YXRpYyB2b2lkIG12ODhlNjI1MF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIzLVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MjQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyNTpcXHRpZiAoIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI2LVxcdFxcdG12ODhlNjI1MF9zZXR1cF9zdXBwb3J0ZWRfaW50ZXJmYWNlcyhjaGlwLCBwb3J0LCBjb25maWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjMwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzMTpzdGF0aWMgdm9pZCBtdjg4ZTYzNTFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzYtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjM3OlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0MzpzdGF0aWMgaW50IG12ODhlNjN4eF9nZXRfcG9ydF9zZXJkZXNfY21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY0ODpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NTYtXFx0dmFsID0gcmVnIFxcdTAwMjYgfk1WODhFNlhYWF9QT1JUX1NUU19QSFlfREVURUNUO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY1NzpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF93cml0ZShjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU4LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjYxOlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2dmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjItXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NS1cXHQvKiBSZXN0b3JlIFBIWV9ERVRFQ1QgdmFsdWUgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjY6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjcyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY3MzpzdGF0aWMgdm9pZCBtdjg4ZTYzNTJfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3NC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzktXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjgwOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk1LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2OTY6XFx0XFx0XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02OTctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwMDpzdGF0aWMgdm9pZCBtdjg4ZTYzMnhfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwMS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDYtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzA3OlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE4LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MTk6XFx0XFx0XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjAtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyMzpzdGF0aWMgdm9pZCBtdjg4ZTYzNDFfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyNC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjgtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzI5OlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc0NTpzdGF0aWMgdm9pZCBtdjg4ZTYzOTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0Ni1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NTAtXFx0LyogVHJhbnNsYXRlIHRoZSBkZWZhdWx0IGNtb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzUxOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc2NzpzdGF0aWMgdm9pZCBtdjg4ZTYzOTB4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NjgtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODAyOnN0YXRpYyB2b2lkIG12ODhlNjM5M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgwMy1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTgxMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4MTE6XFx0bXY4OGU2eHh4X3RyYW5zbGF0ZV9jbW9kZShjaGlwLVxcdTAwM2Vwb3J0c1twb3J0XS5jbW9kZSwgc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDUtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ2OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0Ny1cXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ4LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NDk6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODUyLVxcdGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19nZXRfY2FwcyhjaGlwLCBwb3J0LCBjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1MzpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODU1OlxcdGlmIChtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU2LVxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz04NjQ9c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY1Om12ODhlNnh4eF9tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjYtXFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NjgtXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4Njk6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg3MC1cXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODc5OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19wcmVwYXJlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4MC1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODItXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4ODM6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4NC1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5My1cXHQgICAgY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk0OlxcdFxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTUtXFx0XFx0ZXJyID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk2LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTElOS19GT1JDRURfRE9XTik7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODk3OlxcdFxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTAzOnN0YXRpYyB2b2lkIG12ODhlNnh4eF9tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkwNC1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG1vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDctXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MDg6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkwOS1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTI6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxMy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTQ6XFx0aWYgKG1vZGUgIT0gTUxPX0FOX1BIWSB8fCAhbXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkxNTpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9jb25maWdfaW50ZXJmYWNlKGNoaXAsIHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTE2LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHN0YXRlLVxcdTAwM2VpbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTIxLWVycl91bmxvY2s6XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTIyOlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyNy1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5Mjg6c3RhdGljIGludCBtdjg4ZTZ4eHhfbWFjX2ZpbmlzaChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjktXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzEtXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MzI6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkzMy1cXHRpbnQgcG9ydCA9IGRwLVxcdTAwM2VpbmRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0MS1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDI6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0Ni1cXHQgICAgICBjaGlwLVxcdTAwM2Vwb3J0c1twb3J0XS5pbnRlcmZhY2UgIT0gaW50ZXJmYWNlKSB8fFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk0NzpcXHQgICAgIChtb2RlID09IE1MT19BTl9QSFkgXFx1MDAyNlxcdTAwMjYgbXY4OGU2eHh4X3BvcnRfcHB1X3VwZGF0ZXMoY2hpcCwgcG9ydCkpKSlcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDgtXFx0XFx0ZXJyID0gY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlb3BzLVxcdTAwM2Vwb3J0X3NldF9saW5rKGNoaXAsIHBvcnQsIExJTktfVU5GT1JDRUQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk0OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTA6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTUxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjk1NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjI6NTcuNjk3MjI5OTA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4NjcwNzI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1hcnZlbGwgODhFNnh4eCBTd2l0Y2ggRW11bGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBkcml2ZXIgZm9yIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGVyZSBhbnkgUUVNVSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgc3dpdGNoPyBJIGtub3cgUUVNVSdzIGdvdCBhIGxvdCBvZiBjYXBhYmlsaXRpZXMsIGJ1dCB0aGVzZSBzcGVjaWFsaXplZCBuZXR3b3JraW5nIGNvbXBvbmVudHMgY2FuIGJlIHRyaWNreS4gVW5mb3J0dW5hdGVseSwgYSBxdWljayBzZWFyY2ggcmV2ZWFscyBubyBzdGFuZGFyZCBRRU1VIGVtdWxhdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNYXJ2ZWxsIDg4RTZ4eHguXG5cbk5vdyBJIG5lZWQgdG8gcmVmaW5lIG15IHNlYXJjaC4gQW0gSSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHRoYXQncyBzdHJpY3RseSBoYXJkd2FyZS1kZXBlbmRlbnQsIG9yIGlzIHRoZXJlIGFueSBwb3NzaWJpbGl0eSBvZiBzb2Z0d2FyZSBlbXVsYXRpb24sIGV2ZW4gaWYgaXQncyBub3QgZGlyZWN0bHkgaW50ZWdyYXRlZCB3aXRoIFFFTVU/IExldCdzIGRpZyBkZWVwZXIuIFRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleHBsb3JlIHRoZSBrZXJuZWwgc291cmNlLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlcidzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGZvciBhIHNvZnR3YXJlLWJhc2VkIHJlcHJlc2VudGF0aW9uLCBvciB3aGV0aGVyIGl0J3MgdGlnaHRseSBjb3VwbGVkIHRvIHRoZSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgxODQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzowMi4wODM5NDEzMThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE5FVF9EU0FfTVY4OEU2WFhYXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBmYWJyaWMgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQVxcbiAgIDU6XFx0XFx0c2VsZWN0IElSUV9ET01BSU5cXG4gICA2OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19FRFNBXFxuICAgNzpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfRFNBXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgbW9zdCBvZiB0aGUgTWFydmVsbCA4OEU2eHh4IG1vZGVscyBvZlxcbiAgMTA6XFx0XFx0ICBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMsIGV4Y2VwdCA4OEU2MDYwLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfUFRQXFxuICAxMzpcXHRcXHRib29sIFxcXCJQVFAgc3VwcG9ydCBmb3IgTWFydmVsbCA4OEU2eHh4XFxcIlxcbiAgMTQ6XFx0XFx0ZGVmYXVsdCBuXFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIChORVRfRFNBX01WODhFNlhYWCA9IHkgXFx1MDAyNlxcdTAwMjYgUFRQXzE1ODhfQ0xPQ0sgPSB5KSB8fCBcXFxcXFxuICAxNjpcXHRcXHQgICAgICAgICAgIChORVRfRFNBX01WODhFNlhYWCA9IG0gXFx1MDAyNlxcdTAwMjYgUFRQXzE1ODhfQ0xPQ0spXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFNheSBZIHRvIGVuYWJsZSBQVFAgaGFyZHdhcmUgdGltZXN0YW1waW5nIG9uIE1hcnZlbGwgODhFNnh4eCBzd2l0Y2hcXG4gIDE5OlxcdFxcdCAgY2hpcHMgdGhhdCBzdXBwb3J0IGl0LlxcbiAgMjA6XFx0XFxuICAyMTpcXHRjb25maWcgTkVUX0RTQV9NVjg4RTZYWFhfTEVEU1xcbiAgMjI6XFx0XFx0Ym9vbCBcXFwiTEVEIHN1cHBvcnQgZm9yIE1hcnZlbGwgODhFNnh4eFxcXCJcXG4gIDIzOlxcdFxcdGRlZmF1bHQgeVxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01WODhFNlhYWFxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX01WODhFNlhYWFxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFRoaXMgZW5hYmxlZCBzdXBwb3J0IGZvciBjb250cm9sbGluZyB0aGUgTEVEcyBhdHRhY2hlZCB0byB0aGVcXG4gIDI5OlxcdFxcdCAgTWFydmVsbCA4OEU2eHh4IHN3aXRjaCBjaGlwcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjM6MDIuMDg0MTA3NDk4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUyMjE1NTk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERTQSBEcml2ZXIgSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCdzIGRlZmluaXRlbHkgcmVsYXRlZCB0byBhIGRyaXZlciBmb3IgdGhlIE1hcnZlbGwgODhFNnh4eCBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhhdCBEU0EsIG9yIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUsIGRlcGVuZHMgb24gaGF2aW5nIGEgKnJlYWwqIHBoeXNpY2FsIHN3aXRjaCBjaGlwIGNvbm5lY3RlZCB2aWEgc29tZXRoaW5nIGxpa2UgTURJTyBvciBTUEkuIFRoaXMgaXNuJ3Qgc29tZXRoaW5nIHRoYXQncyB1c3VhbGx5IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgc2V0dXAuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgXCJDYW4gdGhpcyBjb2RlICpldmVuKiBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCJcblxuSWYgdGhlcmUncyBubyBRRU1VIGVtdWxhdGlvbiBmb3IgdGhlIGBtdjg4ZTZ4eHhgIGNoaXAsIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiBpcyBnb2luZyB0byBmYWlsIOKAkyBpdCB3b24ndCBmaW5kIHRoZSBoYXJkd2FyZSwgYW5kIHRoZSBkZXZpY2UganVzdCB3b24ndCByZWdpc3Rlci4gU28sIGJlZm9yZSBJIGRpZyB0b28gZGVlcCwgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgbW9ja2luZyBvciBlbXVsYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLCBlaXRoZXIgZm9yIERTQSBpbiBnZW5lcmFsIG9yIHNwZWNpZmljYWxseSBmb3IgdGhpcyBkcml2ZXIuIEknZCBleHBlY3QgRFNBIGRyaXZlcnMgdG8gYmUgZGVzaWduZWQgZm9yIHBoeXNpY2FsIGhhcmR3YXJlLCBzbyB0aGlzIHNlZW1zIHVubGlrZWx5LlxuXG5MZXQncyBzZWXigKYgbWF5YmUgYGRzYV9sb29wYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gQWgsIGBkc2FfbG9vcC5jYCBpcyBpbmRlZWQgYSBtb2NrIERTQSBkcml2ZXIsIGJ1dCBpdCBkb2Vzbid0IHV0aWxpemUgYG12ODhlNnh4eGAgZnVuY3Rpb25hbGl0eSwgc28gaXQncyBhIGRlYWQgZW5kIGZvciBteSBwdXJwb3Nlcy4gT2theSwgc28gdGhlIGNvcmUgY2hhbmdlcyBzZWVtIHRvIGJlIGNvbmNlbnRyYXRlZCBpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gIGFuZCBgbmV0L2RzYS90YWdfZHNhLmNgLlxuXG5UaGUga2V5IGNoYW5nZSBpbiBgdGFnX2RzYS5jYCBhcHBlYXJzIHRvIGJlIGFkZGluZyBhIG5ldyB0YWcgcHJvdG9jb2w6IGBlZHNhLXB0cC1yZXNlcnZlZDItdHNgLiBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiBDYW4gSSBzb21laG93IHRyaWdnZXIgdGhlIHVzZSBvZiB0aGF0IGBlZHNhLXB0cC1yZXNlcnZlZDItdHNgIHRhZyBwcm90b2NvbCAqd2l0aG91dCogdGhlIGBtdjg4ZTZ4eHhgIGRyaXZlciBiZWluZyBzdWNjZXNzZnVsbHkgbG9hZGVkPyBJIG5lZWQgdG8gY2hlY2sgdGhhdCBgbmV0L2RzYS90YWdfZHNhLmNgIGZpbGUgbW9yZSBjbG9zZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTAyNiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjA4LjYwNjI2NzcwMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ0NjY4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2RzYS90YWdfZHNhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2RzYS90YWdfZHNhLmM9NDA0PU1PRFVMRV9BTElBU19EU0FfVEFHX0RSSVZFUihEU0FfVEFHX1BST1RPX0VEU0EsIEVEU0FfTkFNRSk7XFxuLS1cXG5uZXQvZHNhL3RhZ19kc2EuYy00MTAtICovXFxubmV0L2RzYS90YWdfZHNhLmM6NDExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMgPSB7XFxubmV0L2RzYS90YWdfZHNhLmMtNDEyLVxcdC5uYW1lXFx0XFx0ID0gRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUsXFxuLS1cXG5uZXQvZHNhL3RhZ19kc2EuYy00MTgtXFxubmV0L2RzYS90YWdfZHNhLmM6NDE5OkRTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTtcXG5uZXQvZHNhL3RhZ19kc2EuYy00MjAtTU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxcbi0tXFxubmV0L2RzYS90YWdfZHNhLmM9NDI0PXN0YXRpYyBzdHJ1Y3QgZHNhX3RhZ19kcml2ZXIgKmRzYV90YWdfZHJpdmVyc1tdID0ge1xcbi0tXFxubmV0L2RzYS90YWdfZHNhLmMtNDI5LVxcdFxcdTAwMjZEU0FfVEFHX0RSSVZFUl9OQU1FKGVkc2FfbmV0ZGV2X29wcyksXFxubmV0L2RzYS90YWdfZHNhLmM6NDMwOlxcdFxcdTAwMjZEU0FfVEFHX0RSSVZFUl9OQU1FKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKSxcXG5uZXQvZHNhL3RhZ19kc2EuYy00MzEtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjA5LjE3MDc0MDUyMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzMwMDI5NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIFRhZyBEcml2ZXIgQ29tcGF0aWJpbGl0eSoqXG5cblJpZ2h0LCB0aGUgdGFnIGRyaXZlciBpcyByZWdpc3RlcmVkLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMsIGRvZXMgdGhpcyByZWdpc3RyYXRpb24gYWN0dWFsbHkgdHJhbnNsYXRlIGludG8gdXNhYmlsaXR5IGRvd25zdHJlYW0/IFNwZWNpZmljYWxseSwgY2FuIHRoaXMgZHJpdmVyIGJlIGxldmVyYWdlZCBieSBgZHNhX2xvb3BgIG9yIGFueSBvdGhlciBlbXVsYXRlZCBEU0EgZHJpdmVyIEknbSBmYW1pbGlhciB3aXRoPyBJIG5lZWQgdG8gYXNjZXJ0YWluIHRoZSBleHRlbnQgb2YgaXRzIGFjY2Vzc2liaWxpdHkgd2l0aGluIHRoZSBzb2Z0d2FyZSBhcmNoaXRlY3R1cmUuXG5cbkxldCdzIGN1dCBzdHJhaWdodCB0byB0aGUgY2hhc2UgYW5kIHRlc3QgYSBzcGVjaWZpYyBzY2VuYXJpby4gSSB3YW50IHRvIGRldGVybWluZSBpZiBgZHNhX2xvb3BgIGlzIGNhcGFibGUgb2YgdXRpbGl6aW5nIGEgc3BlY2lmaWMgdGFnZ2luZyBwcm90b2NvbCBpZGVudGlmaWVyLCBsZXQncyBnbyB3aXRoIGBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU2AuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIFRoaXMgdGFnIHByb3RvY29sIGlzIGEgZ29vZCB0ZXN0IGNhc2UsIEkga25vdyBpdHMgY2hhcmFjdGVyaXN0aWNzLiBJZiBgZHNhX2xvb3BgIGNhbid0IHV0aWxpemUgdGhpcyBvbmUsIHRoYXQgaXMgYSBnb29kIHNpZ24gdGhlcmUgYXJlIGlzc3VlcyBzb21ld2hlcmUgaW4gdGhlIGRyaXZlci4gQSBzdWNjZXNzZnVsIHRlc3QgaGVyZSB3b3VsZCBnaXZlIG1lIGNvbmZpZGVuY2UgYWJvdXQgdGhlIGRlc2lnbidzIGZsZXhpYmlsaXR5LiBMZXQncyBzZWUgaG93IGl0IGdvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMTg5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjM6MTMuMjAzNzQ2NzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTc2NDE4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTMyNjI9c3RhdGljIGludCBtdjg4ZTZ4eHhfc2V0dXBfcG9ydF9tb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjc0LVxcdGlmIChjaGlwLVxcdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBIHx8XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzI3NTpcXHQgICAgY2hpcC1cXHUwMDNldGFnX3Byb3RvY29sID09IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNzYtXFx0XFx0cmV0dXJuIG12ODhlNnh4eF9zZXRfcG9ydF9tb2RlX2Vkc2EoY2hpcCwgcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz02NjU5PXN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY3MS1cXHRzd2l0Y2ggKHByb3RvKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY3MjpcXHRjYXNlIERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NzMtXFx0XFx0aWYgKCFjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VzdXBwb3J0c19wdHBfZW1iZWRkZWRfdHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaD04MzE9c3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9wdHBfZW1iZWRkZWRfdHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oLTgzMi17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmg6ODMzOlxcdHJldHVybiBjaGlwLVxcdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmgtODM0LX1cXG4tLVxcbmluY2x1ZGUvbmV0L2RzYS5oPTI2PXN0cnVjdCB0Y19hY3Rpb247XFxuLS1cXG5pbmNsdWRlL25ldC9kc2EuaC02MS0jZGVmaW5lIERTQV9UQUdfUFJPVE9fTkVUQ19WQUxVRVxcdFxcdDMzXFxuaW5jbHVkZS9uZXQvZHNhLmg6NjI6I2RlZmluZSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRVxcdDM0XFxuaW5jbHVkZS9uZXQvZHNhLmgtNjMtXFxuaW5jbHVkZS9uZXQvZHNhLmg9NjQ9ZW51bSBkc2FfdGFnX3Byb3RvY29sIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2RzYS5oLTk4LVxcdERTQV9UQUdfUFJPVE9fTkVUQ1xcdFxcdD0gRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFLFxcbmluY2x1ZGUvbmV0L2RzYS5oOjk5OlxcdERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFNfVkFMVUUsXFxuaW5jbHVkZS9uZXQvZHNhLmgtMTAwLX07XFxuLS1cXG5uZXQvZHNhL3RhZ19kc2EuYz00MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wcyA9IHtcXG5uZXQvZHNhL3RhZ19kc2EuYy00MTItXFx0Lm5hbWVcXHRcXHQgPSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSxcXG5uZXQvZHNhL3RhZ19kc2EuYzo0MTM6XFx0LnByb3RvXFx0XFx0ID0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXFxubmV0L2RzYS90YWdfZHNhLmMtNDE0LVxcdC54bWl0XFx0XFx0ID0gZWRzYV94bWl0LFxcbi0tXFxubmV0L2RzYS90YWdfZHNhLmM9NDE5PURTQV9UQUdfRFJJVkVSKGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzKTtcXG5uZXQvZHNhL3RhZ19kc2EuYzo0MjA6TU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxcbm5ldC9kc2EvdGFnX2RzYS5jLTQyMS1cXHRcXHRcXHQgICAgRURTQV9QVFBfUkVTRVJWRUQyX1RTX05BTUUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzoxNy43MDEzOTkzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTg1NTE3MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVGFnIFByb3RvY29sIENvbmZpZ3VyYXRpb24gZm9yIEVtdWxhdGVkIERTQSBEZXZpY2VzKipcblxuT2theSwgc28gdGhlIHRhZyBwcm90b2NvbCBzZWVtcyB0byBiZSBleGNsdXNpdmVseSBoYW5kbGVkIGJ5IHRoZSBgbXY4OGU2eHh4YCBkcml2ZXIsIHdoaWNoIHJhaXNlcyBhIHF1ZXN0aW9uLiBJcyB0aGVyZSBhIHdheSwgdmlhIHN5c2ZzIG9yIG5ldGxpbmssIHRvIGNvbmZpZ3VyZSB0aGUgdGFnIHByb3RvY29sIGZvciBlbXVsYXRlZCBkZXZpY2VzIGxpa2UgYGRzYV9sb29wYCwgb3IgcGVyaGFwcyBvdGhlciBzaW1pbGFyIGVtdWxhdGlvbnM/IFRoZSBEU0EgZnJhbWV3b3JrIGl0c2VsZiBvZmZlcnMgdGhlIGFiaWxpdHkgdG8gbW9kaWZ5IHRoZSB0YWcgcHJvdG9jb2wgdGhyb3VnaCB0aGUgYGRzYV9zd2l0Y2hfb3BzLVx1MDAzZWNoYW5nZV90YWdfcHJvdG9jb2xgIGZ1bmN0aW9uLCB3aGljaCBpcyBwcm9taXNpbmcuIEhvd2V2ZXIsIGlmIGEgZGV2aWNlIGxpa2UgYGRzYV9sb29wYCAqZG9lc24ndCogaW1wbGVtZW50IHRoaXMgYGNoYW5nZV90YWdfcHJvdG9jb2xgIGZ1bmN0aW9uLCBpdCdsbCBzaW1wbHkgc3RpY2sgd2l0aCBpdHMgZGVmYXVsdCwgaW5pdGlhbCBwcm90b2NvbC4gVGltZSB0byBkaWcgaW50byBgZHNhX2xvb3AuY2AgYW5kIHNlZSB3aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGxvb2sgbGlrZSwgaWYgYW55LCB0aGVyZS4gTGV0J3Mgc2VlIGlmIHRoYXQgaG9vayBpcyBpbXBsZW1lbnRlZCBhbmQgaG93IGl0IGlzIGJlaGF2aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU0MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzoyMS42ODY5MTk4ODlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODA4NjY2OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hhbmdlX3RhZ19wcm90b2NvbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjM6MjIuMjg1MDE2MTg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMTQyMzEzMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipEZWNvZGluZyB0aGUgYGRzYV9sb29wYCBQcm90b2NvbCoqLlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBzcGVjaWZpYyB0YWdnaW5nIHByb3RvY29sIHRoYXQgYGRzYV9sb29wYCBlbXBsb3lzLiBJdCdzIGEgZnVuZGFtZW50YWwgc3RlcCwgcmVhbGx5LiBJIGNhbid0IGFuYWx5emUgb3IgZXZlbiB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBwcm9wZXJseSB3aXRob3V0IGtub3dpbmcgd2hhdCBraW5kIG9mIHRhZ2dpbmcgaXQncyBidWlsdCB1cG9uLiBJcyBpdCBhIHNpbXBsZSBjaGVja3N1bSwgc29tZXRoaW5nIG1vcmUgcm9idXN0IGxpa2UgYSBDUkMsIG9yIHBlcmhhcHMgc29tZXRoaW5nIG1vcmUgYWR2YW5jZWQgdGhhdCBpbmNvcnBvcmF0ZXMgZXJyb3IgY29ycmVjdGlvbiBvciBjcnlwdG9ncmFwaGljIGhhc2hpbmc/IEdvdHRhIGZpZ3VyZSBvdXQgdGhlIGJhc2ljcyBiZWZvcmUgZGl2aW5nIGFueSBkZWVwZXIuIExldCdzIGdldCBjcmFja2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE4OTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzoyNS41OTkyNjAyNjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTc5Nzg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEU0FfVEFHX1BST1RPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTEyNT1zdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTMxOlxcdHJldHVybiBEU0FfVEFHX1BST1RPX05PTkU7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjM6MjUuNzYxMDY2NDM2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzMzIzMDUzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEU0EgQ29kZSBQYXRoIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBgZHNhX2xvb3BgIHVzZXMgYERTQV9UQUdfUFJPVE9fTk9ORWAsIHRoYXQgbXVjaCBpcyBjbGVhci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGVyZSBhbnkgKm90aGVyKiBEU0EgZHJpdmVycyB0aGF0IG1pZ2h0IGJlIGVtdWxhdGVkPyBMZXQncyBjaGVjay4gQWgsIGBkcml2ZXJzL25ldC9kc2EvbW9jay5jYC4uLm5vLCBub3RoaW5nIHRoZXJlLlxuXG5IbW0sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgY2FuIHdlIHRyaWdnZXIgYGVkc2FfeG1pdGAgb3IgYGVkc2FfcmN2YCB3aXRob3V0IHJlbHlpbmcgb24gYG12ODhlNnh4eGA/IEJlY2F1c2UsIHJlYWxpc3RpY2FsbHksIGlmIHNvbWVvbmUgY29uZmlndXJlcyBhIERTQSB0cmVlIHRocm91Z2ggdGhlIGRldmljZSB0cmVlIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgd2UncmUgdW5saWtlbHkgdG8gaGF2ZSBhIHdvcmtpbmcgYG12ODhlNnh4eGAgaW5zdGFuY2Ugd2l0aG91dCBhIHNwZWNpYWxpemVkIEkyQy9NRElPIG1vY2suXG5cbldhaXQuLi5TeXprYWxsZXIuIFN5emthbGxlcidzIGdvdCBgc3l6X2dlbmV0bGlua2AgYW5kIG90aGVyIHBzZXVkby1zeXNjYWxscywgYnV0IGl0IGRvZXNuJ3QgKm5hdGl2ZWx5KiBlbXVsYXRlIE1ESU8gZGV2aWNlcy4gSXQgbmVlZHMgYSBzcGVjaWZpYyBkcml2ZXIgZm9yIHRoYXQsIHJpZ2h0PyBVbmxlc3MuLi5cblxuQWgsIHllcywgU3l6a2FsbGVyIGNhbiBpbmplY3QgcGFja2V0cy4gSWYgd2UgY291bGQgY3JlYXRlIGEgZGV2aWNlIHdpdGggYGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzYCwgdGhlbiB3ZSdkIGJlIHVzaW5nIGBlZHNhX3htaXRgIGFuZCBgZWRzYV9yY3ZgLiBCdXQgaG9sZCBvbiwgdGhvc2UgYXJlbid0ICpuZXcqIGZ1bmN0aW9uczsgdGhleSdyZSByZXVzZWQgZnJvbSBgZWRzYV9uZXRkZXZfb3BzYC4gU28gaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29kZSBzbmlwcGV0IGlzOlxuXG5gYGBjXG5zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzID0ge1xuXHQubmFtZVx0XHQgPSBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSxcblx0LnByb3RvXHRcdCA9IERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTLFxuXHQueG1pdFx0XHQgPSBlZHNhX3htaXQsXG5cdC5yY3ZcdFx0ID0gZWRzYV9yY3YsXG5cdC5uZWVkZWRfaGVhZHJvb20gPSBFRFNBX0hMRU4sXG59O1xuYGBgXG5cblNvIHRoZSBcIm5ld1wiIHRoaW5nIGluIGBuZXQvZHNhL3RhZ19kc2EuY2AgaXMganVzdCB0aGUgKnJlZ2lzdHJhdGlvbiogb2YgdGhhdCBzdHJ1Y3QuIFRoZSBtZWF0IG9mIHRoZSBmdW5jdGlvbmFsaXR5Li4uaXQncyByZWFsbHkgaW4gYGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvYC5cblxuQW5kIHRoYXQncyB0aGUga2lja2VyLiBTaW5jZSBgbXY4OGU2eHh4YCBpcyBhICpoYXJkd2FyZSogZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzLCBhbmQgaXQncyBub3QgZW11bGF0ZWQgaW4gUUVNVSAoYXQgbGVhc3Qgbm90IGJ5IGRlZmF1bHQpLCBpdCdzICp1bnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28gdGhlIGNvZGUgdGhlcmUgaXMgYmFzaWNhbGx5IGRlYWQgY29kZSBpbiBteSBzcGVjaWZpYyB1c2UgY2FzZS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIHRoZXJlJ3MgYW55IHdheSB0byBpbnN0YW50aWF0ZSBgbXY4OGU2eHh4YCB2aWEgc29tZSBraW5kIG9mIHNvZnR3YXJlIG1vY2ssIGJ1dCBteSBndXQgdGVsbHMgbWUgaXQncyBwdXJlbHkgaGFyZHdhcmUtYmFzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTg4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjM0LjA5MzM3NTM4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk4Mjk5MDMzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdjg4ZTZ4eHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzozNC40OTE2ODYwMTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk4NTM2ODEwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhIGZpcnN0LXBlcnNvbiwgZXhwZXJ0IHBlcnNwZWN0aXZlLCBhaW1pbmcgZm9yIGEgZnVsc29tZSByZW5kZXJpbmc6XG5cbioqS2VybmVsIFRlc3Rpbmcgb2YgYG12ODhlNnh4eGAgLSBBIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbXY4OGU2eHh4YCBkcml2ZXIgaW4gdGhlIGtlcm5lbCBhZ2FpbiwgYW5kIG15IGZpcnN0IHF1ZXN0aW9uICphbHdheXMqIHBvcHMgdXA6IEFyZSB3ZSB0cnVseSBleGhhdXN0aW5nICphbGwqIHRoZSB0ZXN0aW5nIHBvc3NpYmlsaXRpZXM/IFN1cmUsIEknbSBmYW1pbGlhciB3aXRoIHRoZSBzdGFuZGFyZCBtZXRob2RzLCB0aGUgdHlwaWNhbCBwcm9jZWR1cmVzLCB0aGUgYmFzaWMgY2hlY2tzIHRoYXQgYXJlIGFsbW9zdCBjZXJ0YWlubHkgaW4gcGxhY2UuLi4gYnV0IEkgY2FuJ3QgaGVscCBidXQgd29uZGVyLCBpcyB0aGVyZSBhbm90aGVyIGFuZ2xlPyBJcyB0aGVyZSBhIHN1YnRsZSBjb3JuZXIgY2FzZSwgYW4gb2JzY3VyZSBoYXJkd2FyZSBpbnRlcmFjdGlvbiwgc29tZSBvZmZiZWF0IGNvbmZpZ3VyYXRpb24gc2NlbmFyaW8gdGhhdCB3ZSdyZSBzb21laG93IG1pc3NpbmcgaW4gb3VyIHRlc3Qgc3VpdGU/XG5cbkknbSB0aGlua2luZywgYmV5b25kIHRoZSBvYnZpb3VzLCB3aGF0IGFyZSB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMgd2UncmUgbWFraW5nIGFib3V0IHRoZSBoYXJkd2FyZSdzIGJlaGF2aW9yIG9yIHRoZSBzdXJyb3VuZGluZyBzeXN0ZW0/IEhhdmUgd2UgY292ZXJlZCB0aGUgZWRnZSBjb25kaXRpb25zLCB0aGUgZXJyb3IgcGF0aHMsIHRoZSBsZXNzLXRyYXZlbGVkIGNvbmZpZ3VyYXRpb25zPyBJIHdhbnQgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBqdXN0IGNvbmZpcm1pbmcgd2hhdCB3ZSBhbHJlYWR5IGtub3cgd29ya3MgYnV0IHByb2FjdGl2ZWx5IGh1bnRpbmcgZG93biBwb3RlbnRpYWwgaXNzdWVzIGJlZm9yZSB0aGV5IHN1cmZhY2UgaW4gdGhlIGZpZWxkLiBUaGlzIGlzIG5vdCBhYm91dCBqdXN0IHJ1bm5pbmcgdGhlIHRlc3RzLiBUaGlzIGlzIGFib3V0IG1ha2luZyBzdXJlLCBmcm9tIHRoZSBncm91bmQgdXAsIHdlJ3JlIGJ1aWxkaW5nIGEgcm9jay1zb2xpZCwgcmVsaWFibGUgZHJpdmVyLiBQZXJoYXBzIHRoZSBkb2N1bWVudGF0aW9uIHBvaW50cyB0byBzb21lIG9ic2N1cmUgdGVzdCBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMzNTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzozOC40NzcwNTgyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3MDYyNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm12ODhlNnh4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTAxNDEgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTczPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc0LVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTc2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTIxPW9iai15XFx0XFx0XFx0XFx0Kz0gbWljcm9jaGlwL1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToyMjpvYmoteVxcdFxcdFxcdFxcdCs9IG12ODhlNnh4eC9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtMjMtb2JqLXlcXHRcXHRcXHRcXHQrPSBteGw4NjJ4eC9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTYwNjAuaC01LSAqXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNjA2MC5oOjY6ICogQmFzZWQgb24gbXY4OGU2eHh4LmhcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2MDYwLmgtNy0gKiBDb3B5cmlnaHQgKGMpIDIwMDggTWFydmVsbCBTZW1pY29uZHVjdG9yXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9NVjg4RTZYWFgpICs9IG12ODhlNnh4eC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTozOm12ODhlNnh4eC1vYmpzIDo9IGNoaXAub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6NDptdjg4ZTZ4eHgtb2JqcyArPSBkZXZsaW5rLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjU6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZTo2Om12ODhlNnh4eC1vYmpzICs9IGdsb2JhbDFfYXR1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjc6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMV92dHUub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6ODptdjg4ZTZ4eHgtb2JqcyArPSBnbG9iYWwyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjk6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9hdmIub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MTA6bXY4OGU2eHh4LW9ianMgKz0gZ2xvYmFsMl9zY3JhdGNoLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjExOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IGh3dHN0YW1wLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEyOm12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9MRURTKSArPSBsZWRzLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjEzOm12ODhlNnh4eC1vYmpzICs9IHBjcy02MTg1Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE0Om12ODhlNnh4eC1vYmpzICs9IHBjcy02MzUyLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE1Om12ODhlNnh4eC1vYmpzICs9IHBjcy02Mzl4Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE2Om12ODhlNnh4eC1vYmpzICs9IHBoeS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToxNzptdjg4ZTZ4eHgtb2JqcyArPSBwb3J0Lm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE4Om12ODhlNnh4eC1vYmpzICs9IHBvcnRfaGlkZGVuLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjE5Om12ODhlNnh4eC0kKENPTkZJR19ORVRfRFNBX01WODhFNlhYWF9QVFApICs9IHB0cC5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMDptdjg4ZTZ4eHgtb2JqcyArPSBzZXJkZXMub1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvTWFrZWZpbGU6MjE6bXY4OGU2eHh4LW9ianMgKz0gc21pLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlOjIyOm12ODhlNnh4eC1vYmpzICs9IHN3aXRjaGRldi5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyMzptdjg4ZTZ4eHgtb2JqcyArPSB0cmFjZS5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNDptdjg4ZTZ4eHgtb2JqcyArPSB0Y2Zsb3dlci5vXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9NYWtlZmlsZToyNTptdjg4ZTZ4eHgtb2JqcyArPSB0Y2FtLm9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L01ha2VmaWxlLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RzYS9tdjg4ZTZ4eHguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNi0jaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mjk6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RhdGEvbXY4OGU2eHh4LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00OC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTpzdGF0aWMgdm9pZCBhc3NlcnRfcmVnX2xvY2soc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU3OmludCBtdjg4ZTZ4eHhfcmVhZChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLCB1MTYgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzpcXHRlcnIgPSBtdjg4ZTZ4eHhfc21pX3JlYWQoY2hpcCwgYWRkciwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MzppbnQgbXY4OGU2eHh4X3dyaXRlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Nzk6XFx0ZXJyID0gbXY4OGU2eHh4X3NtaV93cml0ZShjaGlwLCBhZGRyLCByZWcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5OmludCBtdjg4ZTZ4eHhfd2FpdF9tYXNrKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IGFkZHIsIGludCByZWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAtXFx0XFx0XFx0dTE2IG1hc2ssIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMDEtXFx0Zm9yIChpID0gMDsgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgfHwgKGkgXFx1MDAzYyAyKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTAyOlxcdFxcdGVyciA9IG12ODhlNnh4eF9yZWFkKGNoaXAsIGFkZHIsIHJlZywgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEwMy1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTE0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjExNTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcmVhZChjaGlwLCBhZGRyLCByZWcsIFxcdTAwMjZkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMTYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMjY6aW50IG12ODhlNnh4eF93YWl0X2JpdChzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBhZGRyLCBpbnQgcmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEyNy1cXHRcXHQgICAgICAgaW50IGJpdCwgaW50IHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMjgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjEyOTpcXHRyZXR1cm4gbXY4OGU2eHh4X3dhaXRfbWFzayhjaGlwLCBhZGRyLCByZWcsIEJJVChiaXQpLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzMC1cXHRcXHRcXHRcXHQgICB2YWwgPyBCSVQoYml0KSA6IDB4MDAwMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTMzOnN0cnVjdCBtaWlfYnVzICptdjg4ZTZ4eHhfZGVmYXVsdF9tZGlvX2J1cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM0LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxMzU6XFx0c3RydWN0IG12ODhlNnh4eF9tZGlvX2J1cyAqbWRpb19idXM7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTM2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTEzNy1cXHRtZGlvX2J1cyA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcXHUwMDI2Y2hpcC1cXHUwMDNlbWRpb3MsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTM4OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXY4OGU2eHh4X21kaW9fYnVzLCBsaXN0KTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xMzktXFx0aWYgKCFtZGlvX2J1cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNDU6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9tYXNrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE0NzpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xNDgtXFx0dW5zaWduZWQgaW50IG4gPSBkLVxcdTAwM2Vod2lycTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNTM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV91bm1hc2soc3RydWN0IGlycV9kYXRhICpkKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1NC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTU1OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE1Ni1cXHR1bnNpZ25lZCBpbnQgbiA9IGQtXFx1MDAzZWh3aXJxO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE2MTpzdGF0aWMgaXJxcmV0dXJuX3QgbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTE2OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzA6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE3MTpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoxNzI6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE4NzpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MTg4OlxcdFxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2Y3RsMSk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTg5LVxcdFxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMTkwLVxcdFxcdFxcdGdvdG8gdW5sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MTpcXHRcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfcmVhZChjaGlwLCBNVjg4RTZYWFhfRzFfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTItdW5sb2NrOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjE5MzpcXHRcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0xOTQtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwMi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMDM6c3RhdGljIGlycXJldHVybl90IG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNTpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBkZXZfaWQ7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjA2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIwNzpcXHRyZXR1cm4gbXY4OGU2eHh4X2cxX2lycV90aHJlYWRfd29yayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMDgtfVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIwOS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTA6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9idXNfbG9jayhzdHJ1Y3QgaXJxX2RhdGEgKmQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjExLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMTI6XFx0c3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwID0gaXJxX2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxNDpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjE1LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjE3OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9nMV9pcnFfYnVzX3N5bmNfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMTgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjIxOTpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjAtXFx0dTE2IG1hc2sgPSBHRU5NQVNLKGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjI0OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMjUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzE6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3dyaXRlKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCByZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTIzMi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM1LW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyMzY6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjM3LX1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yMzgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjM5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2NoaXAgbXY4OGU2eHh4X2cxX2lycV9jaGlwID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MDpcXHQubmFtZVxcdFxcdFxcdD0gXFxcIm12ODhlNnh4eC1nMVxcXCIsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQxOlxcdC5pcnFfbWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV9tYXNrLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI0MjpcXHQuaXJxX3VubWFza1xcdFxcdD0gbXY4OGU2eHh4X2cxX2lycV91bm1hc2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQzOlxcdC5pcnFfYnVzX2xvY2tcXHRcXHQ9IG12ODhlNnh4eF9nMV9pcnFfYnVzX2xvY2ssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ0OlxcdC5pcnFfYnVzX3N5bmNfdW5sb2NrXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2J1c19zeW5jX3VubG9jayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDUtfTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNDYtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjQ3OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fbWFwKHN0cnVjdCBpcnFfZG9tYWluICpkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI0OC1cXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI1MC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjUxOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGQtXFx1MDAzZWhvc3RfZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNTktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjYwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXY4OGU2eHh4X2cxX2lycV9kb21haW5fb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI2MTpcXHQubWFwXFx0PSBtdjg4ZTZ4eHhfZzFfaXJxX2RvbWFpbl9tYXAsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjYyLVxcdC54bGF0ZVxcdD0gaXJxX2RvbWFpbl94bGF0ZV90d29jZWxsLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY1LS8qIFRvIGJlIGNhbGxlZCB3aXRoIHJlZ19sb2NrIGhlbGQgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNjY6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlX2NvbW1vbihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyNzE6XFx0bXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIFxcdTAwMjZtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yNzItXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI3MzpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI4Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzoyODM6c3RhdGljIHZvaWQgbXY4OGU2eHh4X2cxX2lycV9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yODQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjkwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5MTpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkyOlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MjkzOlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTI5NC19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMjk1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjI5NjpzdGF0aWMgaW50IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0yOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzAzLVxcdFxcdE5VTEwsIGNoaXAtXFx1MDAzZWcxX2lycS5uaXJxcywgMCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMDQ6XFx0XFx0XFx1MDAyNm12ODhlNnh4eF9nMV9pcnFfZG9tYWluX29wcywgY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzA1LVxcdGlmICghY2hpcC1cXHUwMDNlZzFfaXJxLmRvbWFpbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMxMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMTE6XFx0Y2hpcC1cXHUwMDNlZzFfaXJxLmNoaXAgPSBtdjg4ZTZ4eHhfZzFfaXJxX2NoaXA7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzEyLVxcdGNoaXAtXFx1MDAzZWcxX2lycS5tYXNrZWQgPSB+MDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzE0OlxcdGVyciA9IG12ODhlNnh4eF9nMV9yZWFkKGNoaXAsIE1WODhFNlhYWF9HMV9DVEwxLCBcXHUwMDI2bWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzE1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMTktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzIwOlxcdGVyciA9IG12ODhlNnh4eF9nMV93cml0ZShjaGlwLCBNVjg4RTZYWFhfRzFfQ1RMMSwgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzIxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMjQtXFx0LyogUmVhZGluZyB0aGUgaW50ZXJydXB0IHN0YXR1cyBjbGVhcnMgKG1vc3Qgb2YpIHRoZW0gKi9cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjU6XFx0ZXJyID0gbXY4OGU2eHh4X2cxX3JlYWQoY2hpcCwgTVY4OEU2WFhYX0cxX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zMzItXFx0bWFzayBcXHUwMDI2PSB+R0VOTUFTSyhjaGlwLVxcdTAwM2VnMV9pcnEubmlycXMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjMzMzpcXHRtdjg4ZTZ4eHhfZzFfd3JpdGUoY2hpcCwgTVY4OEU2WFhYX0cxX0NUTDEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM0NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNDY6c3RhdGljIGludCBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzUxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM1MjpcXHRlcnIgPSBtdjg4ZTZ4eHhfZzFfaXJxX3NldHVwX2NvbW1vbihjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNTMtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Mi1cXHRzbnByaW50ZihjaGlwLVxcdTAwM2VpcnFfbmFtZSwgc2l6ZW9mKGNoaXAtXFx1MDAzZWlycV9uYW1lKSxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozNjM6XFx0XFx0IFxcXCJtdjg4ZTZ4eHgtJXNcXFwiLCBkZXZfbmFtZShjaGlwLVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY1OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2Ni1cXHRlcnIgPSByZXF1ZXN0X3RocmVhZGVkX2lycShjaGlwLVxcdTAwM2VpcnEsIE5VTEwsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzY3OlxcdFxcdFxcdFxcdCAgIG12ODhlNnh4eF9nMV9pcnFfdGhyZWFkX2ZuLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM2OC1cXHRcXHRcXHRcXHQgICBJUlFGX09ORVNIT1QgfCBJUlFGX1NIQVJFRCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNjktXFx0XFx0XFx0XFx0ICAgY2hpcC1cXHUwMDNlaXJxX25hbWUsIGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3MDpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzcxLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzcyOlxcdFxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzc2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3NzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfaXJxX3BvbGwoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaylcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zNzgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM3OTpcXHRzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAgPSBjb250YWluZXJfb2Yod29yayxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IG12ODhlNnh4eF9jaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4MS1cXHRcXHRcXHRcXHRcXHRcXHQgICBpcnFfcG9sbF93b3JrLndvcmspO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4MjpcXHRtdjg4ZTZ4eHhfZzFfaXJxX3RocmVhZF93b3JrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODg6c3RhdGljIGludCBtdjg4ZTZ4eHhfaXJxX3BvbGxfc2V0dXAoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6MzkyOlxcdGVyciA9IG12ODhlNnh4eF9nMV9pcnFfc2V0dXBfY29tbW9uKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM5My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzk2LVxcdGt0aHJlYWRfaW5pdF9kZWxheWVkX3dvcmsoXFx1MDAyNmNoaXAtXFx1MDAzZWlycV9wb2xsX3dvcmssXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzk3OlxcdFxcdFxcdFxcdCAgbXY4OGU2eHh4X2lycV9wb2xsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zOTgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MDgtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDA5OnN0YXRpYyB2b2lkIG12ODhlNnh4eF9pcnFfcG9sbF9mcmVlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00MTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDEzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxNDpcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE1OlxcdG12ODhlNnh4eF9nMV9pcnFfZnJlZV9jb21tb24oY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NDE2OlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQxNy19XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDE4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQxOTpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQyMC1cXHRcXHRcXHRcXHRcXHQgICBpbnQgcG9ydCwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ0MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0NDE6c3RhdGljIGludCBtdjg4ZTZ4eHhfcG9ydF9zZXR1cF9tYWMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NDItXFx0XFx0XFx0XFx0ICAgIGludCBsaW5rLCBpbnQgc3BlZWQsIGludCBkdXBsZXgsIGludCBwYXVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ2Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0Njg6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LCBtb2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00NjktcmVzdG9yZV9saW5rOlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDc1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ3NjpzdGF0aWMgaW50IG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy00Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDgyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ4MzpzdGF0aWMgaW50IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTQ5MS1cXHRpZiAoY2hpcC1cXHUwMDNlaW5mby1cXHUwMDNlZmFtaWx5ID09IE1WODhFNlhYWF9GQU1JTFlfNjI1MClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo0OTI6XFx0XFx0cmV0dXJuIG12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjQ5NDpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnJlZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNDk1LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTUwNT1zdGF0aWMgY29uc3QgdTggbXY4OGU2MTg1X3BoeV9pbnRlcmZhY2VfbW9kZXNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUxNC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1MTU6c3RhdGljIHZvaWQgbXY4OGU2MDk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MTYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTIxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjUyMjpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTUyMy1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX01JSSwgY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01MzMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTM0OnN0YXRpYyB2b2lkIG12ODhlNjE4NV9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTM1LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NDg6c3RhdGljIGNvbnN0IHU4IG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTQ5LVxcdFtNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfTUlJX1BIWV1cXHQ9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SRVZNSUksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjItXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTYzOnN0YXRpYyB2b2lkIG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUodTggY21vZGUsIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZClcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NjQte1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NTpcXHRpZiAoY21vZGUgXFx1MDAzYyBBUlJBWV9TSVpFKG12ODhlNnh4eF9waHlfaW50ZXJmYWNlX21vZGVzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NjpcXHQgICAgbXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjU2NzpcXHRcXHRfX3NldF9iaXQobXY4OGU2eHh4X3BoeV9pbnRlcmZhY2VfbW9kZXNbY21vZGVdLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTU2OC1cXHRlbHNlIGlmIChjbW9kZSA9PSBNVjg4RTZYWFhfUE9SVF9TVFNfQ01PREVfUkdNSUkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz01NzI9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo1NzM6bXY4OGU2MjUwX3NldHVwX3N1cHBvcnRlZF9pbnRlcmZhY2VzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNTc0LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01NzktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NTgwOlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3JlYWQoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCBcXHUwMDI2cmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy01ODEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjIxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYyMjpzdGF0aWMgdm9pZCBtdjg4ZTYyNTBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyMy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjI0LXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MjU6XFx0aWYgKCFtdjg4ZTZ4eHhfcGh5X2lzX2ludGVybmFsKGNoaXAsIHBvcnQpKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYyNi1cXHRcXHRtdjg4ZTYyNTBfc2V0dXBfc3VwcG9ydGVkX2ludGVyZmFjZXMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzMC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2MzE6c3RhdGljIHZvaWQgbXY4OGU2MzUxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02MzItXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjM2LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjYzNzpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTYzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDM6c3RhdGljIGludCBtdjg4ZTYzeHhfZ2V0X3BvcnRfc2VyZGVzX2Ntb2RlKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NDg6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfcmVhZChjaGlwLCBwb3J0LCBNVjg4RTZYWFhfUE9SVF9TVFMsIFxcdTAwMjZyZWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY0OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjU2LVxcdHZhbCA9IHJlZyBcXHUwMDI2IH5NVjg4RTZYWFhfUE9SVF9TVFNfUEhZX0RFVEVDVDtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NTc6XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfd3JpdGUoY2hpcCwgcG9ydCwgTVY4OEU2WFhYX1BPUlRfU1RTLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY1OC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY2MTpcXHRlcnIgPSBtdjg4ZTZ4eHhfcG9ydF9yZWFkKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjYyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjUtXFx0LyogUmVzdG9yZSBQSFlfREVURUNUIHZhbHVlICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY2OlxcdGVyciA9IG12ODhlNnh4eF9wb3J0X3dyaXRlKGNoaXAsIHBvcnQsIE1WODhFNlhYWF9QT1JUX1NUUywgcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY3Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NzM6c3RhdGljIHZvaWQgbXY4OGU2MzUyX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NzQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjc5LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjY4MDpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5NS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Njk2OlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjk3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY5OS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MDA6c3RhdGljIHZvaWQgbXY4OGU2MzJ4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MDEtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzA2LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcwNzpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcxOC1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzE5OlxcdFxcdFxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzIwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTcyMi1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MjM6c3RhdGljIHZvaWQgbXY4OGU2MzQxX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MjQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzI4LVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjcyOTpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTczMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc0NC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3NDU6c3RhdGljIHZvaWQgbXY4OGU2MzkwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03NDYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzUwLVxcdC8qIFRyYW5zbGF0ZSB0aGUgZGVmYXVsdCBjbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjc1MTpcXHRtdjg4ZTZ4eHhfdHJhbnNsYXRlX2Ntb2RlKGNoaXAtXFx1MDAzZXBvcnRzW3BvcnRdLmNtb2RlLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTc2Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3Njc6c3RhdGljIHZvaWQgbXY4OGU2MzkweF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzY4LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODAxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjgwMjpzdGF0aWMgdm9pZCBtdjg4ZTYzOTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MDMtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04MTAtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODExOlxcdG12ODhlNnh4eF90cmFuc2xhdGVfY21vZGUoY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uY21vZGUsIHN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg0NjpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NDctXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg0OC17XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODQ5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1MC1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTE6XFx0bXY4OGU2eHh4X3JlZ19sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Mi1cXHRjaGlwLVxcdTAwM2VpbmZvLVxcdTAwM2VvcHMtXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoY2hpcCwgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo4NTM6XFx0bXY4OGU2eHh4X3JlZ191bmxvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODU0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg1NTpcXHRpZiAobXY4OGU2eHh4X3BoeV9pc19pbnRlcm5hbChjaGlwLCBwb3J0KSkge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg1Ni1cXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9ODY0PXN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg2NTptdjg4ZTZ4eHhfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY2LVxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODY4LVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODY5OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04NzAtXFx0c3RydWN0IHBoeWxpbmtfcGNzICpwY3MgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODc4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg3OTpzdGF0aWMgaW50IG12ODhlNnh4eF9tYWNfcHJlcGFyZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODAtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODgyLVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6ODgzOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04ODQtXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTMtXFx0ICAgIGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluaykge1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NDpcXHRcXHRtdjg4ZTZ4eHhfcmVnX2xvY2soY2hpcCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtODk1LVxcdFxcdGVyciA9IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTg5Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIExJTktfRk9SQ0VEX0RPV04pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjg5NzpcXHRcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy04OTgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTAyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkwMzpzdGF0aWMgdm9pZCBtdjg4ZTZ4eHhfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDQtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTA3LVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTA4OlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MDktXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTEtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTEyOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MTMtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTE0OlxcdGlmIChtb2RlICE9IE1MT19BTl9QSFkgfHwgIW12ODhlNnh4eF9waHlfaXNfaW50ZXJuYWwoY2hpcCwgcG9ydCkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5MTU6XFx0XFx0ZXJyID0gbXY4OGU2eHh4X3BvcnRfY29uZmlnX2ludGVyZmFjZShjaGlwLCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkxNi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBzdGF0ZS1cXHUwMDNlaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTkyMS1lcnJfdW5sb2NrOlxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjkyMjpcXHRtdjg4ZTZ4eHhfcmVnX3VubG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MjctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTI4OnN0YXRpYyBpbnQgbXY4OGU2eHh4X21hY19maW5pc2goc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTI5LVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTMxLVxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTMyOlxcdHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05MzMtXFx0aW50IHBvcnQgPSBkcC1cXHUwMDNlaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDEtXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTQyOlxcdG12ODhlNnh4eF9yZWdfbG9jayhjaGlwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDYtXFx0ICAgICAgY2hpcC1cXHUwMDNlcG9ydHNbcG9ydF0uaW50ZXJmYWNlICE9IGludGVyZmFjZSkgfHxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NDc6XFx0ICAgICAobW9kZSA9PSBNTE9fQU5fUEhZIFxcdTAwMjZcXHUwMDI2IG12ODhlNnh4eF9wb3J0X3BwdV91cGRhdGVzKGNoaXAsIHBvcnQpKSkpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtOTQ4LVxcdFxcdGVyciA9IGNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZW9wcy1cXHUwMDNlcG9ydF9zZXRfbGluayhjaGlwLCBwb3J0LCBMSU5LX1VORk9SQ0VEKTtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy05NDktXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6OTUwOlxcdG12ODhlNnh4eF9yZWdfdW5sb2NrKGNoaXApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTk1Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo5NTc6c3RhdGljIHZvaWQgbXY4OGU2eHh4X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjM4LjY3NDEzNDE3NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTE4NDk2OTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiB0aGUgTmV3IFRhZyBQcm90b2NvbCoqXG5cbk9rYXksIHNvIHRoaXMgYG12ODhlNnh4eGAgZHJpdmVyIGlzIHN0cmljdGx5IGhhcmR3YXJlLWZvY3VzZWQsIG5vIFFFTVUgZW11bGF0aW9uIHRoZXJlLCB3aGljaCBpcyB3aGF0IEkgc3VzcGVjdGVkLiBUaGUgZWRpdHMgaW4gYG5ldC9kc2EvdGFnX2RzYS5jYCBhcmUgc2ltcGx5IHJlZ2lzdGVyaW5nIHRoaXMgbmV3IHRhZyBwcm90b2NvbDsgaXQncyBzcGVjaWZpYyB0byB0aGUgTWFydmVsbCBzd2l0Y2guIE15IGluaXRpYWwgdGhvdWdodCB3YXM6IGNvdWxkIGEgY2xldmVyIHVzZXIgY3JhZnQgYSBkdW1teSBuZXRkZXYgYW5kIHBvaW50IGl0IHRvIHRoZSBuZXcgYGVkc2EtcHRwLXJlc2VydmVkMi10c2AgdGFnPyBCdXQgdGhlbiwgSSByZW1lbWJlcmVkIHRoYXQgRFNBIHRhZyBwcm90b2NvbHMgYXJlIGZ1bmRhbWVudGFsbHkgbGlua2VkIHRvIERTQSBzd2l0Y2hlcy4gVW5sZXNzIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIERTQSBzd2l0Y2gsIHRoaXMgYXBwcm9hY2ggaXMgZGVhZCBpbiB0aGUgd2F0ZXIuXG5cbklmIHdlIGRvbid0IGhhdmUgYSBEU0Egc3dpdGNoIGVtdWxhdGVkLCBhbmQgdGhlIG9ubHkgb25lIGF2YWlsYWJsZSAoYGRzYV9sb29wYCkgbGV2ZXJhZ2VzIGBEU0FfVEFHX1BST1RPX05PTkVgLCB0aGlzIHRhZyBwcm90b2NvbCBpcyB1bnJlYWNoYWJsZS4gSG1tbSwgY291bGQgd2UgbWFuaXB1bGF0ZSBgZHNhX2xvb3BgIGFuZCBvdmVycmlkZSBpdHMgdGFnIHByb3RvY29sPyBJdCdzIGEgbG9uZyBzaG90LCBidXQgd29ydGggY2hlY2tpbmcuIEknbGwgbmVlZCB0byBzZWUgaWYgYGRzYV9sb29wYCBvZmZlcnMgYW55IG1lY2hhbmlzbSB0byBjaGFuZ2UgaXRzIHRhZyBwcm90b2NvbCBkeW5hbWljYWxseS4gQSBxdWljayBzZWFyY2ggZm9yIGBjaGFuZ2VfdGFnX3Byb3RvY29sYCB3aXRoaW4gYGRzYV9sb29wLmNgIHlpZWxkZWQgbm90aGluZy4gSSBuZWVkIHRvIGV4YW1pbmUgdGhlIGBkc2Ffc3dpdGNoX29wc2Agc3RydWN0IHdpdGhpbiBgZHNhX2xvb3AuY2AgbmV4dCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODE3MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzo0NS41OTI2MzQ5NjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTAzOTc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkc2Ffc3dpdGNoX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMjY9c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzM1LVxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjQ1Ljc2NzY4MDU5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMjA4NzUzMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHdoYXQgSSdtIGFib3V0IHRvIGRvOlxuXG4qKkFuYWx5emluZyB0aGUgYGRzYV9sb29wX2RyaXZlcmAgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkc2FfbG9vcF9kcml2ZXJgIGltcGxlbWVudGF0aW9uLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgd2hhdCB0aGlzIGRyaXZlciBkb2VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgcm9sZSBpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSXMgaXQgaGFuZGxpbmcgZGF0YSB0cmFuc2ZlcnMsIG1hbmFnaW5nIHJlc291cmNlcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEknbSBnb2luZyB0byBiZSBsb29raW5nIGZvciBrZXkgZnVuY3Rpb25zLCBkYXRhIHN0cnVjdHVyZXMsIGFuZCBhbnkgc3BlY2lmaWMgYWxnb3JpdGhtcyBpdCBtaWdodCBiZSBlbXBsb3lpbmcuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIHByb2JhYmx5IGdvaW5nIHRvIGJlIG1lbnRhbGx5IG1hcHBpbmcgdGhpcyB0byBvdGhlciBzaW1pbGFyIGRyaXZlcnMgSSd2ZSB3b3JrZWQgd2l0aCBpbiB0aGUgcGFzdCBhbmQgbG9va2luZyBmb3IgY29tbW9uIHBhdHRlcm5zIG9yIGFueSB1bnVzdWFsIGFzcGVjdHMuIEknbGwgbGlrZWx5IGJlIGFzc2Vzc2luZyBpdHMgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGluIG15IGhlYWQgYXMgd2VsbCwgYXMgSSBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg4ODEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzo1MC43ODg1NjE1OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM0LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzM0OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbiAzMzU6XFx0XFx0LmdldF90YWdfcHJvdG9jb2xcXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcXG4gMzM2OlxcdFxcdC5zZXR1cFxcdFxcdFxcdD0gZHNhX2xvb3Bfc2V0dXAsXFxuIDMzNzpcXHRcXHQudGVhcmRvd25cXHRcXHQ9IGRzYV9sb29wX3RlYXJkb3duLFxcbiAzMzg6XFx0XFx0LmdldF9zdHJpbmdzXFx0XFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcXG4gMzM5OlxcdFxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuIDM0MDpcXHRcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxcbiAzNDE6XFx0XFx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuIDM0MjpcXHRcXHQucGh5X3JlYWRcXHRcXHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxcbiAzNDM6XFx0XFx0LnBoeV93cml0ZVxcdFxcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxcbiAzNDQ6XFx0XFx0LnBvcnRfYnJpZGdlX2pvaW5cXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXFxuIDM0NTpcXHRcXHQucG9ydF9icmlkZ2VfbGVhdmVcXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxcbiAzNDY6XFx0XFx0LnBvcnRfc3RwX3N0YXRlX3NldFxcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbiAzNDc6XFx0XFx0LnBvcnRfdmxhbl9maWx0ZXJpbmdcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXFxuIDM0ODpcXHRcXHQucG9ydF92bGFuX2FkZFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcXG4gMzQ5OlxcdFxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxcbiAzNTA6XFx0XFx0LnBvcnRfY2hhbmdlX210dVxcdD0gZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1LFxcbiAzNTE6XFx0XFx0LnBvcnRfbWF4X210dVxcdFxcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxcbiAzNTI6XFx0XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuIDM1MzpcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDoyMzo1MC43ODg3MTM2OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDA0MDQ1Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3Qgb24gRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGRvZXNuJ3QgaW1wbGVtZW50IGBjaGFuZ2VfdGFnX3Byb3RvY29sYCwgd2hpY2ggbWVhbnMgYGRzYV9sb29wYCB3aWxsIGRlZmF1bHQgdG8gYERTQV9UQUdfUFJPVE9fTk9ORWAuIE15IGZpcnN0IHRob3VnaHQgaXM6IGFyZSB0aGVyZSAqYW55KiBvdGhlciB3YXlzIHRvIHRlc3QgdGhlc2UgRFNBIHRhZyBwcm90b2NvbHM/IFN5emthbGxlciBoYXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IHBhY2tldHMgaW50byBkZXZpY2VzLCBzbyBpZiBhIG5ldHdvcmsgZGV2aWNlIHVzZXMgYGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzYCwgdGhlbiB0aGVvcmV0aWNhbGx5IGl0cyBgeG1pdGAgYW5kIGByY3ZgIGZ1bmN0aW9ucyBjb3VsZCBiZSB0cmlnZ2VyZWQuXG5cbkJ1dCBoYW5nIG9u4oCmIGBlZHNhX3B0cF9yZXNlcnZlZDJfdHNfbmV0ZGV2X29wc2AgcmVsaWVzIG9uIGBlZHNhX3htaXRgIGFuZCBgZWRzYV9yY3ZgLCB3aGljaCBhcmUgKmFscmVhZHkqIGJlaW5nIGZ1enplZCB0aHJvdWdoIGBlZHNhX25ldGRldl9vcHNgLiBTbywgd2hhdCdzICpuZXcqIGhlcmU/IExvb2tpbmcgYXQgYHRhZ19kc2EuY2AsIGl0IHNlZW1zIHRoZSBvbmx5IGFkZGl0aW9uIGlzIHRoZSByZWdpc3RyYXRpb24gb2YgYSBzdHJ1Y3QuIFRoZSByZWFsIGxvZ2ljIGlzIGFjdHVhbGx5IGJ1cmllZCBpbiBgZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9gLCB3aGljaCBpcyBhIGhhcmR3YXJlIGRyaXZlci5cblxuQW5kIHRoYXQncyB0aGUga2lja2VyLiBTaW5jZSBgbXY4OGU2eHh4YCBpcyBhIGhhcmR3YXJlIGRyaXZlciwgaXQncyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gVGhlIG5ldyBjb2RlIGluIGB0YWdfZHNhLmNgIGlzIGp1c3QgYSBzdHJ1Y3QgZGVmaW5pdGlvbiBhbmQgcmVnaXN0cmF0aW9uIOKAkyBpdCBkb2Vzbid0IGNvbnRhaW4gYW55IG5ldyBleGVjdXRhYmxlIGxvZ2ljLCBpdCdzIGp1c3QgcmV1c2luZyBgZWRzYV94bWl0YCBhbmQgYGVkc2FfcmN2YC4gVGhpcyBtZWFucyB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBTbyBJIHNob3VsZCBkZWZpbml0ZWx5IHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbSBnb2luZyB0byBkb3VibGUgY2hlY2sgaWYgdGhlcmUncyBhbnkgb3RoZXIgcGxhY2Ugd2hlcmUgYERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTYCBpcyBiZWluZyB1c2VkLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTYyOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjIzOjU3Ljc5Mjc2MjkyNVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3NTg2MTU2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzI2Mj1zdGF0aWMgaW50IG12ODhlNnh4eF9zZXR1cF9wb3J0X21vZGUoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTMyNzQtXFx0aWYgKGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0EgfHxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozMjc1OlxcdCAgICBjaGlwLVxcdTAwM2V0YWdfcHJvdG9jb2wgPT0gRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMpXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzI3Ni1cXHRcXHRyZXR1cm4gbXY4OGU2eHh4X3NldF9wb3J0X21vZGVfZWRzYShjaGlwLCBwb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTY2NTk9c3RhdGljIGludCBtdjg4ZTZ4eHhfY2hhbmdlX3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjcxLVxcdHN3aXRjaCAocHJvdG8pIHtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjcyOlxcdGNhc2UgRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFM6XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY3My1cXHRcXHRpZiAoIWNoaXAtXFx1MDAzZWluZm8tXFx1MDAzZXN1cHBvcnRzX3B0cF9lbWJlZGRlZF90cylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5oPTgzMT1zdGF0aWMgaW5saW5lIGJvb2wgbXY4OGU2eHh4X3B0cF9lbWJlZGRlZF90cyhzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXApXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmgtODMyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaDo4MzM6XFx0cmV0dXJuIGNoaXAtXFx1MDAzZXRhZ19wcm90b2NvbCA9PSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUztcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuaC04MzQtfVxcbi0tXFxuaW5jbHVkZS9uZXQvZHNhLmg9MjY9c3RydWN0IHRjX2FjdGlvbjtcXG4tLVxcbmluY2x1ZGUvbmV0L2RzYS5oLTYxLSNkZWZpbmUgRFNBX1RBR19QUk9UT19ORVRDX1ZBTFVFXFx0XFx0MzNcXG5pbmNsdWRlL25ldC9kc2EuaDo2MjojZGVmaW5lIERTQV9UQUdfUFJPVE9fRURTQV9QVFBfUkVTRVJWRUQyX1RTX1ZBTFVFXFx0MzRcXG5pbmNsdWRlL25ldC9kc2EuaC02My1cXG5pbmNsdWRlL25ldC9kc2EuaD02ND1lbnVtIGRzYV90YWdfcHJvdG9jb2wge1xcbi0tXFxuaW5jbHVkZS9uZXQvZHNhLmgtOTgtXFx0RFNBX1RBR19QUk9UT19ORVRDXFx0XFx0PSBEU0FfVEFHX1BST1RPX05FVENfVkFMVUUsXFxuaW5jbHVkZS9uZXQvZHNhLmg6OTk6XFx0RFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UU19WQUxVRSxcXG5pbmNsdWRlL25ldC9kc2EuaC0xMDAtfTtcXG4tLVxcbm5ldC9kc2EvdGFnX2RzYS5jPTQxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9kZXZpY2Vfb3BzIGVkc2FfcHRwX3Jlc2VydmVkMl90c19uZXRkZXZfb3BzID0ge1xcbm5ldC9kc2EvdGFnX2RzYS5jLTQxMi1cXHQubmFtZVxcdFxcdCA9IEVEU0FfUFRQX1JFU0VSVkVEMl9UU19OQU1FLFxcbm5ldC9kc2EvdGFnX2RzYS5jOjQxMzpcXHQucHJvdG9cXHRcXHQgPSBEU0FfVEFHX1BST1RPX0VEU0FfUFRQX1JFU0VSVkVEMl9UUyxcXG5uZXQvZHNhL3RhZ19kc2EuYy00MTQtXFx0LnhtaXRcXHRcXHQgPSBlZHNhX3htaXQsXFxuLS1cXG5uZXQvZHNhL3RhZ19kc2EuYz00MTk9RFNBX1RBR19EUklWRVIoZWRzYV9wdHBfcmVzZXJ2ZWQyX3RzX25ldGRldl9vcHMpO1xcbm5ldC9kc2EvdGFnX2RzYS5jOjQyMDpNT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19FRFNBX1BUUF9SRVNFUlZFRDJfVFMsXFxubmV0L2RzYS90YWdfZHNhLmMtNDIxLVxcdFxcdFxcdCAgICBFRFNBX1BUUF9SRVNFUlZFRDJfVFNfTkFNRSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjI0OjAxLjg2ODYzMDk2M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzI3ODY3NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgUGF0aCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgaW5kaWNhdGVzIHRoZSB2dWxuZXJhYmlsaXR5ICpvbmx5KiBleGlzdHMgd2l0aGluIHRoZSBgbXY4OGU2eHh4YCBkcml2ZXIgYW5kIGl0cyByZWxhdGVkIGB0YWdfZHNhLmNgIGZpbGUuIFRoZSBwcm9ibGVtLCBhcyBJIHNlZSBpdCwgaXMgdGhhdCBgbXY4OGU2eHh4YCBpcyBhIGhhcmR3YXJlIGRyaXZlci4gQW5kLCBhcyBhIGhhcmR3YXJlIGRyaXZlciwgaXQgaXMgKm5vdCogZW11bGF0ZWQgd2l0aGluIFFFTVUuIFRoYXQgbWVhbnMgdGhlIHNwZWNpZmljIGNvZGUgc2VjdGlvbiBpbiBxdWVzdGlvbiBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGEgUUVNVS1iYXNlZCBmdXp6aW5nIGVudmlyb25tZW50LiBHaXZlbiB0aGlzIGZ1bmRhbWVudGFsIGxpbWl0YXRpb24sIGF0dGVtcHRpbmcgdG8gZnV6eiB0aGlzIGNvZGUgaXMgYSB3YXN0ZSBvZiByZXNvdXJjZXMuIFRoZXJlZm9yZSwgSSB3aWxsIG1hcmsgdGhpcyBjb2RlIHBhdGggYXMgYFdvcnRoRnV6emluZz1mYWxzZWAgYW5kIGNsZWFybHkgc3RhdGUgdGhpcyBoYXJkd2FyZSBkZXBlbmRlbmN5IGFzIHRoZSBwcmltYXJ5IHJlYXNvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0NjMsIk91dHB1dFRva2VucyI6MTY5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MjQ6MDguMTk2NTAyNjRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgpIGFuZCBhZGRzIGEgbmV3IERTQSB0YWcgcHJvdG9jb2wgaW4gbmV0L2RzYS90YWdfZHNhLmMuIFRoZSBNYXJ2ZWxsIDg4RTZ4eHggZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBoYXJkd2FyZSBzd2l0Y2hlcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gVGhlIG5ldyB0YWcgcHJvdG9jb2wgaW4gdGFnX2RzYS5jIHNpbXBseSByZXVzZXMgZXhpc3RpbmcgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZnVuY3Rpb25zIChlZHNhX3htaXQsIGVkc2FfcmN2KSBhbmQgY29udGFpbnMgbm8gbmV3IGV4ZWN1dGFibGUgbG9naWMuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCA4OEU2eHh4IEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgpIGFuZCBhZGRzIGEgbmV3IERTQSB0YWcgcHJvdG9jb2wgaW4gbmV0L2RzYS90YWdfZHNhLmMuIFRoZSBNYXJ2ZWxsIDg4RTZ4eHggZHJpdmVyIGlzIGZvciBwaHlzaWNhbCBoYXJkd2FyZSBzd2l0Y2hlcyBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gVGhlIG5ldyB0YWcgcHJvdG9jb2wgaW4gdGFnX2RzYS5jIHNpbXBseSByZXVzZXMgZXhpc3RpbmcgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZnVuY3Rpb25zIChlZHNhX3htaXQsIGVkc2FfcmN2KSBhbmQgY29udGFpbnMgbm8gbmV3IGV4ZWN1dGFibGUgbG9naWMuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdvgt[1] Phase: Running StartedAt: 2026-07-27 14:24:19 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdvgt[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-27 14:24:19 +0000 UTC FinishedAt: 2026-07-27 14:24:48 +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,}