Name: series-workflowv8hmd Phase: Succeeded StartedAt: 2026-07-09 03:06:19 +0000 UTC FinishedAt: 2026-07-09 08:22:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[0] Phase: Succeeded StartedAt: 2026-07-09 03:06:19 +0000 UTC FinishedAt: 2026-07-09 03:28:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 03:06:19 +0000 UTC FinishedAt: 2026-07-09 03:28:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08030ddb87b4c6c6a2c03c82731b5e188f02f5b9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_IGMP_SNOOPING", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08030ddb87b4c6c6a2c03c82731b5e188f02f5b9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_IGMP_SNOOPING", "IPV6" ], "series_id": "350db9d7-11f8-4b61-9ff8-3d20ceb29f5d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_multicast_port_query_queue_work", "br_multicast_query_queue_work", "__br_multicast_send_query" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAzOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfSUdNUF9TTk9PUElORyYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayYjMzQ7LAogICAgJiMzNDticl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29yayYjMzQ7LAogICAgJiMzNDtfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmlkZ2UgbXVsdGljYXN0IGxvZ2ljIHRvIHF1ZXVlIElHTVAvTUxEIHF1ZXJpZXMgdG8gYSB3b3JrcXVldWUgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZW0gc3luY2hyb25vdXNseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGJyaWRnZSBtdWx0aWNhc3QgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIGRvZXMgbm90IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVha3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDM6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ODIxNmI0NDQ0MTQ3ODVlMzMwMGI5MDE4MGEwZWMxODgwNjE3ZTA3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAwMzoyNTo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jIGIvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuY1xuaW5kZXggNmIzYWM0NzNmZDIyOGIuLmYxMTJmYmIzNzRjMGRlIDEwMDY0NFxuLS0tIGEvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuY1xuQEAgLTkyNiw3ICYjNDM7OTI2LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1cbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydF9ncm91cCAqcGcsXG4gXHRcdFx0XHRcdFx0ICAgIF9fYmUzMiBpcF9kc3QsIF9fYmUzMiBncm91cCxcbiBcdFx0XHRcdFx0XHQgICAgYm9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbXF0LFxuLVx0XHRcdFx0XHRcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIHU4IHNmbGFnLFxuIFx0XHRcdFx0XHRcdCAgICBib29sICpuZWVkX3JleG1pdClcbiB7XG4gXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwID0gcGcgPyBwZy1cdTAwM2VrZXkucG9ydCA6IE5VTEw7XG5AQCAtMTAwNiw3ICYjNDM7MTAwNiw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA0X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtXG4gXHRza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCBza2ItXHUwMDNlbGVuKTtcbiBcdG1ydCA9IGdyb3VwID8gYnJtY3R4LVx1MDAzZW11bHRpY2FzdF9sYXN0X21lbWJlcl9pbnRlcnZhbCA6XG4gXHRcdCAgICAgIGJybWN0eC1cdTAwM2VtdWx0aWNhc3RfcXVlcnlfcmVzcG9uc2VfaW50ZXJ2YWw7XG4tXHQqaWdtcF90eXBlID0gSUdNUF9IT1NUX01FTUJFUlNISVBfUVVFUlk7XG4gXG4gXHRzd2l0Y2ggKGJybWN0eC1cdTAwM2VtdWx0aWNhc3RfaWdtcF92ZXJzaW9uKSB7XG4gXHRjYXNlIDI6XG5AQCAtMTA3Miw3ICYjNDM7MTA3MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA2X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtXG4gXHRcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqaXA2X2RzdCxcbiBcdFx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpncm91cCxcbiBcdFx0XHRcdFx0XHQgICAgYm9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbHF0LFxuLVx0XHRcdFx0XHRcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIHU4IHNmbGFnLFxuIFx0XHRcdFx0XHRcdCAgICBib29sICpuZWVkX3JleG1pdClcbiB7XG4gXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwID0gcGcgPyBwZy1cdTAwM2VrZXkucG9ydCA6IE5VTEw7XG5AQCAtMTE2Niw3ICYjNDM7MTE2NSw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA2X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtXG4gXHRpbnRlcnZhbCA9IGlwdjZfYWRkcl9hbnkoZ3JvdXApID9cbiBcdFx0XHRicm1jdHgtXHUwMDNlbXVsdGljYXN0X3F1ZXJ5X3Jlc3BvbnNlX2ludGVydmFsIDpcbiBcdFx0XHRicm1jdHgtXHUwMDNlbXVsdGljYXN0X2xhc3RfbWVtYmVyX2ludGVydmFsO1xuLVx0KmlnbXBfdHlwZSA9IElDTVBWNl9NR01fUVVFUlk7XG4gXHRzd2l0Y2ggKGJybWN0eC1cdTAwM2VtdWx0aWNhc3RfbWxkX3ZlcnNpb24pIHtcbiBcdGNhc2UgMTpcbiBcdFx0bWxkcSA9IChzdHJ1Y3QgbWxkX21zZyAqKWljbXA2X2hkcihza2IpO1xuQEAgLTEyMzcsOCAmIzQzOzEyMzUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxuIFx0XHRcdFx0XHRcdHN0cnVjdCBicl9pcCAqaXBfZHN0LFxuIFx0XHRcdFx0XHRcdHN0cnVjdCBicl9pcCAqZ3JvdXAsXG4gXHRcdFx0XHRcdFx0Ym9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbXF0LFxuLVx0XHRcdFx0XHRcdHU4IHNmbGFnLCB1OCAqaWdtcF90eXBlLFxuLVx0XHRcdFx0XHRcdGJvb2wgKm5lZWRfcmV4bWl0KVxuJiM0MztcdFx0XHRcdFx0XHR1OCBzZmxhZywgYm9vbCAqbmVlZF9yZXhtaXQpXG4ge1xuIFx0X19iZTMyIGlwNF9kc3Q7XG4gXG5AQCAtMTI0OCw4ICYjNDM7MTI0NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4gXHRcdHJldHVybiBicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLFxuIFx0XHRcdFx0XHRcdCAgICBpcDRfZHN0LCBncm91cC1cdTAwM2Vkc3QuaXA0LFxuIFx0XHRcdFx0XHRcdCAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCxcbi1cdFx0XHRcdFx0XHQgICAgc2ZsYWcsIGlnbXBfdHlwZSxcbi1cdFx0XHRcdFx0XHQgICAgbmVlZF9yZXhtaXQpO1xuJiM0MztcdFx0XHRcdFx0XHQgICAgc2ZsYWcsIG5lZWRfcmV4bWl0KTtcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbiBcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6IHtcbiBcdFx0c3RydWN0IGluNl9hZGRyIGlwNl9kc3Q7XG5AQCAtMTI2Myw4ICYjNDM7MTI1OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4gXHRcdHJldHVybiBicl9pcDZfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLFxuIFx0XHRcdFx0XHRcdCAgICBcdTAwMjZpcDZfZHN0LCBcdTAwMjZncm91cC1cdTAwM2Vkc3QuaXA2LFxuIFx0XHRcdFx0XHRcdCAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCxcbi1cdFx0XHRcdFx0XHQgICAgc2ZsYWcsIGlnbXBfdHlwZSxcbi1cdFx0XHRcdFx0XHQgICAgbmVlZF9yZXhtaXQpO1xuJiM0MztcdFx0XHRcdFx0XHQgICAgc2ZsYWcsIG5lZWRfcmV4bWl0KTtcbiBcdH1cbiAjZW5kaWZcbiBcdH1cbkBAIC0xNzc0LDYgJiM0MzsxNzY5LDY0IEBAIHN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9zZWxlY3Rfb3duX3F1ZXJpZXIoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiAjZW5kaWZcbiB9XG4gXG4mIzQzO3N0YXRpYyB1OCBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHNrYi1cdTAwM2Vwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkgPyBJR01QX0hPU1RfTUVNQkVSU0hJUF9RVUVSWSA6XG4mIzQzO1x0XHRcdFx0XHRcdCAgSUNNUFY2X01HTV9RVUVSWTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0ICpwbWN0eDtcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiYjNDM7XG4mIzQzO1x0cG1jdHggPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCxcbiYjNDM7XHRcdFx0ICAgICBxdWVyeV9xdWV1ZV93b3JrKTtcbiYjNDM7XG4mIzQzO1x0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNmxpc3QpO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZS5sb2NrKTtcbiYjNDM7XHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSwgXHUwMDI2bGlzdCk7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XG4mIzQzO1xuJiM0MztcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZsaXN0KSkpIHtcbiYjNDM7XHRcdHU4IHF1ZXJ5X3R5cGUgPSBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZShza2IpO1xuJiM0MztcbiYjNDM7XHRcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiYjNDM7XHRcdGJyX211bHRpY2FzdF9jb3VudChwbWN0eC1cdTAwM2Vwb3J0LVx1MDAzZWJyLCBwbWN0eC1cdTAwM2Vwb3J0LCBza2IsXG4mIzQzO1x0XHRcdFx0ICAgcXVlcnlfdHlwZSwgQlJfTUNBU1RfRElSX1RYKTtcbiYjNDM7XHRcdE5GX0hPT0soTkZQUk9UT19CUklER0UsIE5GX0JSX0xPQ0FMX09VVCwgZGV2X25ldChza2ItXHUwMDNlZGV2KSxcbiYjNDM7XHRcdFx0TlVMTCwgc2tiLCBOVUxMLCBza2ItXHUwMDNlZGV2LCBicl9kZXZfcXVldWVfcHVzaF94bWl0KTtcbiYjNDM7XHRcdGxvY2FsX2JoX2VuYWJsZSgpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eDtcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiYjNDM7XG4mIzQzO1x0YnJtY3R4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0LCBxdWVyeV9xdWV1ZV93b3JrKTtcbiYjNDM7XG4mIzQzO1x0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNmxpc3QpO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XG4mIzQzO1x0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlLCBcdTAwMjZsaXN0KTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XG4mIzQzO1xuJiM0MztcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZsaXN0KSkpIHtcbiYjNDM7XHRcdHU4IHF1ZXJ5X3R5cGUgPSBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZShza2IpO1xuJiM0MztcbiYjNDM7XHRcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiYjNDM7XHRcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXHUwMDNlYnIsIE5VTEwsIHNrYiwgcXVlcnlfdHlwZSxcbiYjNDM7XHRcdFx0XHQgICBCUl9NQ0FTVF9ESVJfUlgpO1xuJiM0MztcdFx0bmV0aWZfcngoc2tiKTtcbiYjNDM7XHRcdGxvY2FsX2JoX2VuYWJsZSgpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7I2RlZmluZSBCUl9NVUxUSUNBU1RfUVVFUllfUVVFVUVfTEVOX01BWFx0MTAwMFxuJiM0MztcbiBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0ICpwbWN0eCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnRfZ3JvdXAgKnBnLFxuQEAgLTE3ODMsMjggJiM0MzsxODM2LDMwIEBAIHN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiBcdFx0XHRcdCAgICAgIHU4IHNmbGFnLFxuIFx0XHRcdFx0ICAgICAgYm9vbCAqbmVlZF9yZXhtaXQpXG4ge1xuJiM0MztcdHN0cnVjdCBza19idWZmX2hlYWQgKnF1ZXVlO1xuIFx0Ym9vbCBvdmVyX2xtcXQgPSAhIXNmbGFnO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi1cdHU4IGlnbXBfdHlwZTtcbiBcbiBcdGlmICghYnJfbXVsdGljYXN0X2N0eF9zaG91bGRfdXNlKGJybWN0eCwgcG1jdHgpIHx8XG4gXHQgICAgIWJyX211bHRpY2FzdF9jdHhfbWF0Y2hlc192bGFuX3Nub29waW5nKGJybWN0eCkpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRxdWV1ZSA9IHBtY3R4ID8gXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWUgOiBcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWU7XG4mIzQzO1xuIGFnYWluX3VuZGVyX2xtcXQ6XG4mIzQzO1x0aWYgKHNrYl9xdWV1ZV9sZW5fbG9ja2xlc3MocXVldWUpIFx1MDAzZT0gQlJfTVVMVElDQVNUX1FVRVJZX1FVRVVFX0xFTl9NQVgpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0c2tiID0gYnJfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLCBpcF9kc3QsIGdyb3VwLFxuLVx0XHRcdFx0ICAgICAgIHdpdGhfc3Jjcywgb3Zlcl9sbXF0LCBzZmxhZywgXHUwMDI2aWdtcF90eXBlLFxuJiM0MztcdFx0XHRcdCAgICAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCwgc2ZsYWcsXG4gXHRcdFx0XHQgICAgICAgbmVlZF9yZXhtaXQpO1xuIFx0aWYgKCFza2IpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChwbWN0eCkge1xuIFx0XHRza2ItXHUwMDNlZGV2ID0gcG1jdHgtXHUwMDNlcG9ydC1cdTAwM2VkZXY7XG4tXHRcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXHUwMDNlYnIsIHBtY3R4LVx1MDAzZXBvcnQsIHNrYiwgaWdtcF90eXBlLFxuLVx0XHRcdFx0ICAgQlJfTUNBU1RfRElSX1RYKTtcbi1cdFx0TkZfSE9PSyhORlBST1RPX0JSSURHRSwgTkZfQlJfTE9DQUxfT1VULFxuLVx0XHRcdGRldl9uZXQocG1jdHgtXHUwMDNlcG9ydC1cdTAwM2VkZXYpLCBOVUxMLCBza2IsIE5VTEwsIHNrYi1cdTAwM2VkZXYsXG4tXHRcdFx0YnJfZGV2X3F1ZXVlX3B1c2hfeG1pdCk7XG4mIzQzO1x0XHRza2JfcXVldWVfdGFpbChxdWV1ZSwgc2tiKTtcbiYjNDM7XHRcdHF1ZXVlX3dvcmsoc3lzdGVtX2hpZ2hwcmlfd3EsIFx1MDAyNnBtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmspO1xuIFxuIFx0XHRpZiAob3Zlcl9sbXF0IFx1MDAyNlx1MDAyNiB3aXRoX3NyY3MgXHUwMDI2XHUwMDI2IHNmbGFnKSB7XG4gXHRcdFx0b3Zlcl9sbXF0ID0gZmFsc2U7XG5AQCAtMTgxMiw5ICYjNDM7MTg2Nyw4IEBAIHN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiBcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0YnJfbXVsdGljYXN0X3NlbGVjdF9vd25fcXVlcmllcihicm1jdHgsIGdyb3VwLCBza2IpO1xuLVx0XHRicl9tdWx0aWNhc3RfY291bnQoYnJtY3R4LVx1MDAzZWJyLCBOVUxMLCBza2IsIGlnbXBfdHlwZSxcbi1cdFx0XHRcdCAgIEJSX01DQVNUX0RJUl9SWCk7XG4tXHRcdG5ldGlmX3J4KHNrYik7XG4mIzQzO1x0XHRza2JfcXVldWVfdGFpbChxdWV1ZSwgc2tiKTtcbiYjNDM7XHRcdHF1ZXVlX3dvcmsoc3lzdGVtX2hpZ2hwcmlfd3EsIFx1MDAyNmJybWN0eC1cdTAwM2VxdWVyeV9xdWV1ZV93b3JrKTtcbiBcdH1cbiB9XG4gXG5AQCAtMTk5Nyw2ICYjNDM7MjA1MSwxMCBAQCB2b2lkIGJyX211bHRpY2FzdF9wb3J0X2N0eF9pbml0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQsXG4gXHRwbWN0eC1cdTAwM2Vwb3J0ID0gcG9ydDtcbiBcdHBtY3R4LVx1MDAzZXZsYW4gPSB2bGFuO1xuIFx0cG1jdHgtXHUwMDNlbXVsdGljYXN0X3JvdXRlciA9IE1EQl9SVFJfVFlQRV9URU1QX1FVRVJZO1xuJiM0MztcbiYjNDM7XHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnBtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlKTtcbiYjNDM7XHRJTklUX1dPUksoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayk7XG4mIzQzO1xuIFx0dGltZXJfc2V0dXAoXHUwMDI2cG1jdHgtXHUwMDNlaXA0X21jX3JvdXRlcl90aW1lcixcbiBcdFx0ICAgIGJyX2lwNF9tdWx0aWNhc3Rfcm91dGVyX2V4cGlyZWQsIDApO1xuIFx0dGltZXJfc2V0dXAoXHUwMDI2cG1jdHgtXHUwMDNlaXA0X293bl9xdWVyeS50aW1lcixcbkBAIC0yMDM4LDYgJiM0MzsyMDk2LDggQEAgdm9pZCBicl9tdWx0aWNhc3RfcG9ydF9jdHhfZGVpbml0KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4KVxuIFx0ZGVsIHw9IGJyX2lwNF9tdWx0aWNhc3RfcnBvcnRfZGVsKHBtY3R4KTtcbiBcdGJyX211bHRpY2FzdF9ycG9ydF9kZWxfbm90aWZ5KHBtY3R4LCBkZWwpO1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YnItXHUwMDNlbXVsdGljYXN0X2xvY2spO1xuJiM0MztcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yayk7XG4mIzQzO1x0X19za2JfcXVldWVfcHVyZ2UoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWUpO1xuIH1cbiBcbiBpbnQgYnJfbXVsdGljYXN0X2FkZF9wb3J0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQpXG5AQCAtNDExMiw2ICYjNDM7NDE3Miw5IEBAIHZvaWQgYnJfbXVsdGljYXN0X2N0eF9pbml0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbiBcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXHUwMDI2YnJtY3R4LVx1MDAzZWlwNl9xdWVyaWVyLnNlcSwgXHUwMDI2YnItXHUwMDNlbXVsdGljYXN0X2xvY2spO1xuICNlbmRpZlxuIFxuJiM0MztcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlKTtcbiYjNDM7XHRJTklUX1dPUksoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmssIGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrKTtcbiYjNDM7XG4gXHR0aW1lcl9zZXR1cChcdTAwMjZicm1jdHgtXHUwMDNlaXA0X21jX3JvdXRlcl90aW1lcixcbiBcdFx0ICAgIGJyX2lwNF9tdWx0aWNhc3RfbG9jYWxfcm91dGVyX2V4cGlyZWQsIDApO1xuIFx0dGltZXJfc2V0dXAoXHUwMDI2YnJtY3R4LVx1MDAzZWlwNF9vdGhlcl9xdWVyeS50aW1lcixcbkBAIC00MTM1LDYgJiM0Mzs0MTk4LDggQEAgdm9pZCBicl9tdWx0aWNhc3RfY3R4X2luaXQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIHZvaWQgYnJfbXVsdGljYXN0X2N0eF9kZWluaXQoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eClcbiB7XG4gXHRfX2JyX211bHRpY2FzdF9zdG9wKGJybWN0eCk7XG4mIzQzO1x0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yayk7XG4mIzQzO1x0X19za2JfcXVldWVfcHVyZ2UoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlKTtcbiB9XG4gXG4gdm9pZCBicl9tdWx0aWNhc3RfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIpXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9wcml2YXRlLmggYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxuaW5kZXggZDU1ZWE5NTE2ZTNlMzYuLmY4Zjc3YTJkNDg5MTY4IDEwMDY0NFxuLS0tIGEvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXG5AQCAtMTMxLDYgJiM0MzsxMzEsOCBAQCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0IHtcbiBcdHVuc2lnbmVkIGNoYXJcdFx0XHRtdWx0aWNhc3Rfcm91dGVyO1xuIFx0dTMyXHRcdFx0XHRtZGJfbl9lbnRyaWVzO1xuIFx0dTMyXHRcdFx0XHRtZGJfbWF4X2VudHJpZXM7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmZfaGVhZCAgICAgICAgICAgICBxdWVyeV9xdWV1ZTtcbiYjNDM7XHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgICAgICAgICAgIHF1ZXJ5X3F1ZXVlX3dvcms7XG4gI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xuIH07XG4gXG5AQCAtMTY3LDYgJiM0MzsxNjksOCBAQCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCB7XG4gXHRzdHJ1Y3QgYnJpZGdlX21jYXN0X293bl9xdWVyeVx0aXA2X293bl9xdWVyeTtcbiBcdHN0cnVjdCBicmlkZ2VfbWNhc3RfcXVlcmllclx0aXA2X3F1ZXJpZXI7XG4gI2VuZGlmIC8qIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpICovXG4mIzQzO1x0c3RydWN0IHNrX2J1ZmZfaGVhZCAgICAgICAgICAgICBxdWVyeV9xdWV1ZTtcbiYjNDM7XHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgICAgICAgICAgIHF1ZXJ5X3F1ZXVlX3dvcms7XG4gI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xuIH07XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDM6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0JSSURHRV9JR01QX1NOT09QSU5HJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O2JyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O19fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJyaWRnZSBtdWx0aWNhc3QgbG9naWMgdG8gcXVldWUgSUdNUC9NTEQgcXVlcmllcyB0byBhIHdvcmtxdWV1ZSBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlbSBzeW5jaHJvbm91c2x5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgYnJpZGdlIG11bHRpY2FzdCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcgZG9lcyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG1lbW9yeSBsZWFrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTgyMTZiNDQ0NDE0Nzg1ZTMzMDBiOTAxODBhMGVjMTg4MDYxN2UwNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDkgMDM6MjU6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jIGIvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYwppbmRleCA2YjNhYzQ3M2ZkMjI4Yi4uZjExMmZiYjM3NGMwZGUgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYwpAQCAtOTI2LDcgJiM0Mzs5MjYsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX2lwNF9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybQogCQkJCQkJICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnRfZ3JvdXAgKnBnLAogCQkJCQkJICAgIF9fYmUzMiBpcF9kc3QsIF9fYmUzMiBncm91cCwKIAkJCQkJCSAgICBib29sIHdpdGhfc3JjcywgYm9vbCBvdmVyX2xtcXQsCi0JCQkJCQkgICAgdTggc2ZsYWcsIHU4ICppZ21wX3R5cGUsCiYjNDM7CQkJCQkJICAgIHU4IHNmbGFnLAogCQkJCQkJICAgIGJvb2wgKm5lZWRfcmV4bWl0KQogewogCXN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAgPSBwZyA/IHBnLSZndDtrZXkucG9ydCA6IE5VTEw7CkBAIC0xMDA2LDcgJiM0MzsxMDA2LDYgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm0KIAlza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCBza2ItJmd0O2xlbik7CiAJbXJ0ID0gZ3JvdXAgPyBicm1jdHgtJmd0O211bHRpY2FzdF9sYXN0X21lbWJlcl9pbnRlcnZhbCA6CiAJCSAgICAgIGJybWN0eC0mZ3Q7bXVsdGljYXN0X3F1ZXJ5X3Jlc3BvbnNlX2ludGVydmFsOwotCSppZ21wX3R5cGUgPSBJR01QX0hPU1RfTUVNQkVSU0hJUF9RVUVSWTsKIAogCXN3aXRjaCAoYnJtY3R4LSZndDttdWx0aWNhc3RfaWdtcF92ZXJzaW9uKSB7CiAJY2FzZSAyOgpAQCAtMTA3Miw3ICYjNDM7MTA3MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA2X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtCiAJCQkJCQkgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICppcDZfZHN0LAogCQkJCQkJICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZ3JvdXAsCiAJCQkJCQkgICAgYm9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbHF0LAotCQkJCQkJICAgIHU4IHNmbGFnLCB1OCAqaWdtcF90eXBlLAomIzQzOwkJCQkJCSAgICB1OCBzZmxhZywKIAkJCQkJCSAgICBib29sICpuZWVkX3JleG1pdCkKIHsKIAlzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwID0gcGcgPyBwZy0mZ3Q7a2V5LnBvcnQgOiBOVUxMOwpAQCAtMTE2Niw3ICYjNDM7MTE2NSw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA2X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtCiAJaW50ZXJ2YWwgPSBpcHY2X2FkZHJfYW55KGdyb3VwKSA/CiAJCQlicm1jdHgtJmd0O211bHRpY2FzdF9xdWVyeV9yZXNwb25zZV9pbnRlcnZhbCA6CiAJCQlicm1jdHgtJmd0O211bHRpY2FzdF9sYXN0X21lbWJlcl9pbnRlcnZhbDsKLQkqaWdtcF90eXBlID0gSUNNUFY2X01HTV9RVUVSWTsKIAlzd2l0Y2ggKGJybWN0eC0mZ3Q7bXVsdGljYXN0X21sZF92ZXJzaW9uKSB7CiAJY2FzZSAxOgogCQltbGRxID0gKHN0cnVjdCBtbGRfbXNnICopaWNtcDZfaGRyKHNrYik7CkBAIC0xMjM3LDggJiM0MzsxMjM1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCwKIAkJCQkJCXN0cnVjdCBicl9pcCAqaXBfZHN0LAogCQkJCQkJc3RydWN0IGJyX2lwICpncm91cCwKIAkJCQkJCWJvb2wgd2l0aF9zcmNzLCBib29sIG92ZXJfbG1xdCwKLQkJCQkJCXU4IHNmbGFnLCB1OCAqaWdtcF90eXBlLAotCQkJCQkJYm9vbCAqbmVlZF9yZXhtaXQpCiYjNDM7CQkJCQkJdTggc2ZsYWcsIGJvb2wgKm5lZWRfcmV4bWl0KQogewogCV9fYmUzMiBpcDRfZHN0OwogCkBAIC0xMjQ4LDggJiM0MzsxMjQ1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCwKIAkJcmV0dXJuIGJyX2lwNF9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoYnJtY3R4LCBwbWN0eCwgcGcsCiAJCQkJCQkgICAgaXA0X2RzdCwgZ3JvdXAtJmd0O2RzdC5pcDQsCiAJCQkJCQkgICAgd2l0aF9zcmNzLCBvdmVyX2xtcXQsCi0JCQkJCQkgICAgc2ZsYWcsIGlnbXBfdHlwZSwKLQkJCQkJCSAgICBuZWVkX3JleG1pdCk7CiYjNDM7CQkJCQkJICAgIHNmbGFnLCBuZWVkX3JleG1pdCk7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKIAljYXNlIGh0b25zKEVUSF9QX0lQVjYpOiB7CiAJCXN0cnVjdCBpbjZfYWRkciBpcDZfZHN0OwpAQCAtMTI2Myw4ICYjNDM7MTI1OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsCiAJCXJldHVybiBicl9pcDZfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLAogCQkJCQkJICAgICZhbXA7aXA2X2RzdCwgJmFtcDtncm91cC0mZ3Q7ZHN0LmlwNiwKIAkJCQkJCSAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCwKLQkJCQkJCSAgICBzZmxhZywgaWdtcF90eXBlLAotCQkJCQkJICAgIG5lZWRfcmV4bWl0KTsKJiM0MzsJCQkJCQkgICAgc2ZsYWcsIG5lZWRfcmV4bWl0KTsKIAl9CiAjZW5kaWYKIAl9CkBAIC0xNzc0LDYgJiM0MzsxNzY5LDY0IEBAIHN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9zZWxlY3Rfb3duX3F1ZXJpZXIoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCwKICNlbmRpZgogfQogCiYjNDM7c3RhdGljIHU4IGJyX211bHRpY2FzdF9xdWVyeV90eXBlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7ewomIzQzOwlyZXR1cm4gc2tiLSZndDtwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkgPyBJR01QX0hPU1RfTUVNQkVSU0hJUF9RVUVSWSA6CiYjNDM7CQkJCQkJICBJQ01QVjZfTUdNX1FVRVJZOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4OwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CiYjNDM7CXBtY3R4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQsCiYjNDM7CQkJICAgICBxdWVyeV9xdWV1ZV93b3JrKTsKJiM0MzsKJiM0MzsJX19za2JfcXVldWVfaGVhZF9pbml0KCZhbXA7bGlzdCk7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO3BtY3R4LSZndDtxdWVyeV9xdWV1ZS5sb2NrKTsKJiM0MzsJc2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQoJmFtcDtwbWN0eC0mZ3Q7cXVlcnlfcXVldWUsICZhbXA7bGlzdCk7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7cG1jdHgtJmd0O3F1ZXJ5X3F1ZXVlLmxvY2spOwomIzQzOwomIzQzOwl3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoJmFtcDtsaXN0KSkpIHsKJiM0MzsJCXU4IHF1ZXJ5X3R5cGUgPSBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZShza2IpOwomIzQzOwomIzQzOwkJbG9jYWxfYmhfZGlzYWJsZSgpOwomIzQzOwkJYnJfbXVsdGljYXN0X2NvdW50KHBtY3R4LSZndDtwb3J0LSZndDticiwgcG1jdHgtJmd0O3BvcnQsIHNrYiwKJiM0MzsJCQkJICAgcXVlcnlfdHlwZSwgQlJfTUNBU1RfRElSX1RYKTsKJiM0MzsJCU5GX0hPT0soTkZQUk9UT19CUklER0UsIE5GX0JSX0xPQ0FMX09VVCwgZGV2X25ldChza2ItJmd0O2RldiksCiYjNDM7CQkJTlVMTCwgc2tiLCBOVUxMLCBza2ItJmd0O2RldiwgYnJfZGV2X3F1ZXVlX3B1c2hfeG1pdCk7CiYjNDM7CQlsb2NhbF9iaF9lbmFibGUoKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4OwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CiYjNDM7CWJybWN0eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCwgcXVlcnlfcXVldWVfd29yayk7CiYjNDM7CiYjNDM7CV9fc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO2xpc3QpOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDticm1jdHgtJmd0O3F1ZXJ5X3F1ZXVlLmxvY2spOwomIzQzOwlza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCgmYW1wO2JybWN0eC0mZ3Q7cXVlcnlfcXVldWUsICZhbXA7bGlzdCk7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7YnJtY3R4LSZndDtxdWVyeV9xdWV1ZS5sb2NrKTsKJiM0MzsKJiM0MzsJd2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKCZhbXA7bGlzdCkpKSB7CiYjNDM7CQl1OCBxdWVyeV90eXBlID0gYnJfbXVsdGljYXN0X3F1ZXJ5X3R5cGUoc2tiKTsKJiM0MzsKJiM0MzsJCWxvY2FsX2JoX2Rpc2FibGUoKTsKJiM0MzsJCWJyX211bHRpY2FzdF9jb3VudChicm1jdHgtJmd0O2JyLCBOVUxMLCBza2IsIHF1ZXJ5X3R5cGUsCiYjNDM7CQkJCSAgIEJSX01DQVNUX0RJUl9SWCk7CiYjNDM7CQluZXRpZl9yeChza2IpOwomIzQzOwkJbG9jYWxfYmhfZW5hYmxlKCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7I2RlZmluZSBCUl9NVUxUSUNBU1RfUVVFUllfUVVFVUVfTEVOX01BWAkxMDAwCiYjNDM7CiBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsCiAJCQkJICAgICAgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCAqcG1jdHgsCiAJCQkJICAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydF9ncm91cCAqcGcsCkBAIC0xNzgzLDI4ICYjNDM7MTgzNiwzMCBAQCBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsCiAJCQkJICAgICAgdTggc2ZsYWcsCiAJCQkJICAgICAgYm9vbCAqbmVlZF9yZXhtaXQpCiB7CiYjNDM7CXN0cnVjdCBza19idWZmX2hlYWQgKnF1ZXVlOwogCWJvb2wgb3Zlcl9sbXF0ID0gISFzZmxhZzsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwotCXU4IGlnbXBfdHlwZTsKIAogCWlmICghYnJfbXVsdGljYXN0X2N0eF9zaG91bGRfdXNlKGJybWN0eCwgcG1jdHgpIHx8CiAJICAgICFicl9tdWx0aWNhc3RfY3R4X21hdGNoZXNfdmxhbl9zbm9vcGluZyhicm1jdHgpKQogCQlyZXR1cm47CiAKJiM0MzsJcXVldWUgPSBwbWN0eCA/ICZhbXA7cG1jdHgtJmd0O3F1ZXJ5X3F1ZXVlIDogJmFtcDticm1jdHgtJmd0O3F1ZXJ5X3F1ZXVlOwomIzQzOwogYWdhaW5fdW5kZXJfbG1xdDoKJiM0MzsJaWYgKHNrYl9xdWV1ZV9sZW5fbG9ja2xlc3MocXVldWUpICZndDs9IEJSX01VTFRJQ0FTVF9RVUVSWV9RVUVVRV9MRU5fTUFYKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCXNrYiA9IGJyX211bHRpY2FzdF9hbGxvY19xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgaXBfZHN0LCBncm91cCwKLQkJCQkgICAgICAgd2l0aF9zcmNzLCBvdmVyX2xtcXQsIHNmbGFnLCAmYW1wO2lnbXBfdHlwZSwKJiM0MzsJCQkJICAgICAgIHdpdGhfc3Jjcywgb3Zlcl9sbXF0LCBzZmxhZywKIAkJCQkgICAgICAgbmVlZF9yZXhtaXQpOwogCWlmICghc2tiKQogCQlyZXR1cm47CiAKIAlpZiAocG1jdHgpIHsKIAkJc2tiLSZndDtkZXYgPSBwbWN0eC0mZ3Q7cG9ydC0mZ3Q7ZGV2OwotCQlicl9tdWx0aWNhc3RfY291bnQoYnJtY3R4LSZndDticiwgcG1jdHgtJmd0O3BvcnQsIHNrYiwgaWdtcF90eXBlLAotCQkJCSAgIEJSX01DQVNUX0RJUl9UWCk7Ci0JCU5GX0hPT0soTkZQUk9UT19CUklER0UsIE5GX0JSX0xPQ0FMX09VVCwKLQkJCWRldl9uZXQocG1jdHgtJmd0O3BvcnQtJmd0O2RldiksIE5VTEwsIHNrYiwgTlVMTCwgc2tiLSZndDtkZXYsCi0JCQlicl9kZXZfcXVldWVfcHVzaF94bWl0KTsKJiM0MzsJCXNrYl9xdWV1ZV90YWlsKHF1ZXVlLCBza2IpOwomIzQzOwkJcXVldWVfd29yayhzeXN0ZW1faGlnaHByaV93cSwgJmFtcDtwbWN0eC0mZ3Q7cXVlcnlfcXVldWVfd29yayk7CiAKIAkJaWYgKG92ZXJfbG1xdCAmYW1wOyZhbXA7IHdpdGhfc3JjcyAmYW1wOyZhbXA7IHNmbGFnKSB7CiAJCQlvdmVyX2xtcXQgPSBmYWxzZTsKQEAgLTE4MTIsOSAmIzQzOzE4NjcsOCBAQCBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsCiAJCX0KIAl9IGVsc2UgewogCQlicl9tdWx0aWNhc3Rfc2VsZWN0X293bl9xdWVyaWVyKGJybWN0eCwgZ3JvdXAsIHNrYik7Ci0JCWJyX211bHRpY2FzdF9jb3VudChicm1jdHgtJmd0O2JyLCBOVUxMLCBza2IsIGlnbXBfdHlwZSwKLQkJCQkgICBCUl9NQ0FTVF9ESVJfUlgpOwotCQluZXRpZl9yeChza2IpOwomIzQzOwkJc2tiX3F1ZXVlX3RhaWwocXVldWUsIHNrYik7CiYjNDM7CQlxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCAmYW1wO2JybWN0eC0mZ3Q7cXVlcnlfcXVldWVfd29yayk7CiAJfQogfQogCkBAIC0xOTk3LDYgJiM0MzsyMDUxLDEwIEBAIHZvaWQgYnJfbXVsdGljYXN0X3BvcnRfY3R4X2luaXQoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcG9ydCwKIAlwbWN0eC0mZ3Q7cG9ydCA9IHBvcnQ7CiAJcG1jdHgtJmd0O3ZsYW4gPSB2bGFuOwogCXBtY3R4LSZndDttdWx0aWNhc3Rfcm91dGVyID0gTURCX1JUUl9UWVBFX1RFTVBfUVVFUlk7CiYjNDM7CiYjNDM7CXNrYl9xdWV1ZV9oZWFkX2luaXQoJmFtcDtwbWN0eC0mZ3Q7cXVlcnlfcXVldWUpOwomIzQzOwlJTklUX1dPUksoJmFtcDtwbWN0eC0mZ3Q7cXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayk7CiYjNDM7CiAJdGltZXJfc2V0dXAoJmFtcDtwbWN0eC0mZ3Q7aXA0X21jX3JvdXRlcl90aW1lciwKIAkJICAgIGJyX2lwNF9tdWx0aWNhc3Rfcm91dGVyX2V4cGlyZWQsIDApOwogCXRpbWVyX3NldHVwKCZhbXA7cG1jdHgtJmd0O2lwNF9vd25fcXVlcnkudGltZXIsCkBAIC0yMDM4LDYgJiM0MzsyMDk2LDggQEAgdm9pZCBicl9tdWx0aWNhc3RfcG9ydF9jdHhfZGVpbml0KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4KQogCWRlbCB8PSBicl9pcDRfbXVsdGljYXN0X3Jwb3J0X2RlbChwbWN0eCk7CiAJYnJfbXVsdGljYXN0X3Jwb3J0X2RlbF9ub3RpZnkocG1jdHgsIGRlbCk7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtici0mZ3Q7bXVsdGljYXN0X2xvY2spOwomIzQzOwljYW5jZWxfd29ya19zeW5jKCZhbXA7cG1jdHgtJmd0O3F1ZXJ5X3F1ZXVlX3dvcmspOwomIzQzOwlfX3NrYl9xdWV1ZV9wdXJnZSgmYW1wO3BtY3R4LSZndDtxdWVyeV9xdWV1ZSk7CiB9CiAKIGludCBicl9tdWx0aWNhc3RfYWRkX3BvcnQoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcG9ydCkKQEAgLTQxMTIsNiAmIzQzOzQxNzIsOSBAQCB2b2lkIGJyX211bHRpY2FzdF9jdHhfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsCiAJc2VxY291bnRfc3BpbmxvY2tfaW5pdCgmYW1wO2JybWN0eC0mZ3Q7aXA2X3F1ZXJpZXIuc2VxLCAmYW1wO2JyLSZndDttdWx0aWNhc3RfbG9jayk7CiAjZW5kaWYKIAomIzQzOwlza2JfcXVldWVfaGVhZF9pbml0KCZhbXA7YnJtY3R4LSZndDtxdWVyeV9xdWV1ZSk7CiYjNDM7CUlOSVRfV09SSygmYW1wO2JybWN0eC0mZ3Q7cXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmspOwomIzQzOwogCXRpbWVyX3NldHVwKCZhbXA7YnJtY3R4LSZndDtpcDRfbWNfcm91dGVyX3RpbWVyLAogCQkgICAgYnJfaXA0X211bHRpY2FzdF9sb2NhbF9yb3V0ZXJfZXhwaXJlZCwgMCk7CiAJdGltZXJfc2V0dXAoJmFtcDticm1jdHgtJmd0O2lwNF9vdGhlcl9xdWVyeS50aW1lciwKQEAgLTQxMzUsNiAmIzQzOzQxOTgsOCBAQCB2b2lkIGJyX211bHRpY2FzdF9jdHhfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsCiB2b2lkIGJyX211bHRpY2FzdF9jdHhfZGVpbml0KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgpCiB7CiAJX19icl9tdWx0aWNhc3Rfc3RvcChicm1jdHgpOwomIzQzOwljYW5jZWxfd29ya19zeW5jKCZhbXA7YnJtY3R4LSZndDtxdWVyeV9xdWV1ZV93b3JrKTsKJiM0MzsJX19za2JfcXVldWVfcHVyZ2UoJmFtcDticm1jdHgtJmd0O3F1ZXJ5X3F1ZXVlKTsKIH0KIAogdm9pZCBicl9tdWx0aWNhc3RfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIpCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaCBiL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oCmluZGV4IGQ1NWVhOTUxNmUzZTM2Li5mOGY3N2EyZDQ4OTE2OCAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9wcml2YXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmgKQEAgLTEzMSw2ICYjNDM7MTMxLDggQEAgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCB7CiAJdW5zaWduZWQgY2hhcgkJCW11bHRpY2FzdF9yb3V0ZXI7CiAJdTMyCQkJCW1kYl9uX2VudHJpZXM7CiAJdTMyCQkJCW1kYl9tYXhfZW50cmllczsKJiM0MzsJc3RydWN0IHNrX2J1ZmZfaGVhZCAgICAgICAgICAgICBxdWVyeV9xdWV1ZTsKJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrOwogI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqLwogfTsKIApAQCAtMTY3LDYgJiM0MzsxNjksOCBAQCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCB7CiAJc3RydWN0IGJyaWRnZV9tY2FzdF9vd25fcXVlcnkJaXA2X293bl9xdWVyeTsKIAlzdHJ1Y3QgYnJpZGdlX21jYXN0X3F1ZXJpZXIJaXA2X3F1ZXJpZXI7CiAjZW5kaWYgLyogSVNfRU5BQkxFRChDT05GSUdfSVBWNikgKi8KJiM0MzsJc3RydWN0IHNrX2J1ZmZfaGVhZCAgICAgICAgICAgICBxdWVyeV9xdWV1ZTsKJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrOwogI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqLwogfTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzA3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJyaWRnZSBNdWx0aWNhc3QgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBMaW51eCBrZXJuZWwsIGFuZCBpdCYjMzk7cyB0b3VjaGluZyB0aGUgYnJpZGdlIG11bHRpY2FzdCBjb2RlLCBzcGVjaWZpY2FsbHkgYGJyX211bHRpY2FzdC5jYCBhbmQgYGJyX3ByaXZhdGUuaGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCB0aGV5JiMzOTtyZSBjaGFuZ2luZyB0aGUgcXVlcnkgaGFuZGxpbmcuJiMzNDsgSXQgbG9va3MgbGlrZSBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBzeW5jaHJvbm91cyBzZW5kaW5nIG9mIElHTVAvTUxEIHF1ZXJpZXMsIHRoZXkmIzM5O3JlIHF1ZXVlaW5nIHRoZW0gdXAgaW4gYSB3b3JrcXVldWUsIGBxdWVyeV9xdWV1ZV93b3JrYCwgZm9yIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLiBJbnRlcmVzdGluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgc2hpZnQgZnJvbSBkaXJlY3QgZXhlY3V0aW9uIHRvIGFuIGFzeW5jaHJvbm91cyBtb2RlbCBpbiB0aGUgYnJpZGdlIG11bHRpY2FzdCBsb2dpYy4KCkkgc2VlIHRoZXkmIzM5O3ZlIGludHJvZHVjZWQgYSBjb3VwbGUgb2YgbmV3IGZ1bmN0aW9ucywgYGJyX211bHRpY2FzdF9wb3J0X3F1ZXJ5X3F1ZXVlX3dvcmtgIGFuZCBgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmtgLCB3aGljaCBhcmUgbGlrZWx5IHRoZSBtZWNoYW5pc21zIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBxdWV1ZS4gQW5kLCBzbWFydCwgdGhleSYjMzk7dmUgaW5jbHVkZWQgYSBxdWV1ZSBsZW5ndGggbGltaXQsIGBCUl9NVUxUSUNBU1RfUVVFUllfUVVFVUVfTEVOX01BWGAsIGNhcHBlZCBhdCAxMDAwLiBUaGF0JiMzOTtzIGdvb2QgcHJhY3RpY2UgdG8gcHJldmVudCByZXNvdXJjZSBleGhhdXN0aW9uIGluIGNhc2Ugb2YgYW4gaXNzdWUuCgpOb3csIGxldCYjMzk7cyBnZXQgZG93biB0byB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZ29pbmcgdG8gcGxheSBuaWNlIHdpdGggb3RoZXIgY29uZmlndXJlZCBmZWF0dXJlcy4gVGhlIGNvZGUmIzM5O3MgY2xlYXJseSBndWFyZGVkIGJ5IGBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdgLCB3aGljaCwgYXMgSSBjYW4gc2VlIGluIGBicl9wcml2YXRlLmhgLCBpcyB0aGUga2V5LiBPYnZpb3VzbHksIHRoZSBicmlkZ2Ugc3Vic3lzdGVtIG5lZWRzIHRvIGJlIGVuYWJsZWQgdG9vLCBzbyBgQ09ORklHX0JSSURHRWAgaXMgYSBtdXN0LiBgQ09ORklHX0lQVjZgIGlzIGFsc28gaW52b2x2ZWQsIGFuZCB3aGlsZSBub3Qgc3RyaWN0bHkgZXNzZW50aWFsIGZvciB0aGUgZW50aXJlIHBhdGNoLCBpdCBkb2VzIGltcGFjdCBhIHBvcnRpb24gb2YgaXQsIHNvIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgYXMgd2VsbC4gU28sIG5leHQgc3RlcCwgSSBuZWVkIHRvIHZlcmlmeSB0aGVzZSBjb25maWd1cmF0aW9ucy4gR290IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX0JSSURHRV9ORVRGSUxURVIpICYjNDM7PSBicl9uZXRmaWx0ZXIub1xubmV0L2JyaWRnZS9NYWtlZmlsZS0yMC1cbm5ldC9icmlkZ2UvTWFrZWZpbGU6MjE6YnJpZGdlLSQoQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HKSAmIzQzOz0gYnJfbXVsdGljYXN0Lm8gYnJfbWRiLm8gYnJfbXVsdGljYXN0X2VodC5vXG5uZXQvYnJpZGdlL01ha2VmaWxlLTIyLVxuLS1cbm5ldC9icmlkZ2UvYnJfZm9yd2FyZC5jPTIwMT12b2lkIGJyX2Zsb29kKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYnJpZGdlL2JyX2ZvcndhcmQuYy0yNjYtXG5uZXQvYnJpZGdlL2JyX2ZvcndhcmQuYzoyNjc6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9mb3J3YXJkLmMtMjY4LXN0YXRpYyB2b2lkIG1heWJlX2RlbGl2ZXJfYWRkcihzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTE3MT1zdGF0aWMgaW5saW5lIHNpemVfdCBicl9wb3J0X2luZm9fc2l6ZSh2b2lkKVxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTIwNC1cdFx0JiM0MzsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIElGTEFfQlJQT1JUX0hPTERfVElNRVIgKi9cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jOjIwNTojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0yMDYtXHRcdCYjNDM7IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpXHQvKiBJRkxBX0JSUE9SVF9NVUxUSUNBU1RfUk9VVEVSICovXG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9MjM0PXN0YXRpYyBpbnQgYnJfcG9ydF9maWxsX2F0dHJzKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMzA2LVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MzA3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTMwOC1cdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CUlBPUlRfTVVMVElDQVNUX1JPVVRFUixcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYz05NTE9c3RhdGljIGludCBicl9zZXRwb3J0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTA0OC1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jOjEwNDk6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTA1MC1cdGlmICh0YltJRkxBX0JSUE9SVF9NVUxUSUNBU1RfUk9VVEVSXSkge1xuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTEyOTU9c3RhdGljIGludCBicl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpicmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNDM2LVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MTQzNzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNDM4LVx0aWYgKGRhdGFbSUZMQV9CUl9NQ0FTVF9ST1VURVJdKSB7XG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9MTYxOT1zdGF0aWMgc2l6ZV90IGJyX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpicmRldilcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNjQ3LVx0ICAgICAgIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSAmIzQzOyAgICAvKiBJRkxBX0JSX0ZEQl9NQVhfTEVBUk5FRCAqL1xubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MTY0ODojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNjQ5LVx0ICAgICAgIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpICYjNDM7ICAgICAvKiBJRkxBX0JSX01DQVNUX1JPVVRFUiAqL1xuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTE2Nzg9c3RhdGljIGludCBicl9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJyZGV2KVxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTE3MzktI2VuZGlmXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoxNzQwOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTE3NDEtXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQlJfTUNBU1RfUk9VVEVSLFxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTE4NDA9c3RhdGljIGludCBicl9maWxsX2xpbmt4c3RhdHMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xODc2LVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MTg3NzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xODc4LVx0XHRsaW1pdCAtPSBubGFfdG90YWxfc2l6ZV82NGJpdChzaXplb2Yoc3RydWN0IGJyX21jYXN0X3N0YXRzKSk7XG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTkwNy1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jOjE5MDg6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTkwOS1cdGlmICgmIzQzOyYjNDM7dmxfaWR4IFx1MDAzZT0gKnByaXZpZHgpIHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD02OT1zdHJ1Y3QgbWFjX2FkZHIge1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTcyLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NzM6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNzQtLyogb3VyIG93biBxdWVyaWVyICovXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTE4PXN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQge1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTE5OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTEyMC1cdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnRcdFx0KnBvcnQ7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTM1LVx0c3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrO1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTM2OiNlbmRpZiAvKiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkcgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTEzNy19O1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE0MD1zdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCB7XG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxNDE6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTQyLVx0c3RydWN0IG5ldF9icmlkZ2VcdFx0KmJyO1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE3My1cdHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgICAgICAgICAgcXVlcnlfcXVldWVfd29yaztcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE3NDojZW5kaWYgLyogQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HICovXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xNzUtfTtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0zOTI9c3RydWN0IG5ldF9icmlkZ2VfcG9ydCB7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNDI2LVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NDI3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTQyOC1cdHN0cnVjdCBicmlkZ2VfbWNhc3Rfc3RhdHNcdF9fcGVyY3B1ICptY2FzdF9zdGF0cztcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD01MDA9c3RydWN0IG5ldF9icmlkZ2Uge1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTU1Mi1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjU1MzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC01NTQtXHRzdHJ1Y3QgYnJpZGdlX21jYXN0X3N0YXRzXHRfX3BlcmNwdSAqbWNhc3Rfc3RhdHM7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9NTk3PXN0cnVjdCBicl9pbnB1dF9za2JfY2Ige1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTYwMC1cdHUxNiBmcmFnX21heF9zaXplO1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NjAxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTYwMi1cdHU4IGlnbXA7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNjM3LVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NjM4OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTYzOS0jIGRlZmluZSBCUl9JTlBVVF9TS0JfQ0JfTVJPVVRFUlNfT05MWShfX3NrYilcdChCUl9JTlBVVF9TS0JfQ0IoX19za2IpLVx1MDAzZW1yb3V0ZXJzX29ubHkpXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9NzQyPXN0YXRpYyBpbmxpbmUgdTggYnJfdmxhbl9tdWx0aWNhc3Rfcm91dGVyKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnYpXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNzQ1LVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NzQ2OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTc0Ny1cdGlmICghYnJfdmxhbl9pc19tYXN0ZXIodikpXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9OTY5PWludCBicl9pb2N0bF9zdHViKHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGNtZCwgdm9pZCBfX3VzZXIgKnVhcmcpO1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTk3MS0vKiBicl9tdWx0aWNhc3QuYyAqL1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6OTcyOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTk3My1pbnQgYnJfbXVsdGljYXN0X3JjdihzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqKmJybWN0eCxcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbWNhc3RfZWh0Lmg9NDE9c3RydWN0IG5ldF9icmlkZ2VfZ3JvdXBfZWh0X3NldCB7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21jYXN0X2VodC5oLTUxLVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21jYXN0X2VodC5oOjUyOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaC01My12b2lkIGJyX211bHRpY2FzdF9laHRfY2xlYW5fc2V0cyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0X2dyb3VwICpwZyk7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21jYXN0X2VodC5oPTg2PXN0YXRpYyBpbmxpbmUgdm9pZCBicl9tdWx0aWNhc3RfZWh0X2hvc3RzX2RlYyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0X2dyb3VwICpwZylcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbWNhc3RfZWh0LmgtOTEtfVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21jYXN0X2VodC5oOjkyOiNlbmRpZiAvKiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkcgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaC05My1cbi0tXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jPTQ2Mz1zdGF0aWMgaW50IGJyX3N3aXRjaGRldl92bGFuX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqYnJfZGV2LFxuLS1cbm5ldC9icmlkZ2UvYnJfc3dpdGNoZGV2LmMtNTA5LVxubmV0L2JyaWRnZS9icl9zd2l0Y2hkZXYuYzo1MTA6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9zd2l0Y2hkZXYuYy01MTEtc3RydWN0IGJyX3N3aXRjaGRldl9tZGJfY29tcGxldGVfaW5mbyB7XG4tLVxubmV0L2JyaWRnZS9icl9zd2l0Y2hkZXYuYz02OTY9YnJfc3dpdGNoZGV2X21kYl9yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmJyX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jLTY5OS17XG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jOjcwMDojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jLTcwMS1cdGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX21kYl9lbnRyeSAqbXA7XG4tLVxubmV0L2JyaWRnZS9icl9zeXNmc19ici5jPTM4ND1zdGF0aWMgREVWSUNFX0FUVFJfUlcobm9fbGlua2xvY2FsX2xlYXJuKTtcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYy0zODUtXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2JyLmM6Mzg2OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYy0zODctc3RhdGljIHNzaXplX3QgbXVsdGljYXN0X3JvdXRlcl9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXG4tLVxubmV0L2JyaWRnZS9icl9zeXNmc19ici5jPTkzNT1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYnJpZGdlX2F0dHJzW10gPSB7XG4tLVxubmV0L2JyaWRnZS9icl9zeXNmc19ici5jLTk1NS1cdFx1MDAyNmRldl9hdHRyX25vX2xpbmtsb2NhbF9sZWFybi5hdHRyLFxubmV0L2JyaWRnZS9icl9zeXNmc19ici5jOjk1NjojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2JyLmMtOTU3LVx0XHUwMDI2ZGV2X2F0dHJfbXVsdGljYXN0X3JvdXRlci5hdHRyLFxuLS1cbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYz0yNjQ9QlJQT1JUX0FUVFJfRkxBRyhpc29sYXRlZCwgQlJfSVNPTEFURURfQklUKTtcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYy0yNjUtXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2lmLmM6MjY2OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYy0yNjctc3RhdGljIHNzaXplX3Qgc2hvd19tdWx0aWNhc3Rfcm91dGVyKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsIGNoYXIgKmJ1Zilcbi0tXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2lmLmM9Mjg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJwb3J0X2F0dHJpYnV0ZSAqYnJwb3J0X2F0dHJzW10gPSB7XG4tLVxubmV0L2JyaWRnZS9icl9zeXNmc19pZi5jLTMwNC1cdFx1MDAyNmJycG9ydF9hdHRyX3VuaWNhc3RfZmxvb2QsXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2lmLmM6MzA1OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYy0zMDYtXHRcdTAwMjZicnBvcnRfYXR0cl9tdWx0aWNhc3Rfcm91dGVyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NDA9Ym9vbCBicl92bGFuX29wdHNfZXFfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNjAtXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjYxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNjItXHRpZiAoIWJyX3ZsYW5faXNfbWFzdGVyKHZfY3VycikgXHUwMDI2XHUwMDI2XG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz03Mj1ib29sIGJyX3ZsYW5fb3B0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnYsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy04Mi1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6ODM6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy04NC1cdGlmIChubGFfcHV0X3U4KHNrYiwgQlJJREdFX1ZMQU5EQl9FTlRSWV9NQ0FTVF9ST1VURVIsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz05OD1zaXplX3QgYnJfdmxhbl9vcHRzX25sX3NpemUodm9pZClcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTEwMi1cdCAgICAgICAmIzQzOyBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgLyogQlJJREdFX1ZMQU5EQl9USU5GT19JRCAqL1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzoxMDM6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0xMDQtXHQgICAgICAgJiM0MzsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHU4KSkgLyogQlJJREdFX1ZMQU5EQl9FTlRSWV9NQ0FTVF9ST1VURVIgKi9cbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jPTIxNz1zdGF0aWMgaW50IGJyX3ZsYW5fcHJvY2Vzc19vbmVfb3B0cyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0yNDAtXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjI0MTojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTI0Mi1cdGlmICh0YltCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUl0pIHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jPTM4OT1ib29sIGJyX3ZsYW5fZ2xvYmFsX29wdHNfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdmlkLCB1MTYgdmlkX3JhbmdlLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNDA2LVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzo0MDc6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00MDgtXHRpZiAobmxhX3B1dF91OChza2IsIEJSSURHRV9WTEFOREJfR09QVFNfTUNBU1RfU05PT1BJTkcsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz00ODM9c3RhdGljIHNpemVfdCBydG5sX3ZsYW5fZ2xvYmFsX29wdHNfbmxtc2dfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2KVxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNDg3LVx0XHQmIzQzOyBubGFfdG90YWxfc2l6ZShzaXplb2YodTE2KSkgLyogQlJJREdFX1ZMQU5EQl9HT1BUU19JRCAqL1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzo0ODg6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00ODktXHRcdCYjNDM7IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIEJSSURHRV9WTEFOREJfR09QVFNfTUNBU1RfU05PT1BJTkcgKi9cbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jPTU1MT1zdGF0aWMgaW50IGJyX3ZsYW5fcHJvY2Vzc19nbG9iYWxfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNTYwLVx0KmNoYW5nZWQgPSBmYWxzZTtcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NTYxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNTYyLVx0aWYgKHRiW0JSSURHRV9WTEFOREJfR09QVFNfTUNBU1RfU05PT1BJTkddKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDM6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyODIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNdWx0aWNhc3QgUXVlcnkgUGF0Y2gqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHBhdGNoLiBGaXJzdCB0aGluZ3MgZmlyc3QsIHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFyZSBgQlJJREdFYCwgYEJSSURHRV9JR01QX1NOT09QSU5HYCwgYW5kIGlkZWFsbHksIGBJUFY2YCBmb3IgdGVzdGluZyB0aGUgYGJyX2lwNl9tdWx0aWNhc3RfYWxsb2NfcXVlcnlgIGZ1bmN0aW9uLiBNYWtlcyBzZW5zZS4KCk5vdywgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGNvcmUgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29ya2AsIGBicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29ya2AsIGBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZWAgKGEgc2ltcGxlIGhlbHBlciksIGFuZCBtb2RpZmllcyBgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAuIEFscmlnaHQsIHNvIHRoZSBtYWluIHBsYXllcnMgYXJlIGBicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrYCwgYGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrYCwgYW5kIGVzcGVjaWFsbHkgYF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlgLgoKVGhlIGtleSBxdWVzdGlvbiBpcyBhbHdheXMgcmVhY2hhYmlsaXR5LiBUaGVzZSBhcmUgd29ya3F1ZXVlIGhhbmRsZXJzLCBtZWFuaW5nIHRoZXkmIzM5O2xsIGJlIGNhbGxlZCB3aGVuIHdvcmsgaXMgcXVldWVkIHRvIHRoZW0uIFRoZSB3b3JrIGlzIHF1ZXVlZCwgSSBzZWUgaGVyZSwgaW4gYF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlgLiBHb29kLCB0aGF0JiMzOTtzIHdoYXQgSSB3YW50IHRvIGtub3cuIGBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5YCBpcyBpbnZva2VkIGJ5IGBicl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAgYW5kIGBicl9tdWx0aWNhc3Rfc2VuZF9wb3J0X2dyb3VwX3F1ZXJ5YC4gRXhjZWxsZW50LiBUaGVzZSBjYWxscyBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSBJR01QL01MRCB0aW1lcnMsIG9yIHdoZW4gYSBuZXcgcXVlcmllciBpcyBlbGVjdGVkLiBTbyB5ZXMsIHRoZXNlIGFsbCBhcHBlYXIgcmVhY2hhYmxlIGFuZCBjYWxsZWQgaW4gdGhlIGNvcnJlY3Qgd2F5cy4KClJpZ2h0LCBzbyB0byBtYWtlIHN1cmUgdGhlIGNvcmUgbG9naWMgaXMgc291bmQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAgaXMgaW5kZWVkIHJlYWNoYWJsZS4gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgcG9pbnQgSSYjMzk7bGwgc3RhcnQgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0xODA0PXN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTE4MjktXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjE4MzA6c3RhdGljIHZvaWQgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0xODMxLVx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCAqcG1jdHgsXG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0xODk5PXN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0xOTM3LVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYzoxOTM4Olx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBOVUxMLCBOVUxMLCBcdTAwMjZicl9ncm91cCwgZmFsc2UsXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTE5MzktXHRcdFx0XHQgIDAsIE5VTEwpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmM9MTk4Nz1zdGF0aWMgdm9pZCBicl9tdWx0aWNhc3RfcG9ydF9ncm91cF9yZXhtaXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMDIwLVx0XHRwZy1cdTAwM2VncnBfcXVlcnlfcmV4bWl0X2NudC0tO1xubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYzoyMDIxOlx0XHRfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLCBcdTAwMjZwZy1cdTAwM2VrZXkuYWRkcixcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMjAyMi1cdFx0XHRcdFx0ICBcdTAwMjZwZy1cdTAwM2VrZXkuYWRkciwgZmFsc2UsIDEsIE5VTEwpO1xubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMDIzLVx0fVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYzoyMDI0Olx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgXHUwMDI2cGctXHUwMDNla2V5LmFkZHIsXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTIwMjUtXHRcdFx0XHQgIFx1MDAyNnBnLVx1MDAzZWtleS5hZGRyLCB0cnVlLCAwLCBcdTAwMjZuZWVkX3JleG1pdCk7XG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0yMjkxPXN0YXRpYyB2b2lkIF9fZ3JwX3NyY19xdWVyeV9tYXJrZWRfYW5kX3JleG1pdChzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxuLS1cbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMjMyOC1cbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmM6MjMyOTpcdF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoYnJtY3R4LCBwbWN0eCwgcGcsIFx1MDAyNnBnLVx1MDAzZWtleS5hZGRyLFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMzMwLVx0XHRcdFx0ICBcdTAwMjZwZy1cdTAwM2VrZXkuYWRkciwgdHJ1ZSwgMSwgTlVMTCk7XG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0yMzM4PXN0YXRpYyB2b2lkIF9fZ3JwX3NlbmRfcXVlcnlfYW5kX3JleG1pdChzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxuLS1cbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMjM1OS1cdFx0cGctXHUwMDNlZ3JwX3F1ZXJ5X3JleG1pdF9jbnQgPSBicm1jdHgtXHUwMDNlbXVsdGljYXN0X2xhc3RfbWVtYmVyX2NvdW50IC0gMTtcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmM6MjM2MDpcdFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgXHUwMDI2cGctXHUwMDNla2V5LmFkZHIsXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTIzNjEtXHRcdFx0XHRcdCAgXHUwMDI2cGctXHUwMDNla2V5LmFkZHIsIGZhbHNlLCAwLCBOVUxMKTtcbi0tXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jPTM3MTU9YnJfbXVsdGljYXN0X2xlYXZlX2dyb3VwKHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0zNzU3LVx0aWYgKGJybWN0eC1cdTAwM2VtdWx0aWNhc3RfcXVlcmllcikge1xubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYzozNzU4Olx0XHRfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIE5VTEwsIE5VTEwsIFx1MDAyNm1wLVx1MDAzZWFkZHIsXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTM3NTktXHRcdFx0XHRcdCAgZmFsc2UsIDAsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAzOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTU1CgkJCQkJCQlvdXRwdXQ6IDE1MwoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gSGVyZSYjMzk7cyBob3cgSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcGF0Y2guCgoqKkFuYWx5emluZyB0aGUgQnJpZGdlIE11bHRpY2FzdCBMb2dpYyBQYXRjaCoqCgpBbHJpZ2h0LCB0aGlzIHBhdGNoIGlzIGNsZWFybHkgdG91Y2hpbmcgdGhlIG11bHRpY2FzdCBsb2dpYyB3aXRoaW4gdGhlIGJyaWRnZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBJR01QL01MRCBxdWVyeSB0cmFuc21pc3Npb24uIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gY2hhbmdlIGludm9sdmVzIHNoaWZ0aW5nIGZyb20gc3luY2hyb25vdXMgcXVlcnkgc2VuZGluZyB0byBhIHdvcmtxdWV1ZSBhcHByb2FjaC4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZTsgaW50cm9kdWNpbmcgYSB3b3JrcXVldWUgY2FuIHVuY292ZXIgcmFjZSBjb25kaXRpb25zIG9yIHRpbWluZyBpc3N1ZXMgdGhhdCB3b3VsZG4mIzM5O3Qgc3VyZmFjZSB3aXRoIHN5bmNocm9ub3VzIG9wZXJhdGlvbnMuCgpTbywgZm9yIGZ1enppbmcgdGhpcywgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnM6IGBCUklER0VgLCBkZWZpbml0ZWx5IGBCUklER0VfSUdNUF9TTk9PUElOR2AsIGFuZCBpZGVhbGx5IGBJUFY2YCBhcyB3ZWxsIHNpbmNlIHdlJiMzOTtyZSBsb29raW5nIGF0IE1MRCBhcyBhIHBvdGVudGlhbCBmb2N1cy4KClRoZSBjb3JlIHN5bWJvbHMgSSYjMzk7bGwgd2FudCB0byBob25lIGluIG9uIGFyZSBgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29ya2AsIGBicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29ya2AsIGFuZCBgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAuIFRoZXNlIGxvb2sgbGlrZSB0aGUga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHF1ZXVpbmcgYW5kIHNlbmRpbmcgdGhlIHF1ZXJpZXMuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHdoYXQgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMgYXJlLiBgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HYCBzZWVtcyB0byBiZSB0aGUgbWFpbiBkcml2ZXIsIHdpdGggYENPTkZJR19CUklER0VgIGJlaW5nIGEgcHJlcmVxdWlzaXRlLCBhbmQgYENPTkZJR19JUFY2YCBuZWVkZWQgZm9yIE1MRC4gR290IGl0LiBJJiMzOTtsbCBtYWtlIHN1cmUgdGhlIHJlc3VsdHMgcmVmbGVjdCB0aGlzIGluZm9ybWF0aW9uIHByZWNpc2VseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0JSSURHRV9JR01QX1NOT09QSU5HJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O2JyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O19fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJyaWRnZSBtdWx0aWNhc3QgbG9naWMgdG8gcXVldWUgSUdNUC9NTEQgcXVlcmllcyB0byBhIHdvcmtxdWV1ZSBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlbSBzeW5jaHJvbm91c2x5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgYnJpZGdlIG11bHRpY2FzdCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcgZG9lcyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG1lbW9yeSBsZWFrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0JSSURHRV9JR01QX1NOT09QSU5HJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O2JyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O19fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJyaWRnZSBtdWx0aWNhc3QgbG9naWMgdG8gcXVldWUgSUdNUC9NTEQgcXVlcmllcyB0byBhIHdvcmtxdWV1ZSBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlbSBzeW5jaHJvbm91c2x5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgYnJpZGdlIG11bHRpY2FzdCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcgZG9lcyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG1lbW9yeSBsZWFrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAzOjI1OjU3LjY3NzAwNDk3NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0OTY0Mjc3NDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX0lHTVBfU05PT1BJTkdcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrXCIsXG4gICAgXCJicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29ya1wiLFxuICAgIFwiX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmlkZ2UgbXVsdGljYXN0IGxvZ2ljIHRvIHF1ZXVlIElHTVAvTUxEIHF1ZXJpZXMgdG8gYSB3b3JrcXVldWUgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZW0gc3luY2hyb25vdXNseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGJyaWRnZSBtdWx0aWNhc3QgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIGRvZXMgbm90IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVha3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAzOjI1OjU3LjY3NzAxMTE1NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxODEzOTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTgyMTZiNDQ0NDE0Nzg1ZTMzMDBiOTAxODBhMGVjMTg4MDYxN2UwN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCA5IDAzOjI1OjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMgYi9uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jXFxuaW5kZXggNmIzYWM0NzNmZDIyOGIuLmYxMTJmYmIzNzRjMGRlIDEwMDY0NFxcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmNcXG4rKysgYi9uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jXFxuQEAgLTkyNiw3ICs5MjYsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX2lwNF9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybVxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydF9ncm91cCAqcGcsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBfX2JlMzIgaXBfZHN0LCBfX2JlMzIgZ3JvdXAsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBib29sIHdpdGhfc3JjcywgYm9vbCBvdmVyX2xtcXQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHU4IHNmbGFnLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgYm9vbCAqbmVlZF9yZXhtaXQpXFxuIHtcXG4gXFx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCA9IHBnID8gcGctXFx1MDAzZWtleS5wb3J0IDogTlVMTDtcXG5AQCAtMTAwNiw3ICsxMDA2LDYgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1cXG4gXFx0c2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHNrYiwgc2tiLVxcdTAwM2VsZW4pO1xcbiBcXHRtcnQgPSBncm91cCA/IGJybWN0eC1cXHUwMDNlbXVsdGljYXN0X2xhc3RfbWVtYmVyX2ludGVydmFsIDpcXG4gXFx0XFx0ICAgICAgYnJtY3R4LVxcdTAwM2VtdWx0aWNhc3RfcXVlcnlfcmVzcG9uc2VfaW50ZXJ2YWw7XFxuLVxcdCppZ21wX3R5cGUgPSBJR01QX0hPU1RfTUVNQkVSU0hJUF9RVUVSWTtcXG4gXFxuIFxcdHN3aXRjaCAoYnJtY3R4LVxcdTAwM2VtdWx0aWNhc3RfaWdtcF92ZXJzaW9uKSB7XFxuIFxcdGNhc2UgMjpcXG5AQCAtMTA3Miw3ICsxMDcxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDZfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1cXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqaXA2X2RzdCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZ3JvdXAsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBib29sIHdpdGhfc3JjcywgYm9vbCBvdmVyX2xscXQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHU4IHNmbGFnLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgYm9vbCAqbmVlZF9yZXhtaXQpXFxuIHtcXG4gXFx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCA9IHBnID8gcGctXFx1MDAzZWtleS5wb3J0IDogTlVMTDtcXG5AQCAtMTE2Niw3ICsxMTY1LDYgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDZfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1cXG4gXFx0aW50ZXJ2YWwgPSBpcHY2X2FkZHJfYW55KGdyb3VwKSA/XFxuIFxcdFxcdFxcdGJybWN0eC1cXHUwMDNlbXVsdGljYXN0X3F1ZXJ5X3Jlc3BvbnNlX2ludGVydmFsIDpcXG4gXFx0XFx0XFx0YnJtY3R4LVxcdTAwM2VtdWx0aWNhc3RfbGFzdF9tZW1iZXJfaW50ZXJ2YWw7XFxuLVxcdCppZ21wX3R5cGUgPSBJQ01QVjZfTUdNX1FVRVJZO1xcbiBcXHRzd2l0Y2ggKGJybWN0eC1cXHUwMDNlbXVsdGljYXN0X21sZF92ZXJzaW9uKSB7XFxuIFxcdGNhc2UgMTpcXG4gXFx0XFx0bWxkcSA9IChzdHJ1Y3QgbWxkX21zZyAqKWljbXA2X2hkcihza2IpO1xcbkBAIC0xMjM3LDggKzEyMzUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgYnJfaXAgKmlwX2RzdCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGJyX2lwICpncm91cCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0Ym9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbXF0LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHR1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0Ym9vbCAqbmVlZF9yZXhtaXQpXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHU4IHNmbGFnLCBib29sICpuZWVkX3JleG1pdClcXG4ge1xcbiBcXHRfX2JlMzIgaXA0X2RzdDtcXG4gXFxuQEAgLTEyNDgsOCArMTI0NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXFxuIFxcdFxcdHJldHVybiBicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgaXA0X2RzdCwgZ3JvdXAtXFx1MDAzZWRzdC5pcDQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHNmbGFnLCBpZ21wX3R5cGUsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBuZWVkX3JleG1pdCk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICBzZmxhZywgbmVlZF9yZXhtaXQpO1xcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG4gXFx0Y2FzZSBodG9ucyhFVEhfUF9JUFY2KToge1xcbiBcXHRcXHRzdHJ1Y3QgaW42X2FkZHIgaXA2X2RzdDtcXG5AQCAtMTI2Myw4ICsxMjU5LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcXG4gXFx0XFx0cmV0dXJuIGJyX2lwNl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoYnJtY3R4LCBwbWN0eCwgcGcsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2aXA2X2RzdCwgXFx1MDAyNmdyb3VwLVxcdTAwM2Vkc3QuaXA2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgd2l0aF9zcmNzLCBvdmVyX2xtcXQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBzZmxhZywgaWdtcF90eXBlLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgbmVlZF9yZXhtaXQpO1xcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgc2ZsYWcsIG5lZWRfcmV4bWl0KTtcXG4gXFx0fVxcbiAjZW5kaWZcXG4gXFx0fVxcbkBAIC0xNzc0LDYgKzE3NjksNjQgQEAgc3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3NlbGVjdF9vd25fcXVlcmllcihzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxcbiAjZW5kaWZcXG4gfVxcbiBcXG4rc3RhdGljIHU4IGJyX211bHRpY2FzdF9xdWVyeV90eXBlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0cmV0dXJuIHNrYi1cXHUwMDNlcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApID8gSUdNUF9IT1NUX01FTUJFUlNISVBfUVVFUlkgOlxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIElDTVBWNl9NR01fUVVFUlk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9wb3J0X3F1ZXJ5X3F1ZXVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit7XFxuK1xcdHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4O1xcbitcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcbitcXHRwbWN0eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0LFxcbitcXHRcXHRcXHQgICAgIHF1ZXJ5X3F1ZXVlX3dvcmspO1xcbitcXG4rXFx0X19za2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZsaXN0KTtcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwbWN0eC1cXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XFxuK1xcdHNrYl9xdWV1ZV9zcGxpY2VfdGFpbF9pbml0KFxcdTAwMjZwbWN0eC1cXHUwMDNlcXVlcnlfcXVldWUsIFxcdTAwMjZsaXN0KTtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnBtY3R4LVxcdTAwM2VxdWVyeV9xdWV1ZS5sb2NrKTtcXG4rXFxuK1xcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2bGlzdCkpKSB7XFxuK1xcdFxcdHU4IHF1ZXJ5X3R5cGUgPSBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZShza2IpO1xcbitcXG4rXFx0XFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xcbitcXHRcXHRicl9tdWx0aWNhc3RfY291bnQocG1jdHgtXFx1MDAzZXBvcnQtXFx1MDAzZWJyLCBwbWN0eC1cXHUwMDNlcG9ydCwgc2tiLFxcbitcXHRcXHRcXHRcXHQgICBxdWVyeV90eXBlLCBCUl9NQ0FTVF9ESVJfVFgpO1xcbitcXHRcXHRORl9IT09LKE5GUFJPVE9fQlJJREdFLCBORl9CUl9MT0NBTF9PVVQsIGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpLFxcbitcXHRcXHRcXHROVUxMLCBza2IsIE5VTEwsIHNrYi1cXHUwMDNlZGV2LCBicl9kZXZfcXVldWVfcHVzaF94bWl0KTtcXG4rXFx0XFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit7XFxuK1xcdHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHg7XFxuK1xcdHN0cnVjdCBza19idWZmX2hlYWQgbGlzdDtcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFxuK1xcdGJybWN0eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCwgcXVlcnlfcXVldWVfd29yayk7XFxuK1xcbitcXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNmxpc3QpO1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmJybWN0eC1cXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XFxuK1xcdHNrYl9xdWV1ZV9zcGxpY2VfdGFpbF9pbml0KFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlLCBcXHUwMDI2bGlzdCk7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlLmxvY2spO1xcbitcXG4rXFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZsaXN0KSkpIHtcXG4rXFx0XFx0dTggcXVlcnlfdHlwZSA9IGJyX211bHRpY2FzdF9xdWVyeV90eXBlKHNrYik7XFxuK1xcbitcXHRcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxuK1xcdFxcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXFx1MDAzZWJyLCBOVUxMLCBza2IsIHF1ZXJ5X3R5cGUsXFxuK1xcdFxcdFxcdFxcdCAgIEJSX01DQVNUX0RJUl9SWCk7XFxuK1xcdFxcdG5ldGlmX3J4KHNrYik7XFxuK1xcdFxcdGxvY2FsX2JoX2VuYWJsZSgpO1xcbitcXHR9XFxuK31cXG4rXFxuKyNkZWZpbmUgQlJfTVVMVElDQVNUX1FVRVJZX1FVRVVFX0xFTl9NQVhcXHQxMDAwXFxuK1xcbiBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4LFxcbiBcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0X2dyb3VwICpwZyxcXG5AQCAtMTc4MywyOCArMTgzNiwzMCBAQCBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHU4IHNmbGFnLFxcbiBcXHRcXHRcXHRcXHQgICAgICBib29sICpuZWVkX3JleG1pdClcXG4ge1xcbitcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpxdWV1ZTtcXG4gXFx0Ym9vbCBvdmVyX2xtcXQgPSAhIXNmbGFnO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi1cXHR1OCBpZ21wX3R5cGU7XFxuIFxcbiBcXHRpZiAoIWJyX211bHRpY2FzdF9jdHhfc2hvdWxkX3VzZShicm1jdHgsIHBtY3R4KSB8fFxcbiBcXHQgICAgIWJyX211bHRpY2FzdF9jdHhfbWF0Y2hlc192bGFuX3Nub29waW5nKGJybWN0eCkpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdHF1ZXVlID0gcG1jdHggPyBcXHUwMDI2cG1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlIDogXFx1MDAyNmJybWN0eC1cXHUwMDNlcXVlcnlfcXVldWU7XFxuK1xcbiBhZ2Fpbl91bmRlcl9sbXF0OlxcbitcXHRpZiAoc2tiX3F1ZXVlX2xlbl9sb2NrbGVzcyhxdWV1ZSkgXFx1MDAzZT0gQlJfTVVMVElDQVNUX1FVRVJZX1FVRVVFX0xFTl9NQVgpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdHNrYiA9IGJyX211bHRpY2FzdF9hbGxvY19xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgaXBfZHN0LCBncm91cCxcXG4tXFx0XFx0XFx0XFx0ICAgICAgIHdpdGhfc3Jjcywgb3Zlcl9sbXF0LCBzZmxhZywgXFx1MDAyNmlnbXBfdHlwZSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHdpdGhfc3Jjcywgb3Zlcl9sbXF0LCBzZmxhZyxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIG5lZWRfcmV4bWl0KTtcXG4gXFx0aWYgKCFza2IpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGlmIChwbWN0eCkge1xcbiBcXHRcXHRza2ItXFx1MDAzZWRldiA9IHBtY3R4LVxcdTAwM2Vwb3J0LVxcdTAwM2VkZXY7XFxuLVxcdFxcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXFx1MDAzZWJyLCBwbWN0eC1cXHUwMDNlcG9ydCwgc2tiLCBpZ21wX3R5cGUsXFxuLVxcdFxcdFxcdFxcdCAgIEJSX01DQVNUX0RJUl9UWCk7XFxuLVxcdFxcdE5GX0hPT0soTkZQUk9UT19CUklER0UsIE5GX0JSX0xPQ0FMX09VVCxcXG4tXFx0XFx0XFx0ZGV2X25ldChwbWN0eC1cXHUwMDNlcG9ydC1cXHUwMDNlZGV2KSwgTlVMTCwgc2tiLCBOVUxMLCBza2ItXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0YnJfZGV2X3F1ZXVlX3B1c2hfeG1pdCk7XFxuK1xcdFxcdHNrYl9xdWV1ZV90YWlsKHF1ZXVlLCBza2IpO1xcbitcXHRcXHRxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCBcXHUwMDI2cG1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmspO1xcbiBcXG4gXFx0XFx0aWYgKG92ZXJfbG1xdCBcXHUwMDI2XFx1MDAyNiB3aXRoX3NyY3MgXFx1MDAyNlxcdTAwMjYgc2ZsYWcpIHtcXG4gXFx0XFx0XFx0b3Zlcl9sbXF0ID0gZmFsc2U7XFxuQEAgLTE4MTIsOSArMTg2Nyw4IEBAIHN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcXG4gXFx0XFx0fVxcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRicl9tdWx0aWNhc3Rfc2VsZWN0X293bl9xdWVyaWVyKGJybWN0eCwgZ3JvdXAsIHNrYik7XFxuLVxcdFxcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXFx1MDAzZWJyLCBOVUxMLCBza2IsIGlnbXBfdHlwZSxcXG4tXFx0XFx0XFx0XFx0ICAgQlJfTUNBU1RfRElSX1JYKTtcXG4tXFx0XFx0bmV0aWZfcngoc2tiKTtcXG4rXFx0XFx0c2tiX3F1ZXVlX3RhaWwocXVldWUsIHNrYik7XFxuK1xcdFxcdHF1ZXVlX3dvcmsoc3lzdGVtX2hpZ2hwcmlfd3EsIFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmspO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTE5OTcsNiArMjA1MSwxMCBAQCB2b2lkIGJyX211bHRpY2FzdF9wb3J0X2N0eF9pbml0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQsXFxuIFxcdHBtY3R4LVxcdTAwM2Vwb3J0ID0gcG9ydDtcXG4gXFx0cG1jdHgtXFx1MDAzZXZsYW4gPSB2bGFuO1xcbiBcXHRwbWN0eC1cXHUwMDNlbXVsdGljYXN0X3JvdXRlciA9IE1EQl9SVFJfVFlQRV9URU1QX1FVRVJZO1xcbitcXG4rXFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2cG1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlKTtcXG4rXFx0SU5JVF9XT1JLKFxcdTAwMjZwbWN0eC1cXHUwMDNlcXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayk7XFxuK1xcbiBcXHR0aW1lcl9zZXR1cChcXHUwMDI2cG1jdHgtXFx1MDAzZWlwNF9tY19yb3V0ZXJfdGltZXIsXFxuIFxcdFxcdCAgICBicl9pcDRfbXVsdGljYXN0X3JvdXRlcl9leHBpcmVkLCAwKTtcXG4gXFx0dGltZXJfc2V0dXAoXFx1MDAyNnBtY3R4LVxcdTAwM2VpcDRfb3duX3F1ZXJ5LnRpbWVyLFxcbkBAIC0yMDM4LDYgKzIwOTYsOCBAQCB2b2lkIGJyX211bHRpY2FzdF9wb3J0X2N0eF9kZWluaXQoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCAqcG1jdHgpXFxuIFxcdGRlbCB8PSBicl9pcDRfbXVsdGljYXN0X3Jwb3J0X2RlbChwbWN0eCk7XFxuIFxcdGJyX211bHRpY2FzdF9ycG9ydF9kZWxfbm90aWZ5KHBtY3R4LCBkZWwpO1xcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YnItXFx1MDAzZW11bHRpY2FzdF9sb2NrKTtcXG4rXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmspO1xcbitcXHRfX3NrYl9xdWV1ZV9wdXJnZShcXHUwMDI2cG1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlKTtcXG4gfVxcbiBcXG4gaW50IGJyX211bHRpY2FzdF9hZGRfcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0KVxcbkBAIC00MTEyLDYgKzQxNzIsOSBAQCB2b2lkIGJyX211bHRpY2FzdF9jdHhfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuIFxcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXFx1MDAyNmJybWN0eC1cXHUwMDNlaXA2X3F1ZXJpZXIuc2VxLCBcXHUwMDI2YnItXFx1MDAzZW11bHRpY2FzdF9sb2NrKTtcXG4gI2VuZGlmXFxuIFxcbitcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlKTtcXG4rXFx0SU5JVF9XT1JLKFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmssIGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrKTtcXG4rXFxuIFxcdHRpbWVyX3NldHVwKFxcdTAwMjZicm1jdHgtXFx1MDAzZWlwNF9tY19yb3V0ZXJfdGltZXIsXFxuIFxcdFxcdCAgICBicl9pcDRfbXVsdGljYXN0X2xvY2FsX3JvdXRlcl9leHBpcmVkLCAwKTtcXG4gXFx0dGltZXJfc2V0dXAoXFx1MDAyNmJybWN0eC1cXHUwMDNlaXA0X290aGVyX3F1ZXJ5LnRpbWVyLFxcbkBAIC00MTM1LDYgKzQxOTgsOCBAQCB2b2lkIGJyX211bHRpY2FzdF9jdHhfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuIHZvaWQgYnJfbXVsdGljYXN0X2N0eF9kZWluaXQoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eClcXG4ge1xcbiBcXHRfX2JyX211bHRpY2FzdF9zdG9wKGJybWN0eCk7XFxuK1xcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmJybWN0eC1cXHUwMDNlcXVlcnlfcXVldWVfd29yayk7XFxuK1xcdF9fc2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlKTtcXG4gfVxcbiBcXG4gdm9pZCBicl9tdWx0aWNhc3RfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIpXFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oIGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcXG5pbmRleCBkNTVlYTk1MTZlM2UzNi4uZjhmNzdhMmQ0ODkxNjggMTAwNjQ0XFxuLS0tIGEvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxcbkBAIC0xMzEsNiArMTMxLDggQEAgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCB7XFxuIFxcdHVuc2lnbmVkIGNoYXJcXHRcXHRcXHRtdWx0aWNhc3Rfcm91dGVyO1xcbiBcXHR1MzJcXHRcXHRcXHRcXHRtZGJfbl9lbnRyaWVzO1xcbiBcXHR1MzJcXHRcXHRcXHRcXHRtZGJfbWF4X2VudHJpZXM7XFxuK1xcdHN0cnVjdCBza19idWZmX2hlYWQgICAgICAgICAgICAgcXVlcnlfcXVldWU7XFxuK1xcdHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgICAgICAgICAgcXVlcnlfcXVldWVfd29yaztcXG4gI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xcbiB9O1xcbiBcXG5AQCAtMTY3LDYgKzE2OSw4IEBAIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0IHtcXG4gXFx0c3RydWN0IGJyaWRnZV9tY2FzdF9vd25fcXVlcnlcXHRpcDZfb3duX3F1ZXJ5O1xcbiBcXHRzdHJ1Y3QgYnJpZGdlX21jYXN0X3F1ZXJpZXJcXHRpcDZfcXVlcmllcjtcXG4gI2VuZGlmIC8qIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpICovXFxuK1xcdHN0cnVjdCBza19idWZmX2hlYWQgICAgICAgICAgICAgcXVlcnlfcXVldWU7XFxuK1xcdHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgICAgICAgICAgcXVlcnlfcXVldWVfd29yaztcXG4gI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xcbiB9O1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDM6MjU6NTguNDY5NzUyMzc0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDE3MTUyMDc2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9JR01QX1NOT09QSU5HXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29ya1wiLFxuICAgIFwiYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmtcIixcbiAgICBcIl9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYnJpZGdlIG11bHRpY2FzdCBsb2dpYyB0byBxdWV1ZSBJR01QL01MRCBxdWVyaWVzIHRvIGEgd29ya3F1ZXVlIGluc3RlYWQgb2Ygc2VuZGluZyB0aGVtIHN5bmNocm9ub3VzbHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBicmlkZ2UgbXVsdGljYXN0IGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBhc3luY2hyb25vdXMgcHJvY2Vzc2luZyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWtzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU4MjE2YjQ0NDQxNDc4NWUzMzAwYjkwMTgwYTBlYzE4ODA2MTdlMDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDAzOjI1OjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYyBiL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmNcbmluZGV4IDZiM2FjNDczZmQyMjhiLi5mMTEyZmJiMzc0YzBkZSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmNcbisrKyBiL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmNcbkBAIC05MjYsNyArOTI2LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1cbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydF9ncm91cCAqcGcsXG4gXHRcdFx0XHRcdFx0ICAgIF9fYmUzMiBpcF9kc3QsIF9fYmUzMiBncm91cCxcbiBcdFx0XHRcdFx0XHQgICAgYm9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbXF0LFxuLVx0XHRcdFx0XHRcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcbitcdFx0XHRcdFx0XHQgICAgdTggc2ZsYWcsXG4gXHRcdFx0XHRcdFx0ICAgIGJvb2wgKm5lZWRfcmV4bWl0KVxuIHtcbiBcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAgPSBwZyA/IHBnLVx1MDAzZWtleS5wb3J0IDogTlVMTDtcbkBAIC0xMDA2LDcgKzEwMDYsNiBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX2lwNF9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybVxuIFx0c2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHNrYiwgc2tiLVx1MDAzZWxlbik7XG4gXHRtcnQgPSBncm91cCA/IGJybWN0eC1cdTAwM2VtdWx0aWNhc3RfbGFzdF9tZW1iZXJfaW50ZXJ2YWwgOlxuIFx0XHQgICAgICBicm1jdHgtXHUwMDNlbXVsdGljYXN0X3F1ZXJ5X3Jlc3BvbnNlX2ludGVydmFsO1xuLVx0KmlnbXBfdHlwZSA9IElHTVBfSE9TVF9NRU1CRVJTSElQX1FVRVJZO1xuIFxuIFx0c3dpdGNoIChicm1jdHgtXHUwMDNlbXVsdGljYXN0X2lnbXBfdmVyc2lvbikge1xuIFx0Y2FzZSAyOlxuQEAgLTEwNzIsNyArMTA3MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA2X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtXG4gXHRcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqaXA2X2RzdCxcbiBcdFx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpncm91cCxcbiBcdFx0XHRcdFx0XHQgICAgYm9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbHF0LFxuLVx0XHRcdFx0XHRcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcbitcdFx0XHRcdFx0XHQgICAgdTggc2ZsYWcsXG4gXHRcdFx0XHRcdFx0ICAgIGJvb2wgKm5lZWRfcmV4bWl0KVxuIHtcbiBcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAgPSBwZyA/IHBnLVx1MDAzZWtleS5wb3J0IDogTlVMTDtcbkBAIC0xMTY2LDcgKzExNjUsNiBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX2lwNl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybVxuIFx0aW50ZXJ2YWwgPSBpcHY2X2FkZHJfYW55KGdyb3VwKSA/XG4gXHRcdFx0YnJtY3R4LVx1MDAzZW11bHRpY2FzdF9xdWVyeV9yZXNwb25zZV9pbnRlcnZhbCA6XG4gXHRcdFx0YnJtY3R4LVx1MDAzZW11bHRpY2FzdF9sYXN0X21lbWJlcl9pbnRlcnZhbDtcbi1cdCppZ21wX3R5cGUgPSBJQ01QVjZfTUdNX1FVRVJZO1xuIFx0c3dpdGNoIChicm1jdHgtXHUwMDNlbXVsdGljYXN0X21sZF92ZXJzaW9uKSB7XG4gXHRjYXNlIDE6XG4gXHRcdG1sZHEgPSAoc3RydWN0IG1sZF9tc2cgKilpY21wNl9oZHIoc2tiKTtcbkBAIC0xMjM3LDggKzEyMzUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxuIFx0XHRcdFx0XHRcdHN0cnVjdCBicl9pcCAqaXBfZHN0LFxuIFx0XHRcdFx0XHRcdHN0cnVjdCBicl9pcCAqZ3JvdXAsXG4gXHRcdFx0XHRcdFx0Ym9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbXF0LFxuLVx0XHRcdFx0XHRcdHU4IHNmbGFnLCB1OCAqaWdtcF90eXBlLFxuLVx0XHRcdFx0XHRcdGJvb2wgKm5lZWRfcmV4bWl0KVxuK1x0XHRcdFx0XHRcdHU4IHNmbGFnLCBib29sICpuZWVkX3JleG1pdClcbiB7XG4gXHRfX2JlMzIgaXA0X2RzdDtcbiBcbkBAIC0xMjQ4LDggKzEyNDUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxuIFx0XHRyZXR1cm4gYnJfaXA0X211bHRpY2FzdF9hbGxvY19xdWVyeShicm1jdHgsIHBtY3R4LCBwZyxcbiBcdFx0XHRcdFx0XHQgICAgaXA0X2RzdCwgZ3JvdXAtXHUwMDNlZHN0LmlwNCxcbiBcdFx0XHRcdFx0XHQgICAgd2l0aF9zcmNzLCBvdmVyX2xtcXQsXG4tXHRcdFx0XHRcdFx0ICAgIHNmbGFnLCBpZ21wX3R5cGUsXG4tXHRcdFx0XHRcdFx0ICAgIG5lZWRfcmV4bWl0KTtcbitcdFx0XHRcdFx0XHQgICAgc2ZsYWcsIG5lZWRfcmV4bWl0KTtcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbiBcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6IHtcbiBcdFx0c3RydWN0IGluNl9hZGRyIGlwNl9kc3Q7XG5AQCAtMTI2Myw4ICsxMjU5LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiBcdFx0cmV0dXJuIGJyX2lwNl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoYnJtY3R4LCBwbWN0eCwgcGcsXG4gXHRcdFx0XHRcdFx0ICAgIFx1MDAyNmlwNl9kc3QsIFx1MDAyNmdyb3VwLVx1MDAzZWRzdC5pcDYsXG4gXHRcdFx0XHRcdFx0ICAgIHdpdGhfc3Jjcywgb3Zlcl9sbXF0LFxuLVx0XHRcdFx0XHRcdCAgICBzZmxhZywgaWdtcF90eXBlLFxuLVx0XHRcdFx0XHRcdCAgICBuZWVkX3JleG1pdCk7XG4rXHRcdFx0XHRcdFx0ICAgIHNmbGFnLCBuZWVkX3JleG1pdCk7XG4gXHR9XG4gI2VuZGlmXG4gXHR9XG5AQCAtMTc3NCw2ICsxNzY5LDY0IEBAIHN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9zZWxlY3Rfb3duX3F1ZXJpZXIoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiAjZW5kaWZcbiB9XG4gXG4rc3RhdGljIHU4IGJyX211bHRpY2FzdF9xdWVyeV90eXBlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0cmV0dXJuIHNrYi1cdTAwM2Vwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkgPyBJR01QX0hPU1RfTUVNQkVSU0hJUF9RVUVSWSA6XG4rXHRcdFx0XHRcdFx0ICBJQ01QVjZfTUdNX1FVRVJZO1xuK31cbitcbitzdGF0aWMgdm9pZCBicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbit7XG4rXHRzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0ICpwbWN0eDtcbitcdHN0cnVjdCBza19idWZmX2hlYWQgbGlzdDtcbitcdHN0cnVjdCBza19idWZmICpza2I7XG4rXG4rXHRwbWN0eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0LFxuK1x0XHRcdCAgICAgcXVlcnlfcXVldWVfd29yayk7XG4rXG4rXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2bGlzdCk7XG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XG4rXHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSwgXHUwMDI2bGlzdCk7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZS5sb2NrKTtcbitcbitcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZsaXN0KSkpIHtcbitcdFx0dTggcXVlcnlfdHlwZSA9IGJyX211bHRpY2FzdF9xdWVyeV90eXBlKHNrYik7XG4rXG4rXHRcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbitcdFx0YnJfbXVsdGljYXN0X2NvdW50KHBtY3R4LVx1MDAzZXBvcnQtXHUwMDNlYnIsIHBtY3R4LVx1MDAzZXBvcnQsIHNrYixcbitcdFx0XHRcdCAgIHF1ZXJ5X3R5cGUsIEJSX01DQVNUX0RJUl9UWCk7XG4rXHRcdE5GX0hPT0soTkZQUk9UT19CUklER0UsIE5GX0JSX0xPQ0FMX09VVCwgZGV2X25ldChza2ItXHUwMDNlZGV2KSxcbitcdFx0XHROVUxMLCBza2IsIE5VTEwsIHNrYi1cdTAwM2VkZXYsIGJyX2Rldl9xdWV1ZV9wdXNoX3htaXQpO1xuK1x0XHRsb2NhbF9iaF9lbmFibGUoKTtcbitcdH1cbit9XG4rXG4rc3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3tcbitcdHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHg7XG4rXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1xuK1x0YnJtY3R4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0LCBxdWVyeV9xdWV1ZV93b3JrKTtcbitcbitcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZsaXN0KTtcbitcdHNwaW5fbG9ja19iaChcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XG4rXHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWUsIFx1MDAyNmxpc3QpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlLmxvY2spO1xuK1xuK1x0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmxpc3QpKSkge1xuK1x0XHR1OCBxdWVyeV90eXBlID0gYnJfbXVsdGljYXN0X3F1ZXJ5X3R5cGUoc2tiKTtcbitcbitcdFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuK1x0XHRicl9tdWx0aWNhc3RfY291bnQoYnJtY3R4LVx1MDAzZWJyLCBOVUxMLCBza2IsIHF1ZXJ5X3R5cGUsXG4rXHRcdFx0XHQgICBCUl9NQ0FTVF9ESVJfUlgpO1xuK1x0XHRuZXRpZl9yeChza2IpO1xuK1x0XHRsb2NhbF9iaF9lbmFibGUoKTtcbitcdH1cbit9XG4rXG4rI2RlZmluZSBCUl9NVUxUSUNBU1RfUVVFUllfUVVFVUVfTEVOX01BWFx0MTAwMFxuK1xuIHN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4LFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydF9ncm91cCAqcGcsXG5AQCAtMTc4MywyOCArMTgzNiwzMCBAQCBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4gXHRcdFx0XHQgICAgICB1OCBzZmxhZyxcbiBcdFx0XHRcdCAgICAgIGJvb2wgKm5lZWRfcmV4bWl0KVxuIHtcbitcdHN0cnVjdCBza19idWZmX2hlYWQgKnF1ZXVlO1xuIFx0Ym9vbCBvdmVyX2xtcXQgPSAhIXNmbGFnO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi1cdHU4IGlnbXBfdHlwZTtcbiBcbiBcdGlmICghYnJfbXVsdGljYXN0X2N0eF9zaG91bGRfdXNlKGJybWN0eCwgcG1jdHgpIHx8XG4gXHQgICAgIWJyX211bHRpY2FzdF9jdHhfbWF0Y2hlc192bGFuX3Nub29waW5nKGJybWN0eCkpXG4gXHRcdHJldHVybjtcbiBcbitcdHF1ZXVlID0gcG1jdHggPyBcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSA6IFx1MDAyNmJybWN0eC1cdTAwM2VxdWVyeV9xdWV1ZTtcbitcbiBhZ2Fpbl91bmRlcl9sbXF0OlxuK1x0aWYgKHNrYl9xdWV1ZV9sZW5fbG9ja2xlc3MocXVldWUpIFx1MDAzZT0gQlJfTVVMVElDQVNUX1FVRVJZX1FVRVVFX0xFTl9NQVgpXG4rXHRcdHJldHVybjtcbitcbiBcdHNrYiA9IGJyX211bHRpY2FzdF9hbGxvY19xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgaXBfZHN0LCBncm91cCxcbi1cdFx0XHRcdCAgICAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCwgc2ZsYWcsIFx1MDAyNmlnbXBfdHlwZSxcbitcdFx0XHRcdCAgICAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCwgc2ZsYWcsXG4gXHRcdFx0XHQgICAgICAgbmVlZF9yZXhtaXQpO1xuIFx0aWYgKCFza2IpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChwbWN0eCkge1xuIFx0XHRza2ItXHUwMDNlZGV2ID0gcG1jdHgtXHUwMDNlcG9ydC1cdTAwM2VkZXY7XG4tXHRcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXHUwMDNlYnIsIHBtY3R4LVx1MDAzZXBvcnQsIHNrYiwgaWdtcF90eXBlLFxuLVx0XHRcdFx0ICAgQlJfTUNBU1RfRElSX1RYKTtcbi1cdFx0TkZfSE9PSyhORlBST1RPX0JSSURHRSwgTkZfQlJfTE9DQUxfT1VULFxuLVx0XHRcdGRldl9uZXQocG1jdHgtXHUwMDNlcG9ydC1cdTAwM2VkZXYpLCBOVUxMLCBza2IsIE5VTEwsIHNrYi1cdTAwM2VkZXYsXG4tXHRcdFx0YnJfZGV2X3F1ZXVlX3B1c2hfeG1pdCk7XG4rXHRcdHNrYl9xdWV1ZV90YWlsKHF1ZXVlLCBza2IpO1xuK1x0XHRxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCBcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZV93b3JrKTtcbiBcbiBcdFx0aWYgKG92ZXJfbG1xdCBcdTAwMjZcdTAwMjYgd2l0aF9zcmNzIFx1MDAyNlx1MDAyNiBzZmxhZykge1xuIFx0XHRcdG92ZXJfbG1xdCA9IGZhbHNlO1xuQEAgLTE4MTIsOSArMTg2Nyw4IEBAIHN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiBcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0YnJfbXVsdGljYXN0X3NlbGVjdF9vd25fcXVlcmllcihicm1jdHgsIGdyb3VwLCBza2IpO1xuLVx0XHRicl9tdWx0aWNhc3RfY291bnQoYnJtY3R4LVx1MDAzZWJyLCBOVUxMLCBza2IsIGlnbXBfdHlwZSxcbi1cdFx0XHRcdCAgIEJSX01DQVNUX0RJUl9SWCk7XG4tXHRcdG5ldGlmX3J4KHNrYik7XG4rXHRcdHNrYl9xdWV1ZV90YWlsKHF1ZXVlLCBza2IpO1xuK1x0XHRxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCBcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yayk7XG4gXHR9XG4gfVxuIFxuQEAgLTE5OTcsNiArMjA1MSwxMCBAQCB2b2lkIGJyX211bHRpY2FzdF9wb3J0X2N0eF9pbml0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQsXG4gXHRwbWN0eC1cdTAwM2Vwb3J0ID0gcG9ydDtcbiBcdHBtY3R4LVx1MDAzZXZsYW4gPSB2bGFuO1xuIFx0cG1jdHgtXHUwMDNlbXVsdGljYXN0X3JvdXRlciA9IE1EQl9SVFJfVFlQRV9URU1QX1FVRVJZO1xuK1xuK1x0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSk7XG4rXHRJTklUX1dPUksoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayk7XG4rXG4gXHR0aW1lcl9zZXR1cChcdTAwMjZwbWN0eC1cdTAwM2VpcDRfbWNfcm91dGVyX3RpbWVyLFxuIFx0XHQgICAgYnJfaXA0X211bHRpY2FzdF9yb3V0ZXJfZXhwaXJlZCwgMCk7XG4gXHR0aW1lcl9zZXR1cChcdTAwMjZwbWN0eC1cdTAwM2VpcDRfb3duX3F1ZXJ5LnRpbWVyLFxuQEAgLTIwMzgsNiArMjA5Niw4IEBAIHZvaWQgYnJfbXVsdGljYXN0X3BvcnRfY3R4X2RlaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0ICpwbWN0eClcbiBcdGRlbCB8PSBicl9pcDRfbXVsdGljYXN0X3Jwb3J0X2RlbChwbWN0eCk7XG4gXHRicl9tdWx0aWNhc3RfcnBvcnRfZGVsX25vdGlmeShwbWN0eCwgZGVsKTtcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmJyLVx1MDAzZW11bHRpY2FzdF9sb2NrKTtcbitcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yayk7XG4rXHRfX3NrYl9xdWV1ZV9wdXJnZShcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSk7XG4gfVxuIFxuIGludCBicl9tdWx0aWNhc3RfYWRkX3BvcnQoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcG9ydClcbkBAIC00MTEyLDYgKzQxNzIsOSBAQCB2b2lkIGJyX211bHRpY2FzdF9jdHhfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4gXHRzZXFjb3VudF9zcGlubG9ja19pbml0KFx1MDAyNmJybWN0eC1cdTAwM2VpcDZfcXVlcmllci5zZXEsIFx1MDAyNmJyLVx1MDAzZW11bHRpY2FzdF9sb2NrKTtcbiAjZW5kaWZcbiBcbitcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlKTtcbitcdElOSVRfV09SSyhcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmspO1xuK1xuIFx0dGltZXJfc2V0dXAoXHUwMDI2YnJtY3R4LVx1MDAzZWlwNF9tY19yb3V0ZXJfdGltZXIsXG4gXHRcdCAgICBicl9pcDRfbXVsdGljYXN0X2xvY2FsX3JvdXRlcl9leHBpcmVkLCAwKTtcbiBcdHRpbWVyX3NldHVwKFx1MDAyNmJybWN0eC1cdTAwM2VpcDRfb3RoZXJfcXVlcnkudGltZXIsXG5AQCAtNDEzNSw2ICs0MTk4LDggQEAgdm9pZCBicl9tdWx0aWNhc3RfY3R4X2luaXQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIHZvaWQgYnJfbXVsdGljYXN0X2N0eF9kZWluaXQoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eClcbiB7XG4gXHRfX2JyX211bHRpY2FzdF9zdG9wKGJybWN0eCk7XG4rXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmJybWN0eC1cdTAwM2VxdWVyeV9xdWV1ZV93b3JrKTtcbitcdF9fc2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmJybWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSk7XG4gfVxuIFxuIHZvaWQgYnJfbXVsdGljYXN0X2luaXQoc3RydWN0IG5ldF9icmlkZ2UgKmJyKVxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oIGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcbmluZGV4IGQ1NWVhOTUxNmUzZTM2Li5mOGY3N2EyZDQ4OTE2OCAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxuQEAgLTEzMSw2ICsxMzEsOCBAQCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0IHtcbiBcdHVuc2lnbmVkIGNoYXJcdFx0XHRtdWx0aWNhc3Rfcm91dGVyO1xuIFx0dTMyXHRcdFx0XHRtZGJfbl9lbnRyaWVzO1xuIFx0dTMyXHRcdFx0XHRtZGJfbWF4X2VudHJpZXM7XG4rXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICAgICAgICAgICAgIHF1ZXJ5X3F1ZXVlO1xuK1x0c3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrO1xuICNlbmRpZiAvKiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkcgKi9cbiB9O1xuIFxuQEAgLTE2Nyw2ICsxNjksOCBAQCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCB7XG4gXHRzdHJ1Y3QgYnJpZGdlX21jYXN0X293bl9xdWVyeVx0aXA2X293bl9xdWVyeTtcbiBcdHN0cnVjdCBicmlkZ2VfbWNhc3RfcXVlcmllclx0aXA2X3F1ZXJpZXI7XG4gI2VuZGlmIC8qIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpICovXG4rXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICAgICAgICAgICAgIHF1ZXJ5X3F1ZXVlO1xuK1x0c3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrO1xuICNlbmRpZiAvKiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkcgKi9cbiB9O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDM6MjU6NTguNDY5NzU0NDk0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1Mjc2MDA0OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQnJpZGdlIE11bHRpY2FzdCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBMaW51eCBrZXJuZWwsIGFuZCBpdCdzIHRvdWNoaW5nIHRoZSBicmlkZ2UgbXVsdGljYXN0IGNvZGUsIHNwZWNpZmljYWxseSBgYnJfbXVsdGljYXN0LmNgIGFuZCBgYnJfcHJpdmF0ZS5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQWgsIHRoZXkncmUgY2hhbmdpbmcgdGhlIHF1ZXJ5IGhhbmRsaW5nLlwiIEl0IGxvb2tzIGxpa2UgaW5zdGVhZCBvZiB0aGUgdXN1YWwgc3luY2hyb25vdXMgc2VuZGluZyBvZiBJR01QL01MRCBxdWVyaWVzLCB0aGV5J3JlIHF1ZXVlaW5nIHRoZW0gdXAgaW4gYSB3b3JrcXVldWUsIGBxdWVyeV9xdWV1ZV93b3JrYCwgZm9yIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLiBJbnRlcmVzdGluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgc2hpZnQgZnJvbSBkaXJlY3QgZXhlY3V0aW9uIHRvIGFuIGFzeW5jaHJvbm91cyBtb2RlbCBpbiB0aGUgYnJpZGdlIG11bHRpY2FzdCBsb2dpYy5cblxuSSBzZWUgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgY291cGxlIG9mIG5ldyBmdW5jdGlvbnMsIGBicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrYCBhbmQgYGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrYCwgd2hpY2ggYXJlIGxpa2VseSB0aGUgbWVjaGFuaXNtcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgcXVldWUuIEFuZCwgc21hcnQsIHRoZXkndmUgaW5jbHVkZWQgYSBxdWV1ZSBsZW5ndGggbGltaXQsIGBCUl9NVUxUSUNBU1RfUVVFUllfUVVFVUVfTEVOX01BWGAsIGNhcHBlZCBhdCAxMDAwLiBUaGF0J3MgZ29vZCBwcmFjdGljZSB0byBwcmV2ZW50IHJlc291cmNlIGV4aGF1c3Rpb24gaW4gY2FzZSBvZiBhbiBpc3N1ZS5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZ29pbmcgdG8gcGxheSBuaWNlIHdpdGggb3RoZXIgY29uZmlndXJlZCBmZWF0dXJlcy4gVGhlIGNvZGUncyBjbGVhcmx5IGd1YXJkZWQgYnkgYENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR2AsIHdoaWNoLCBhcyBJIGNhbiBzZWUgaW4gYGJyX3ByaXZhdGUuaGAsIGlzIHRoZSBrZXkuIE9idmlvdXNseSwgdGhlIGJyaWRnZSBzdWJzeXN0ZW0gbmVlZHMgdG8gYmUgZW5hYmxlZCB0b28sIHNvIGBDT05GSUdfQlJJREdFYCBpcyBhIG11c3QuIGBDT05GSUdfSVBWNmAgaXMgYWxzbyBpbnZvbHZlZCwgYW5kIHdoaWxlIG5vdCBzdHJpY3RseSBlc3NlbnRpYWwgZm9yIHRoZSBlbnRpcmUgcGF0Y2gsIGl0IGRvZXMgaW1wYWN0IGEgcG9ydGlvbiBvZiBpdCwgc28gSSdsbCBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIGFzIHdlbGwuIFNvLCBuZXh0IHN0ZXAsIEkgbmVlZCB0byB2ZXJpZnkgdGhlc2UgY29uZmlndXJhdGlvbnMuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAzOjI2OjM1Ljk5NzM1NzMzMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg1NzI4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX0JSSURHRV9ORVRGSUxURVIpICs9IGJyX25ldGZpbHRlci5vXFxubmV0L2JyaWRnZS9NYWtlZmlsZS0yMC1cXG5uZXQvYnJpZGdlL01ha2VmaWxlOjIxOmJyaWRnZS0kKENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORykgKz0gYnJfbXVsdGljYXN0Lm8gYnJfbWRiLm8gYnJfbXVsdGljYXN0X2VodC5vXFxubmV0L2JyaWRnZS9NYWtlZmlsZS0yMi1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfZm9yd2FyZC5jPTIwMT12b2lkIGJyX2Zsb29kKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfZm9yd2FyZC5jLTI2Ni1cXG5uZXQvYnJpZGdlL2JyX2ZvcndhcmQuYzoyNjc6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfZm9yd2FyZC5jLTI2OC1zdGF0aWMgdm9pZCBtYXliZV9kZWxpdmVyX2FkZHIoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTE3MT1zdGF0aWMgaW5saW5lIHNpemVfdCBicl9wb3J0X2luZm9fc2l6ZSh2b2lkKVxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMjA0LVxcdFxcdCsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIElGTEFfQlJQT1JUX0hPTERfVElNRVIgKi9cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoyMDU6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTIwNi1cXHRcXHQrIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpXFx0LyogSUZMQV9CUlBPUlRfTVVMVElDQVNUX1JPVVRFUiAqL1xcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9MjM0PXN0YXRpYyBpbnQgYnJfcG9ydF9maWxsX2F0dHJzKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0zMDYtXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MzA3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0zMDgtXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JSUE9SVF9NVUxUSUNBU1RfUk9VVEVSLFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9OTUxPXN0YXRpYyBpbnQgYnJfc2V0cG9ydChzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTA0OC1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoxMDQ5OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xMDUwLVxcdGlmICh0YltJRkxBX0JSUE9SVF9NVUxUSUNBU1RfUk9VVEVSXSkge1xcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9MTI5NT1zdGF0aWMgaW50IGJyX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmJyZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTQzNi1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoxNDM3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNDM4LVxcdGlmIChkYXRhW0lGTEFfQlJfTUNBU1RfUk9VVEVSXSkge1xcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9MTYxOT1zdGF0aWMgc2l6ZV90IGJyX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpicmRldilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTE2NDctXFx0ICAgICAgIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArICAgIC8qIElGTEFfQlJfRkRCX01BWF9MRUFSTkVEICovXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MTY0ODojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTY0OS1cXHQgICAgICAgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHU4KSkgKyAgICAgLyogSUZMQV9CUl9NQ0FTVF9ST1VURVIgKi9cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTE2Nzg9c3RhdGljIGludCBicl9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJyZGV2KVxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTczOS0jZW5kaWZcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoxNzQwOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNzQxLVxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CUl9NQ0FTVF9ST1VURVIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYz0xODQwPXN0YXRpYyBpbnQgYnJfZmlsbF9saW5reHN0YXRzKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xODc2LVxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jOjE4Nzc6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTE4NzgtXFx0XFx0bGltaXQgLT0gbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHN0cnVjdCBicl9tY2FzdF9zdGF0cykpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTkwNy1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoxOTA4OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xOTA5LVxcdGlmICgrK3ZsX2lkeCBcXHUwMDNlPSAqcHJpdmlkeCkge1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9Njk9c3RydWN0IG1hY19hZGRyIHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTcyLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjczOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC03NC0vKiBvdXIgb3duIHF1ZXJpZXIgKi9cXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTExOD1zdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0IHtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxMTk6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTEyMC1cXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0XFx0XFx0KnBvcnQ7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xMzUtXFx0c3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjEzNjojZW5kaWYgLyogQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HICovXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTM3LX07XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xNDA9c3RydWN0IG5ldF9icmlkZ2VfbWNhc3Qge1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE0MTojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTQyLVxcdHN0cnVjdCBuZXRfYnJpZGdlXFx0XFx0KmJyO1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTczLVxcdHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgICAgICAgICAgcXVlcnlfcXVldWVfd29yaztcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxNzQ6I2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE3NS19O1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MzkyPXN0cnVjdCBuZXRfYnJpZGdlX3BvcnQge1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNDI2LVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjQyNzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNDI4LVxcdHN0cnVjdCBicmlkZ2VfbWNhc3Rfc3RhdHNcXHRfX3BlcmNwdSAqbWNhc3Rfc3RhdHM7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD01MDA9c3RydWN0IG5ldF9icmlkZ2Uge1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNTUyLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjU1MzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNTU0LVxcdHN0cnVjdCBicmlkZ2VfbWNhc3Rfc3RhdHNcXHRfX3BlcmNwdSAqbWNhc3Rfc3RhdHM7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD01OTc9c3RydWN0IGJyX2lucHV0X3NrYl9jYiB7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC02MDAtXFx0dTE2IGZyYWdfbWF4X3NpemU7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NjAxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC02MDItXFx0dTggaWdtcDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTYzNy1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDo2Mzg6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTYzOS0jIGRlZmluZSBCUl9JTlBVVF9TS0JfQ0JfTVJPVVRFUlNfT05MWShfX3NrYilcXHQoQlJfSU5QVVRfU0tCX0NCKF9fc2tiKS1cXHUwMDNlbXJvdXRlcnNfb25seSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTc0Mj1zdGF0aWMgaW5saW5lIHU4IGJyX3ZsYW5fbXVsdGljYXN0X3JvdXRlcihjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2KVxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNzQ1LVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjc0NjojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNzQ3LVxcdGlmICghYnJfdmxhbl9pc19tYXN0ZXIodikpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD05Njk9aW50IGJyX2lvY3RsX3N0dWIoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgY21kLCB2b2lkIF9fdXNlciAqdWFyZyk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC05NzEtLyogYnJfbXVsdGljYXN0LmMgKi9cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDo5NzI6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTk3My1pbnQgYnJfbXVsdGljYXN0X3JjdihzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqKmJybWN0eCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaD00MT1zdHJ1Y3QgbmV0X2JyaWRnZV9ncm91cF9laHRfc2V0IHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaC01MS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbWNhc3RfZWh0Lmg6NTI6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaC01My12b2lkIGJyX211bHRpY2FzdF9laHRfY2xlYW5fc2V0cyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0X2dyb3VwICpwZyk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbWNhc3RfZWh0Lmg9ODY9c3RhdGljIGlubGluZSB2b2lkIGJyX211bHRpY2FzdF9laHRfaG9zdHNfZGVjKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnRfZ3JvdXAgKnBnKVxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21jYXN0X2VodC5oLTkxLX1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbWNhc3RfZWh0Lmg6OTI6I2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaC05My1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfc3dpdGNoZGV2LmM9NDYzPXN0YXRpYyBpbnQgYnJfc3dpdGNoZGV2X3ZsYW5fcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpicl9kZXYsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jLTUwOS1cXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jOjUxMDojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9zd2l0Y2hkZXYuYy01MTEtc3RydWN0IGJyX3N3aXRjaGRldl9tZGJfY29tcGxldGVfaW5mbyB7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jPTY5Nj1icl9zd2l0Y2hkZXZfbWRiX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqYnJfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2JyaWRnZS9icl9zd2l0Y2hkZXYuYy02OTkte1xcbm5ldC9icmlkZ2UvYnJfc3dpdGNoZGV2LmM6NzAwOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jLTcwMS1cXHRjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV9tZGJfZW50cnkgKm1wO1xcbi0tXFxubmV0L2JyaWRnZS9icl9zeXNmc19ici5jPTM4ND1zdGF0aWMgREVWSUNFX0FUVFJfUlcobm9fbGlua2xvY2FsX2xlYXJuKTtcXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2JyLmMtMzg1LVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYzozODY6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYy0zODctc3RhdGljIHNzaXplX3QgbXVsdGljYXN0X3JvdXRlcl9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2JyLmM9OTM1PXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpicmlkZ2VfYXR0cnNbXSA9IHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYy05NTUtXFx0XFx1MDAyNmRldl9hdHRyX25vX2xpbmtsb2NhbF9sZWFybi5hdHRyLFxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYzo5NTY6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYy05NTctXFx0XFx1MDAyNmRldl9hdHRyX211bHRpY2FzdF9yb3V0ZXIuYXR0cixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYz0yNjQ9QlJQT1JUX0FUVFJfRkxBRyhpc29sYXRlZCwgQlJfSVNPTEFURURfQklUKTtcXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2lmLmMtMjY1LVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYzoyNjY6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYy0yNjctc3RhdGljIHNzaXplX3Qgc2hvd19tdWx0aWNhc3Rfcm91dGVyKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsIGNoYXIgKmJ1ZilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYz0yODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicnBvcnRfYXR0cmlidXRlICpicnBvcnRfYXR0cnNbXSA9IHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYy0zMDQtXFx0XFx1MDAyNmJycG9ydF9hdHRyX3VuaWNhc3RfZmxvb2QsXFxubmV0L2JyaWRnZS9icl9zeXNmc19pZi5jOjMwNTojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9zeXNmc19pZi5jLTMwNi1cXHRcXHUwMDI2YnJwb3J0X2F0dHJfbXVsdGljYXN0X3JvdXRlcixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NDA9Ym9vbCBicl92bGFuX29wdHNfZXFfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy02MC1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjYxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTYyLVxcdGlmICghYnJfdmxhbl9pc19tYXN0ZXIodl9jdXJyKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz03Mj1ib29sIGJyX3ZsYW5fb3B0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnYsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTgyLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6ODM6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtODQtXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9OTg9c2l6ZV90IGJyX3ZsYW5fb3B0c19ubF9zaXplKHZvaWQpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTEwMi1cXHQgICAgICAgKyBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgLyogQlJJREdFX1ZMQU5EQl9USU5GT19JRCAqL1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6MTAzOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTEwNC1cXHQgICAgICAgKyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUiAqL1xcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0yMTc9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3Nfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0yNDAtXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzoyNDE6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMjQyLVxcdGlmICh0YltCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUl0pIHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9Mzg5PWJvb2wgYnJfdmxhbl9nbG9iYWxfb3B0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB2aWQsIHUxNiB2aWRfcmFuZ2UsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQwNi1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjQwNzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00MDgtXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBCUklER0VfVkxBTkRCX0dPUFRTX01DQVNUX1NOT09QSU5HLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz00ODM9c3RhdGljIHNpemVfdCBydG5sX3ZsYW5fZ2xvYmFsX29wdHNfbmxtc2dfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2KVxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00ODctXFx0XFx0KyBubGFfdG90YWxfc2l6ZShzaXplb2YodTE2KSkgLyogQlJJREdFX1ZMQU5EQl9HT1BUU19JRCAqL1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NDg4OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQ4OS1cXHRcXHQrIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIEJSSURHRV9WTEFOREJfR09QVFNfTUNBU1RfU05PT1BJTkcgKi9cXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NTUxPXN0YXRpYyBpbnQgYnJfdmxhbl9wcm9jZXNzX2dsb2JhbF9vbmVfb3B0cyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU2MC1cXHQqY2hhbmdlZCA9IGZhbHNlO1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NTYxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU2Mi1cXHRpZiAodGJbQlJJREdFX1ZMQU5EQl9HT1BUU19NQ0FTVF9TTk9PUElOR10pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDM6MjY6MzYuMTI1OTM4MjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDIzNDI4MjI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE11bHRpY2FzdCBRdWVyeSBQYXRjaCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXRjaC4gRmlyc3QgdGhpbmdzIGZpcnN0LCB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgYEJSSURHRWAsIGBCUklER0VfSUdNUF9TTk9PUElOR2AsIGFuZCBpZGVhbGx5LCBgSVBWNmAgZm9yIHRlc3RpbmcgdGhlIGBicl9pcDZfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5YCBmdW5jdGlvbi4gTWFrZXMgc2Vuc2UuXG5cbk5vdywgbGV0J3MgYnJlYWsgZG93biB0aGUgY29yZSBmdW5jdGlvbnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrYCwgYGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrYCwgYGJyX211bHRpY2FzdF9xdWVyeV90eXBlYCAoYSBzaW1wbGUgaGVscGVyKSwgYW5kIG1vZGlmaWVzIGBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5YC4gQWxyaWdodCwgc28gdGhlIG1haW4gcGxheWVycyBhcmUgYGJyX211bHRpY2FzdF9wb3J0X3F1ZXJ5X3F1ZXVlX3dvcmtgLCBgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmtgLCBhbmQgZXNwZWNpYWxseSBgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMgYWx3YXlzIHJlYWNoYWJpbGl0eS4gVGhlc2UgYXJlIHdvcmtxdWV1ZSBoYW5kbGVycywgbWVhbmluZyB0aGV5J2xsIGJlIGNhbGxlZCB3aGVuIHdvcmsgaXMgcXVldWVkIHRvIHRoZW0uIFRoZSB3b3JrIGlzIHF1ZXVlZCwgSSBzZWUgaGVyZSwgaW4gYF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlgLiBHb29kLCB0aGF0J3Mgd2hhdCBJIHdhbnQgdG8ga25vdy4gYF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlgIGlzIGludm9rZWQgYnkgYGJyX211bHRpY2FzdF9zZW5kX3F1ZXJ5YCBhbmQgYGJyX211bHRpY2FzdF9zZW5kX3BvcnRfZ3JvdXBfcXVlcnlgLiBFeGNlbGxlbnQuIFRoZXNlIGNhbGxzIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIElHTVAvTUxEIHRpbWVycywgb3Igd2hlbiBhIG5ldyBxdWVyaWVyIGlzIGVsZWN0ZWQuIFNvIHllcywgdGhlc2UgYWxsIGFwcGVhciByZWFjaGFibGUgYW5kIGNhbGxlZCBpbiB0aGUgY29ycmVjdCB3YXlzLlxuXG5SaWdodCwgc28gdG8gbWFrZSBzdXJlIHRoZSBjb3JlIGxvZ2ljIGlzIHNvdW5kLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlgIGlzIGluZGVlZCByZWFjaGFibGUuIFRoYXQncyB0aGUgY3JpdGljYWwgcG9pbnQgSSdsbCBzdGFydCB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI4MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMzoyNjo1MC4zNjAyMjI3NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTY3MDEyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmM9MTgwND1zdGF0aWMgdm9pZCBicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTE4MjktXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYzoxODMwOnN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTE4MzEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCAqcG1jdHgsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jPTE4OTk9c3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMTkzNy1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjE5Mzg6XFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBOVUxMLCBOVUxMLCBcXHUwMDI2YnJfZ3JvdXAsIGZhbHNlLFxcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMTkzOS1cXHRcXHRcXHRcXHQgIDAsIE5VTEwpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0xOTg3PXN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9wb3J0X2dyb3VwX3JleG1pdChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMjAyMC1cXHRcXHRwZy1cXHUwMDNlZ3JwX3F1ZXJ5X3JleG1pdF9jbnQtLTtcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjIwMjE6XFx0XFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgXFx1MDAyNnBnLVxcdTAwM2VrZXkuYWRkcixcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTIwMjItXFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2cGctXFx1MDAzZWtleS5hZGRyLCBmYWxzZSwgMSwgTlVMTCk7XFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMDIzLVxcdH1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjIwMjQ6XFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgXFx1MDAyNnBnLVxcdTAwM2VrZXkuYWRkcixcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTIwMjUtXFx0XFx0XFx0XFx0ICBcXHUwMDI2cGctXFx1MDAzZWtleS5hZGRyLCB0cnVlLCAwLCBcXHUwMDI2bmVlZF9yZXhtaXQpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0yMjkxPXN0YXRpYyB2b2lkIF9fZ3JwX3NyY19xdWVyeV9tYXJrZWRfYW5kX3JleG1pdChzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxcbi0tXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMzI4LVxcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmM6MjMyOTpcXHRfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLCBcXHUwMDI2cGctXFx1MDAzZWtleS5hZGRyLFxcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMjMzMC1cXHRcXHRcXHRcXHQgIFxcdTAwMjZwZy1cXHUwMDNla2V5LmFkZHIsIHRydWUsIDEsIE5VTEwpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0yMzM4PXN0YXRpYyB2b2lkIF9fZ3JwX3NlbmRfcXVlcnlfYW5kX3JleG1pdChzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxcbi0tXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMzU5LVxcdFxcdHBnLVxcdTAwM2VncnBfcXVlcnlfcmV4bWl0X2NudCA9IGJybWN0eC1cXHUwMDNlbXVsdGljYXN0X2xhc3RfbWVtYmVyX2NvdW50IC0gMTtcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjIzNjA6XFx0XFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgXFx1MDAyNnBnLVxcdTAwM2VrZXkuYWRkcixcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTIzNjEtXFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2cGctXFx1MDAzZWtleS5hZGRyLCBmYWxzZSwgMCwgTlVMTCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jPTM3MTU9YnJfbXVsdGljYXN0X2xlYXZlX2dyb3VwKHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTM3NTctXFx0aWYgKGJybWN0eC1cXHUwMDNlbXVsdGljYXN0X3F1ZXJpZXIpIHtcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjM3NTg6XFx0XFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBOVUxMLCBOVUxMLCBcXHUwMDI2bXAtXFx1MDAzZWFkZHIsXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0zNzU5LVxcdFxcdFxcdFxcdFxcdCAgZmFsc2UsIDAsIE5VTEwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMzoyNjo1MC40NTk4OTkyNTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjAzNDA1NTY3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcGF0Y2guXG5cbioqQW5hbHl6aW5nIHRoZSBCcmlkZ2UgTXVsdGljYXN0IExvZ2ljIFBhdGNoKipcblxuQWxyaWdodCwgdGhpcyBwYXRjaCBpcyBjbGVhcmx5IHRvdWNoaW5nIHRoZSBtdWx0aWNhc3QgbG9naWMgd2l0aGluIHRoZSBicmlkZ2UsIHNwZWNpZmljYWxseSBhcm91bmQgSUdNUC9NTEQgcXVlcnkgdHJhbnNtaXNzaW9uLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGNoYW5nZSBpbnZvbHZlcyBzaGlmdGluZyBmcm9tIHN5bmNocm9ub3VzIHF1ZXJ5IHNlbmRpbmcgdG8gYSB3b3JrcXVldWUgYXBwcm9hY2guIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZTsgaW50cm9kdWNpbmcgYSB3b3JrcXVldWUgY2FuIHVuY292ZXIgcmFjZSBjb25kaXRpb25zIG9yIHRpbWluZyBpc3N1ZXMgdGhhdCB3b3VsZG4ndCBzdXJmYWNlIHdpdGggc3luY2hyb25vdXMgb3BlcmF0aW9ucy5cblxuU28sIGZvciBmdXp6aW5nIHRoaXMsIEknbGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnM6IGBCUklER0VgLCBkZWZpbml0ZWx5IGBCUklER0VfSUdNUF9TTk9PUElOR2AsIGFuZCBpZGVhbGx5IGBJUFY2YCBhcyB3ZWxsIHNpbmNlIHdlJ3JlIGxvb2tpbmcgYXQgTUxEIGFzIGEgcG90ZW50aWFsIGZvY3VzLlxuXG5UaGUgY29yZSBzeW1ib2xzIEknbGwgd2FudCB0byBob25lIGluIG9uIGFyZSBgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29ya2AsIGBicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29ya2AsIGFuZCBgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAuIFRoZXNlIGxvb2sgbGlrZSB0aGUga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHF1ZXVpbmcgYW5kIHNlbmRpbmcgdGhlIHF1ZXJpZXMuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB3aGF0IHRoZSBjb25maWcgZGVwZW5kZW5jaWVzIGFyZS4gYENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR2Agc2VlbXMgdG8gYmUgdGhlIG1haW4gZHJpdmVyLCB3aXRoIGBDT05GSUdfQlJJREdFYCBiZWluZyBhIHByZXJlcXVpc2l0ZSwgYW5kIGBDT05GSUdfSVBWNmAgbmVlZGVkIGZvciBNTEQuIEdvdCBpdC4gSSdsbCBtYWtlIHN1cmUgdGhlIHJlc3VsdHMgcmVmbGVjdCB0aGlzIGluZm9ybWF0aW9uIHByZWNpc2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NTUsIk91dHB1dFRva2VucyI6MTUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAzOjI3OjAyLjQ5Mzk1NzE2MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MzExODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9JR01QX1NOT09QSU5HXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29ya1wiLFxuICAgIFwiYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmtcIixcbiAgICBcIl9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYnJpZGdlIG11bHRpY2FzdCBsb2dpYyB0byBxdWV1ZSBJR01QL01MRCBxdWVyaWVzIHRvIGEgd29ya3F1ZXVlIGluc3RlYWQgb2Ygc2VuZGluZyB0aGVtIHN5bmNocm9ub3VzbHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBicmlkZ2UgbXVsdGljYXN0IGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBhc3luY2hyb25vdXMgcHJvY2Vzc2luZyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWtzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX0lHTVBfU05PT1BJTkdcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrXCIsXG4gICAgXCJicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29ya1wiLFxuICAgIFwiX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmlkZ2UgbXVsdGljYXN0IGxvZ2ljIHRvIHF1ZXVlIElHTVAvTUxEIHF1ZXJpZXMgdG8gYSB3b3JrcXVldWUgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZW0gc3luY2hyb25vdXNseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGJyaWRnZSBtdWx0aWNhc3QgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIGRvZXMgbm90IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVha3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowv8hmd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 03:06:19 +0000 UTC FinishedAt: 2026-07-09 03:27:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08030ddb87b4c6c6a2c03c82731b5e188f02f5b9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_IGMP_SNOOPING", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08030ddb87b4c6c6a2c03c82731b5e188f02f5b9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_IGMP_SNOOPING", "IPV6" ], "series_id": "350db9d7-11f8-4b61-9ff8-3d20ceb29f5d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_multicast_port_query_queue_work", "br_multicast_query_queue_work", "__br_multicast_send_query" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAzOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfSUdNUF9TTk9PUElORyYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayYjMzQ7LAogICAgJiMzNDticl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29yayYjMzQ7LAogICAgJiMzNDtfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmlkZ2UgbXVsdGljYXN0IGxvZ2ljIHRvIHF1ZXVlIElHTVAvTUxEIHF1ZXJpZXMgdG8gYSB3b3JrcXVldWUgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZW0gc3luY2hyb25vdXNseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGJyaWRnZSBtdWx0aWNhc3QgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIGRvZXMgbm90IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVha3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDM6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ODIxNmI0NDQ0MTQ3ODVlMzMwMGI5MDE4MGEwZWMxODgwNjE3ZTA3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAwMzoyNTo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jIGIvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuY1xuaW5kZXggNmIzYWM0NzNmZDIyOGIuLmYxMTJmYmIzNzRjMGRlIDEwMDY0NFxuLS0tIGEvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuY1xuQEAgLTkyNiw3ICYjNDM7OTI2LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1cbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydF9ncm91cCAqcGcsXG4gXHRcdFx0XHRcdFx0ICAgIF9fYmUzMiBpcF9kc3QsIF9fYmUzMiBncm91cCxcbiBcdFx0XHRcdFx0XHQgICAgYm9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbXF0LFxuLVx0XHRcdFx0XHRcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIHU4IHNmbGFnLFxuIFx0XHRcdFx0XHRcdCAgICBib29sICpuZWVkX3JleG1pdClcbiB7XG4gXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwID0gcGcgPyBwZy1cdTAwM2VrZXkucG9ydCA6IE5VTEw7XG5AQCAtMTAwNiw3ICYjNDM7MTAwNiw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA0X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtXG4gXHRza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCBza2ItXHUwMDNlbGVuKTtcbiBcdG1ydCA9IGdyb3VwID8gYnJtY3R4LVx1MDAzZW11bHRpY2FzdF9sYXN0X21lbWJlcl9pbnRlcnZhbCA6XG4gXHRcdCAgICAgIGJybWN0eC1cdTAwM2VtdWx0aWNhc3RfcXVlcnlfcmVzcG9uc2VfaW50ZXJ2YWw7XG4tXHQqaWdtcF90eXBlID0gSUdNUF9IT1NUX01FTUJFUlNISVBfUVVFUlk7XG4gXG4gXHRzd2l0Y2ggKGJybWN0eC1cdTAwM2VtdWx0aWNhc3RfaWdtcF92ZXJzaW9uKSB7XG4gXHRjYXNlIDI6XG5AQCAtMTA3Miw3ICYjNDM7MTA3MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA2X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtXG4gXHRcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqaXA2X2RzdCxcbiBcdFx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpncm91cCxcbiBcdFx0XHRcdFx0XHQgICAgYm9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbHF0LFxuLVx0XHRcdFx0XHRcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIHU4IHNmbGFnLFxuIFx0XHRcdFx0XHRcdCAgICBib29sICpuZWVkX3JleG1pdClcbiB7XG4gXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwID0gcGcgPyBwZy1cdTAwM2VrZXkucG9ydCA6IE5VTEw7XG5AQCAtMTE2Niw3ICYjNDM7MTE2NSw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA2X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtXG4gXHRpbnRlcnZhbCA9IGlwdjZfYWRkcl9hbnkoZ3JvdXApID9cbiBcdFx0XHRicm1jdHgtXHUwMDNlbXVsdGljYXN0X3F1ZXJ5X3Jlc3BvbnNlX2ludGVydmFsIDpcbiBcdFx0XHRicm1jdHgtXHUwMDNlbXVsdGljYXN0X2xhc3RfbWVtYmVyX2ludGVydmFsO1xuLVx0KmlnbXBfdHlwZSA9IElDTVBWNl9NR01fUVVFUlk7XG4gXHRzd2l0Y2ggKGJybWN0eC1cdTAwM2VtdWx0aWNhc3RfbWxkX3ZlcnNpb24pIHtcbiBcdGNhc2UgMTpcbiBcdFx0bWxkcSA9IChzdHJ1Y3QgbWxkX21zZyAqKWljbXA2X2hkcihza2IpO1xuQEAgLTEyMzcsOCAmIzQzOzEyMzUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxuIFx0XHRcdFx0XHRcdHN0cnVjdCBicl9pcCAqaXBfZHN0LFxuIFx0XHRcdFx0XHRcdHN0cnVjdCBicl9pcCAqZ3JvdXAsXG4gXHRcdFx0XHRcdFx0Ym9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbXF0LFxuLVx0XHRcdFx0XHRcdHU4IHNmbGFnLCB1OCAqaWdtcF90eXBlLFxuLVx0XHRcdFx0XHRcdGJvb2wgKm5lZWRfcmV4bWl0KVxuJiM0MztcdFx0XHRcdFx0XHR1OCBzZmxhZywgYm9vbCAqbmVlZF9yZXhtaXQpXG4ge1xuIFx0X19iZTMyIGlwNF9kc3Q7XG4gXG5AQCAtMTI0OCw4ICYjNDM7MTI0NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4gXHRcdHJldHVybiBicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLFxuIFx0XHRcdFx0XHRcdCAgICBpcDRfZHN0LCBncm91cC1cdTAwM2Vkc3QuaXA0LFxuIFx0XHRcdFx0XHRcdCAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCxcbi1cdFx0XHRcdFx0XHQgICAgc2ZsYWcsIGlnbXBfdHlwZSxcbi1cdFx0XHRcdFx0XHQgICAgbmVlZF9yZXhtaXQpO1xuJiM0MztcdFx0XHRcdFx0XHQgICAgc2ZsYWcsIG5lZWRfcmV4bWl0KTtcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbiBcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6IHtcbiBcdFx0c3RydWN0IGluNl9hZGRyIGlwNl9kc3Q7XG5AQCAtMTI2Myw4ICYjNDM7MTI1OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4gXHRcdHJldHVybiBicl9pcDZfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLFxuIFx0XHRcdFx0XHRcdCAgICBcdTAwMjZpcDZfZHN0LCBcdTAwMjZncm91cC1cdTAwM2Vkc3QuaXA2LFxuIFx0XHRcdFx0XHRcdCAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCxcbi1cdFx0XHRcdFx0XHQgICAgc2ZsYWcsIGlnbXBfdHlwZSxcbi1cdFx0XHRcdFx0XHQgICAgbmVlZF9yZXhtaXQpO1xuJiM0MztcdFx0XHRcdFx0XHQgICAgc2ZsYWcsIG5lZWRfcmV4bWl0KTtcbiBcdH1cbiAjZW5kaWZcbiBcdH1cbkBAIC0xNzc0LDYgJiM0MzsxNzY5LDY0IEBAIHN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9zZWxlY3Rfb3duX3F1ZXJpZXIoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiAjZW5kaWZcbiB9XG4gXG4mIzQzO3N0YXRpYyB1OCBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHNrYi1cdTAwM2Vwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkgPyBJR01QX0hPU1RfTUVNQkVSU0hJUF9RVUVSWSA6XG4mIzQzO1x0XHRcdFx0XHRcdCAgSUNNUFY2X01HTV9RVUVSWTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0ICpwbWN0eDtcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiYjNDM7XG4mIzQzO1x0cG1jdHggPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCxcbiYjNDM7XHRcdFx0ICAgICBxdWVyeV9xdWV1ZV93b3JrKTtcbiYjNDM7XG4mIzQzO1x0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNmxpc3QpO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZS5sb2NrKTtcbiYjNDM7XHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSwgXHUwMDI2bGlzdCk7XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XG4mIzQzO1xuJiM0MztcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZsaXN0KSkpIHtcbiYjNDM7XHRcdHU4IHF1ZXJ5X3R5cGUgPSBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZShza2IpO1xuJiM0MztcbiYjNDM7XHRcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiYjNDM7XHRcdGJyX211bHRpY2FzdF9jb3VudChwbWN0eC1cdTAwM2Vwb3J0LVx1MDAzZWJyLCBwbWN0eC1cdTAwM2Vwb3J0LCBza2IsXG4mIzQzO1x0XHRcdFx0ICAgcXVlcnlfdHlwZSwgQlJfTUNBU1RfRElSX1RYKTtcbiYjNDM7XHRcdE5GX0hPT0soTkZQUk9UT19CUklER0UsIE5GX0JSX0xPQ0FMX09VVCwgZGV2X25ldChza2ItXHUwMDNlZGV2KSxcbiYjNDM7XHRcdFx0TlVMTCwgc2tiLCBOVUxMLCBza2ItXHUwMDNlZGV2LCBicl9kZXZfcXVldWVfcHVzaF94bWl0KTtcbiYjNDM7XHRcdGxvY2FsX2JoX2VuYWJsZSgpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eDtcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiYjNDM7XG4mIzQzO1x0YnJtY3R4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0LCBxdWVyeV9xdWV1ZV93b3JrKTtcbiYjNDM7XG4mIzQzO1x0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNmxpc3QpO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XG4mIzQzO1x0c2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlLCBcdTAwMjZsaXN0KTtcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XG4mIzQzO1xuJiM0MztcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZsaXN0KSkpIHtcbiYjNDM7XHRcdHU4IHF1ZXJ5X3R5cGUgPSBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZShza2IpO1xuJiM0MztcbiYjNDM7XHRcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiYjNDM7XHRcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXHUwMDNlYnIsIE5VTEwsIHNrYiwgcXVlcnlfdHlwZSxcbiYjNDM7XHRcdFx0XHQgICBCUl9NQ0FTVF9ESVJfUlgpO1xuJiM0MztcdFx0bmV0aWZfcngoc2tiKTtcbiYjNDM7XHRcdGxvY2FsX2JoX2VuYWJsZSgpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7I2RlZmluZSBCUl9NVUxUSUNBU1RfUVVFUllfUVVFVUVfTEVOX01BWFx0MTAwMFxuJiM0MztcbiBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4gXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0ICpwbWN0eCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnRfZ3JvdXAgKnBnLFxuQEAgLTE3ODMsMjggJiM0MzsxODM2LDMwIEBAIHN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiBcdFx0XHRcdCAgICAgIHU4IHNmbGFnLFxuIFx0XHRcdFx0ICAgICAgYm9vbCAqbmVlZF9yZXhtaXQpXG4ge1xuJiM0MztcdHN0cnVjdCBza19idWZmX2hlYWQgKnF1ZXVlO1xuIFx0Ym9vbCBvdmVyX2xtcXQgPSAhIXNmbGFnO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi1cdHU4IGlnbXBfdHlwZTtcbiBcbiBcdGlmICghYnJfbXVsdGljYXN0X2N0eF9zaG91bGRfdXNlKGJybWN0eCwgcG1jdHgpIHx8XG4gXHQgICAgIWJyX211bHRpY2FzdF9jdHhfbWF0Y2hlc192bGFuX3Nub29waW5nKGJybWN0eCkpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRxdWV1ZSA9IHBtY3R4ID8gXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWUgOiBcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWU7XG4mIzQzO1xuIGFnYWluX3VuZGVyX2xtcXQ6XG4mIzQzO1x0aWYgKHNrYl9xdWV1ZV9sZW5fbG9ja2xlc3MocXVldWUpIFx1MDAzZT0gQlJfTVVMVElDQVNUX1FVRVJZX1FVRVVFX0xFTl9NQVgpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0c2tiID0gYnJfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLCBpcF9kc3QsIGdyb3VwLFxuLVx0XHRcdFx0ICAgICAgIHdpdGhfc3Jjcywgb3Zlcl9sbXF0LCBzZmxhZywgXHUwMDI2aWdtcF90eXBlLFxuJiM0MztcdFx0XHRcdCAgICAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCwgc2ZsYWcsXG4gXHRcdFx0XHQgICAgICAgbmVlZF9yZXhtaXQpO1xuIFx0aWYgKCFza2IpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChwbWN0eCkge1xuIFx0XHRza2ItXHUwMDNlZGV2ID0gcG1jdHgtXHUwMDNlcG9ydC1cdTAwM2VkZXY7XG4tXHRcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXHUwMDNlYnIsIHBtY3R4LVx1MDAzZXBvcnQsIHNrYiwgaWdtcF90eXBlLFxuLVx0XHRcdFx0ICAgQlJfTUNBU1RfRElSX1RYKTtcbi1cdFx0TkZfSE9PSyhORlBST1RPX0JSSURHRSwgTkZfQlJfTE9DQUxfT1VULFxuLVx0XHRcdGRldl9uZXQocG1jdHgtXHUwMDNlcG9ydC1cdTAwM2VkZXYpLCBOVUxMLCBza2IsIE5VTEwsIHNrYi1cdTAwM2VkZXYsXG4tXHRcdFx0YnJfZGV2X3F1ZXVlX3B1c2hfeG1pdCk7XG4mIzQzO1x0XHRza2JfcXVldWVfdGFpbChxdWV1ZSwgc2tiKTtcbiYjNDM7XHRcdHF1ZXVlX3dvcmsoc3lzdGVtX2hpZ2hwcmlfd3EsIFx1MDAyNnBtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmspO1xuIFxuIFx0XHRpZiAob3Zlcl9sbXF0IFx1MDAyNlx1MDAyNiB3aXRoX3NyY3MgXHUwMDI2XHUwMDI2IHNmbGFnKSB7XG4gXHRcdFx0b3Zlcl9sbXF0ID0gZmFsc2U7XG5AQCAtMTgxMiw5ICYjNDM7MTg2Nyw4IEBAIHN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiBcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0YnJfbXVsdGljYXN0X3NlbGVjdF9vd25fcXVlcmllcihicm1jdHgsIGdyb3VwLCBza2IpO1xuLVx0XHRicl9tdWx0aWNhc3RfY291bnQoYnJtY3R4LVx1MDAzZWJyLCBOVUxMLCBza2IsIGlnbXBfdHlwZSxcbi1cdFx0XHRcdCAgIEJSX01DQVNUX0RJUl9SWCk7XG4tXHRcdG5ldGlmX3J4KHNrYik7XG4mIzQzO1x0XHRza2JfcXVldWVfdGFpbChxdWV1ZSwgc2tiKTtcbiYjNDM7XHRcdHF1ZXVlX3dvcmsoc3lzdGVtX2hpZ2hwcmlfd3EsIFx1MDAyNmJybWN0eC1cdTAwM2VxdWVyeV9xdWV1ZV93b3JrKTtcbiBcdH1cbiB9XG4gXG5AQCAtMTk5Nyw2ICYjNDM7MjA1MSwxMCBAQCB2b2lkIGJyX211bHRpY2FzdF9wb3J0X2N0eF9pbml0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQsXG4gXHRwbWN0eC1cdTAwM2Vwb3J0ID0gcG9ydDtcbiBcdHBtY3R4LVx1MDAzZXZsYW4gPSB2bGFuO1xuIFx0cG1jdHgtXHUwMDNlbXVsdGljYXN0X3JvdXRlciA9IE1EQl9SVFJfVFlQRV9URU1QX1FVRVJZO1xuJiM0MztcbiYjNDM7XHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnBtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlKTtcbiYjNDM7XHRJTklUX1dPUksoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayk7XG4mIzQzO1xuIFx0dGltZXJfc2V0dXAoXHUwMDI2cG1jdHgtXHUwMDNlaXA0X21jX3JvdXRlcl90aW1lcixcbiBcdFx0ICAgIGJyX2lwNF9tdWx0aWNhc3Rfcm91dGVyX2V4cGlyZWQsIDApO1xuIFx0dGltZXJfc2V0dXAoXHUwMDI2cG1jdHgtXHUwMDNlaXA0X293bl9xdWVyeS50aW1lcixcbkBAIC0yMDM4LDYgJiM0MzsyMDk2LDggQEAgdm9pZCBicl9tdWx0aWNhc3RfcG9ydF9jdHhfZGVpbml0KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4KVxuIFx0ZGVsIHw9IGJyX2lwNF9tdWx0aWNhc3RfcnBvcnRfZGVsKHBtY3R4KTtcbiBcdGJyX211bHRpY2FzdF9ycG9ydF9kZWxfbm90aWZ5KHBtY3R4LCBkZWwpO1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YnItXHUwMDNlbXVsdGljYXN0X2xvY2spO1xuJiM0MztcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yayk7XG4mIzQzO1x0X19za2JfcXVldWVfcHVyZ2UoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWUpO1xuIH1cbiBcbiBpbnQgYnJfbXVsdGljYXN0X2FkZF9wb3J0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQpXG5AQCAtNDExMiw2ICYjNDM7NDE3Miw5IEBAIHZvaWQgYnJfbXVsdGljYXN0X2N0eF9pbml0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbiBcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXHUwMDI2YnJtY3R4LVx1MDAzZWlwNl9xdWVyaWVyLnNlcSwgXHUwMDI2YnItXHUwMDNlbXVsdGljYXN0X2xvY2spO1xuICNlbmRpZlxuIFxuJiM0MztcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlKTtcbiYjNDM7XHRJTklUX1dPUksoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmssIGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrKTtcbiYjNDM7XG4gXHR0aW1lcl9zZXR1cChcdTAwMjZicm1jdHgtXHUwMDNlaXA0X21jX3JvdXRlcl90aW1lcixcbiBcdFx0ICAgIGJyX2lwNF9tdWx0aWNhc3RfbG9jYWxfcm91dGVyX2V4cGlyZWQsIDApO1xuIFx0dGltZXJfc2V0dXAoXHUwMDI2YnJtY3R4LVx1MDAzZWlwNF9vdGhlcl9xdWVyeS50aW1lcixcbkBAIC00MTM1LDYgJiM0Mzs0MTk4LDggQEAgdm9pZCBicl9tdWx0aWNhc3RfY3R4X2luaXQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIHZvaWQgYnJfbXVsdGljYXN0X2N0eF9kZWluaXQoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eClcbiB7XG4gXHRfX2JyX211bHRpY2FzdF9zdG9wKGJybWN0eCk7XG4mIzQzO1x0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yayk7XG4mIzQzO1x0X19za2JfcXVldWVfcHVyZ2UoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlKTtcbiB9XG4gXG4gdm9pZCBicl9tdWx0aWNhc3RfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIpXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9wcml2YXRlLmggYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxuaW5kZXggZDU1ZWE5NTE2ZTNlMzYuLmY4Zjc3YTJkNDg5MTY4IDEwMDY0NFxuLS0tIGEvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXG5AQCAtMTMxLDYgJiM0MzsxMzEsOCBAQCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0IHtcbiBcdHVuc2lnbmVkIGNoYXJcdFx0XHRtdWx0aWNhc3Rfcm91dGVyO1xuIFx0dTMyXHRcdFx0XHRtZGJfbl9lbnRyaWVzO1xuIFx0dTMyXHRcdFx0XHRtZGJfbWF4X2VudHJpZXM7XG4mIzQzO1x0c3RydWN0IHNrX2J1ZmZfaGVhZCAgICAgICAgICAgICBxdWVyeV9xdWV1ZTtcbiYjNDM7XHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgICAgICAgICAgIHF1ZXJ5X3F1ZXVlX3dvcms7XG4gI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xuIH07XG4gXG5AQCAtMTY3LDYgJiM0MzsxNjksOCBAQCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCB7XG4gXHRzdHJ1Y3QgYnJpZGdlX21jYXN0X293bl9xdWVyeVx0aXA2X293bl9xdWVyeTtcbiBcdHN0cnVjdCBicmlkZ2VfbWNhc3RfcXVlcmllclx0aXA2X3F1ZXJpZXI7XG4gI2VuZGlmIC8qIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpICovXG4mIzQzO1x0c3RydWN0IHNrX2J1ZmZfaGVhZCAgICAgICAgICAgICBxdWVyeV9xdWV1ZTtcbiYjNDM7XHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgICAgICAgICAgICAgIHF1ZXJ5X3F1ZXVlX3dvcms7XG4gI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xuIH07XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDM6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0JSSURHRV9JR01QX1NOT09QSU5HJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O2JyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O19fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJyaWRnZSBtdWx0aWNhc3QgbG9naWMgdG8gcXVldWUgSUdNUC9NTEQgcXVlcmllcyB0byBhIHdvcmtxdWV1ZSBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlbSBzeW5jaHJvbm91c2x5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgYnJpZGdlIG11bHRpY2FzdCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcgZG9lcyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG1lbW9yeSBsZWFrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTgyMTZiNDQ0NDE0Nzg1ZTMzMDBiOTAxODBhMGVjMTg4MDYxN2UwNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDkgMDM6MjU6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jIGIvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYwppbmRleCA2YjNhYzQ3M2ZkMjI4Yi4uZjExMmZiYjM3NGMwZGUgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYwpAQCAtOTI2LDcgJiM0Mzs5MjYsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX2lwNF9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybQogCQkJCQkJICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnRfZ3JvdXAgKnBnLAogCQkJCQkJICAgIF9fYmUzMiBpcF9kc3QsIF9fYmUzMiBncm91cCwKIAkJCQkJCSAgICBib29sIHdpdGhfc3JjcywgYm9vbCBvdmVyX2xtcXQsCi0JCQkJCQkgICAgdTggc2ZsYWcsIHU4ICppZ21wX3R5cGUsCiYjNDM7CQkJCQkJICAgIHU4IHNmbGFnLAogCQkJCQkJICAgIGJvb2wgKm5lZWRfcmV4bWl0KQogewogCXN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAgPSBwZyA/IHBnLSZndDtrZXkucG9ydCA6IE5VTEw7CkBAIC0xMDA2LDcgJiM0MzsxMDA2LDYgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm0KIAlza2Jfc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiLCBza2ItJmd0O2xlbik7CiAJbXJ0ID0gZ3JvdXAgPyBicm1jdHgtJmd0O211bHRpY2FzdF9sYXN0X21lbWJlcl9pbnRlcnZhbCA6CiAJCSAgICAgIGJybWN0eC0mZ3Q7bXVsdGljYXN0X3F1ZXJ5X3Jlc3BvbnNlX2ludGVydmFsOwotCSppZ21wX3R5cGUgPSBJR01QX0hPU1RfTUVNQkVSU0hJUF9RVUVSWTsKIAogCXN3aXRjaCAoYnJtY3R4LSZndDttdWx0aWNhc3RfaWdtcF92ZXJzaW9uKSB7CiAJY2FzZSAyOgpAQCAtMTA3Miw3ICYjNDM7MTA3MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA2X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtCiAJCQkJCQkgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICppcDZfZHN0LAogCQkJCQkJICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZ3JvdXAsCiAJCQkJCQkgICAgYm9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbHF0LAotCQkJCQkJICAgIHU4IHNmbGFnLCB1OCAqaWdtcF90eXBlLAomIzQzOwkJCQkJCSAgICB1OCBzZmxhZywKIAkJCQkJCSAgICBib29sICpuZWVkX3JleG1pdCkKIHsKIAlzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwID0gcGcgPyBwZy0mZ3Q7a2V5LnBvcnQgOiBOVUxMOwpAQCAtMTE2Niw3ICYjNDM7MTE2NSw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA2X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtCiAJaW50ZXJ2YWwgPSBpcHY2X2FkZHJfYW55KGdyb3VwKSA/CiAJCQlicm1jdHgtJmd0O211bHRpY2FzdF9xdWVyeV9yZXNwb25zZV9pbnRlcnZhbCA6CiAJCQlicm1jdHgtJmd0O211bHRpY2FzdF9sYXN0X21lbWJlcl9pbnRlcnZhbDsKLQkqaWdtcF90eXBlID0gSUNNUFY2X01HTV9RVUVSWTsKIAlzd2l0Y2ggKGJybWN0eC0mZ3Q7bXVsdGljYXN0X21sZF92ZXJzaW9uKSB7CiAJY2FzZSAxOgogCQltbGRxID0gKHN0cnVjdCBtbGRfbXNnICopaWNtcDZfaGRyKHNrYik7CkBAIC0xMjM3LDggJiM0MzsxMjM1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCwKIAkJCQkJCXN0cnVjdCBicl9pcCAqaXBfZHN0LAogCQkJCQkJc3RydWN0IGJyX2lwICpncm91cCwKIAkJCQkJCWJvb2wgd2l0aF9zcmNzLCBib29sIG92ZXJfbG1xdCwKLQkJCQkJCXU4IHNmbGFnLCB1OCAqaWdtcF90eXBlLAotCQkJCQkJYm9vbCAqbmVlZF9yZXhtaXQpCiYjNDM7CQkJCQkJdTggc2ZsYWcsIGJvb2wgKm5lZWRfcmV4bWl0KQogewogCV9fYmUzMiBpcDRfZHN0OwogCkBAIC0xMjQ4LDggJiM0MzsxMjQ1LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCwKIAkJcmV0dXJuIGJyX2lwNF9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoYnJtY3R4LCBwbWN0eCwgcGcsCiAJCQkJCQkgICAgaXA0X2RzdCwgZ3JvdXAtJmd0O2RzdC5pcDQsCiAJCQkJCQkgICAgd2l0aF9zcmNzLCBvdmVyX2xtcXQsCi0JCQkJCQkgICAgc2ZsYWcsIGlnbXBfdHlwZSwKLQkJCQkJCSAgICBuZWVkX3JleG1pdCk7CiYjNDM7CQkJCQkJICAgIHNmbGFnLCBuZWVkX3JleG1pdCk7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKIAljYXNlIGh0b25zKEVUSF9QX0lQVjYpOiB7CiAJCXN0cnVjdCBpbjZfYWRkciBpcDZfZHN0OwpAQCAtMTI2Myw4ICYjNDM7MTI1OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsCiAJCXJldHVybiBicl9pcDZfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLAogCQkJCQkJICAgICZhbXA7aXA2X2RzdCwgJmFtcDtncm91cC0mZ3Q7ZHN0LmlwNiwKIAkJCQkJCSAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCwKLQkJCQkJCSAgICBzZmxhZywgaWdtcF90eXBlLAotCQkJCQkJICAgIG5lZWRfcmV4bWl0KTsKJiM0MzsJCQkJCQkgICAgc2ZsYWcsIG5lZWRfcmV4bWl0KTsKIAl9CiAjZW5kaWYKIAl9CkBAIC0xNzc0LDYgJiM0MzsxNzY5LDY0IEBAIHN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9zZWxlY3Rfb3duX3F1ZXJpZXIoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCwKICNlbmRpZgogfQogCiYjNDM7c3RhdGljIHU4IGJyX211bHRpY2FzdF9xdWVyeV90eXBlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7ewomIzQzOwlyZXR1cm4gc2tiLSZndDtwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkgPyBJR01QX0hPU1RfTUVNQkVSU0hJUF9RVUVSWSA6CiYjNDM7CQkJCQkJICBJQ01QVjZfTUdNX1FVRVJZOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4OwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CiYjNDM7CXBtY3R4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQsCiYjNDM7CQkJICAgICBxdWVyeV9xdWV1ZV93b3JrKTsKJiM0MzsKJiM0MzsJX19za2JfcXVldWVfaGVhZF9pbml0KCZhbXA7bGlzdCk7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO3BtY3R4LSZndDtxdWVyeV9xdWV1ZS5sb2NrKTsKJiM0MzsJc2tiX3F1ZXVlX3NwbGljZV90YWlsX2luaXQoJmFtcDtwbWN0eC0mZ3Q7cXVlcnlfcXVldWUsICZhbXA7bGlzdCk7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7cG1jdHgtJmd0O3F1ZXJ5X3F1ZXVlLmxvY2spOwomIzQzOwomIzQzOwl3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoJmFtcDtsaXN0KSkpIHsKJiM0MzsJCXU4IHF1ZXJ5X3R5cGUgPSBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZShza2IpOwomIzQzOwomIzQzOwkJbG9jYWxfYmhfZGlzYWJsZSgpOwomIzQzOwkJYnJfbXVsdGljYXN0X2NvdW50KHBtY3R4LSZndDtwb3J0LSZndDticiwgcG1jdHgtJmd0O3BvcnQsIHNrYiwKJiM0MzsJCQkJICAgcXVlcnlfdHlwZSwgQlJfTUNBU1RfRElSX1RYKTsKJiM0MzsJCU5GX0hPT0soTkZQUk9UT19CUklER0UsIE5GX0JSX0xPQ0FMX09VVCwgZGV2X25ldChza2ItJmd0O2RldiksCiYjNDM7CQkJTlVMTCwgc2tiLCBOVUxMLCBza2ItJmd0O2RldiwgYnJfZGV2X3F1ZXVlX3B1c2hfeG1pdCk7CiYjNDM7CQlsb2NhbF9iaF9lbmFibGUoKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4OwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CiYjNDM7CWJybWN0eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCwgcXVlcnlfcXVldWVfd29yayk7CiYjNDM7CiYjNDM7CV9fc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO2xpc3QpOwomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDticm1jdHgtJmd0O3F1ZXJ5X3F1ZXVlLmxvY2spOwomIzQzOwlza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdCgmYW1wO2JybWN0eC0mZ3Q7cXVlcnlfcXVldWUsICZhbXA7bGlzdCk7CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7YnJtY3R4LSZndDtxdWVyeV9xdWV1ZS5sb2NrKTsKJiM0MzsKJiM0MzsJd2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKCZhbXA7bGlzdCkpKSB7CiYjNDM7CQl1OCBxdWVyeV90eXBlID0gYnJfbXVsdGljYXN0X3F1ZXJ5X3R5cGUoc2tiKTsKJiM0MzsKJiM0MzsJCWxvY2FsX2JoX2Rpc2FibGUoKTsKJiM0MzsJCWJyX211bHRpY2FzdF9jb3VudChicm1jdHgtJmd0O2JyLCBOVUxMLCBza2IsIHF1ZXJ5X3R5cGUsCiYjNDM7CQkJCSAgIEJSX01DQVNUX0RJUl9SWCk7CiYjNDM7CQluZXRpZl9yeChza2IpOwomIzQzOwkJbG9jYWxfYmhfZW5hYmxlKCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7I2RlZmluZSBCUl9NVUxUSUNBU1RfUVVFUllfUVVFVUVfTEVOX01BWAkxMDAwCiYjNDM7CiBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsCiAJCQkJICAgICAgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCAqcG1jdHgsCiAJCQkJICAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydF9ncm91cCAqcGcsCkBAIC0xNzgzLDI4ICYjNDM7MTgzNiwzMCBAQCBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsCiAJCQkJICAgICAgdTggc2ZsYWcsCiAJCQkJICAgICAgYm9vbCAqbmVlZF9yZXhtaXQpCiB7CiYjNDM7CXN0cnVjdCBza19idWZmX2hlYWQgKnF1ZXVlOwogCWJvb2wgb3Zlcl9sbXF0ID0gISFzZmxhZzsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwotCXU4IGlnbXBfdHlwZTsKIAogCWlmICghYnJfbXVsdGljYXN0X2N0eF9zaG91bGRfdXNlKGJybWN0eCwgcG1jdHgpIHx8CiAJICAgICFicl9tdWx0aWNhc3RfY3R4X21hdGNoZXNfdmxhbl9zbm9vcGluZyhicm1jdHgpKQogCQlyZXR1cm47CiAKJiM0MzsJcXVldWUgPSBwbWN0eCA/ICZhbXA7cG1jdHgtJmd0O3F1ZXJ5X3F1ZXVlIDogJmFtcDticm1jdHgtJmd0O3F1ZXJ5X3F1ZXVlOwomIzQzOwogYWdhaW5fdW5kZXJfbG1xdDoKJiM0MzsJaWYgKHNrYl9xdWV1ZV9sZW5fbG9ja2xlc3MocXVldWUpICZndDs9IEJSX01VTFRJQ0FTVF9RVUVSWV9RVUVVRV9MRU5fTUFYKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCXNrYiA9IGJyX211bHRpY2FzdF9hbGxvY19xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgaXBfZHN0LCBncm91cCwKLQkJCQkgICAgICAgd2l0aF9zcmNzLCBvdmVyX2xtcXQsIHNmbGFnLCAmYW1wO2lnbXBfdHlwZSwKJiM0MzsJCQkJICAgICAgIHdpdGhfc3Jjcywgb3Zlcl9sbXF0LCBzZmxhZywKIAkJCQkgICAgICAgbmVlZF9yZXhtaXQpOwogCWlmICghc2tiKQogCQlyZXR1cm47CiAKIAlpZiAocG1jdHgpIHsKIAkJc2tiLSZndDtkZXYgPSBwbWN0eC0mZ3Q7cG9ydC0mZ3Q7ZGV2OwotCQlicl9tdWx0aWNhc3RfY291bnQoYnJtY3R4LSZndDticiwgcG1jdHgtJmd0O3BvcnQsIHNrYiwgaWdtcF90eXBlLAotCQkJCSAgIEJSX01DQVNUX0RJUl9UWCk7Ci0JCU5GX0hPT0soTkZQUk9UT19CUklER0UsIE5GX0JSX0xPQ0FMX09VVCwKLQkJCWRldl9uZXQocG1jdHgtJmd0O3BvcnQtJmd0O2RldiksIE5VTEwsIHNrYiwgTlVMTCwgc2tiLSZndDtkZXYsCi0JCQlicl9kZXZfcXVldWVfcHVzaF94bWl0KTsKJiM0MzsJCXNrYl9xdWV1ZV90YWlsKHF1ZXVlLCBza2IpOwomIzQzOwkJcXVldWVfd29yayhzeXN0ZW1faGlnaHByaV93cSwgJmFtcDtwbWN0eC0mZ3Q7cXVlcnlfcXVldWVfd29yayk7CiAKIAkJaWYgKG92ZXJfbG1xdCAmYW1wOyZhbXA7IHdpdGhfc3JjcyAmYW1wOyZhbXA7IHNmbGFnKSB7CiAJCQlvdmVyX2xtcXQgPSBmYWxzZTsKQEAgLTE4MTIsOSAmIzQzOzE4NjcsOCBAQCBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsCiAJCX0KIAl9IGVsc2UgewogCQlicl9tdWx0aWNhc3Rfc2VsZWN0X293bl9xdWVyaWVyKGJybWN0eCwgZ3JvdXAsIHNrYik7Ci0JCWJyX211bHRpY2FzdF9jb3VudChicm1jdHgtJmd0O2JyLCBOVUxMLCBza2IsIGlnbXBfdHlwZSwKLQkJCQkgICBCUl9NQ0FTVF9ESVJfUlgpOwotCQluZXRpZl9yeChza2IpOwomIzQzOwkJc2tiX3F1ZXVlX3RhaWwocXVldWUsIHNrYik7CiYjNDM7CQlxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCAmYW1wO2JybWN0eC0mZ3Q7cXVlcnlfcXVldWVfd29yayk7CiAJfQogfQogCkBAIC0xOTk3LDYgJiM0MzsyMDUxLDEwIEBAIHZvaWQgYnJfbXVsdGljYXN0X3BvcnRfY3R4X2luaXQoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcG9ydCwKIAlwbWN0eC0mZ3Q7cG9ydCA9IHBvcnQ7CiAJcG1jdHgtJmd0O3ZsYW4gPSB2bGFuOwogCXBtY3R4LSZndDttdWx0aWNhc3Rfcm91dGVyID0gTURCX1JUUl9UWVBFX1RFTVBfUVVFUlk7CiYjNDM7CiYjNDM7CXNrYl9xdWV1ZV9oZWFkX2luaXQoJmFtcDtwbWN0eC0mZ3Q7cXVlcnlfcXVldWUpOwomIzQzOwlJTklUX1dPUksoJmFtcDtwbWN0eC0mZ3Q7cXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayk7CiYjNDM7CiAJdGltZXJfc2V0dXAoJmFtcDtwbWN0eC0mZ3Q7aXA0X21jX3JvdXRlcl90aW1lciwKIAkJICAgIGJyX2lwNF9tdWx0aWNhc3Rfcm91dGVyX2V4cGlyZWQsIDApOwogCXRpbWVyX3NldHVwKCZhbXA7cG1jdHgtJmd0O2lwNF9vd25fcXVlcnkudGltZXIsCkBAIC0yMDM4LDYgJiM0MzsyMDk2LDggQEAgdm9pZCBicl9tdWx0aWNhc3RfcG9ydF9jdHhfZGVpbml0KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4KQogCWRlbCB8PSBicl9pcDRfbXVsdGljYXN0X3Jwb3J0X2RlbChwbWN0eCk7CiAJYnJfbXVsdGljYXN0X3Jwb3J0X2RlbF9ub3RpZnkocG1jdHgsIGRlbCk7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtici0mZ3Q7bXVsdGljYXN0X2xvY2spOwomIzQzOwljYW5jZWxfd29ya19zeW5jKCZhbXA7cG1jdHgtJmd0O3F1ZXJ5X3F1ZXVlX3dvcmspOwomIzQzOwlfX3NrYl9xdWV1ZV9wdXJnZSgmYW1wO3BtY3R4LSZndDtxdWVyeV9xdWV1ZSk7CiB9CiAKIGludCBicl9tdWx0aWNhc3RfYWRkX3BvcnQoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcG9ydCkKQEAgLTQxMTIsNiAmIzQzOzQxNzIsOSBAQCB2b2lkIGJyX211bHRpY2FzdF9jdHhfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsCiAJc2VxY291bnRfc3BpbmxvY2tfaW5pdCgmYW1wO2JybWN0eC0mZ3Q7aXA2X3F1ZXJpZXIuc2VxLCAmYW1wO2JyLSZndDttdWx0aWNhc3RfbG9jayk7CiAjZW5kaWYKIAomIzQzOwlza2JfcXVldWVfaGVhZF9pbml0KCZhbXA7YnJtY3R4LSZndDtxdWVyeV9xdWV1ZSk7CiYjNDM7CUlOSVRfV09SSygmYW1wO2JybWN0eC0mZ3Q7cXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmspOwomIzQzOwogCXRpbWVyX3NldHVwKCZhbXA7YnJtY3R4LSZndDtpcDRfbWNfcm91dGVyX3RpbWVyLAogCQkgICAgYnJfaXA0X211bHRpY2FzdF9sb2NhbF9yb3V0ZXJfZXhwaXJlZCwgMCk7CiAJdGltZXJfc2V0dXAoJmFtcDticm1jdHgtJmd0O2lwNF9vdGhlcl9xdWVyeS50aW1lciwKQEAgLTQxMzUsNiAmIzQzOzQxOTgsOCBAQCB2b2lkIGJyX211bHRpY2FzdF9jdHhfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsCiB2b2lkIGJyX211bHRpY2FzdF9jdHhfZGVpbml0KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgpCiB7CiAJX19icl9tdWx0aWNhc3Rfc3RvcChicm1jdHgpOwomIzQzOwljYW5jZWxfd29ya19zeW5jKCZhbXA7YnJtY3R4LSZndDtxdWVyeV9xdWV1ZV93b3JrKTsKJiM0MzsJX19za2JfcXVldWVfcHVyZ2UoJmFtcDticm1jdHgtJmd0O3F1ZXJ5X3F1ZXVlKTsKIH0KIAogdm9pZCBicl9tdWx0aWNhc3RfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIpCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaCBiL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oCmluZGV4IGQ1NWVhOTUxNmUzZTM2Li5mOGY3N2EyZDQ4OTE2OCAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9wcml2YXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmgKQEAgLTEzMSw2ICYjNDM7MTMxLDggQEAgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCB7CiAJdW5zaWduZWQgY2hhcgkJCW11bHRpY2FzdF9yb3V0ZXI7CiAJdTMyCQkJCW1kYl9uX2VudHJpZXM7CiAJdTMyCQkJCW1kYl9tYXhfZW50cmllczsKJiM0MzsJc3RydWN0IHNrX2J1ZmZfaGVhZCAgICAgICAgICAgICBxdWVyeV9xdWV1ZTsKJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrOwogI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqLwogfTsKIApAQCAtMTY3LDYgJiM0MzsxNjksOCBAQCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCB7CiAJc3RydWN0IGJyaWRnZV9tY2FzdF9vd25fcXVlcnkJaXA2X293bl9xdWVyeTsKIAlzdHJ1Y3QgYnJpZGdlX21jYXN0X3F1ZXJpZXIJaXA2X3F1ZXJpZXI7CiAjZW5kaWYgLyogSVNfRU5BQkxFRChDT05GSUdfSVBWNikgKi8KJiM0MzsJc3RydWN0IHNrX2J1ZmZfaGVhZCAgICAgICAgICAgICBxdWVyeV9xdWV1ZTsKJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrOwogI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqLwogfTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzA3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJyaWRnZSBNdWx0aWNhc3QgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBMaW51eCBrZXJuZWwsIGFuZCBpdCYjMzk7cyB0b3VjaGluZyB0aGUgYnJpZGdlIG11bHRpY2FzdCBjb2RlLCBzcGVjaWZpY2FsbHkgYGJyX211bHRpY2FzdC5jYCBhbmQgYGJyX3ByaXZhdGUuaGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCB0aGV5JiMzOTtyZSBjaGFuZ2luZyB0aGUgcXVlcnkgaGFuZGxpbmcuJiMzNDsgSXQgbG9va3MgbGlrZSBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBzeW5jaHJvbm91cyBzZW5kaW5nIG9mIElHTVAvTUxEIHF1ZXJpZXMsIHRoZXkmIzM5O3JlIHF1ZXVlaW5nIHRoZW0gdXAgaW4gYSB3b3JrcXVldWUsIGBxdWVyeV9xdWV1ZV93b3JrYCwgZm9yIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLiBJbnRlcmVzdGluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgc2hpZnQgZnJvbSBkaXJlY3QgZXhlY3V0aW9uIHRvIGFuIGFzeW5jaHJvbm91cyBtb2RlbCBpbiB0aGUgYnJpZGdlIG11bHRpY2FzdCBsb2dpYy4KCkkgc2VlIHRoZXkmIzM5O3ZlIGludHJvZHVjZWQgYSBjb3VwbGUgb2YgbmV3IGZ1bmN0aW9ucywgYGJyX211bHRpY2FzdF9wb3J0X3F1ZXJ5X3F1ZXVlX3dvcmtgIGFuZCBgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmtgLCB3aGljaCBhcmUgbGlrZWx5IHRoZSBtZWNoYW5pc21zIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBxdWV1ZS4gQW5kLCBzbWFydCwgdGhleSYjMzk7dmUgaW5jbHVkZWQgYSBxdWV1ZSBsZW5ndGggbGltaXQsIGBCUl9NVUxUSUNBU1RfUVVFUllfUVVFVUVfTEVOX01BWGAsIGNhcHBlZCBhdCAxMDAwLiBUaGF0JiMzOTtzIGdvb2QgcHJhY3RpY2UgdG8gcHJldmVudCByZXNvdXJjZSBleGhhdXN0aW9uIGluIGNhc2Ugb2YgYW4gaXNzdWUuCgpOb3csIGxldCYjMzk7cyBnZXQgZG93biB0byB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZ29pbmcgdG8gcGxheSBuaWNlIHdpdGggb3RoZXIgY29uZmlndXJlZCBmZWF0dXJlcy4gVGhlIGNvZGUmIzM5O3MgY2xlYXJseSBndWFyZGVkIGJ5IGBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdgLCB3aGljaCwgYXMgSSBjYW4gc2VlIGluIGBicl9wcml2YXRlLmhgLCBpcyB0aGUga2V5LiBPYnZpb3VzbHksIHRoZSBicmlkZ2Ugc3Vic3lzdGVtIG5lZWRzIHRvIGJlIGVuYWJsZWQgdG9vLCBzbyBgQ09ORklHX0JSSURHRWAgaXMgYSBtdXN0LiBgQ09ORklHX0lQVjZgIGlzIGFsc28gaW52b2x2ZWQsIGFuZCB3aGlsZSBub3Qgc3RyaWN0bHkgZXNzZW50aWFsIGZvciB0aGUgZW50aXJlIHBhdGNoLCBpdCBkb2VzIGltcGFjdCBhIHBvcnRpb24gb2YgaXQsIHNvIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgYXMgd2VsbC4gU28sIG5leHQgc3RlcCwgSSBuZWVkIHRvIHZlcmlmeSB0aGVzZSBjb25maWd1cmF0aW9ucy4gR290IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX0JSSURHRV9ORVRGSUxURVIpICYjNDM7PSBicl9uZXRmaWx0ZXIub1xubmV0L2JyaWRnZS9NYWtlZmlsZS0yMC1cbm5ldC9icmlkZ2UvTWFrZWZpbGU6MjE6YnJpZGdlLSQoQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HKSAmIzQzOz0gYnJfbXVsdGljYXN0Lm8gYnJfbWRiLm8gYnJfbXVsdGljYXN0X2VodC5vXG5uZXQvYnJpZGdlL01ha2VmaWxlLTIyLVxuLS1cbm5ldC9icmlkZ2UvYnJfZm9yd2FyZC5jPTIwMT12b2lkIGJyX2Zsb29kKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYnJpZGdlL2JyX2ZvcndhcmQuYy0yNjYtXG5uZXQvYnJpZGdlL2JyX2ZvcndhcmQuYzoyNjc6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9mb3J3YXJkLmMtMjY4LXN0YXRpYyB2b2lkIG1heWJlX2RlbGl2ZXJfYWRkcihzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTE3MT1zdGF0aWMgaW5saW5lIHNpemVfdCBicl9wb3J0X2luZm9fc2l6ZSh2b2lkKVxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTIwNC1cdFx0JiM0MzsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIElGTEFfQlJQT1JUX0hPTERfVElNRVIgKi9cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jOjIwNTojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0yMDYtXHRcdCYjNDM7IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpXHQvKiBJRkxBX0JSUE9SVF9NVUxUSUNBU1RfUk9VVEVSICovXG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9MjM0PXN0YXRpYyBpbnQgYnJfcG9ydF9maWxsX2F0dHJzKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMzA2LVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MzA3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTMwOC1cdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CUlBPUlRfTVVMVElDQVNUX1JPVVRFUixcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYz05NTE9c3RhdGljIGludCBicl9zZXRwb3J0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTA0OC1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jOjEwNDk6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTA1MC1cdGlmICh0YltJRkxBX0JSUE9SVF9NVUxUSUNBU1RfUk9VVEVSXSkge1xuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTEyOTU9c3RhdGljIGludCBicl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpicmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNDM2LVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MTQzNzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNDM4LVx0aWYgKGRhdGFbSUZMQV9CUl9NQ0FTVF9ST1VURVJdKSB7XG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9MTYxOT1zdGF0aWMgc2l6ZV90IGJyX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpicmRldilcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNjQ3LVx0ICAgICAgIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSAmIzQzOyAgICAvKiBJRkxBX0JSX0ZEQl9NQVhfTEVBUk5FRCAqL1xubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MTY0ODojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNjQ5LVx0ICAgICAgIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpICYjNDM7ICAgICAvKiBJRkxBX0JSX01DQVNUX1JPVVRFUiAqL1xuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTE2Nzg9c3RhdGljIGludCBicl9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJyZGV2KVxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTE3MzktI2VuZGlmXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoxNzQwOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTE3NDEtXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfQlJfTUNBU1RfUk9VVEVSLFxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTE4NDA9c3RhdGljIGludCBicl9maWxsX2xpbmt4c3RhdHMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xODc2LVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MTg3NzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xODc4LVx0XHRsaW1pdCAtPSBubGFfdG90YWxfc2l6ZV82NGJpdChzaXplb2Yoc3RydWN0IGJyX21jYXN0X3N0YXRzKSk7XG4tLVxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTkwNy1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jOjE5MDg6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTkwOS1cdGlmICgmIzQzOyYjNDM7dmxfaWR4IFx1MDAzZT0gKnByaXZpZHgpIHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD02OT1zdHJ1Y3QgbWFjX2FkZHIge1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTcyLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NzM6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNzQtLyogb3VyIG93biBxdWVyaWVyICovXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MTE4PXN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQge1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTE5OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTEyMC1cdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnRcdFx0KnBvcnQ7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTM1LVx0c3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrO1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MTM2OiNlbmRpZiAvKiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkcgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTEzNy19O1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTE0MD1zdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCB7XG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxNDE6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTQyLVx0c3RydWN0IG5ldF9icmlkZ2VcdFx0KmJyO1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE3My1cdHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgICAgICAgICAgcXVlcnlfcXVldWVfd29yaztcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE3NDojZW5kaWYgLyogQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HICovXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xNzUtfTtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0zOTI9c3RydWN0IG5ldF9icmlkZ2VfcG9ydCB7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNDI2LVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NDI3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTQyOC1cdHN0cnVjdCBicmlkZ2VfbWNhc3Rfc3RhdHNcdF9fcGVyY3B1ICptY2FzdF9zdGF0cztcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD01MDA9c3RydWN0IG5ldF9icmlkZ2Uge1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTU1Mi1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjU1MzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC01NTQtXHRzdHJ1Y3QgYnJpZGdlX21jYXN0X3N0YXRzXHRfX3BlcmNwdSAqbWNhc3Rfc3RhdHM7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9NTk3PXN0cnVjdCBicl9pbnB1dF9za2JfY2Ige1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTYwMC1cdHUxNiBmcmFnX21heF9zaXplO1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NjAxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTYwMi1cdHU4IGlnbXA7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNjM3LVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NjM4OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTYzOS0jIGRlZmluZSBCUl9JTlBVVF9TS0JfQ0JfTVJPVVRFUlNfT05MWShfX3NrYilcdChCUl9JTlBVVF9TS0JfQ0IoX19za2IpLVx1MDAzZW1yb3V0ZXJzX29ubHkpXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9NzQyPXN0YXRpYyBpbmxpbmUgdTggYnJfdmxhbl9tdWx0aWNhc3Rfcm91dGVyKGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnYpXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNzQ1LVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NzQ2OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTc0Ny1cdGlmICghYnJfdmxhbl9pc19tYXN0ZXIodikpXG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9OTY5PWludCBicl9pb2N0bF9zdHViKHN0cnVjdCBuZXQgKm5ldCwgdW5zaWduZWQgaW50IGNtZCwgdm9pZCBfX3VzZXIgKnVhcmcpO1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTk3MS0vKiBicl9tdWx0aWNhc3QuYyAqL1xubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6OTcyOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTk3My1pbnQgYnJfbXVsdGljYXN0X3JjdihzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqKmJybWN0eCxcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbWNhc3RfZWh0Lmg9NDE9c3RydWN0IG5ldF9icmlkZ2VfZ3JvdXBfZWh0X3NldCB7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21jYXN0X2VodC5oLTUxLVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21jYXN0X2VodC5oOjUyOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaC01My12b2lkIGJyX211bHRpY2FzdF9laHRfY2xlYW5fc2V0cyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0X2dyb3VwICpwZyk7XG4tLVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21jYXN0X2VodC5oPTg2PXN0YXRpYyBpbmxpbmUgdm9pZCBicl9tdWx0aWNhc3RfZWh0X2hvc3RzX2RlYyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0X2dyb3VwICpwZylcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbWNhc3RfZWh0LmgtOTEtfVxubmV0L2JyaWRnZS9icl9wcml2YXRlX21jYXN0X2VodC5oOjkyOiNlbmRpZiAvKiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkcgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaC05My1cbi0tXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jPTQ2Mz1zdGF0aWMgaW50IGJyX3N3aXRjaGRldl92bGFuX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqYnJfZGV2LFxuLS1cbm5ldC9icmlkZ2UvYnJfc3dpdGNoZGV2LmMtNTA5LVxubmV0L2JyaWRnZS9icl9zd2l0Y2hkZXYuYzo1MTA6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl9zd2l0Y2hkZXYuYy01MTEtc3RydWN0IGJyX3N3aXRjaGRldl9tZGJfY29tcGxldGVfaW5mbyB7XG4tLVxubmV0L2JyaWRnZS9icl9zd2l0Y2hkZXYuYz02OTY9YnJfc3dpdGNoZGV2X21kYl9yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmJyX2Rldiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jLTY5OS17XG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jOjcwMDojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jLTcwMS1cdGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX21kYl9lbnRyeSAqbXA7XG4tLVxubmV0L2JyaWRnZS9icl9zeXNmc19ici5jPTM4ND1zdGF0aWMgREVWSUNFX0FUVFJfUlcobm9fbGlua2xvY2FsX2xlYXJuKTtcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYy0zODUtXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2JyLmM6Mzg2OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYy0zODctc3RhdGljIHNzaXplX3QgbXVsdGljYXN0X3JvdXRlcl9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXG4tLVxubmV0L2JyaWRnZS9icl9zeXNmc19ici5jPTkzNT1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYnJpZGdlX2F0dHJzW10gPSB7XG4tLVxubmV0L2JyaWRnZS9icl9zeXNmc19ici5jLTk1NS1cdFx1MDAyNmRldl9hdHRyX25vX2xpbmtsb2NhbF9sZWFybi5hdHRyLFxubmV0L2JyaWRnZS9icl9zeXNmc19ici5jOjk1NjojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2JyLmMtOTU3LVx0XHUwMDI2ZGV2X2F0dHJfbXVsdGljYXN0X3JvdXRlci5hdHRyLFxuLS1cbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYz0yNjQ9QlJQT1JUX0FUVFJfRkxBRyhpc29sYXRlZCwgQlJfSVNPTEFURURfQklUKTtcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYy0yNjUtXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2lmLmM6MjY2OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYy0yNjctc3RhdGljIHNzaXplX3Qgc2hvd19tdWx0aWNhc3Rfcm91dGVyKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsIGNoYXIgKmJ1Zilcbi0tXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2lmLmM9Mjg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJwb3J0X2F0dHJpYnV0ZSAqYnJwb3J0X2F0dHJzW10gPSB7XG4tLVxubmV0L2JyaWRnZS9icl9zeXNmc19pZi5jLTMwNC1cdFx1MDAyNmJycG9ydF9hdHRyX3VuaWNhc3RfZmxvb2QsXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2lmLmM6MzA1OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYy0zMDYtXHRcdTAwMjZicnBvcnRfYXR0cl9tdWx0aWNhc3Rfcm91dGVyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NDA9Ym9vbCBicl92bGFuX29wdHNfZXFfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNjAtXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjYxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNjItXHRpZiAoIWJyX3ZsYW5faXNfbWFzdGVyKHZfY3VycikgXHUwMDI2XHUwMDI2XG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz03Mj1ib29sIGJyX3ZsYW5fb3B0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnYsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy04Mi1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6ODM6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy04NC1cdGlmIChubGFfcHV0X3U4KHNrYiwgQlJJREdFX1ZMQU5EQl9FTlRSWV9NQ0FTVF9ST1VURVIsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz05OD1zaXplX3QgYnJfdmxhbl9vcHRzX25sX3NpemUodm9pZClcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTEwMi1cdCAgICAgICAmIzQzOyBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgLyogQlJJREdFX1ZMQU5EQl9USU5GT19JRCAqL1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzoxMDM6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0xMDQtXHQgICAgICAgJiM0MzsgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHU4KSkgLyogQlJJREdFX1ZMQU5EQl9FTlRSWV9NQ0FTVF9ST1VURVIgKi9cbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jPTIxNz1zdGF0aWMgaW50IGJyX3ZsYW5fcHJvY2Vzc19vbmVfb3B0cyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0yNDAtXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjI0MTojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTI0Mi1cdGlmICh0YltCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUl0pIHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jPTM4OT1ib29sIGJyX3ZsYW5fZ2xvYmFsX29wdHNfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdmlkLCB1MTYgdmlkX3JhbmdlLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNDA2LVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzo0MDc6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00MDgtXHRpZiAobmxhX3B1dF91OChza2IsIEJSSURHRV9WTEFOREJfR09QVFNfTUNBU1RfU05PT1BJTkcsXG4tLVxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz00ODM9c3RhdGljIHNpemVfdCBydG5sX3ZsYW5fZ2xvYmFsX29wdHNfbmxtc2dfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2KVxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNDg3LVx0XHQmIzQzOyBubGFfdG90YWxfc2l6ZShzaXplb2YodTE2KSkgLyogQlJJREdFX1ZMQU5EQl9HT1BUU19JRCAqL1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzo0ODg6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00ODktXHRcdCYjNDM7IG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIEJSSURHRV9WTEFOREJfR09QVFNfTUNBU1RfU05PT1BJTkcgKi9cbi0tXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jPTU1MT1zdGF0aWMgaW50IGJyX3ZsYW5fcHJvY2Vzc19nbG9iYWxfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNTYwLVx0KmNoYW5nZWQgPSBmYWxzZTtcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NTYxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtNTYyLVx0aWYgKHRiW0JSSURHRV9WTEFOREJfR09QVFNfTUNBU1RfU05PT1BJTkddKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMDM6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyODIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNdWx0aWNhc3QgUXVlcnkgUGF0Y2gqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHBhdGNoLiBGaXJzdCB0aGluZ3MgZmlyc3QsIHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFyZSBgQlJJREdFYCwgYEJSSURHRV9JR01QX1NOT09QSU5HYCwgYW5kIGlkZWFsbHksIGBJUFY2YCBmb3IgdGVzdGluZyB0aGUgYGJyX2lwNl9tdWx0aWNhc3RfYWxsb2NfcXVlcnlgIGZ1bmN0aW9uLiBNYWtlcyBzZW5zZS4KCk5vdywgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlIGNvcmUgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29ya2AsIGBicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29ya2AsIGBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZWAgKGEgc2ltcGxlIGhlbHBlciksIGFuZCBtb2RpZmllcyBgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAuIEFscmlnaHQsIHNvIHRoZSBtYWluIHBsYXllcnMgYXJlIGBicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrYCwgYGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrYCwgYW5kIGVzcGVjaWFsbHkgYF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlgLgoKVGhlIGtleSBxdWVzdGlvbiBpcyBhbHdheXMgcmVhY2hhYmlsaXR5LiBUaGVzZSBhcmUgd29ya3F1ZXVlIGhhbmRsZXJzLCBtZWFuaW5nIHRoZXkmIzM5O2xsIGJlIGNhbGxlZCB3aGVuIHdvcmsgaXMgcXVldWVkIHRvIHRoZW0uIFRoZSB3b3JrIGlzIHF1ZXVlZCwgSSBzZWUgaGVyZSwgaW4gYF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlgLiBHb29kLCB0aGF0JiMzOTtzIHdoYXQgSSB3YW50IHRvIGtub3cuIGBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5YCBpcyBpbnZva2VkIGJ5IGBicl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAgYW5kIGBicl9tdWx0aWNhc3Rfc2VuZF9wb3J0X2dyb3VwX3F1ZXJ5YC4gRXhjZWxsZW50LiBUaGVzZSBjYWxscyBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSBJR01QL01MRCB0aW1lcnMsIG9yIHdoZW4gYSBuZXcgcXVlcmllciBpcyBlbGVjdGVkLiBTbyB5ZXMsIHRoZXNlIGFsbCBhcHBlYXIgcmVhY2hhYmxlIGFuZCBjYWxsZWQgaW4gdGhlIGNvcnJlY3Qgd2F5cy4KClJpZ2h0LCBzbyB0byBtYWtlIHN1cmUgdGhlIGNvcmUgbG9naWMgaXMgc291bmQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAgaXMgaW5kZWVkIHJlYWNoYWJsZS4gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgcG9pbnQgSSYjMzk7bGwgc3RhcnQgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0xODA0PXN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTE4MjktXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjE4MzA6c3RhdGljIHZvaWQgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0xODMxLVx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCAqcG1jdHgsXG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0xODk5PXN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0xOTM3LVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYzoxOTM4Olx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBOVUxMLCBOVUxMLCBcdTAwMjZicl9ncm91cCwgZmFsc2UsXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTE5MzktXHRcdFx0XHQgIDAsIE5VTEwpO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmM9MTk4Nz1zdGF0aWMgdm9pZCBicl9tdWx0aWNhc3RfcG9ydF9ncm91cF9yZXhtaXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMDIwLVx0XHRwZy1cdTAwM2VncnBfcXVlcnlfcmV4bWl0X2NudC0tO1xubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYzoyMDIxOlx0XHRfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLCBcdTAwMjZwZy1cdTAwM2VrZXkuYWRkcixcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMjAyMi1cdFx0XHRcdFx0ICBcdTAwMjZwZy1cdTAwM2VrZXkuYWRkciwgZmFsc2UsIDEsIE5VTEwpO1xubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMDIzLVx0fVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYzoyMDI0Olx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgXHUwMDI2cGctXHUwMDNla2V5LmFkZHIsXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTIwMjUtXHRcdFx0XHQgIFx1MDAyNnBnLVx1MDAzZWtleS5hZGRyLCB0cnVlLCAwLCBcdTAwMjZuZWVkX3JleG1pdCk7XG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0yMjkxPXN0YXRpYyB2b2lkIF9fZ3JwX3NyY19xdWVyeV9tYXJrZWRfYW5kX3JleG1pdChzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxuLS1cbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMjMyOC1cbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmM6MjMyOTpcdF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoYnJtY3R4LCBwbWN0eCwgcGcsIFx1MDAyNnBnLVx1MDAzZWtleS5hZGRyLFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMzMwLVx0XHRcdFx0ICBcdTAwMjZwZy1cdTAwM2VrZXkuYWRkciwgdHJ1ZSwgMSwgTlVMTCk7XG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0yMzM4PXN0YXRpYyB2b2lkIF9fZ3JwX3NlbmRfcXVlcnlfYW5kX3JleG1pdChzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxuLS1cbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMjM1OS1cdFx0cGctXHUwMDNlZ3JwX3F1ZXJ5X3JleG1pdF9jbnQgPSBicm1jdHgtXHUwMDNlbXVsdGljYXN0X2xhc3RfbWVtYmVyX2NvdW50IC0gMTtcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmM6MjM2MDpcdFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgXHUwMDI2cGctXHUwMDNla2V5LmFkZHIsXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTIzNjEtXHRcdFx0XHRcdCAgXHUwMDI2cGctXHUwMDNla2V5LmFkZHIsIGZhbHNlLCAwLCBOVUxMKTtcbi0tXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jPTM3MTU9YnJfbXVsdGljYXN0X2xlYXZlX2dyb3VwKHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4tLVxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0zNzU3LVx0aWYgKGJybWN0eC1cdTAwM2VtdWx0aWNhc3RfcXVlcmllcikge1xubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYzozNzU4Olx0XHRfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIE5VTEwsIE5VTEwsIFx1MDAyNm1wLVx1MDAzZWFkZHIsXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTM3NTktXHRcdFx0XHRcdCAgZmFsc2UsIDAsIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDAzOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTU1CgkJCQkJCQlvdXRwdXQ6IDE1MwoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4gSGVyZSYjMzk7cyBob3cgSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcGF0Y2guCgoqKkFuYWx5emluZyB0aGUgQnJpZGdlIE11bHRpY2FzdCBMb2dpYyBQYXRjaCoqCgpBbHJpZ2h0LCB0aGlzIHBhdGNoIGlzIGNsZWFybHkgdG91Y2hpbmcgdGhlIG11bHRpY2FzdCBsb2dpYyB3aXRoaW4gdGhlIGJyaWRnZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBJR01QL01MRCBxdWVyeSB0cmFuc21pc3Npb24uIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gY2hhbmdlIGludm9sdmVzIHNoaWZ0aW5nIGZyb20gc3luY2hyb25vdXMgcXVlcnkgc2VuZGluZyB0byBhIHdvcmtxdWV1ZSBhcHByb2FjaC4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZTsgaW50cm9kdWNpbmcgYSB3b3JrcXVldWUgY2FuIHVuY292ZXIgcmFjZSBjb25kaXRpb25zIG9yIHRpbWluZyBpc3N1ZXMgdGhhdCB3b3VsZG4mIzM5O3Qgc3VyZmFjZSB3aXRoIHN5bmNocm9ub3VzIG9wZXJhdGlvbnMuCgpTbywgZm9yIGZ1enppbmcgdGhpcywgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnM6IGBCUklER0VgLCBkZWZpbml0ZWx5IGBCUklER0VfSUdNUF9TTk9PUElOR2AsIGFuZCBpZGVhbGx5IGBJUFY2YCBhcyB3ZWxsIHNpbmNlIHdlJiMzOTtyZSBsb29raW5nIGF0IE1MRCBhcyBhIHBvdGVudGlhbCBmb2N1cy4KClRoZSBjb3JlIHN5bWJvbHMgSSYjMzk7bGwgd2FudCB0byBob25lIGluIG9uIGFyZSBgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29ya2AsIGBicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29ya2AsIGFuZCBgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAuIFRoZXNlIGxvb2sgbGlrZSB0aGUga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHF1ZXVpbmcgYW5kIHNlbmRpbmcgdGhlIHF1ZXJpZXMuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHdoYXQgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMgYXJlLiBgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HYCBzZWVtcyB0byBiZSB0aGUgbWFpbiBkcml2ZXIsIHdpdGggYENPTkZJR19CUklER0VgIGJlaW5nIGEgcHJlcmVxdWlzaXRlLCBhbmQgYENPTkZJR19JUFY2YCBuZWVkZWQgZm9yIE1MRC4gR290IGl0LiBJJiMzOTtsbCBtYWtlIHN1cmUgdGhlIHJlc3VsdHMgcmVmbGVjdCB0aGlzIGluZm9ybWF0aW9uIHByZWNpc2VseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwMzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0JSSURHRV9JR01QX1NOT09QSU5HJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O2JyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O19fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJyaWRnZSBtdWx0aWNhc3QgbG9naWMgdG8gcXVldWUgSUdNUC9NTEQgcXVlcmllcyB0byBhIHdvcmtxdWV1ZSBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlbSBzeW5jaHJvbm91c2x5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgYnJpZGdlIG11bHRpY2FzdCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcgZG9lcyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG1lbW9yeSBsZWFrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0JSSURHRV9JR01QX1NOT09QSU5HJiMzNDssCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O2JyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrJiMzNDssCiAgICAmIzM0O19fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJyaWRnZSBtdWx0aWNhc3QgbG9naWMgdG8gcXVldWUgSUdNUC9NTEQgcXVlcmllcyB0byBhIHdvcmtxdWV1ZSBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlbSBzeW5jaHJvbm91c2x5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgYnJpZGdlIG11bHRpY2FzdCBjb2RlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcgZG9lcyBub3QgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUsIG9yIG1lbW9yeSBsZWFrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAzOjI1OjU3LjY3NzAwNDk3NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0OTY0Mjc3NDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX0lHTVBfU05PT1BJTkdcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrXCIsXG4gICAgXCJicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29ya1wiLFxuICAgIFwiX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmlkZ2UgbXVsdGljYXN0IGxvZ2ljIHRvIHF1ZXVlIElHTVAvTUxEIHF1ZXJpZXMgdG8gYSB3b3JrcXVldWUgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZW0gc3luY2hyb25vdXNseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGJyaWRnZSBtdWx0aWNhc3QgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIGRvZXMgbm90IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVha3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAzOjI1OjU3LjY3NzAxMTE1NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxODEzOTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTgyMTZiNDQ0NDE0Nzg1ZTMzMDBiOTAxODBhMGVjMTg4MDYxN2UwN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCA5IDAzOjI1OjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMgYi9uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jXFxuaW5kZXggNmIzYWM0NzNmZDIyOGIuLmYxMTJmYmIzNzRjMGRlIDEwMDY0NFxcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmNcXG4rKysgYi9uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jXFxuQEAgLTkyNiw3ICs5MjYsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX2lwNF9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybVxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydF9ncm91cCAqcGcsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBfX2JlMzIgaXBfZHN0LCBfX2JlMzIgZ3JvdXAsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBib29sIHdpdGhfc3JjcywgYm9vbCBvdmVyX2xtcXQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHU4IHNmbGFnLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgYm9vbCAqbmVlZF9yZXhtaXQpXFxuIHtcXG4gXFx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCA9IHBnID8gcGctXFx1MDAzZWtleS5wb3J0IDogTlVMTDtcXG5AQCAtMTAwNiw3ICsxMDA2LDYgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1cXG4gXFx0c2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHNrYiwgc2tiLVxcdTAwM2VsZW4pO1xcbiBcXHRtcnQgPSBncm91cCA/IGJybWN0eC1cXHUwMDNlbXVsdGljYXN0X2xhc3RfbWVtYmVyX2ludGVydmFsIDpcXG4gXFx0XFx0ICAgICAgYnJtY3R4LVxcdTAwM2VtdWx0aWNhc3RfcXVlcnlfcmVzcG9uc2VfaW50ZXJ2YWw7XFxuLVxcdCppZ21wX3R5cGUgPSBJR01QX0hPU1RfTUVNQkVSU0hJUF9RVUVSWTtcXG4gXFxuIFxcdHN3aXRjaCAoYnJtY3R4LVxcdTAwM2VtdWx0aWNhc3RfaWdtcF92ZXJzaW9uKSB7XFxuIFxcdGNhc2UgMjpcXG5AQCAtMTA3Miw3ICsxMDcxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDZfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1cXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqaXA2X2RzdCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqZ3JvdXAsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBib29sIHdpdGhfc3JjcywgYm9vbCBvdmVyX2xscXQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHU4IHNmbGFnLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgYm9vbCAqbmVlZF9yZXhtaXQpXFxuIHtcXG4gXFx0c3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCA9IHBnID8gcGctXFx1MDAzZWtleS5wb3J0IDogTlVMTDtcXG5AQCAtMTE2Niw3ICsxMTY1LDYgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDZfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1cXG4gXFx0aW50ZXJ2YWwgPSBpcHY2X2FkZHJfYW55KGdyb3VwKSA/XFxuIFxcdFxcdFxcdGJybWN0eC1cXHUwMDNlbXVsdGljYXN0X3F1ZXJ5X3Jlc3BvbnNlX2ludGVydmFsIDpcXG4gXFx0XFx0XFx0YnJtY3R4LVxcdTAwM2VtdWx0aWNhc3RfbGFzdF9tZW1iZXJfaW50ZXJ2YWw7XFxuLVxcdCppZ21wX3R5cGUgPSBJQ01QVjZfTUdNX1FVRVJZO1xcbiBcXHRzd2l0Y2ggKGJybWN0eC1cXHUwMDNlbXVsdGljYXN0X21sZF92ZXJzaW9uKSB7XFxuIFxcdGNhc2UgMTpcXG4gXFx0XFx0bWxkcSA9IChzdHJ1Y3QgbWxkX21zZyAqKWljbXA2X2hkcihza2IpO1xcbkBAIC0xMjM3LDggKzEyMzUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgYnJfaXAgKmlwX2RzdCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGJyX2lwICpncm91cCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0Ym9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbXF0LFxcbi1cXHRcXHRcXHRcXHRcXHRcXHR1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0Ym9vbCAqbmVlZF9yZXhtaXQpXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHU4IHNmbGFnLCBib29sICpuZWVkX3JleG1pdClcXG4ge1xcbiBcXHRfX2JlMzIgaXA0X2RzdDtcXG4gXFxuQEAgLTEyNDgsOCArMTI0NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXFxuIFxcdFxcdHJldHVybiBicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgaXA0X2RzdCwgZ3JvdXAtXFx1MDAzZWRzdC5pcDQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHNmbGFnLCBpZ21wX3R5cGUsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBuZWVkX3JleG1pdCk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICBzZmxhZywgbmVlZF9yZXhtaXQpO1xcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG4gXFx0Y2FzZSBodG9ucyhFVEhfUF9JUFY2KToge1xcbiBcXHRcXHRzdHJ1Y3QgaW42X2FkZHIgaXA2X2RzdDtcXG5AQCAtMTI2Myw4ICsxMjU5LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcXG4gXFx0XFx0cmV0dXJuIGJyX2lwNl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoYnJtY3R4LCBwbWN0eCwgcGcsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2aXA2X2RzdCwgXFx1MDAyNmdyb3VwLVxcdTAwM2Vkc3QuaXA2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgd2l0aF9zcmNzLCBvdmVyX2xtcXQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBzZmxhZywgaWdtcF90eXBlLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgbmVlZF9yZXhtaXQpO1xcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgc2ZsYWcsIG5lZWRfcmV4bWl0KTtcXG4gXFx0fVxcbiAjZW5kaWZcXG4gXFx0fVxcbkBAIC0xNzc0LDYgKzE3NjksNjQgQEAgc3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3NlbGVjdF9vd25fcXVlcmllcihzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxcbiAjZW5kaWZcXG4gfVxcbiBcXG4rc3RhdGljIHU4IGJyX211bHRpY2FzdF9xdWVyeV90eXBlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0cmV0dXJuIHNrYi1cXHUwMDNlcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApID8gSUdNUF9IT1NUX01FTUJFUlNISVBfUVVFUlkgOlxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIElDTVBWNl9NR01fUVVFUlk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9wb3J0X3F1ZXJ5X3F1ZXVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit7XFxuK1xcdHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4O1xcbitcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcbitcXHRwbWN0eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0LFxcbitcXHRcXHRcXHQgICAgIHF1ZXJ5X3F1ZXVlX3dvcmspO1xcbitcXG4rXFx0X19za2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZsaXN0KTtcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwbWN0eC1cXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XFxuK1xcdHNrYl9xdWV1ZV9zcGxpY2VfdGFpbF9pbml0KFxcdTAwMjZwbWN0eC1cXHUwMDNlcXVlcnlfcXVldWUsIFxcdTAwMjZsaXN0KTtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnBtY3R4LVxcdTAwM2VxdWVyeV9xdWV1ZS5sb2NrKTtcXG4rXFxuK1xcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2bGlzdCkpKSB7XFxuK1xcdFxcdHU4IHF1ZXJ5X3R5cGUgPSBicl9tdWx0aWNhc3RfcXVlcnlfdHlwZShza2IpO1xcbitcXG4rXFx0XFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xcbitcXHRcXHRicl9tdWx0aWNhc3RfY291bnQocG1jdHgtXFx1MDAzZXBvcnQtXFx1MDAzZWJyLCBwbWN0eC1cXHUwMDNlcG9ydCwgc2tiLFxcbitcXHRcXHRcXHRcXHQgICBxdWVyeV90eXBlLCBCUl9NQ0FTVF9ESVJfVFgpO1xcbitcXHRcXHRORl9IT09LKE5GUFJPVE9fQlJJREdFLCBORl9CUl9MT0NBTF9PVVQsIGRldl9uZXQoc2tiLVxcdTAwM2VkZXYpLFxcbitcXHRcXHRcXHROVUxMLCBza2IsIE5VTEwsIHNrYi1cXHUwMDNlZGV2LCBicl9kZXZfcXVldWVfcHVzaF94bWl0KTtcXG4rXFx0XFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbit7XFxuK1xcdHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHg7XFxuK1xcdHN0cnVjdCBza19idWZmX2hlYWQgbGlzdDtcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFxuK1xcdGJybWN0eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCwgcXVlcnlfcXVldWVfd29yayk7XFxuK1xcbitcXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXFx1MDAyNmxpc3QpO1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmJybWN0eC1cXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XFxuK1xcdHNrYl9xdWV1ZV9zcGxpY2VfdGFpbF9pbml0KFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlLCBcXHUwMDI2bGlzdCk7XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlLmxvY2spO1xcbitcXG4rXFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZsaXN0KSkpIHtcXG4rXFx0XFx0dTggcXVlcnlfdHlwZSA9IGJyX211bHRpY2FzdF9xdWVyeV90eXBlKHNrYik7XFxuK1xcbitcXHRcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxuK1xcdFxcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXFx1MDAzZWJyLCBOVUxMLCBza2IsIHF1ZXJ5X3R5cGUsXFxuK1xcdFxcdFxcdFxcdCAgIEJSX01DQVNUX0RJUl9SWCk7XFxuK1xcdFxcdG5ldGlmX3J4KHNrYik7XFxuK1xcdFxcdGxvY2FsX2JoX2VuYWJsZSgpO1xcbitcXHR9XFxuK31cXG4rXFxuKyNkZWZpbmUgQlJfTVVMVElDQVNUX1FVRVJZX1FVRVVFX0xFTl9NQVhcXHQxMDAwXFxuK1xcbiBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4LFxcbiBcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0X2dyb3VwICpwZyxcXG5AQCAtMTc4MywyOCArMTgzNiwzMCBAQCBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHU4IHNmbGFnLFxcbiBcXHRcXHRcXHRcXHQgICAgICBib29sICpuZWVkX3JleG1pdClcXG4ge1xcbitcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpxdWV1ZTtcXG4gXFx0Ym9vbCBvdmVyX2xtcXQgPSAhIXNmbGFnO1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi1cXHR1OCBpZ21wX3R5cGU7XFxuIFxcbiBcXHRpZiAoIWJyX211bHRpY2FzdF9jdHhfc2hvdWxkX3VzZShicm1jdHgsIHBtY3R4KSB8fFxcbiBcXHQgICAgIWJyX211bHRpY2FzdF9jdHhfbWF0Y2hlc192bGFuX3Nub29waW5nKGJybWN0eCkpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdHF1ZXVlID0gcG1jdHggPyBcXHUwMDI2cG1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlIDogXFx1MDAyNmJybWN0eC1cXHUwMDNlcXVlcnlfcXVldWU7XFxuK1xcbiBhZ2Fpbl91bmRlcl9sbXF0OlxcbitcXHRpZiAoc2tiX3F1ZXVlX2xlbl9sb2NrbGVzcyhxdWV1ZSkgXFx1MDAzZT0gQlJfTVVMVElDQVNUX1FVRVJZX1FVRVVFX0xFTl9NQVgpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdHNrYiA9IGJyX211bHRpY2FzdF9hbGxvY19xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgaXBfZHN0LCBncm91cCxcXG4tXFx0XFx0XFx0XFx0ICAgICAgIHdpdGhfc3Jjcywgb3Zlcl9sbXF0LCBzZmxhZywgXFx1MDAyNmlnbXBfdHlwZSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHdpdGhfc3Jjcywgb3Zlcl9sbXF0LCBzZmxhZyxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIG5lZWRfcmV4bWl0KTtcXG4gXFx0aWYgKCFza2IpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGlmIChwbWN0eCkge1xcbiBcXHRcXHRza2ItXFx1MDAzZWRldiA9IHBtY3R4LVxcdTAwM2Vwb3J0LVxcdTAwM2VkZXY7XFxuLVxcdFxcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXFx1MDAzZWJyLCBwbWN0eC1cXHUwMDNlcG9ydCwgc2tiLCBpZ21wX3R5cGUsXFxuLVxcdFxcdFxcdFxcdCAgIEJSX01DQVNUX0RJUl9UWCk7XFxuLVxcdFxcdE5GX0hPT0soTkZQUk9UT19CUklER0UsIE5GX0JSX0xPQ0FMX09VVCxcXG4tXFx0XFx0XFx0ZGV2X25ldChwbWN0eC1cXHUwMDNlcG9ydC1cXHUwMDNlZGV2KSwgTlVMTCwgc2tiLCBOVUxMLCBza2ItXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0YnJfZGV2X3F1ZXVlX3B1c2hfeG1pdCk7XFxuK1xcdFxcdHNrYl9xdWV1ZV90YWlsKHF1ZXVlLCBza2IpO1xcbitcXHRcXHRxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCBcXHUwMDI2cG1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmspO1xcbiBcXG4gXFx0XFx0aWYgKG92ZXJfbG1xdCBcXHUwMDI2XFx1MDAyNiB3aXRoX3NyY3MgXFx1MDAyNlxcdTAwMjYgc2ZsYWcpIHtcXG4gXFx0XFx0XFx0b3Zlcl9sbXF0ID0gZmFsc2U7XFxuQEAgLTE4MTIsOSArMTg2Nyw4IEBAIHN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcXG4gXFx0XFx0fVxcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRicl9tdWx0aWNhc3Rfc2VsZWN0X293bl9xdWVyaWVyKGJybWN0eCwgZ3JvdXAsIHNrYik7XFxuLVxcdFxcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXFx1MDAzZWJyLCBOVUxMLCBza2IsIGlnbXBfdHlwZSxcXG4tXFx0XFx0XFx0XFx0ICAgQlJfTUNBU1RfRElSX1JYKTtcXG4tXFx0XFx0bmV0aWZfcngoc2tiKTtcXG4rXFx0XFx0c2tiX3F1ZXVlX3RhaWwocXVldWUsIHNrYik7XFxuK1xcdFxcdHF1ZXVlX3dvcmsoc3lzdGVtX2hpZ2hwcmlfd3EsIFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmspO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTE5OTcsNiArMjA1MSwxMCBAQCB2b2lkIGJyX211bHRpY2FzdF9wb3J0X2N0eF9pbml0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQsXFxuIFxcdHBtY3R4LVxcdTAwM2Vwb3J0ID0gcG9ydDtcXG4gXFx0cG1jdHgtXFx1MDAzZXZsYW4gPSB2bGFuO1xcbiBcXHRwbWN0eC1cXHUwMDNlbXVsdGljYXN0X3JvdXRlciA9IE1EQl9SVFJfVFlQRV9URU1QX1FVRVJZO1xcbitcXG4rXFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2cG1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlKTtcXG4rXFx0SU5JVF9XT1JLKFxcdTAwMjZwbWN0eC1cXHUwMDNlcXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayk7XFxuK1xcbiBcXHR0aW1lcl9zZXR1cChcXHUwMDI2cG1jdHgtXFx1MDAzZWlwNF9tY19yb3V0ZXJfdGltZXIsXFxuIFxcdFxcdCAgICBicl9pcDRfbXVsdGljYXN0X3JvdXRlcl9leHBpcmVkLCAwKTtcXG4gXFx0dGltZXJfc2V0dXAoXFx1MDAyNnBtY3R4LVxcdTAwM2VpcDRfb3duX3F1ZXJ5LnRpbWVyLFxcbkBAIC0yMDM4LDYgKzIwOTYsOCBAQCB2b2lkIGJyX211bHRpY2FzdF9wb3J0X2N0eF9kZWluaXQoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCAqcG1jdHgpXFxuIFxcdGRlbCB8PSBicl9pcDRfbXVsdGljYXN0X3Jwb3J0X2RlbChwbWN0eCk7XFxuIFxcdGJyX211bHRpY2FzdF9ycG9ydF9kZWxfbm90aWZ5KHBtY3R4LCBkZWwpO1xcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YnItXFx1MDAzZW11bHRpY2FzdF9sb2NrKTtcXG4rXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmspO1xcbitcXHRfX3NrYl9xdWV1ZV9wdXJnZShcXHUwMDI2cG1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlKTtcXG4gfVxcbiBcXG4gaW50IGJyX211bHRpY2FzdF9hZGRfcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwb3J0KVxcbkBAIC00MTEyLDYgKzQxNzIsOSBAQCB2b2lkIGJyX211bHRpY2FzdF9jdHhfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuIFxcdHNlcWNvdW50X3NwaW5sb2NrX2luaXQoXFx1MDAyNmJybWN0eC1cXHUwMDNlaXA2X3F1ZXJpZXIuc2VxLCBcXHUwMDI2YnItXFx1MDAzZW11bHRpY2FzdF9sb2NrKTtcXG4gI2VuZGlmXFxuIFxcbitcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlKTtcXG4rXFx0SU5JVF9XT1JLKFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlX3dvcmssIGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrKTtcXG4rXFxuIFxcdHRpbWVyX3NldHVwKFxcdTAwMjZicm1jdHgtXFx1MDAzZWlwNF9tY19yb3V0ZXJfdGltZXIsXFxuIFxcdFxcdCAgICBicl9pcDRfbXVsdGljYXN0X2xvY2FsX3JvdXRlcl9leHBpcmVkLCAwKTtcXG4gXFx0dGltZXJfc2V0dXAoXFx1MDAyNmJybWN0eC1cXHUwMDNlaXA0X290aGVyX3F1ZXJ5LnRpbWVyLFxcbkBAIC00MTM1LDYgKzQxOTgsOCBAQCB2b2lkIGJyX211bHRpY2FzdF9jdHhfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuIHZvaWQgYnJfbXVsdGljYXN0X2N0eF9kZWluaXQoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eClcXG4ge1xcbiBcXHRfX2JyX211bHRpY2FzdF9zdG9wKGJybWN0eCk7XFxuK1xcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmJybWN0eC1cXHUwMDNlcXVlcnlfcXVldWVfd29yayk7XFxuK1xcdF9fc2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZicm1jdHgtXFx1MDAzZXF1ZXJ5X3F1ZXVlKTtcXG4gfVxcbiBcXG4gdm9pZCBicl9tdWx0aWNhc3RfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIpXFxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oIGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcXG5pbmRleCBkNTVlYTk1MTZlM2UzNi4uZjhmNzdhMmQ0ODkxNjggMTAwNjQ0XFxuLS0tIGEvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxcbkBAIC0xMzEsNiArMTMxLDggQEAgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCB7XFxuIFxcdHVuc2lnbmVkIGNoYXJcXHRcXHRcXHRtdWx0aWNhc3Rfcm91dGVyO1xcbiBcXHR1MzJcXHRcXHRcXHRcXHRtZGJfbl9lbnRyaWVzO1xcbiBcXHR1MzJcXHRcXHRcXHRcXHRtZGJfbWF4X2VudHJpZXM7XFxuK1xcdHN0cnVjdCBza19idWZmX2hlYWQgICAgICAgICAgICAgcXVlcnlfcXVldWU7XFxuK1xcdHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgICAgICAgICAgcXVlcnlfcXVldWVfd29yaztcXG4gI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xcbiB9O1xcbiBcXG5AQCAtMTY3LDYgKzE2OSw4IEBAIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0IHtcXG4gXFx0c3RydWN0IGJyaWRnZV9tY2FzdF9vd25fcXVlcnlcXHRpcDZfb3duX3F1ZXJ5O1xcbiBcXHRzdHJ1Y3QgYnJpZGdlX21jYXN0X3F1ZXJpZXJcXHRpcDZfcXVlcmllcjtcXG4gI2VuZGlmIC8qIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpICovXFxuK1xcdHN0cnVjdCBza19idWZmX2hlYWQgICAgICAgICAgICAgcXVlcnlfcXVldWU7XFxuK1xcdHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgICAgICAgICAgcXVlcnlfcXVldWVfd29yaztcXG4gI2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xcbiB9O1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDM6MjU6NTguNDY5NzUyMzc0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDE3MTUyMDc2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9JR01QX1NOT09QSU5HXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29ya1wiLFxuICAgIFwiYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmtcIixcbiAgICBcIl9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYnJpZGdlIG11bHRpY2FzdCBsb2dpYyB0byBxdWV1ZSBJR01QL01MRCBxdWVyaWVzIHRvIGEgd29ya3F1ZXVlIGluc3RlYWQgb2Ygc2VuZGluZyB0aGVtIHN5bmNocm9ub3VzbHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBicmlkZ2UgbXVsdGljYXN0IGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBhc3luY2hyb25vdXMgcHJvY2Vzc2luZyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWtzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU4MjE2YjQ0NDQxNDc4NWUzMzAwYjkwMTgwYTBlYzE4ODA2MTdlMDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDAzOjI1OjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYyBiL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmNcbmluZGV4IDZiM2FjNDczZmQyMjhiLi5mMTEyZmJiMzc0YzBkZSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmNcbisrKyBiL25ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmNcbkBAIC05MjYsNyArOTI2LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9pcDRfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1cbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydF9ncm91cCAqcGcsXG4gXHRcdFx0XHRcdFx0ICAgIF9fYmUzMiBpcF9kc3QsIF9fYmUzMiBncm91cCxcbiBcdFx0XHRcdFx0XHQgICAgYm9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbXF0LFxuLVx0XHRcdFx0XHRcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcbitcdFx0XHRcdFx0XHQgICAgdTggc2ZsYWcsXG4gXHRcdFx0XHRcdFx0ICAgIGJvb2wgKm5lZWRfcmV4bWl0KVxuIHtcbiBcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAgPSBwZyA/IHBnLVx1MDAzZWtleS5wb3J0IDogTlVMTDtcbkBAIC0xMDA2LDcgKzEwMDYsNiBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX2lwNF9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybVxuIFx0c2tiX3NldF90cmFuc3BvcnRfaGVhZGVyKHNrYiwgc2tiLVx1MDAzZWxlbik7XG4gXHRtcnQgPSBncm91cCA/IGJybWN0eC1cdTAwM2VtdWx0aWNhc3RfbGFzdF9tZW1iZXJfaW50ZXJ2YWwgOlxuIFx0XHQgICAgICBicm1jdHgtXHUwMDNlbXVsdGljYXN0X3F1ZXJ5X3Jlc3BvbnNlX2ludGVydmFsO1xuLVx0KmlnbXBfdHlwZSA9IElHTVBfSE9TVF9NRU1CRVJTSElQX1FVRVJZO1xuIFxuIFx0c3dpdGNoIChicm1jdHgtXHUwMDNlbXVsdGljYXN0X2lnbXBfdmVyc2lvbikge1xuIFx0Y2FzZSAyOlxuQEAgLTEwNzIsNyArMTA3MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfaXA2X211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtXG4gXHRcdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAqaXA2X2RzdCxcbiBcdFx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICpncm91cCxcbiBcdFx0XHRcdFx0XHQgICAgYm9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbHF0LFxuLVx0XHRcdFx0XHRcdCAgICB1OCBzZmxhZywgdTggKmlnbXBfdHlwZSxcbitcdFx0XHRcdFx0XHQgICAgdTggc2ZsYWcsXG4gXHRcdFx0XHRcdFx0ICAgIGJvb2wgKm5lZWRfcmV4bWl0KVxuIHtcbiBcdHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAgPSBwZyA/IHBnLVx1MDAzZWtleS5wb3J0IDogTlVMTDtcbkBAIC0xMTY2LDcgKzExNjUsNiBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX2lwNl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybVxuIFx0aW50ZXJ2YWwgPSBpcHY2X2FkZHJfYW55KGdyb3VwKSA/XG4gXHRcdFx0YnJtY3R4LVx1MDAzZW11bHRpY2FzdF9xdWVyeV9yZXNwb25zZV9pbnRlcnZhbCA6XG4gXHRcdFx0YnJtY3R4LVx1MDAzZW11bHRpY2FzdF9sYXN0X21lbWJlcl9pbnRlcnZhbDtcbi1cdCppZ21wX3R5cGUgPSBJQ01QVjZfTUdNX1FVRVJZO1xuIFx0c3dpdGNoIChicm1jdHgtXHUwMDNlbXVsdGljYXN0X21sZF92ZXJzaW9uKSB7XG4gXHRjYXNlIDE6XG4gXHRcdG1sZHEgPSAoc3RydWN0IG1sZF9tc2cgKilpY21wNl9oZHIoc2tiKTtcbkBAIC0xMjM3LDggKzEyMzUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxuIFx0XHRcdFx0XHRcdHN0cnVjdCBicl9pcCAqaXBfZHN0LFxuIFx0XHRcdFx0XHRcdHN0cnVjdCBicl9pcCAqZ3JvdXAsXG4gXHRcdFx0XHRcdFx0Ym9vbCB3aXRoX3NyY3MsIGJvb2wgb3Zlcl9sbXF0LFxuLVx0XHRcdFx0XHRcdHU4IHNmbGFnLCB1OCAqaWdtcF90eXBlLFxuLVx0XHRcdFx0XHRcdGJvb2wgKm5lZWRfcmV4bWl0KVxuK1x0XHRcdFx0XHRcdHU4IHNmbGFnLCBib29sICpuZWVkX3JleG1pdClcbiB7XG4gXHRfX2JlMzIgaXA0X2RzdDtcbiBcbkBAIC0xMjQ4LDggKzEyNDUsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX211bHRpY2FzdF9hbGxvY19xdWVyeShzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxuIFx0XHRyZXR1cm4gYnJfaXA0X211bHRpY2FzdF9hbGxvY19xdWVyeShicm1jdHgsIHBtY3R4LCBwZyxcbiBcdFx0XHRcdFx0XHQgICAgaXA0X2RzdCwgZ3JvdXAtXHUwMDNlZHN0LmlwNCxcbiBcdFx0XHRcdFx0XHQgICAgd2l0aF9zcmNzLCBvdmVyX2xtcXQsXG4tXHRcdFx0XHRcdFx0ICAgIHNmbGFnLCBpZ21wX3R5cGUsXG4tXHRcdFx0XHRcdFx0ICAgIG5lZWRfcmV4bWl0KTtcbitcdFx0XHRcdFx0XHQgICAgc2ZsYWcsIG5lZWRfcmV4bWl0KTtcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbiBcdGNhc2UgaHRvbnMoRVRIX1BfSVBWNik6IHtcbiBcdFx0c3RydWN0IGluNl9hZGRyIGlwNl9kc3Q7XG5AQCAtMTI2Myw4ICsxMjU5LDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpicl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiBcdFx0cmV0dXJuIGJyX2lwNl9tdWx0aWNhc3RfYWxsb2NfcXVlcnkoYnJtY3R4LCBwbWN0eCwgcGcsXG4gXHRcdFx0XHRcdFx0ICAgIFx1MDAyNmlwNl9kc3QsIFx1MDAyNmdyb3VwLVx1MDAzZWRzdC5pcDYsXG4gXHRcdFx0XHRcdFx0ICAgIHdpdGhfc3Jjcywgb3Zlcl9sbXF0LFxuLVx0XHRcdFx0XHRcdCAgICBzZmxhZywgaWdtcF90eXBlLFxuLVx0XHRcdFx0XHRcdCAgICBuZWVkX3JleG1pdCk7XG4rXHRcdFx0XHRcdFx0ICAgIHNmbGFnLCBuZWVkX3JleG1pdCk7XG4gXHR9XG4gI2VuZGlmXG4gXHR9XG5AQCAtMTc3NCw2ICsxNzY5LDY0IEBAIHN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9zZWxlY3Rfb3duX3F1ZXJpZXIoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiAjZW5kaWZcbiB9XG4gXG4rc3RhdGljIHU4IGJyX211bHRpY2FzdF9xdWVyeV90eXBlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0cmV0dXJuIHNrYi1cdTAwM2Vwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkgPyBJR01QX0hPU1RfTUVNQkVSU0hJUF9RVUVSWSA6XG4rXHRcdFx0XHRcdFx0ICBJQ01QVjZfTUdNX1FVRVJZO1xuK31cbitcbitzdGF0aWMgdm9pZCBicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbit7XG4rXHRzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0ICpwbWN0eDtcbitcdHN0cnVjdCBza19idWZmX2hlYWQgbGlzdDtcbitcdHN0cnVjdCBza19idWZmICpza2I7XG4rXG4rXHRwbWN0eCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0LFxuK1x0XHRcdCAgICAgcXVlcnlfcXVldWVfd29yayk7XG4rXG4rXHRfX3NrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2bGlzdCk7XG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XG4rXHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSwgXHUwMDI2bGlzdCk7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZS5sb2NrKTtcbitcbitcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcdTAwMjZsaXN0KSkpIHtcbitcdFx0dTggcXVlcnlfdHlwZSA9IGJyX211bHRpY2FzdF9xdWVyeV90eXBlKHNrYik7XG4rXG4rXHRcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbitcdFx0YnJfbXVsdGljYXN0X2NvdW50KHBtY3R4LVx1MDAzZXBvcnQtXHUwMDNlYnIsIHBtY3R4LVx1MDAzZXBvcnQsIHNrYixcbitcdFx0XHRcdCAgIHF1ZXJ5X3R5cGUsIEJSX01DQVNUX0RJUl9UWCk7XG4rXHRcdE5GX0hPT0soTkZQUk9UT19CUklER0UsIE5GX0JSX0xPQ0FMX09VVCwgZGV2X25ldChza2ItXHUwMDNlZGV2KSxcbitcdFx0XHROVUxMLCBza2IsIE5VTEwsIHNrYi1cdTAwM2VkZXYsIGJyX2Rldl9xdWV1ZV9wdXNoX3htaXQpO1xuK1x0XHRsb2NhbF9iaF9lbmFibGUoKTtcbitcdH1cbit9XG4rXG4rc3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3tcbitcdHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHg7XG4rXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGxpc3Q7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1xuK1x0YnJtY3R4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0LCBxdWVyeV9xdWV1ZV93b3JrKTtcbitcbitcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZsaXN0KTtcbitcdHNwaW5fbG9ja19iaChcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWUubG9jayk7XG4rXHRza2JfcXVldWVfc3BsaWNlX3RhaWxfaW5pdChcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWUsIFx1MDAyNmxpc3QpO1xuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlLmxvY2spO1xuK1xuK1x0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNmxpc3QpKSkge1xuK1x0XHR1OCBxdWVyeV90eXBlID0gYnJfbXVsdGljYXN0X3F1ZXJ5X3R5cGUoc2tiKTtcbitcbitcdFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuK1x0XHRicl9tdWx0aWNhc3RfY291bnQoYnJtY3R4LVx1MDAzZWJyLCBOVUxMLCBza2IsIHF1ZXJ5X3R5cGUsXG4rXHRcdFx0XHQgICBCUl9NQ0FTVF9ESVJfUlgpO1xuK1x0XHRuZXRpZl9yeChza2IpO1xuK1x0XHRsb2NhbF9iaF9lbmFibGUoKTtcbitcdH1cbit9XG4rXG4rI2RlZmluZSBCUl9NVUxUSUNBU1RfUVVFUllfUVVFVUVfTEVOX01BWFx0MTAwMFxuK1xuIHN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0X3BvcnQgKnBtY3R4LFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydF9ncm91cCAqcGcsXG5AQCAtMTc4MywyOCArMTgzNiwzMCBAQCBzdGF0aWMgdm9pZCBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXG4gXHRcdFx0XHQgICAgICB1OCBzZmxhZyxcbiBcdFx0XHRcdCAgICAgIGJvb2wgKm5lZWRfcmV4bWl0KVxuIHtcbitcdHN0cnVjdCBza19idWZmX2hlYWQgKnF1ZXVlO1xuIFx0Ym9vbCBvdmVyX2xtcXQgPSAhIXNmbGFnO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi1cdHU4IGlnbXBfdHlwZTtcbiBcbiBcdGlmICghYnJfbXVsdGljYXN0X2N0eF9zaG91bGRfdXNlKGJybWN0eCwgcG1jdHgpIHx8XG4gXHQgICAgIWJyX211bHRpY2FzdF9jdHhfbWF0Y2hlc192bGFuX3Nub29waW5nKGJybWN0eCkpXG4gXHRcdHJldHVybjtcbiBcbitcdHF1ZXVlID0gcG1jdHggPyBcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSA6IFx1MDAyNmJybWN0eC1cdTAwM2VxdWVyeV9xdWV1ZTtcbitcbiBhZ2Fpbl91bmRlcl9sbXF0OlxuK1x0aWYgKHNrYl9xdWV1ZV9sZW5fbG9ja2xlc3MocXVldWUpIFx1MDAzZT0gQlJfTVVMVElDQVNUX1FVRVJZX1FVRVVFX0xFTl9NQVgpXG4rXHRcdHJldHVybjtcbitcbiBcdHNrYiA9IGJyX211bHRpY2FzdF9hbGxvY19xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgaXBfZHN0LCBncm91cCxcbi1cdFx0XHRcdCAgICAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCwgc2ZsYWcsIFx1MDAyNmlnbXBfdHlwZSxcbitcdFx0XHRcdCAgICAgICB3aXRoX3NyY3MsIG92ZXJfbG1xdCwgc2ZsYWcsXG4gXHRcdFx0XHQgICAgICAgbmVlZF9yZXhtaXQpO1xuIFx0aWYgKCFza2IpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChwbWN0eCkge1xuIFx0XHRza2ItXHUwMDNlZGV2ID0gcG1jdHgtXHUwMDNlcG9ydC1cdTAwM2VkZXY7XG4tXHRcdGJyX211bHRpY2FzdF9jb3VudChicm1jdHgtXHUwMDNlYnIsIHBtY3R4LVx1MDAzZXBvcnQsIHNrYiwgaWdtcF90eXBlLFxuLVx0XHRcdFx0ICAgQlJfTUNBU1RfRElSX1RYKTtcbi1cdFx0TkZfSE9PSyhORlBST1RPX0JSSURHRSwgTkZfQlJfTE9DQUxfT1VULFxuLVx0XHRcdGRldl9uZXQocG1jdHgtXHUwMDNlcG9ydC1cdTAwM2VkZXYpLCBOVUxMLCBza2IsIE5VTEwsIHNrYi1cdTAwM2VkZXYsXG4tXHRcdFx0YnJfZGV2X3F1ZXVlX3B1c2hfeG1pdCk7XG4rXHRcdHNrYl9xdWV1ZV90YWlsKHF1ZXVlLCBza2IpO1xuK1x0XHRxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCBcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZV93b3JrKTtcbiBcbiBcdFx0aWYgKG92ZXJfbG1xdCBcdTAwMjZcdTAwMjYgd2l0aF9zcmNzIFx1MDAyNlx1MDAyNiBzZmxhZykge1xuIFx0XHRcdG92ZXJfbG1xdCA9IGZhbHNlO1xuQEAgLTE4MTIsOSArMTg2Nyw4IEBAIHN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcbiBcdFx0fVxuIFx0fSBlbHNlIHtcbiBcdFx0YnJfbXVsdGljYXN0X3NlbGVjdF9vd25fcXVlcmllcihicm1jdHgsIGdyb3VwLCBza2IpO1xuLVx0XHRicl9tdWx0aWNhc3RfY291bnQoYnJtY3R4LVx1MDAzZWJyLCBOVUxMLCBza2IsIGlnbXBfdHlwZSxcbi1cdFx0XHRcdCAgIEJSX01DQVNUX0RJUl9SWCk7XG4tXHRcdG5ldGlmX3J4KHNrYik7XG4rXHRcdHNrYl9xdWV1ZV90YWlsKHF1ZXVlLCBza2IpO1xuK1x0XHRxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCBcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yayk7XG4gXHR9XG4gfVxuIFxuQEAgLTE5OTcsNiArMjA1MSwxMCBAQCB2b2lkIGJyX211bHRpY2FzdF9wb3J0X2N0eF9pbml0KHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnBvcnQsXG4gXHRwbWN0eC1cdTAwM2Vwb3J0ID0gcG9ydDtcbiBcdHBtY3R4LVx1MDAzZXZsYW4gPSB2bGFuO1xuIFx0cG1jdHgtXHUwMDNlbXVsdGljYXN0X3JvdXRlciA9IE1EQl9SVFJfVFlQRV9URU1QX1FVRVJZO1xuK1xuK1x0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSk7XG4rXHRJTklUX1dPUksoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29yayk7XG4rXG4gXHR0aW1lcl9zZXR1cChcdTAwMjZwbWN0eC1cdTAwM2VpcDRfbWNfcm91dGVyX3RpbWVyLFxuIFx0XHQgICAgYnJfaXA0X211bHRpY2FzdF9yb3V0ZXJfZXhwaXJlZCwgMCk7XG4gXHR0aW1lcl9zZXR1cChcdTAwMjZwbWN0eC1cdTAwM2VpcDRfb3duX3F1ZXJ5LnRpbWVyLFxuQEAgLTIwMzgsNiArMjA5Niw4IEBAIHZvaWQgYnJfbXVsdGljYXN0X3BvcnRfY3R4X2RlaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0ICpwbWN0eClcbiBcdGRlbCB8PSBicl9pcDRfbXVsdGljYXN0X3Jwb3J0X2RlbChwbWN0eCk7XG4gXHRicl9tdWx0aWNhc3RfcnBvcnRfZGVsX25vdGlmeShwbWN0eCwgZGVsKTtcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmJyLVx1MDAzZW11bHRpY2FzdF9sb2NrKTtcbitcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cG1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yayk7XG4rXHRfX3NrYl9xdWV1ZV9wdXJnZShcdTAwMjZwbWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSk7XG4gfVxuIFxuIGludCBicl9tdWx0aWNhc3RfYWRkX3BvcnQoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcG9ydClcbkBAIC00MTEyLDYgKzQxNzIsOSBAQCB2b2lkIGJyX211bHRpY2FzdF9jdHhfaW5pdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG4gXHRzZXFjb3VudF9zcGlubG9ja19pbml0KFx1MDAyNmJybWN0eC1cdTAwM2VpcDZfcXVlcmllci5zZXEsIFx1MDAyNmJyLVx1MDAzZW11bHRpY2FzdF9sb2NrKTtcbiAjZW5kaWZcbiBcbitcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2YnJtY3R4LVx1MDAzZXF1ZXJ5X3F1ZXVlKTtcbitcdElOSVRfV09SSyhcdTAwMjZicm1jdHgtXHUwMDNlcXVlcnlfcXVldWVfd29yaywgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmspO1xuK1xuIFx0dGltZXJfc2V0dXAoXHUwMDI2YnJtY3R4LVx1MDAzZWlwNF9tY19yb3V0ZXJfdGltZXIsXG4gXHRcdCAgICBicl9pcDRfbXVsdGljYXN0X2xvY2FsX3JvdXRlcl9leHBpcmVkLCAwKTtcbiBcdHRpbWVyX3NldHVwKFx1MDAyNmJybWN0eC1cdTAwM2VpcDRfb3RoZXJfcXVlcnkudGltZXIsXG5AQCAtNDEzNSw2ICs0MTk4LDggQEAgdm9pZCBicl9tdWx0aWNhc3RfY3R4X2luaXQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuIHZvaWQgYnJfbXVsdGljYXN0X2N0eF9kZWluaXQoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eClcbiB7XG4gXHRfX2JyX211bHRpY2FzdF9zdG9wKGJybWN0eCk7XG4rXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmJybWN0eC1cdTAwM2VxdWVyeV9xdWV1ZV93b3JrKTtcbitcdF9fc2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmJybWN0eC1cdTAwM2VxdWVyeV9xdWV1ZSk7XG4gfVxuIFxuIHZvaWQgYnJfbXVsdGljYXN0X2luaXQoc3RydWN0IG5ldF9icmlkZ2UgKmJyKVxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oIGIvbmV0L2JyaWRnZS9icl9wcml2YXRlLmhcbmluZGV4IGQ1NWVhOTUxNmUzZTM2Li5mOGY3N2EyZDQ4OTE2OCAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oXG4rKysgYi9uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaFxuQEAgLTEzMSw2ICsxMzEsOCBAQCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0IHtcbiBcdHVuc2lnbmVkIGNoYXJcdFx0XHRtdWx0aWNhc3Rfcm91dGVyO1xuIFx0dTMyXHRcdFx0XHRtZGJfbl9lbnRyaWVzO1xuIFx0dTMyXHRcdFx0XHRtZGJfbWF4X2VudHJpZXM7XG4rXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICAgICAgICAgICAgIHF1ZXJ5X3F1ZXVlO1xuK1x0c3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrO1xuICNlbmRpZiAvKiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkcgKi9cbiB9O1xuIFxuQEAgLTE2Nyw2ICsxNjksOCBAQCBzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCB7XG4gXHRzdHJ1Y3QgYnJpZGdlX21jYXN0X293bl9xdWVyeVx0aXA2X293bl9xdWVyeTtcbiBcdHN0cnVjdCBicmlkZ2VfbWNhc3RfcXVlcmllclx0aXA2X3F1ZXJpZXI7XG4gI2VuZGlmIC8qIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpICovXG4rXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkICAgICAgICAgICAgIHF1ZXJ5X3F1ZXVlO1xuK1x0c3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrO1xuICNlbmRpZiAvKiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkcgKi9cbiB9O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDM6MjU6NTguNDY5NzU0NDk0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1Mjc2MDA0OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQnJpZGdlIE11bHRpY2FzdCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBMaW51eCBrZXJuZWwsIGFuZCBpdCdzIHRvdWNoaW5nIHRoZSBicmlkZ2UgbXVsdGljYXN0IGNvZGUsIHNwZWNpZmljYWxseSBgYnJfbXVsdGljYXN0LmNgIGFuZCBgYnJfcHJpdmF0ZS5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQWgsIHRoZXkncmUgY2hhbmdpbmcgdGhlIHF1ZXJ5IGhhbmRsaW5nLlwiIEl0IGxvb2tzIGxpa2UgaW5zdGVhZCBvZiB0aGUgdXN1YWwgc3luY2hyb25vdXMgc2VuZGluZyBvZiBJR01QL01MRCBxdWVyaWVzLCB0aGV5J3JlIHF1ZXVlaW5nIHRoZW0gdXAgaW4gYSB3b3JrcXVldWUsIGBxdWVyeV9xdWV1ZV93b3JrYCwgZm9yIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLiBJbnRlcmVzdGluZy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgc2hpZnQgZnJvbSBkaXJlY3QgZXhlY3V0aW9uIHRvIGFuIGFzeW5jaHJvbm91cyBtb2RlbCBpbiB0aGUgYnJpZGdlIG11bHRpY2FzdCBsb2dpYy5cblxuSSBzZWUgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgY291cGxlIG9mIG5ldyBmdW5jdGlvbnMsIGBicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrYCBhbmQgYGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrYCwgd2hpY2ggYXJlIGxpa2VseSB0aGUgbWVjaGFuaXNtcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgcXVldWUuIEFuZCwgc21hcnQsIHRoZXkndmUgaW5jbHVkZWQgYSBxdWV1ZSBsZW5ndGggbGltaXQsIGBCUl9NVUxUSUNBU1RfUVVFUllfUVVFVUVfTEVOX01BWGAsIGNhcHBlZCBhdCAxMDAwLiBUaGF0J3MgZ29vZCBwcmFjdGljZSB0byBwcmV2ZW50IHJlc291cmNlIGV4aGF1c3Rpb24gaW4gY2FzZSBvZiBhbiBpc3N1ZS5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgZ29pbmcgdG8gcGxheSBuaWNlIHdpdGggb3RoZXIgY29uZmlndXJlZCBmZWF0dXJlcy4gVGhlIGNvZGUncyBjbGVhcmx5IGd1YXJkZWQgYnkgYENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR2AsIHdoaWNoLCBhcyBJIGNhbiBzZWUgaW4gYGJyX3ByaXZhdGUuaGAsIGlzIHRoZSBrZXkuIE9idmlvdXNseSwgdGhlIGJyaWRnZSBzdWJzeXN0ZW0gbmVlZHMgdG8gYmUgZW5hYmxlZCB0b28sIHNvIGBDT05GSUdfQlJJREdFYCBpcyBhIG11c3QuIGBDT05GSUdfSVBWNmAgaXMgYWxzbyBpbnZvbHZlZCwgYW5kIHdoaWxlIG5vdCBzdHJpY3RseSBlc3NlbnRpYWwgZm9yIHRoZSBlbnRpcmUgcGF0Y2gsIGl0IGRvZXMgaW1wYWN0IGEgcG9ydGlvbiBvZiBpdCwgc28gSSdsbCBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIGFzIHdlbGwuIFNvLCBuZXh0IHN0ZXAsIEkgbmVlZCB0byB2ZXJpZnkgdGhlc2UgY29uZmlndXJhdGlvbnMuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAzOjI2OjM1Ljk5NzM1NzMzMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg1NzI4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX0JSSURHRV9ORVRGSUxURVIpICs9IGJyX25ldGZpbHRlci5vXFxubmV0L2JyaWRnZS9NYWtlZmlsZS0yMC1cXG5uZXQvYnJpZGdlL01ha2VmaWxlOjIxOmJyaWRnZS0kKENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORykgKz0gYnJfbXVsdGljYXN0Lm8gYnJfbWRiLm8gYnJfbXVsdGljYXN0X2VodC5vXFxubmV0L2JyaWRnZS9NYWtlZmlsZS0yMi1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfZm9yd2FyZC5jPTIwMT12b2lkIGJyX2Zsb29kKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfZm9yd2FyZC5jLTI2Ni1cXG5uZXQvYnJpZGdlL2JyX2ZvcndhcmQuYzoyNjc6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfZm9yd2FyZC5jLTI2OC1zdGF0aWMgdm9pZCBtYXliZV9kZWxpdmVyX2FkZHIoc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTE3MT1zdGF0aWMgaW5saW5lIHNpemVfdCBicl9wb3J0X2luZm9fc2l6ZSh2b2lkKVxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMjA0LVxcdFxcdCsgbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHU2NCkpIC8qIElGTEFfQlJQT1JUX0hPTERfVElNRVIgKi9cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoyMDU6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTIwNi1cXHRcXHQrIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpXFx0LyogSUZMQV9CUlBPUlRfTVVMVElDQVNUX1JPVVRFUiAqL1xcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9MjM0PXN0YXRpYyBpbnQgYnJfcG9ydF9maWxsX2F0dHJzKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0zMDYtXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MzA3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0zMDgtXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0JSUE9SVF9NVUxUSUNBU1RfUk9VVEVSLFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9OTUxPXN0YXRpYyBpbnQgYnJfc2V0cG9ydChzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTA0OC1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoxMDQ5OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xMDUwLVxcdGlmICh0YltJRkxBX0JSUE9SVF9NVUxUSUNBU1RfUk9VVEVSXSkge1xcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9MTI5NT1zdGF0aWMgaW50IGJyX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmJyZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTQzNi1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoxNDM3OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNDM4LVxcdGlmIChkYXRhW0lGTEFfQlJfTUNBU1RfUk9VVEVSXSkge1xcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM9MTYxOT1zdGF0aWMgc2l6ZV90IGJyX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpicmRldilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTE2NDctXFx0ICAgICAgIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArICAgIC8qIElGTEFfQlJfRkRCX01BWF9MRUFSTkVEICovXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6MTY0ODojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTY0OS1cXHQgICAgICAgbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHU4KSkgKyAgICAgLyogSUZMQV9CUl9NQ0FTVF9ST1VURVIgKi9cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTE2Nzg9c3RhdGljIGludCBicl9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmJyZGV2KVxcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTczOS0jZW5kaWZcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoxNzQwOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xNzQxLVxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9CUl9NQ0FTVF9ST1VURVIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYz0xODQwPXN0YXRpYyBpbnQgYnJfZmlsbF9saW5reHN0YXRzKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xODc2LVxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jOjE4Nzc6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTE4NzgtXFx0XFx0bGltaXQgLT0gbmxhX3RvdGFsX3NpemVfNjRiaXQoc2l6ZW9mKHN0cnVjdCBicl9tY2FzdF9zdGF0cykpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmMtMTkwNy1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzoxOTA4OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy0xOTA5LVxcdGlmICgrK3ZsX2lkeCBcXHUwMDNlPSAqcHJpdmlkeCkge1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9Njk9c3RydWN0IG1hY19hZGRyIHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTcyLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjczOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC03NC0vKiBvdXIgb3duIHF1ZXJpZXIgKi9cXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTExOD1zdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdF9wb3J0IHtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxMTk6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTEyMC1cXHRzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0XFx0XFx0KnBvcnQ7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0xMzUtXFx0c3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBxdWVyeV9xdWV1ZV93b3JrO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjEzNjojZW5kaWYgLyogQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HICovXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTM3LX07XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0xNDA9c3RydWN0IG5ldF9icmlkZ2VfbWNhc3Qge1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjE0MTojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTQyLVxcdHN0cnVjdCBuZXRfYnJpZGdlXFx0XFx0KmJyO1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMTczLVxcdHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgICAgICAgICAgcXVlcnlfcXVldWVfd29yaztcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDoxNzQ6I2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTE3NS19O1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MzkyPXN0cnVjdCBuZXRfYnJpZGdlX3BvcnQge1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNDI2LVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjQyNzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNDI4LVxcdHN0cnVjdCBicmlkZ2VfbWNhc3Rfc3RhdHNcXHRfX3BlcmNwdSAqbWNhc3Rfc3RhdHM7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD01MDA9c3RydWN0IG5ldF9icmlkZ2Uge1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNTUyLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjU1MzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNTU0LVxcdHN0cnVjdCBicmlkZ2VfbWNhc3Rfc3RhdHNcXHRfX3BlcmNwdSAqbWNhc3Rfc3RhdHM7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD01OTc9c3RydWN0IGJyX2lucHV0X3NrYl9jYiB7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC02MDAtXFx0dTE2IGZyYWdfbWF4X3NpemU7XFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6NjAxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC02MDItXFx0dTggaWdtcDtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTYzNy1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDo2Mzg6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTYzOS0jIGRlZmluZSBCUl9JTlBVVF9TS0JfQ0JfTVJPVVRFUlNfT05MWShfX3NrYilcXHQoQlJfSU5QVVRfU0tCX0NCKF9fc2tiKS1cXHUwMDNlbXJvdXRlcnNfb25seSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTc0Mj1zdGF0aWMgaW5saW5lIHU4IGJyX3ZsYW5fbXVsdGljYXN0X3JvdXRlcihjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2KVxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNzQ1LVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjc0NjojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtNzQ3LVxcdGlmICghYnJfdmxhbl9pc19tYXN0ZXIodikpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD05Njk9aW50IGJyX2lvY3RsX3N0dWIoc3RydWN0IG5ldCAqbmV0LCB1bnNpZ25lZCBpbnQgY21kLCB2b2lkIF9fdXNlciAqdWFyZyk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC05NzEtLyogYnJfbXVsdGljYXN0LmMgKi9cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaDo5NzI6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTk3My1pbnQgYnJfbXVsdGljYXN0X3JjdihzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqKmJybWN0eCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaD00MT1zdHJ1Y3QgbmV0X2JyaWRnZV9ncm91cF9laHRfc2V0IHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaC01MS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbWNhc3RfZWh0Lmg6NTI6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaC01My12b2lkIGJyX211bHRpY2FzdF9laHRfY2xlYW5fc2V0cyhzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0X2dyb3VwICpwZyk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbWNhc3RfZWh0Lmg9ODY9c3RhdGljIGlubGluZSB2b2lkIGJyX211bHRpY2FzdF9laHRfaG9zdHNfZGVjKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnRfZ3JvdXAgKnBnKVxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21jYXN0X2VodC5oLTkxLX1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbWNhc3RfZWh0Lmg6OTI6I2VuZGlmIC8qIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElORyAqL1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tY2FzdF9laHQuaC05My1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfc3dpdGNoZGV2LmM9NDYzPXN0YXRpYyBpbnQgYnJfc3dpdGNoZGV2X3ZsYW5fcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpicl9kZXYsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jLTUwOS1cXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jOjUxMDojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9zd2l0Y2hkZXYuYy01MTEtc3RydWN0IGJyX3N3aXRjaGRldl9tZGJfY29tcGxldGVfaW5mbyB7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jPTY5Nj1icl9zd2l0Y2hkZXZfbWRiX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqYnJfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2JyaWRnZS9icl9zd2l0Y2hkZXYuYy02OTkte1xcbm5ldC9icmlkZ2UvYnJfc3dpdGNoZGV2LmM6NzAwOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3N3aXRjaGRldi5jLTcwMS1cXHRjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV9tZGJfZW50cnkgKm1wO1xcbi0tXFxubmV0L2JyaWRnZS9icl9zeXNmc19ici5jPTM4ND1zdGF0aWMgREVWSUNFX0FUVFJfUlcobm9fbGlua2xvY2FsX2xlYXJuKTtcXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2JyLmMtMzg1LVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYzozODY6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYy0zODctc3RhdGljIHNzaXplX3QgbXVsdGljYXN0X3JvdXRlcl9zaG93KHN0cnVjdCBkZXZpY2UgKmQsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2JyLmM9OTM1PXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpicmlkZ2VfYXR0cnNbXSA9IHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYy05NTUtXFx0XFx1MDAyNmRldl9hdHRyX25vX2xpbmtsb2NhbF9sZWFybi5hdHRyLFxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYzo5NTY6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfc3lzZnNfYnIuYy05NTctXFx0XFx1MDAyNmRldl9hdHRyX211bHRpY2FzdF9yb3V0ZXIuYXR0cixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYz0yNjQ9QlJQT1JUX0FUVFJfRkxBRyhpc29sYXRlZCwgQlJfSVNPTEFURURfQklUKTtcXG5uZXQvYnJpZGdlL2JyX3N5c2ZzX2lmLmMtMjY1LVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYzoyNjY6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYy0yNjctc3RhdGljIHNzaXplX3Qgc2hvd19tdWx0aWNhc3Rfcm91dGVyKHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsIGNoYXIgKmJ1ZilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYz0yODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBicnBvcnRfYXR0cmlidXRlICpicnBvcnRfYXR0cnNbXSA9IHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfc3lzZnNfaWYuYy0zMDQtXFx0XFx1MDAyNmJycG9ydF9hdHRyX3VuaWNhc3RfZmxvb2QsXFxubmV0L2JyaWRnZS9icl9zeXNmc19pZi5jOjMwNTojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl9zeXNmc19pZi5jLTMwNi1cXHRcXHUwMDI2YnJwb3J0X2F0dHJfbXVsdGljYXN0X3JvdXRlcixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NDA9Ym9vbCBicl92bGFuX29wdHNfZXFfcmFuZ2UoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2VfdmxhbiAqdl9jdXJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy02MC1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjYxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTYyLVxcdGlmICghYnJfdmxhbl9pc19tYXN0ZXIodl9jdXJyKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz03Mj1ib29sIGJyX3ZsYW5fb3B0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfYnJpZGdlX3ZsYW4gKnYsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTgyLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6ODM6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtODQtXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUixcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9OTg9c2l6ZV90IGJyX3ZsYW5fb3B0c19ubF9zaXplKHZvaWQpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTEwMi1cXHQgICAgICAgKyBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgLyogQlJJREdFX1ZMQU5EQl9USU5GT19JRCAqL1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6MTAzOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTEwNC1cXHQgICAgICAgKyBubGFfdG90YWxfc2l6ZShzaXplb2YodTgpKSAvKiBCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUiAqL1xcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz0yMTc9c3RhdGljIGludCBicl92bGFuX3Byb2Nlc3Nfb25lX29wdHMoY29uc3Qgc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy0yNDAtXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYzoyNDE6I2lmZGVmIENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmMtMjQyLVxcdGlmICh0YltCUklER0VfVkxBTkRCX0VOVFJZX01DQVNUX1JPVVRFUl0pIHtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9Mzg5PWJvb2wgYnJfdmxhbl9nbG9iYWxfb3B0c19maWxsKHN0cnVjdCBza19idWZmICpza2IsIHUxNiB2aWQsIHUxNiB2aWRfcmFuZ2UsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQwNi1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jOjQwNzojaWZkZWYgQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00MDgtXFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBCUklER0VfVkxBTkRCX0dPUFRTX01DQVNUX1NOT09QSU5HLFxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYz00ODM9c3RhdGljIHNpemVfdCBydG5sX3ZsYW5fZ2xvYmFsX29wdHNfbmxtc2dfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZV92bGFuICp2KVxcbi0tXFxubmV0L2JyaWRnZS9icl92bGFuX29wdGlvbnMuYy00ODctXFx0XFx0KyBubGFfdG90YWxfc2l6ZShzaXplb2YodTE2KSkgLyogQlJJREdFX1ZMQU5EQl9HT1BUU19JRCAqL1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NDg4OiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTQ4OS1cXHRcXHQrIG5sYV90b3RhbF9zaXplKHNpemVvZih1OCkpIC8qIEJSSURHRV9WTEFOREJfR09QVFNfTUNBU1RfU05PT1BJTkcgKi9cXG4tLVxcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM9NTUxPXN0YXRpYyBpbnQgYnJfdmxhbl9wcm9jZXNzX2dsb2JhbF9vbmVfb3B0cyhjb25zdCBzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU2MC1cXHQqY2hhbmdlZCA9IGZhbHNlO1xcbm5ldC9icmlkZ2UvYnJfdmxhbl9vcHRpb25zLmM6NTYxOiNpZmRlZiBDT05GSUdfQlJJREdFX0lHTVBfU05PT1BJTkdcXG5uZXQvYnJpZGdlL2JyX3ZsYW5fb3B0aW9ucy5jLTU2Mi1cXHRpZiAodGJbQlJJREdFX1ZMQU5EQl9HT1BUU19NQ0FTVF9TTk9PUElOR10pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDM6MjY6MzYuMTI1OTM4MjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDIzNDI4MjI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE11bHRpY2FzdCBRdWVyeSBQYXRjaCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXRjaC4gRmlyc3QgdGhpbmdzIGZpcnN0LCB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgYEJSSURHRWAsIGBCUklER0VfSUdNUF9TTk9PUElOR2AsIGFuZCBpZGVhbGx5LCBgSVBWNmAgZm9yIHRlc3RpbmcgdGhlIGBicl9pcDZfbXVsdGljYXN0X2FsbG9jX3F1ZXJ5YCBmdW5jdGlvbi4gTWFrZXMgc2Vuc2UuXG5cbk5vdywgbGV0J3MgYnJlYWsgZG93biB0aGUgY29yZSBmdW5jdGlvbnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrYCwgYGJyX211bHRpY2FzdF9xdWVyeV9xdWV1ZV93b3JrYCwgYGJyX211bHRpY2FzdF9xdWVyeV90eXBlYCAoYSBzaW1wbGUgaGVscGVyKSwgYW5kIG1vZGlmaWVzIGBfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5YC4gQWxyaWdodCwgc28gdGhlIG1haW4gcGxheWVycyBhcmUgYGJyX211bHRpY2FzdF9wb3J0X3F1ZXJ5X3F1ZXVlX3dvcmtgLCBgYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmtgLCBhbmQgZXNwZWNpYWxseSBgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMgYWx3YXlzIHJlYWNoYWJpbGl0eS4gVGhlc2UgYXJlIHdvcmtxdWV1ZSBoYW5kbGVycywgbWVhbmluZyB0aGV5J2xsIGJlIGNhbGxlZCB3aGVuIHdvcmsgaXMgcXVldWVkIHRvIHRoZW0uIFRoZSB3b3JrIGlzIHF1ZXVlZCwgSSBzZWUgaGVyZSwgaW4gYF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlgLiBHb29kLCB0aGF0J3Mgd2hhdCBJIHdhbnQgdG8ga25vdy4gYF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlgIGlzIGludm9rZWQgYnkgYGJyX211bHRpY2FzdF9zZW5kX3F1ZXJ5YCBhbmQgYGJyX211bHRpY2FzdF9zZW5kX3BvcnRfZ3JvdXBfcXVlcnlgLiBFeGNlbGxlbnQuIFRoZXNlIGNhbGxzIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIElHTVAvTUxEIHRpbWVycywgb3Igd2hlbiBhIG5ldyBxdWVyaWVyIGlzIGVsZWN0ZWQuIFNvIHllcywgdGhlc2UgYWxsIGFwcGVhciByZWFjaGFibGUgYW5kIGNhbGxlZCBpbiB0aGUgY29ycmVjdCB3YXlzLlxuXG5SaWdodCwgc28gdG8gbWFrZSBzdXJlIHRoZSBjb3JlIGxvZ2ljIGlzIHNvdW5kLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlgIGlzIGluZGVlZCByZWFjaGFibGUuIFRoYXQncyB0aGUgY3JpdGljYWwgcG9pbnQgSSdsbCBzdGFydCB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI4MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMzoyNjo1MC4zNjAyMjI3NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTY3MDEyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmM9MTgwND1zdGF0aWMgdm9pZCBicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTE4MjktXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYzoxODMwOnN0YXRpYyB2b2lkIF9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTE4MzEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9icmlkZ2VfbWNhc3RfcG9ydCAqcG1jdHgsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jPTE4OTk9c3RhdGljIHZvaWQgYnJfbXVsdGljYXN0X3NlbmRfcXVlcnkoc3RydWN0IG5ldF9icmlkZ2VfbWNhc3QgKmJybWN0eCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMTkzNy1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjE5Mzg6XFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBOVUxMLCBOVUxMLCBcXHUwMDI2YnJfZ3JvdXAsIGZhbHNlLFxcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMTkzOS1cXHRcXHRcXHRcXHQgIDAsIE5VTEwpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0xOTg3PXN0YXRpYyB2b2lkIGJyX211bHRpY2FzdF9wb3J0X2dyb3VwX3JleG1pdChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMjAyMC1cXHRcXHRwZy1cXHUwMDNlZ3JwX3F1ZXJ5X3JleG1pdF9jbnQtLTtcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjIwMjE6XFx0XFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgXFx1MDAyNnBnLVxcdTAwM2VrZXkuYWRkcixcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTIwMjItXFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2cGctXFx1MDAzZWtleS5hZGRyLCBmYWxzZSwgMSwgTlVMTCk7XFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMDIzLVxcdH1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjIwMjQ6XFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgXFx1MDAyNnBnLVxcdTAwM2VrZXkuYWRkcixcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTIwMjUtXFx0XFx0XFx0XFx0ICBcXHUwMDI2cGctXFx1MDAzZWtleS5hZGRyLCB0cnVlLCAwLCBcXHUwMDI2bmVlZF9yZXhtaXQpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0yMjkxPXN0YXRpYyB2b2lkIF9fZ3JwX3NyY19xdWVyeV9tYXJrZWRfYW5kX3JleG1pdChzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxcbi0tXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMzI4LVxcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmM6MjMyOTpcXHRfX2JyX211bHRpY2FzdF9zZW5kX3F1ZXJ5KGJybWN0eCwgcG1jdHgsIHBnLCBcXHUwMDI2cGctXFx1MDAzZWtleS5hZGRyLFxcbm5ldC9icmlkZ2UvYnJfbXVsdGljYXN0LmMtMjMzMC1cXHRcXHRcXHRcXHQgIFxcdTAwMjZwZy1cXHUwMDNla2V5LmFkZHIsIHRydWUsIDEsIE5VTEwpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYz0yMzM4PXN0YXRpYyB2b2lkIF9fZ3JwX3NlbmRfcXVlcnlfYW5kX3JleG1pdChzdHJ1Y3QgbmV0X2JyaWRnZV9tY2FzdCAqYnJtY3R4LFxcbi0tXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0yMzU5LVxcdFxcdHBnLVxcdTAwM2VncnBfcXVlcnlfcmV4bWl0X2NudCA9IGJybWN0eC1cXHUwMDNlbXVsdGljYXN0X2xhc3RfbWVtYmVyX2NvdW50IC0gMTtcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjIzNjA6XFx0XFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBwZywgXFx1MDAyNnBnLVxcdTAwM2VrZXkuYWRkcixcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTIzNjEtXFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2cGctXFx1MDAzZWtleS5hZGRyLCBmYWxzZSwgMCwgTlVMTCk7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jPTM3MTU9YnJfbXVsdGljYXN0X2xlYXZlX2dyb3VwKHN0cnVjdCBuZXRfYnJpZGdlX21jYXN0ICpicm1jdHgsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jLTM3NTctXFx0aWYgKGJybWN0eC1cXHUwMDNlbXVsdGljYXN0X3F1ZXJpZXIpIHtcXG5uZXQvYnJpZGdlL2JyX211bHRpY2FzdC5jOjM3NTg6XFx0XFx0X19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeShicm1jdHgsIHBtY3R4LCBOVUxMLCBOVUxMLCBcXHUwMDI2bXAtXFx1MDAzZWFkZHIsXFxubmV0L2JyaWRnZS9icl9tdWx0aWNhc3QuYy0zNzU5LVxcdFxcdFxcdFxcdFxcdCAgZmFsc2UsIDAsIE5VTEwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwMzoyNjo1MC40NTk4OTkyNTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjAzNDA1NTY3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcGF0Y2guXG5cbioqQW5hbHl6aW5nIHRoZSBCcmlkZ2UgTXVsdGljYXN0IExvZ2ljIFBhdGNoKipcblxuQWxyaWdodCwgdGhpcyBwYXRjaCBpcyBjbGVhcmx5IHRvdWNoaW5nIHRoZSBtdWx0aWNhc3QgbG9naWMgd2l0aGluIHRoZSBicmlkZ2UsIHNwZWNpZmljYWxseSBhcm91bmQgSUdNUC9NTEQgcXVlcnkgdHJhbnNtaXNzaW9uLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGNoYW5nZSBpbnZvbHZlcyBzaGlmdGluZyBmcm9tIHN5bmNocm9ub3VzIHF1ZXJ5IHNlbmRpbmcgdG8gYSB3b3JrcXVldWUgYXBwcm9hY2guIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZTsgaW50cm9kdWNpbmcgYSB3b3JrcXVldWUgY2FuIHVuY292ZXIgcmFjZSBjb25kaXRpb25zIG9yIHRpbWluZyBpc3N1ZXMgdGhhdCB3b3VsZG4ndCBzdXJmYWNlIHdpdGggc3luY2hyb25vdXMgb3BlcmF0aW9ucy5cblxuU28sIGZvciBmdXp6aW5nIHRoaXMsIEknbGwgbmVlZCB0byBlbmFibGUgYSBmZXcgY29uZmlndXJhdGlvbnM6IGBCUklER0VgLCBkZWZpbml0ZWx5IGBCUklER0VfSUdNUF9TTk9PUElOR2AsIGFuZCBpZGVhbGx5IGBJUFY2YCBhcyB3ZWxsIHNpbmNlIHdlJ3JlIGxvb2tpbmcgYXQgTUxEIGFzIGEgcG90ZW50aWFsIGZvY3VzLlxuXG5UaGUgY29yZSBzeW1ib2xzIEknbGwgd2FudCB0byBob25lIGluIG9uIGFyZSBgYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29ya2AsIGBicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29ya2AsIGFuZCBgX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeWAuIFRoZXNlIGxvb2sgbGlrZSB0aGUga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHF1ZXVpbmcgYW5kIHNlbmRpbmcgdGhlIHF1ZXJpZXMuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB3aGF0IHRoZSBjb25maWcgZGVwZW5kZW5jaWVzIGFyZS4gYENPTkZJR19CUklER0VfSUdNUF9TTk9PUElOR2Agc2VlbXMgdG8gYmUgdGhlIG1haW4gZHJpdmVyLCB3aXRoIGBDT05GSUdfQlJJREdFYCBiZWluZyBhIHByZXJlcXVpc2l0ZSwgYW5kIGBDT05GSUdfSVBWNmAgbmVlZGVkIGZvciBNTEQuIEdvdCBpdC4gSSdsbCBtYWtlIHN1cmUgdGhlIHJlc3VsdHMgcmVmbGVjdCB0aGlzIGluZm9ybWF0aW9uIHByZWNpc2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NTUsIk91dHB1dFRva2VucyI6MTUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDAzOjI3OjAyLjQ5Mzk1NzE2MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MzExODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9JR01QX1NOT09QSU5HXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXVsdGljYXN0X3BvcnRfcXVlcnlfcXVldWVfd29ya1wiLFxuICAgIFwiYnJfbXVsdGljYXN0X3F1ZXJ5X3F1ZXVlX3dvcmtcIixcbiAgICBcIl9fYnJfbXVsdGljYXN0X3NlbmRfcXVlcnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYnJpZGdlIG11bHRpY2FzdCBsb2dpYyB0byBxdWV1ZSBJR01QL01MRCBxdWVyaWVzIHRvIGEgd29ya3F1ZXVlIGluc3RlYWQgb2Ygc2VuZGluZyB0aGVtIHN5bmNocm9ub3VzbHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBicmlkZ2UgbXVsdGljYXN0IGNvZGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBhc3luY2hyb25vdXMgcHJvY2Vzc2luZyBkb2VzIG5vdCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSwgb3IgbWVtb3J5IGxlYWtzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSSURHRVwiLFxuICAgIFwiQlJJREdFX0lHTVBfU05PT1BJTkdcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tdWx0aWNhc3RfcG9ydF9xdWVyeV9xdWV1ZV93b3JrXCIsXG4gICAgXCJicl9tdWx0aWNhc3RfcXVlcnlfcXVldWVfd29ya1wiLFxuICAgIFwiX19icl9tdWx0aWNhc3Rfc2VuZF9xdWVyeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmlkZ2UgbXVsdGljYXN0IGxvZ2ljIHRvIHF1ZXVlIElHTVAvTUxEIHF1ZXJpZXMgdG8gYSB3b3JrcXVldWUgaW5zdGVhZCBvZiBzZW5kaW5nIHRoZW0gc3luY2hyb25vdXNseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGJyaWRnZSBtdWx0aWNhc3QgY29kZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIGRvZXMgbm90IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlLCBvciBtZW1vcnkgbGVha3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowv8hmd[1] Phase: Succeeded StartedAt: 2026-07-09 03:28:28 +0000 UTC FinishedAt: 2026-07-09 03:28:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 03:28:28 +0000 UTC FinishedAt: 2026-07-09 03:28:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2] Phase: Succeeded StartedAt: 2026-07-09 03:28:28 +0000 UTC FinishedAt: 2026-07-09 08:22:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 03:28:28 +0000 UTC FinishedAt: 2026-07-09 08:22:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-09 03:28:28 +0000 UTC FinishedAt: 2026-07-09 03:28:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-09 03:28:28 +0000 UTC FinishedAt: 2026-07-09 03:28:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-convert-artifact-1420232418/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-09 03:28:49 +0000 UTC FinishedAt: 2026-07-09 04:03:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-09 03:28:49 +0000 UTC FinishedAt: 2026-07-09 04:03:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b40635ad-1223-4b01-9ac0-70ffa39de8a1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-convert-artifact-1420232418/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ad58d50c-fc4c-4e66-ba35-3620441d3d5d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-build-action-1678925472/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-09 03:28:49 +0000 UTC FinishedAt: 2026-07-09 04:03:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b40635ad-1223-4b01-9ac0-70ffa39de8a1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-convert-artifact-1420232418/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ad58d50c-fc4c-4e66-ba35-3620441d3d5d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-build-action-1678925472/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-09 04:03:29 +0000 UTC FinishedAt: 2026-07-09 04:03:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-09 04:03:29 +0000 UTC FinishedAt: 2026-07-09 04:03:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-09 04:03:29 +0000 UTC FinishedAt: 2026-07-09 04:06:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-09 04:03:29 +0000 UTC FinishedAt: 2026-07-09 04:04:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-convert-artifact-517343293/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-09 04:06:35 +0000 UTC FinishedAt: 2026-07-09 04:08:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-09 04:06:35 +0000 UTC FinishedAt: 2026-07-09 04:08:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ad58d50c-fc4c-4e66-ba35-3620441d3d5d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-build-action-1678925472/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-09 04:08:39 +0000 UTC FinishedAt: 2026-07-09 04:08:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-09 04:08:39 +0000 UTC FinishedAt: 2026-07-09 04:08:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-09 04:08:39 +0000 UTC FinishedAt: 2026-07-09 05:16:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-09 04:08:39 +0000 UTC FinishedAt: 2026-07-09 05:16:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b40635ad-1223-4b01-9ac0-70ffa39de8a1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-convert-artifact-517343293/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "3b0f6734-b96c-48df-b643-4f91bebc22bf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-build-action-1940170649/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-09 04:08:39 +0000 UTC FinishedAt: 2026-07-09 05:15:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b40635ad-1223-4b01-9ac0-70ffa39de8a1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-convert-artifact-517343293/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "3b0f6734-b96c-48df-b643-4f91bebc22bf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-build-action-1940170649/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-09 05:16:18 +0000 UTC FinishedAt: 2026-07-09 05:16:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-09 05:16:18 +0000 UTC FinishedAt: 2026-07-09 05:16:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-09 05:16:18 +0000 UTC FinishedAt: 2026-07-09 05:18:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-09 05:16:18 +0000 UTC FinishedAt: 2026-07-09 05:18:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3b0f6734-b96c-48df-b643-4f91bebc22bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-build-action-1940170649/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-09 05:18:46 +0000 UTC FinishedAt: 2026-07-09 08:22:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-09 05:18:46 +0000 UTC FinishedAt: 2026-07-09 08:22:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*ad58d50c-fc4c-4e66-ba35-3620441d3d5d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3b0f6734-b96c-48df-b643-4f91bebc22bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-build-action-1678925472/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-build-action-1940170649/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-09 05:18:46 +0000 UTC FinishedAt: 2026-07-09 05:18:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-09 05:18:46 +0000 UTC FinishedAt: 2026-07-09 05:18:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-convert-artifact-2552297922/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-09 05:18:46 +0000 UTC FinishedAt: 2026-07-09 05:18:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-09 05:18:46 +0000 UTC FinishedAt: 2026-07-09 05:18:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-09 05:18:47 +0000 UTC FinishedAt: 2026-07-09 05:18:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-09 05:18:57 +0000 UTC FinishedAt: 2026-07-09 08:22:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv8hmd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_multicast_port_query_queue_work","br_multicast_query_queue_work","__br_multicast_send_query"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08030ddb87b4c6c6a2c03c82731b5e188f02f5b9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_IGMP_SNOOPING","IPV6"],"series_id":"350db9d7-11f8-4b61-9ff8-3d20ceb29f5d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-09 05:18:57 +0000 UTC FinishedAt: 2026-07-09 08:21:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ad58d50c-fc4c-4e66-ba35-3620441d3d5d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3b0f6734-b96c-48df-b643-4f91bebc22bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-build-action-1678925472/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-build-action-1940170649/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowv8hmd/series-workflowv8hmd-convert-artifact-2552297922/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}