Name: series-workflownhkbx Phase: Succeeded StartedAt: 2026-07-16 01:34:36 +0000 UTC FinishedAt: 2026-07-16 04:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[0] Phase: Succeeded StartedAt: 2026-07-16 01:34:36 +0000 UTC FinishedAt: 2026-07-16 01:57:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 01:34:36 +0000 UTC FinishedAt: 2026-07-16 01:57:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_MARVELL", "MWIFIEX", "MWIFIEX_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_MARVELL", "MWIFIEX", "MWIFIEX_USB" ], "series_id": "34cd8c72-389e-44ce-aa45-aeda910ed756" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_update_bss_desc_with_ie", "mwifiex_set_sta_ht_cap" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgV0xBTiBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBpbiB0aGUgbXdpZmlleCBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSAobXdpZmlleF91c2IpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBwcm9jZXNzIElFcyBmcm9tIGJlYWNvbnMsIHByb2JlIHJlc3BvbnNlcywgYW5kIGFzc29jaWF0aW9uIHJlcXVlc3RzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDlmM2M0YzM5NjlmNDI4NmZkZDhjMzNkMTU5ZjkzMmFlY2NiN2Y1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDAxOjU2OjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5pbmRleCA5N2MwZWMzYjgyMmU3MC4uMjIwMzFmYWJhMDU3ZjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5AQCAtMTM4NCw2ICYjNDM7MTM4NCw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdFx0XHRic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfSFRfQ0FQQUJJTElUWTpcbiYjNDM7XHRcdFx0aWYgKGVsZW1lbnRfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25faHRfY2FwID0gKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICopXG4gXHRcdFx0XHRcdChjdXJyZW50X3B0ciAmIzQzO1xuIFx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7XG5AQCAtMTM5Miw2ICYjNDM7MTM5NCw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9IVF9PUEVSQVRJT046XG4mIzQzO1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX2h0X29wZXIgPVxuIFx0XHRcdFx0KHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uICopKGN1cnJlbnRfcHRyICYjNDM7XG4gXHRcdFx0XHRcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcbkBAIC0xNDAwLDYgJiM0MzsxNDA0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX1ZIVF9DQVBBQklMSVRZOlxuJiM0MztcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2VkaXNhYmxlXzExYWMgPSBmYWxzZTtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX3ZodF9jYXAgPVxuIFx0XHRcdFx0KHZvaWQgKikoY3VycmVudF9wdHIgJiM0MztcbkBAIC0xNDA5LDYgJiM0MzsxNDE1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0ICAgICAgYnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX1ZIVF9PUEVSQVRJT046XG4mIzQzO1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X29wZXJhdGlvbikpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJjbl92aHRfb3BlciA9XG4gXHRcdFx0XHQodm9pZCAqKShjdXJyZW50X3B0ciAmIzQzO1xuIFx0XHRcdFx0XHQgc2l6ZW9mKHN0cnVjdCBpZWVlX3R5cGVzX2hlYWRlcikpO1xuQEAgLTE0MTcsNiAmIzQzOzE0MjUsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0XHQgICAgICBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfQlNTX0NPRVhfMjA0MDpcbiYjNDM7XHRcdFx0aWYgKCFlbGVtZW50X2xlbilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX2Jzc19jb18yMDQwID0gY3VycmVudF9wdHI7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJzc19jb18yMDQwX29mZnNldCA9XG4gXHRcdFx0XHQodTE2KSAoY3VycmVudF9wdHIgLSBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG5AQCAtMTQyNyw2ICYjNDM7MTQzNyw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHQodTE2KSAoY3VycmVudF9wdHIgLSBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfT1BNT0RFX05PVElGOlxuJiM0MztcdFx0XHRpZiAoIWVsZW1lbnRfbGVuKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2VvcGVyX21vZGUgPSAodm9pZCAqKWN1cnJlbnRfcHRyO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2VvcGVyX21vZGVfb2Zmc2V0ID1cbiBcdFx0XHRcdFx0KHUxNikoKHU4ICopYnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZSAtXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbmluZGV4IDdkMzYzMWQyMTIyMzZjLi44NDQyMjNjMDRlMmVmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbkBAIC03MjEsNyAmIzQzOzcyMSw3IEBAIG13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbiBcbiBcdGh0X2NhcF9pZSA9ICh2b2lkICopY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9IVF9DQVBBQklMSVRZLCBpZXMsXG4gXHRcdFx0XHRcdCAgICAgaWVzX2xlbik7XG4tXHRpZiAoaHRfY2FwX2llKSB7XG4mIzQzO1x0aWYgKGh0X2NhcF9pZSBcdTAwMjZcdTAwMjYgaHRfY2FwX2llLVx1MDAzZWxlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpIHtcbiBcdFx0aHRfY2FwID0gKHZvaWQgKikoaHRfY2FwX2llICYjNDM7IDEpO1xuIFx0XHRub2RlLVx1MDAzZWlzXzExbl9lbmFibGVkID0gMTtcbiBcdFx0bm9kZS1cdTAwM2VtYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtXHUwMDNlY2FwX2luZm8pIFx1MDAyNlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgV0xBTiBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBpbiB0aGUgbXdpZmlleCBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSAobXdpZmlleF91c2IpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBwcm9jZXNzIElFcyBmcm9tIGJlYWNvbnMsIHByb2JlIHJlc3BvbnNlcywgYW5kIGFzc29jaWF0aW9uIHJlcXVlc3RzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0OWYzYzRjMzk2OWY0Mjg2ZmRkOGMzM2QxNTlmOTMyYWVjY2I3ZjVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMTYgMDE6NTY6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwppbmRleCA5N2MwZWMzYjgyMmU3MC4uMjIwMzFmYWJhMDU3ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwpAQCAtMTM4NCw2ICYjNDM7MTM4NCw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQkJCQkJYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX0hUX0NBUEFCSUxJVFk6CiYjNDM7CQkJaWYgKGVsZW1lbnRfbGVuICZsdDsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwKSkKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQlic3NfZW50cnktJmd0O2Jjbl9odF9jYXAgPSAoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKikKIAkJCQkJKGN1cnJlbnRfcHRyICYjNDM7CiAJCQkJCXNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTsKQEAgLTEzOTIsNiAmIzQzOzEzOTQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLAogCQkJCQlic3NfZW50cnktJmd0O2JlYWNvbl9idWYpOwogCQkJYnJlYWs7CiAJCWNhc2UgV0xBTl9FSURfSFRfT1BFUkFUSU9OOgomIzQzOwkJCWlmIChlbGVtZW50X2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbikpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtiY25faHRfb3BlciA9CiAJCQkJKHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uICopKGN1cnJlbnRfcHRyICYjNDM7CiAJCQkJCXNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTsKQEAgLTE0MDAsNiAmIzQzOzE0MDQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLAogCQkJCQlic3NfZW50cnktJmd0O2JlYWNvbl9idWYpOwogCQkJYnJlYWs7CiAJCWNhc2UgV0xBTl9FSURfVkhUX0NBUEFCSUxJVFk6CiYjNDM7CQkJaWYgKGVsZW1lbnRfbGVuICZsdDsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtkaXNhYmxlXzExYWMgPSBmYWxzZTsKIAkJCWJzc19lbnRyeS0mZ3Q7YmNuX3ZodF9jYXAgPQogCQkJCSh2b2lkICopKGN1cnJlbnRfcHRyICYjNDM7CkBAIC0xNDA5LDYgJiM0MzsxNDE1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkJICAgICAgYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX1ZIVF9PUEVSQVRJT046CiYjNDM7CQkJaWYgKGVsZW1lbnRfbGVuICZsdDsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X29wZXJhdGlvbikpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtiY25fdmh0X29wZXIgPQogCQkJCSh2b2lkICopKGN1cnJlbnRfcHRyICYjNDM7CiAJCQkJCSBzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7CkBAIC0xNDE3LDYgJiM0MzsxNDI1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkJICAgICAgYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX0JTU19DT0VYXzIwNDA6CiYjNDM7CQkJaWYgKCFlbGVtZW50X2xlbikKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQlic3NfZW50cnktJmd0O2Jjbl9ic3NfY29fMjA0MCA9IGN1cnJlbnRfcHRyOwogCQkJYnNzX2VudHJ5LSZndDtic3NfY29fMjA0MF9vZmZzZXQgPQogCQkJCSh1MTYpIChjdXJyZW50X3B0ciAtIGJzc19lbnRyeS0mZ3Q7YmVhY29uX2J1Zik7CkBAIC0xNDI3LDYgJiM0MzsxNDM3LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkodTE2KSAoY3VycmVudF9wdHIgLSBic3NfZW50cnktJmd0O2JlYWNvbl9idWYpOwogCQkJYnJlYWs7CiAJCWNhc2UgV0xBTl9FSURfT1BNT0RFX05PVElGOgomIzQzOwkJCWlmICghZWxlbWVudF9sZW4pCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtvcGVyX21vZGUgPSAodm9pZCAqKWN1cnJlbnRfcHRyOwogCQkJYnNzX2VudHJ5LSZndDtvcGVyX21vZGVfb2Zmc2V0ID0KIAkJCQkJKHUxNikoKHU4ICopYnNzX2VudHJ5LSZndDtvcGVyX21vZGUgLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMKaW5kZXggN2QzNjMxZDIxMjIzNmMuLjg0NDIyM2MwNGUyZWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMKQEAgLTcyMSw3ICYjNDM7NzIxLDcgQEAgbXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLAogCiAJaHRfY2FwX2llID0gKHZvaWQgKiljZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX0hUX0NBUEFCSUxJVFksIGllcywKIAkJCQkJICAgICBpZXNfbGVuKTsKLQlpZiAoaHRfY2FwX2llKSB7CiYjNDM7CWlmIChodF9jYXBfaWUgJmFtcDsmYW1wOyBodF9jYXBfaWUtJmd0O2xlbiAmZ3Q7PSBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKSB7CiAJCWh0X2NhcCA9ICh2b2lkICopKGh0X2NhcF9pZSAmIzQzOyAxKTsKIAkJbm9kZS0mZ3Q7aXNfMTFuX2VuYWJsZWQgPSAxOwogCQlub2RlLSZndDttYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtJmd0O2NhcF9pbmZvKSAmYW1wOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU0CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBjaGFuZ2VzIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGFkZGluZyBsZW5ndGggY2hlY2tzIGZvciBhIHdob2xlIGJ1bmNoIG9mIFdMQU4gZWxlbWVudHMg4oCTIHRoaW5ncyBsaWtlIEhUIGFuZCBWSFQgY2FwYWJpbGl0aWVzIGFuZCBvcGVyYXRpb25zLCBhbmQgc29tZSBCU1MgY28tZXhpc3RlbmNlIGFuZCBvcGVyYXRpb24gbW9kZSBub3RpZmljYXRpb25zIOKAkyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCBmdW5jdGlvbnMuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBgbXdpZmlleGAgd2lyZWxlc3MgZHJpdmVyLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gdGVzdCB0aGlzIHByb3Blcmx5PyBUaGlzIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCBhbmQgdGhvc2UgdGhpbmdzIGFyZSB1c3VhbGx5IGEgcGFpbiB0byBkZWFsIHdpdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIFR5cGljYWxseSwgeW91JiMzOTtyZSByZWxpYW50IG9uIGhhdmluZyBlaXRoZXIgc29mdHdhcmUgZW11bGF0aW9uIG9mIHRoZSBoYXJkd2FyZSBvciwgYmV0dGVyIHlldCwgc29tZSBraW5kIG9mIFVTQiwgU0RJTywgb3IgUENJZSBlbXVsYXRpb24gdG8gYWN0dWFsbHkgaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgcHJvcGVybHkuIEJ1dCB3YWl0LCB3YXNu4oCZdCBgbXdpZmlleGAgZGVzaWduZWQgdG8gc3VwcG9ydCBTRElPLCBQQ0llLCAqYW5kKiBVU0I/IFRoYXQmIzM5O3MgYSBodWdlIHBvdGVudGlhbCB3aW4hIFVTQiBkcml2ZXJzIGFyZSBvZnRlbiBtdWNoIG1vcmUgdGVzdGFibGUuIEVzcGVjaWFsbHkgc2luY2Ugc3l6a2FsbGVyIGhhcyBzb21lIHByZXR0eSBzb2xpZCBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgdXNpbmcgVVNCIGdhZGdldCBhbmQgZHVtbXlfaGNkLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIFVTQiBkcml2ZXIgY29tcG9uZW50IGluIHRoaXMgdGhpbmcuIFRoYXQgY291bGQgbWFrZSB0ZXN0aW5nIGFuZCBmdXp6aW5nIHRoaXMgcGF0Y2ggbXVjaCBzaW1wbGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTQ1LVx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6NDY6XHQgIG13aWZpZXhfdXNiLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZT00Mj1vYmotJChDT05GSUdfTVdJRklFWF9QQ0lFKSAmIzQzOz0gbXdpZmlleF9wY2llLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZS00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZTo0NDptd2lmaWV4X3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19NV0lGSUVYX1VTQikgJiM0Mzs9IG13aWZpZXhfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZS00Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaD05MD1lbnVtIEtFWV9UWVBFX0lEIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaC0xMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaDoxMjM6ZW51bSBtd2lmaWV4X3VzYl9lcCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaC0xMjQtXHRNV0lGSUVYX1VTQl9FUF9DTURfRVZFTlQgPSAxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9NTU9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjMtICogRG8gbm90IGNoZWNrIGZvciBkYXRhX3JlY2VpdmVkIGZvciBVU0IsIGFzIGRhdGFfcmVjZWl2ZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI0OiAqIGlzIGhhbmRsZWQgaW4gbXdpZmlleF91c2JfcmVjdiBmb3IgVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNS0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyB1c2Jfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtd2lmaWV4X3VzYl90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE2LVx0LyogODc2NiAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozOTpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXdpZmlleF91c2JfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQxOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo0NjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Ny1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggZXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTI6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxODc6XHRcdHN0YXR1cyA9IG13aWZpZXhfdXNiX3JlY3YoYWRhcHRlciwgc2tiLCBjb250ZXh0LVx1MDAzZWVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5Ni1cdFx0XHQgKiB1cmIgZm9yIGNtZF9lcCB3aWxsIGJlIHJlLXN1Ym1pdHRlZCBpbiBjYWxsYmFja1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE5NzpcdFx0XHQgKiBtd2lmaWV4X3VzYl9yZWN2X2NvbXBsZXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk4LVx0XHRcdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzItXHRpZiAoY2FyZC1cdTAwM2VyeF9jbWRfZXAgPT0gY29udGV4dC1cdTAwM2VlcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjIzMzpcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihjb250ZXh0LCBzaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzQtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNS1cdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmFkYXB0ZXItXHUwMDNlcnhfcGVuZGluZykgXHUwMDNjPSBISUdIX1JYX1BFTkRJTkcpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyMzY6XHRcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihjb250ZXh0LCBzaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzctXHRcdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyNDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfdHhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyODU6c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMTUtXHRcdFx0XHQgdXNiX3JjdmludHBpcGUoY2FyZC1cdTAwM2V1ZGV2LCBjdHgtXHUwMDNlZXApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjMxNjpcdFx0XHRcdCBjdHgtXHUwMDNlc2tiLVx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNy1cdFx0XHRcdCAodm9pZCAqKWN0eCwgY2FyZC1cdTAwM2VyeF9jbWRfaW50ZXJ2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMjAtXHRcdFx0XHQgIHVzYl9yY3ZidWxrcGlwZShjYXJkLVx1MDAzZXVkZXYsIGN0eC1cdTAwM2VlcCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzIxOlx0XHRcdFx0ICBjdHgtXHUwMDNlc2tiLVx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMi1cdFx0XHRcdCAgKHZvaWQgKiljdHgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzQ1OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2ZyZWUoc3RydWN0IHVzYl9jYXJkX3JlYyAqY2FyZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zODQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Mzg1OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg2LVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzItICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NTMzOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTk5LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYwMDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MjUtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1XSUZJRVhfUlhfREFUQV9VUkI7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYyNjpcdFx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNy1cdFx0XHRcdFx0XHQgIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYzMS1cdFx0aWYgKGNhcmQtXHUwMDNlcnhfY21kLnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MzI6XHRcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcdTAwMjZjYXJkLVx1MDAzZXJ4X2NtZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MzMtXHRcdFx0XHRcdFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2NDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjY5OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2NvcmVkdW1wKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtd2lmaWV4X3VzYl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc5Olx0Lm5hbWUgPSBcJiMzNDttd2lmaWV4X3VzYlwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODA6XHQucHJvYmUgPSBtd2lmaWV4X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODE6XHQuZGlzY29ubmVjdCA9IG13aWZpZXhfdXNiX2Rpc2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgyOlx0LmlkX3RhYmxlID0gbXdpZmlleF91c2JfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgzOlx0LnN1c3BlbmQgPSBtd2lmaWV4X3VzYl9zdXNwZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NDpcdC5yZXN1bWUgPSBtd2lmaWV4X3VzYl9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg1LVx0LnNvZnRfdW5iaW5kID0gMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02ODYtXHQuZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NzpcdFx0LmNvcmVkdW1wID0gbXdpZmlleF91c2JfY29yZWR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NzE0PXN0YXRpYyBpbnQgbXdpZmlleF9yZWFkX2RhdGFfc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCAqcGJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjczNDpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9wb3J0X3Jlc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTczNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3NzY6c3RhdGljIGJvb2wgbXdpZmlleF91c2JfaXNfcG9ydF9yZWFkeShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3ODk6c3RhdGljIGlubGluZSB1OCBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03OTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODAxOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODAyLVx0XHRcdFx0XHQgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LCB1OCBlcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODE4LVx0XHRcdFx0IHVzYl9zbmRpbnRwaXBlKGNhcmQtXHUwMDNldWRldiwgZXApLCBza2Jfc2VuZC1cdTAwM2VkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgxOTpcdFx0XHRcdCBza2Jfc2VuZC1cdTAwM2VsZW4sIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyMC1cdFx0XHRcdCAodm9pZCAqKWNvbnRleHQsIGNhcmQtXHUwMDNldHhfY21kX2ludGVydmFsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODI0LVx0XHRcdFx0ICBza2Jfc2VuZC1cdTAwM2VkYXRhLCBza2Jfc2VuZC1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODI1Olx0XHRcdFx0ICBtd2lmaWV4X3VzYl90eF9jb21wbGV0ZSwgKHZvaWQgKiljb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgzNy1cdFx0cG9ydC1cdTAwM2VibG9ja19zdGF0dXMgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgzODpcdFx0YWRhcHRlci1cdTAwM2VkYXRhX3NlbnQgPSBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODM5LVx0XHRyZXQgPSAtRU5PU1I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTg2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4NjI6c3RhdGljIGludCBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODYzLVx0XHRcdFx0XHQgICBzdHJ1Y3QgdXNiX3R4X2RhdGFfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtOTQ2LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjk0NzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2FnZ3JfdHhfZGF0YShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy05NDgtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Mi1cdGlmIChmX3NlbmRfYWdncl9idWYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDYzOlx0XHRyZXQgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFx1MDAyNnNrYl9zZW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDY0LVx0XHRpZiAoIXJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjUtXHRcdFx0Y29udGV4dCA9IFx1MDAyNnBvcnQtXHUwMDNldHhfZGF0YV9saXN0W3BvcnQtXHUwMDNldHhfZGF0YV9peCYjNDM7JiM0MztdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwNjY6XHRcdFx0cmV0ID0gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjctXHRcdFx0XHRcdFx0XHQgICAgIGNvbnRleHQsIHNrYl9zZW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA3OS1cdFx0XHRcdGFkYXB0ZXItXHUwMDNlZGF0YV9zZW50ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDgwOlx0XHRcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA4MS1cdFx0XHRcdC8qIG5vIGF2YWlsYWJsZSB1cmIsIHBvc3Rjb3B5IHBhY2tldCovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTUtXHRcdGNvbnRleHQgPSBcdTAwMjZwb3J0LVx1MDAzZXR4X2RhdGFfbGlzdFtwb3J0LVx1MDAzZXR4X2RhdGFfaXgmIzQzOyYjNDM7XTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDk2Olx0XHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTctXHRcdFx0XHRcdFx0ICAgICAgY29udGV4dCwgc2tiX3NlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExMTk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfdHhfYWdncl90bW8oc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTEyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMjktXHRzcGluX2xvY2tfYmgoXHUwMDI2cG9ydC1cdTAwM2V0eF9hZ2dyX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExMzA6XHRlcnIgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFx1MDAyNnNrYl9zZW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTMxLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTQwLVx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfc2VudCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE0MTpcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0Mi1cdFx0ZXJyID0gLTE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDktXHR1cmJfY254dCA9IFx1MDAyNnBvcnQtXHUwMDNldHhfZGF0YV9saXN0W3BvcnQtXHUwMDNldHhfZGF0YV9peCYjNDM7JiM0MztdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNTA6XHRlcnIgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgcG9ydC1cdTAwM2V0eF9kYXRhX2VwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNTEtXHRcdFx0XHRcdCAgICAgdXJiX2NueHQsIHNrYl9zZW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1OS0vKiBUaGlzIGZ1bmN0aW9uIHdyaXRlIGEgY29tbWFuZC9kYXRhIHBhY2tldCB0byBjYXJkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNjA6c3RhdGljIGludCBtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE2MS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTkyLVx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfc2VudCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE5MzpcdFx0XHRcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE5NC1cdFx0XHRcdFx0cmV0dXJuIC1FQlVTWTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIwOC1cdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2cG9ydC1cdTAwM2V0eF9hZ2dyX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyMDk6XHRcdFx0cmV0ID0gIG13aWZpZXhfdXNiX2FnZ3JfdHhfZGF0YShhZGFwdGVyLCBlcCwgc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMTAtXHRcdFx0XHRcdFx0XHR0eF9wYXJhbSwgcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIxODpcdHJldHVybiBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsIGNvbnRleHQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjIxOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfdHhfaW5pdChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMjIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjU3LVx0XHR0aW1lcl9zZXR1cChcdTAwMjZwb3J0LVx1MDAzZXR4X2FnZ3IudGltZXJfY254dC5ob2xkX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyNTg6XHRcdFx0ICAgIG13aWZpZXhfdXNiX3R4X2FnZ3JfdG1vLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjU5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyNjQ6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yeF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI4MDpcdGlmIChtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfY21kLCBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI4MS1cdFx0cmV0dXJuIC0xO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjg5LVx0XHRcdHJldHVybiAtMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjkwOlx0XHRpZiAobXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcdTAwMjZjYXJkLVx1MDAzZXJ4X2RhdGFfbGlzdFtpXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjkxLVx0XHRcdFx0XHQgICAgICBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMjk5PXN0YXRpYyBpbnQgbXdpZmlleF9yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTMzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzM4OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2NsZWFudXBfdHhfYWdncihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzMzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMzU5PXN0YXRpYyB2b2lkIG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTM2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzYzOlx0bXdpZmlleF91c2JfZnJlZShjYXJkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEzNjU6XHRtd2lmaWV4X3VzYl9jbGVhbnVwX3R4X2FnZ3IoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTM2Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTM3MD1zdGF0aWMgaW50IG13aWZpZXhfcHJvZ19md193X2hlbHBlcihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MDc6c3RhdGljIGludCBtd2lmaWV4X3VzYl9kbmxkX2Z3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUwOC1cdFx0XHRzdHJ1Y3QgbXdpZmlleF9md19pbWFnZSAqZncpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUyMzpcdHJldCA9IG13aWZpZXhfdXNiX3J4X2luaXQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyNC1cdGlmICghcmV0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjU6XHRcdHJldCA9IG13aWZpZXhfdXNiX3R4X2luaXQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTUzMD1zdGF0aWMgdm9pZCBtd2lmaWV4X3N1Ym1pdF9yeF91cmIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MzYtXHQgICAgKCFhdG9taWNfcmVhZChcdTAwMjZjYXJkLVx1MDAzZXJ4X2NtZF91cmJfcGVuZGluZykpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1Mzc6XHRcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXHUwMDI2Y2FyZC1cdTAwM2VyeF9jbWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzOC1cdFx0XHRcdFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU0MzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NDQtXHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTU1Mj1zdGF0aWMgaW50IG13aWZpZXhfcG1fd2FrZXVwX2NhcmQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTYzOnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3N1Ym1pdF9yZW1fcnhfdXJicyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTcyLVx0XHRjdHggPSBcdTAwMjZjYXJkLVx1MDAzZXJ4X2RhdGFfbGlzdFtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTczOlx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGN0eCwgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTc0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgdXNiX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5MC1cdC8qIFVTQiBzcGVjaWZpYyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTE6XHQuZG5sZF9mdyA9XHRcdG13aWZpZXhfdXNiX2RubGRfZncsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MjpcdC5jbWRyc3BfY29tcGxldGUgPVx0bXdpZmlleF91c2JfY21kX2V2ZW50X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTM6XHQuZXZlbnRfY29tcGxldGUgPVx0bXdpZmlleF91c2JfY21kX2V2ZW50X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTQ6XHQuaG9zdF90b19jYXJkID1cdFx0bXdpZmlleF91c2JfaG9zdF90b19jYXJkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTU6XHQuc3VibWl0X3JlbV9yeF91cmJzID1cdG13aWZpZXhfdXNiX3N1Ym1pdF9yZW1fcnhfdXJicyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk2Olx0Lm11bHRpX3BvcnRfcmVzeW5jID1cdG13aWZpZXhfdXNiX3BvcnRfcmVzeW5jLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTc6XHQuaXNfcG9ydF9yZWFkeSA9XHRtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTgtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE2MDA6bW9kdWxlX3VzYl9kcml2ZXIobXdpZmlleF91c2JfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNjAxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTY0CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBtd2lmaWV4YCBVU0IgRHJpdmVyIHdpdGggU3l6a2FsbGVyKioKCk9rYXksIHNvIHRoZSBgbXdpZmlleGAgZHJpdmVyICpkb2VzKiBoYXZlIGEgVVNCIGNvbXBvbmVudCwgc3BlY2lmaWNhbGx5IGBtd2lmaWV4X3VzYmAuIFRoYXQmIzM5O3MgZmFudGFzdGljLiBUaGF0IG1lYW5zIHdlIGNhbiBhYnNvbHV0ZWx5IHRhcmdldCBpdCB3aXRoIFVTQiBlbXVsYXRpb24gaW4gc3l6a2FsbGVyLiBUaGlzIG9wZW5zIHVwIGEgc2lnbmlmaWNhbnQgYXR0YWNrIHN1cmZhY2UuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hpY2ggZnVuY3Rpb25zIHdlIHNob3VsZCBmb2N1cyBvbi4gSSBzZWUgdHdvIGltbWVkaWF0ZWx5OiBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlc2UgYXJlIGFjY2Vzc2libGUgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLgoKYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGluIGBzY2FuLmNgLiBHaXZlbiB0aGF0LCBJJiMzOTttIGJldHRpbmcgaXTigJlzIGludm9sdmVkIGluIHBhcnNpbmcgc2NhbiByZXN1bHRzIG9yIGJlYWNvbiBpbmZvcm1hdGlvbi4gVGhhdCBzb3VuZHMgcHJvbWlzaW5nLCBwb3RlbnRpYWxseSB0cmlnZ2VyZWQgYnkgY3JhZnRlZCByZXNwb25zZXMgZnJvbSBlbXVsYXRlZCBVU0IgZGV2aWNlcy4KCmBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCByZXNpZGVzIGluIGB1dGlsLmNgLCB3aGljaCBsZWFkcyBtZSB0byBiZWxpZXZlIGl0IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgaW5pdGlhbCBzdGF0aW9uIHNldHVwIHByb2Nlc3MuIElmIHdlIGNhbiBtYW5pcHVsYXRlIFNUQSBjb25maWd1cmF0aW9uIGR1cmluZyBlbnVtZXJhdGlvbiwgd2UgbWlnaHQgYmUgYWJsZSB0byBleHBsb2l0IGEgdnVsbmVyYWJpbGl0eS4gVGhpcyBvbmUmIzM5O3Mgd29ydGggaW52ZXN0aWdhdGluZyBmdXJ0aGVyLgoKSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjYWxsIGdyYXBoIGFuZCBzZWUgZXhhY3RseSB3aGVyZSBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgZ2V0cyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIHByZWNpc2UgY2FsbCBwYXRoIGlzIGVzc2VudGlhbCB0byBjcmFmdGluZyBlZmZlY3RpdmUgZnV6emluZyBpbnB1dHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1Mzg9aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDAtXHRcdFx0ICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTQxOmludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDItXHRcdFx0XHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTExMTI9bXdpZmlleF9yZXRfODAyXzExX3NjYW5fZ2V0X3Rsdl9wdHJzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xMTgxLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxMTgyOmludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTExODMtXHRcdFx0XHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0xMjk9aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjE4MDpcdHJldHVybiBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHByaXYtXHUwMDNlYWRhcHRlciwgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE4MS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NTcKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byBCU1MgRGVzY3JpcHRvciBVcGRhdGVzKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGRlZmluaXRlbHkgcGFydCBvZiB0aGlzIEJTUyBkZXNjcmlwdG9yIHVwZGF0ZSBwcm9jZXNzLiBJdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgbXdpZmlleF9maWxsX25ld19ic3NfZGVzY2AuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBVbmRlcnN0YW5kaW5nIHRoZSB1cHN0cmVhbSBjYWxscyBpcyBjcnVjaWFsIHRvIGRldGVybWluZSB0aGUgY29udGV4dCBhbmQgcHVycG9zZSBvZiBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIHNlZSB3aGVyZSBgbXdpZmlleF9maWxsX25ld19ic3NfZGVzY2AgaXRzZWxmIGlzIGJlaW5nIGludm9rZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTUzNj1pbnQgbXdpZmlleF9nZXRfYnNzX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM3LVx0XHRcdCBzdHJ1Y3QgbXdpZmlleF9ic3NfaW5mbyAqKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTUzODppbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM5LVx0XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2NTU9c3RhdGljIGludCBtd2lmaWV4X3NhdmVfaGlkZGVuX3NzaWRfY2hhbm5lbHMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2Njc6XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTEtXHQvKiBiZWFjb25faWUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgaW4gZnVuY3Rpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTY5MjpcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTMtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2OTk9c3RhdGljIGludCBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3MTA6XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzExLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzAtXHQvKiBiZWFjb25faWUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgaW4gZnVuY3Rpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTczMTpcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzItXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9NzY9aW50IG13aWZpZXhfcmVxdWVzdF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTI4LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjEyOTppbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTEzMC1cdFx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMxOD1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MzM3Olx0XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTMzOC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDMyLVx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDMzOlx0ICogbXdpZmlleF9maWxsX25ld19ic3NfZGVzYygpLiBGcmVlIGl0IG5vdy5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MzQtXHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI3MwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBCU1MgRGVzY3JpcHRvciBVcGRhdGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYG13aWZpZXhgIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHByZXR0eSBjcnVjaWFsIGZvciBkZXNjcmliaW5nIG5ldyBCU1MgKEJhc2ljIFNlcnZpY2UgU2V0KSBlbnRyaWVzLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgaXQmIzM5O3MgY2FsbGVkIGZyb20gYSBmZXcga2V5IHBsYWNlczogYG13aWZpZXhfc2F2ZV9oaWRkZW5fc3NpZF9jaGFubmVsc2AsIHdoaWNoIGxpa2VseSBkZWFscyB3aXRoIHN0b3JpbmcgaW5mb3JtYXRpb24gYWJvdXQgaGlkZGVuIG5ldHdvcmtzOyBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCwgc3VnZ2VzdGluZyBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgZGV0YWlscyBvZiB0aGUgY3VycmVudGx5IGNvbm5lY3RlZCBCU1M7IGFuZCBgbXdpZmlleF9ic3Nfc3RhcnRgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGFzIGl0IHdpbGwgbmVlZCB0byBkZXNjcmliZSBhIEJTUyB3aGVuIHRoZSBjb25uZWN0aW9uIHN0YXJ0cy4KCkdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHRoaXMgZnVuY3Rpb24sIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGhvdyB0aGUgc3RhdGlvbiYjMzk7cyBIVCBjYXBhYmlsaXRpZXMgYXJlIHNldCwgc28gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGZ1bmN0aW9uIG5leHQuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGhpZ2ggdGhyb3VnaHB1dCBpbmZvcm1hdGlvbiBpcyBwcm9wZXJseSBhcHBsaWVkIHdoZW4gYSBCU1MgaXMgZGVzY3JpYmVkLCBzbyB0aGlzIHNlZW1zIGxpa2UgYSBsb2dpY2FsIG5leHQgYXJlYSB0byBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1OTA9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTkxOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU5Mi1cdFx0ICAgICAgIGludCBpZXNfbGVuLCBzdHJ1Y3QgbXdpZmlleF9zdGFfbm9kZSAqbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jPTk0PWludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTE0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoxNDk6XHRcdG13aWZpZXhfc2V0X3N0YV9odF9jYXAocHJpdiwgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNTAtXHRcdFx0XHQgICAgICAgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llc19sZW4sIG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9NzEyPXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NzEzOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNzE0LVx0XHQgICAgICAgaW50IGllc19sZW4sIHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDAxOAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogYG13aWZpZXhgIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBzcG90dGVkIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgaGVyZSBpbiB0aGUgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgVVNCIGludGVyZmFjZSAoYG13aWZpZXhfdXNiYCkuIFRoZSBjcnVjaWFsIGNvbm5lY3Rpb24gaXMgdGhpczogYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGdldHMgY2FsbGVkIGZyb20gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLiBUaGlzIG1lYW5zIHdlJiMzOTtyZSBsb29raW5nIGF0IGZ1bmN0aW9uYWwgY2hhbmdlcyB3aXRoaW4gdGhlIGRyaXZlciB0aGF0IHdlIGNhbiBwcm9iYWJseSB0cmlnZ2VyIHZpYSB0aGUgVVNCIGludGVyZmFjZS4gQW5kIGlmIGl0JiMzOTtzIFVTQiwgdGhlbiBVU0IgZW11bGF0aW9uIGJlY29tZXMgdGhlIG5hbWUgb2YgdGhlIGdhbWUuCgpUaGUgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gVGhlc2UgYm90aCBoYW5kbGUgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgZXh0cmFjdGVkIGZyb20gYmVhY29ucywgcHJvYmUgcmVzcG9uc2VzLCBvciBhc3NvY2lhdGlvbiByZXF1ZXN0cy4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgZnV6emluZyB0YXJnZXQgLSBjYXJlZnVsbHkgY3JhZnRlZCwgbWFsZm9ybWVkIElFcyBhcmUgYSBnby10byBmb3IgZmluZGluZyBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhpcyBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSwgYW5kIHdpdGggdGhlIFVTQiBpbnRlcmZhY2UsIGhpZ2hseSBmdXp6ZWFibGUuCgpOb3csIHRvIG1ha2Ugc3VyZSBJIGNhbiBhY3R1YWxseSBidWlsZCBhbmQgdGVzdCB0aGlzLCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfTVdJRklFWGAgYW5kIGBDT05GSUdfTVdJRklFWF9VU0JgIGFyZSB0aGUga2V5cyBoZXJlLiBJJiMzOTtsbCBtYWtlIHN1cmUgdGhlc2UgYXJlIGVuYWJsZWQgaW4gbXkgYnVpbGQgZW52aXJvbm1lbnQuIFRoaXMgaXMgYSBzb2xpZCBsZWFkOyBJJiMzOTtsbCBzdGFydCBjcmFmdGluZyBzb21lIGZ1enppbmcgcGF5bG9hZHMgdG8gaGl0IHRoZXNlIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1XSUZJRVgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDkyOQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hcnZlbGwgV2ktRmkgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgTWFydmVsbCBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYG13aWZpZXhgIGRyaXZlciBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvYC4gVGhlIGluaXRpYWwgY29uZmlncyBJIHNlZSBhcmUgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O0FyZSB0aG9zZSB0aGUgb25seSBvbmVzPyYjMzQ7IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZy4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBkcml2ZXIsIGl0IGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYCwgc28gdGhvc2UgYXJlIGRlZmluaXRlbHkgcmVxdWlyZWQuIEkgc2hvdWxkIGV4cGxpY2l0bHkgaW5jbHVkZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgaW4gdGhlIGNvbmZpZyB0b28uCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSBzb21lIGZvY3VzIHN5bWJvbHMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBhcmUgbGlrZWx5IGJlaW5nIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guIEkmIzM5O3ZlIGdvdCBhIGZldyBjYW5kaWRhdGVzIGluIG1pbmQ6IGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCwgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLCBhbmQgYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgLgoKSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlIGRlc2NyaXB0aW9uIHNheXMgaXQmIzM5O3MgY2FsbGVkIHdoZW4gcGFyc2luZyBJRXMsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB0aGUgcGF0Y2ggYXBwZWFycyB0byBiZSBkb2luZy4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGFsc28gc2VlbXMgcmVsZXZhbnQuCgpJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBuZWl0aGVyIG9mIHRob3NlIGtleSBmdW5jdGlvbnMgYXJlIGBzdGF0aWNgLCBzbyB0aGF0IEkgY2FuIHRyYWNlIHRoZW0gY29ycmVjdGx5LiBPa2F5LCB0aGV5JiMzOTtyZSBib3RoICpub3QqIHN0YXRpYywgc28gdGhhdCYjMzk7cyBnb29kLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBwb3RlbnRpYWwgZm9jdXMgc3ltYm9scy4gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgIGFuZCBgbXdpZmlleF9ic3Nfc3RhcnRgIG1pZ2h0IGJlIHJlbGV2YW50LCBidXQgSSB0aGluayBJJiMzOTtsbCBiZSBmaW5lIHN0YXJ0aW5nIHdpdGggYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgZm9yIG5vdy4KCkxldCYjMzk7cyBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbiBuYW1lczogYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBZZXMsIHRob3NlIGFyZSBjb3JyZWN0LgoKRmluYWxseSwgYXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSYjMzk7dmUgb3Zlcmxvb2tlZD8gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgV0xBTmAgYW5kIGBXTEFOX1ZFTkRPUl9NQVJWRUxMYCBhcmUgcHJvcGVybHkgc2V0LiBJdCYjMzk7cyBlYXN5IHRvIG1pc3MgdGhvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBXTEFOX1ZFTkRPUl9NQVJWRUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNYXJ2ZWxsIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5MjMKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1hcnZlbGwgV0xBTiBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gWWVzLCBhYnNvbHV0ZWx5LCB3ZSBuZWVkIGBXTEFOX1ZFTkRPUl9NQVJWRUxMYCBlbmFibGVkIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0LiBNeSBhbmFseXNpcyBpbmRpY2F0ZXMgdGhpcyBpcyBhIHdvcnRod2hpbGUgdGFyZ2V0LiAKCkkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBNeSByZWFzb25pbmcgaXMgc29saWQ6IHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgbGVuZ3RoIGNoZWNrcyB3aXRoaW4gdGhlIE1hcnZlbGwgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSB3aXRoaW4gd2lyZWxlc3MgY29tbXVuaWNhdGlvbnMuIEkmIzM5O3ZlIHBpbnBvaW50ZWQgdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0OiBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gVGhlc2UgbmVlZCB0byBiZSBmcm9udCBhbmQgY2VudGVyIGluIHRoZSBmdXp6ZXImIzM5O3MgZm9jdXMgKGBGb2N1c1N5bWJvbHNgKS4KCkZ1cnRoZXJtb3JlLCBJJiMzOTttIGVuYWJsaW5nIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnM6IGBXTEFOX1ZFTkRPUl9NQVJWRUxMYCwgYE1XSUZJRVhgLCBhbmQgYE1XSUZJRVhfVVNCYC4gVGhlIGBtd2lmaWV4YCBkcml2ZXIgaXMgY2xlYXJseSBjZW50cmFsIGhlcmUsIGFuZCB0aGUgVVNCIGludGVyZmFjZSBwcmVzZW50cyBhIHBhcnRpY3VsYXJseSBhdHRyYWN0aXZlIGF0dGFjayBzdXJmYWNlLiBUaGUgZnV6emluZyBjYW4gYmUgZG9uZSB1c2luZyBVU0IgZW11bGF0aW9uLiBUaGUgZnVuY3Rpb25zIHRoYXQgYXJlIG1vZGlmaWVkIHByb2Nlc3MgSUVzIGZyb20gYmVhY29ucywgcHJvYmUgcmVzcG9uc2VzLCBhbmQgYXNzb2NpYXRpb24gcmVxdWVzdHMuIFRoZXNlIElFcyBhcmUgYWxsIHJlYWNoYWJsZSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIGZ1enplci4gVGhpcyBhbGwgbG9va3MgdmVyeSBwcm9taXNpbmcsIGFuZCB0aGUgbGVuZ3RoIGNoZWNrcywgaW4gdGhpcyBjb250ZXh0LCBhcmUgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGlkZW50aWZ5aW5nIHN1YnRsZSBidWZmZXIgb3ZlcmZsb3dzIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgYW5kIHBvdGVudGlhbGx5IGhpZ2hseSBlZmZlY3RpdmUgZnV6emluZyBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgV0xBTiBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBpbiB0aGUgbXdpZmlleCBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSAobXdpZmlleF91c2IpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBwcm9jZXNzIElFcyBmcm9tIGJlYWNvbnMsIHByb2JlIHJlc3BvbnNlcywgYW5kIGFzc29jaWF0aW9uIHJlcXVlc3RzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOX1ZFTkRPUl9NQVJWRUxMJiMzNDssCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llJiMzNDssCiAgICAmIzM0O213aWZpZXhfc2V0X3N0YV9odF9jYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIFdMQU4gSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gdGhlIG13aWZpZXggZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiBpbnRlcmZhY2UgKG13aWZpZXhfdXNiKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgcHJvY2VzcyBJRXMgZnJvbSBiZWFjb25zLCBwcm9iZSByZXNwb25zZXMsIGFuZCBhc3NvY2lhdGlvbiByZXF1ZXN0cywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU2OjQ2LjU1NzI5MTA4MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTA0NDIyNDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5fVkVORE9SX01BUlZFTExcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZVwiLFxuICAgIFwibXdpZmlleF9zZXRfc3RhX2h0X2NhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyBmb3IgdmFyaW91cyBXTEFOIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIHRoZSBtd2lmaWV4IGRyaXZlci4gVGhlIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtd2lmaWV4X3VzYikgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIHByb2Nlc3MgSUVzIGZyb20gYmVhY29ucywgcHJvYmUgcmVzcG9uc2VzLCBhbmQgYXNzb2NpYXRpb24gcmVxdWVzdHMsIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU2OjQ2LjU1NzI5Njk0MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzODQ3NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDlmM2M0YzM5NjlmNDI4NmZkZDhjMzNkMTU5ZjkzMmFlY2NiN2Y1ZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAxNiAwMTo1Njo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xcbmluZGV4IDk3YzBlYzNiODIyZTcwLi4yMjAzMWZhYmEwNTdmMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xcbkBAIC0xMzg0LDYgKzEzODQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZWJlYWNvbl9idWYpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBXTEFOX0VJRF9IVF9DQVBBQklMSVRZOlxcbitcXHRcXHRcXHRpZiAoZWxlbWVudF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25faHRfY2FwID0gKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICopXFxuIFxcdFxcdFxcdFxcdFxcdChjdXJyZW50X3B0ciArXFxuIFxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTM5Miw2ICsxMzk0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfSFRfT1BFUkFUSU9OOlxcbitcXHRcXHRcXHRpZiAoZWxlbWVudF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24pKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25faHRfb3BlciA9XFxuIFxcdFxcdFxcdFxcdChzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbiAqKShjdXJyZW50X3B0ciArXFxuIFxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTQwMCw2ICsxNDA0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfVkhUX0NBUEFCSUxJVFk6XFxuK1xcdFxcdFxcdGlmIChlbGVtZW50X2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2VkaXNhYmxlXzExYWMgPSBmYWxzZTtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25fdmh0X2NhcCA9XFxuIFxcdFxcdFxcdFxcdCh2b2lkICopKGN1cnJlbnRfcHRyICtcXG5AQCAtMTQwOSw2ICsxNDE1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfVkhUX09QRVJBVElPTjpcXG4rXFx0XFx0XFx0aWYgKGVsZW1lbnRfbGVuIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X29wZXJhdGlvbikpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZWJjbl92aHRfb3BlciA9XFxuIFxcdFxcdFxcdFxcdCh2b2lkICopKGN1cnJlbnRfcHRyICtcXG4gXFx0XFx0XFx0XFx0XFx0IHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTQxNyw2ICsxNDI1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfQlNTX0NPRVhfMjA0MDpcXG4rXFx0XFx0XFx0aWYgKCFlbGVtZW50X2xlbilcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdFxcdGJzc19lbnRyeS1cXHUwMDNlYmNuX2Jzc19jb18yMDQwID0gY3VycmVudF9wdHI7XFxuIFxcdFxcdFxcdGJzc19lbnRyeS1cXHUwMDNlYnNzX2NvXzIwNDBfb2Zmc2V0ID1cXG4gXFx0XFx0XFx0XFx0KHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG5AQCAtMTQyNyw2ICsxNDM3LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0KHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfT1BNT0RFX05PVElGOlxcbitcXHRcXHRcXHRpZiAoIWVsZW1lbnRfbGVuKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2VvcGVyX21vZGUgPSAodm9pZCAqKWN1cnJlbnRfcHRyO1xcbiBcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZW9wZXJfbW9kZV9vZmZzZXQgPVxcbiBcXHRcXHRcXHRcXHRcXHQodTE2KSgodTggKilic3NfZW50cnktXFx1MDAzZW9wZXJfbW9kZSAtXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXFxuaW5kZXggN2QzNjMxZDIxMjIzNmMuLjg0NDIyM2MwNGUyZWYzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXFxuQEAgLTcyMSw3ICs3MjEsNyBAQCBtd2lmaWV4X3NldF9zdGFfaHRfY2FwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICppZXMsXFxuIFxcbiBcXHRodF9jYXBfaWUgPSAodm9pZCAqKWNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfSFRfQ0FQQUJJTElUWSwgaWVzLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIGllc19sZW4pO1xcbi1cXHRpZiAoaHRfY2FwX2llKSB7XFxuK1xcdGlmIChodF9jYXBfaWUgXFx1MDAyNlxcdTAwMjYgaHRfY2FwX2llLVxcdTAwM2VsZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwKSkge1xcbiBcXHRcXHRodF9jYXAgPSAodm9pZCAqKShodF9jYXBfaWUgKyAxKTtcXG4gXFx0XFx0bm9kZS1cXHUwMDNlaXNfMTFuX2VuYWJsZWQgPSAxO1xcbiBcXHRcXHRub2RlLVxcdTAwM2VtYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtXFx1MDAzZWNhcF9pbmZvKSBcXHUwMDI2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU2OjQ3LjEyMTg4MzA4OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM1Mzk4MjEyNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIFdMQU4gSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gdGhlIG13aWZpZXggZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiBpbnRlcmZhY2UgKG13aWZpZXhfdXNiKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgcHJvY2VzcyBJRXMgZnJvbSBiZWFjb25zLCBwcm9iZSByZXNwb25zZXMsIGFuZCBhc3NvY2lhdGlvbiByZXF1ZXN0cywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0OWYzYzRjMzk2OWY0Mjg2ZmRkOGMzM2QxNTlmOTMyYWVjY2I3ZjVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMDE6NTY6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuaW5kZXggOTdjMGVjM2I4MjJlNzAuLjIyMDMxZmFiYTA1N2YxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuQEAgLTEzODQsNiArMTM4NCw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdFx0XHRic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfSFRfQ0FQQUJJTElUWTpcbitcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX2h0X2NhcCA9IChzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqKVxuIFx0XHRcdFx0XHQoY3VycmVudF9wdHIgK1xuIFx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7XG5AQCAtMTM5Miw2ICsxMzk0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX0hUX09QRVJBVElPTjpcbitcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbikpXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX2h0X29wZXIgPVxuIFx0XHRcdFx0KHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uICopKGN1cnJlbnRfcHRyICtcbiBcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBpZWVlX3R5cGVzX2hlYWRlcikpO1xuQEAgLTE0MDAsNiArMTQwNCw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9WSFRfQ0FQQUJJTElUWTpcbitcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWRpc2FibGVfMTFhYyA9IGZhbHNlO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25fdmh0X2NhcCA9XG4gXHRcdFx0XHQodm9pZCAqKShjdXJyZW50X3B0ciArXG5AQCAtMTQwOSw2ICsxNDE1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0ICAgICAgYnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX1ZIVF9PUEVSQVRJT046XG4rXHRcdFx0aWYgKGVsZW1lbnRfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfb3BlcmF0aW9uKSlcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25fdmh0X29wZXIgPVxuIFx0XHRcdFx0KHZvaWQgKikoY3VycmVudF9wdHIgK1xuIFx0XHRcdFx0XHQgc2l6ZW9mKHN0cnVjdCBpZWVlX3R5cGVzX2hlYWRlcikpO1xuQEAgLTE0MTcsNiArMTQyNSw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdCAgICAgIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9CU1NfQ09FWF8yMDQwOlxuK1x0XHRcdGlmICghZWxlbWVudF9sZW4pXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX2Jzc19jb18yMDQwID0gY3VycmVudF9wdHI7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJzc19jb18yMDQwX29mZnNldCA9XG4gXHRcdFx0XHQodTE2KSAoY3VycmVudF9wdHIgLSBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG5AQCAtMTQyNyw2ICsxNDM3LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdCh1MTYpIChjdXJyZW50X3B0ciAtIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9PUE1PREVfTk9USUY6XG4rXHRcdFx0aWYgKCFlbGVtZW50X2xlbilcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2VvcGVyX21vZGUgPSAodm9pZCAqKWN1cnJlbnRfcHRyO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2VvcGVyX21vZGVfb2Zmc2V0ID1cbiBcdFx0XHRcdFx0KHUxNikoKHU4ICopYnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZSAtXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbmluZGV4IDdkMzYzMWQyMTIyMzZjLi44NDQyMjNjMDRlMmVmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbkBAIC03MjEsNyArNzIxLDcgQEAgbXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxuIFxuIFx0aHRfY2FwX2llID0gKHZvaWQgKiljZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX0hUX0NBUEFCSUxJVFksIGllcyxcbiBcdFx0XHRcdFx0ICAgICBpZXNfbGVuKTtcbi1cdGlmIChodF9jYXBfaWUpIHtcbitcdGlmIChodF9jYXBfaWUgXHUwMDI2XHUwMDI2IGh0X2NhcF9pZS1cdTAwM2VsZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKSB7XG4gXHRcdGh0X2NhcCA9ICh2b2lkICopKGh0X2NhcF9pZSArIDEpO1xuIFx0XHRub2RlLVx1MDAzZWlzXzExbl9lbmFibGVkID0gMTtcbiBcdFx0bm9kZS1cdTAwM2VtYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtXHUwMDNlY2FwX2luZm8pIFx1MDAyNlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6NTY6NDcuMTIxODg0NjA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5MDUyODcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1hcnZlbGwgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgY2hhbmdlcyB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGFkZGluZyBsZW5ndGggY2hlY2tzIGZvciBhIHdob2xlIGJ1bmNoIG9mIFdMQU4gZWxlbWVudHMg4oCTIHRoaW5ncyBsaWtlIEhUIGFuZCBWSFQgY2FwYWJpbGl0aWVzIGFuZCBvcGVyYXRpb25zLCBhbmQgc29tZSBCU1MgY28tZXhpc3RlbmNlIGFuZCBvcGVyYXRpb24gbW9kZSBub3RpZmljYXRpb25zIOKAkyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCBmdW5jdGlvbnMuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBgbXdpZmlleGAgd2lyZWxlc3MgZHJpdmVyLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZXZlbiB0ZXN0IHRoaXMgcHJvcGVybHk/IFRoaXMgaXMgYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCB0aG9zZSB0aGluZ3MgYXJlIHVzdWFsbHkgYSBwYWluIHRvIGRlYWwgd2l0aCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gVHlwaWNhbGx5LCB5b3UncmUgcmVsaWFudCBvbiBoYXZpbmcgZWl0aGVyIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiB0aGUgaGFyZHdhcmUgb3IsIGJldHRlciB5ZXQsIHNvbWUga2luZCBvZiBVU0IsIFNESU8sIG9yIFBDSWUgZW11bGF0aW9uIHRvIGFjdHVhbGx5IGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIHByb3Blcmx5LiBCdXQgd2FpdCwgd2FzbuKAmXQgYG13aWZpZXhgIGRlc2lnbmVkIHRvIHN1cHBvcnQgU0RJTywgUENJZSwgKmFuZCogVVNCPyBUaGF0J3MgYSBodWdlIHBvdGVudGlhbCB3aW4hIFVTQiBkcml2ZXJzIGFyZSBvZnRlbiBtdWNoIG1vcmUgdGVzdGFibGUuIEVzcGVjaWFsbHkgc2luY2Ugc3l6a2FsbGVyIGhhcyBzb21lIHByZXR0eSBzb2xpZCBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgdXNpbmcgVVNCIGdhZGdldCBhbmQgZHVtbXlfaGNkLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgVVNCIGRyaXZlciBjb21wb25lbnQgaW4gdGhpcyB0aGluZy4gVGhhdCBjb3VsZCBtYWtlIHRlc3RpbmcgYW5kIGZ1enppbmcgdGhpcyBwYXRjaCBtdWNoIHNpbXBsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMTo1Njo1Mi4xMTI0MTUzOTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NTA5NTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0zNz1jb25maWcgTVdJRklFWF9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTQ1LVxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzo0NjpcXHQgIG13aWZpZXhfdXNiLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19NV0lGSUVYX1BDSUUpICs9IG13aWZpZXhfcGNpZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZTo0NDptd2lmaWV4X3VzYi15ICs9IHVzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19NV0lGSUVYX1VTQikgKz0gbXdpZmlleF91c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZS00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oPTkwPWVudW0gS0VZX1RZUEVfSUQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2Z3LmgtMTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oOjEyMzplbnVtIG13aWZpZXhfdXNiX2VwIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaC0xMjQtXFx0TVdJRklFWF9VU0JfRVBfQ01EX0VWRU5UID0gMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9NTU9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyMy0gKiBEbyBub3QgY2hlY2sgZm9yIGRhdGFfcmVjZWl2ZWQgZm9yIFVTQiwgYXMgZGF0YV9yZWNlaXZlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI0OiAqIGlzIGhhbmRsZWQgaW4gbXdpZmlleF91c2JfcmVjdiBmb3IgVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjUtICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyB1c2Jfb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG13aWZpZXhfdXNiX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE2LVxcdC8qIDg3NjYgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Mzk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG13aWZpZXhfdXNiX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQxOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDY6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxODc6XFx0XFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXFx1MDAzZWVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5Ni1cXHRcXHRcXHQgKiB1cmIgZm9yIGNtZF9lcCB3aWxsIGJlIHJlLXN1Ym1pdHRlZCBpbiBjYWxsYmFja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxOTc6XFx0XFx0XFx0ICogbXdpZmlleF91c2JfcmVjdl9jb21wbGV0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXFx0XFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjMyLVxcdGlmIChjYXJkLVxcdTAwM2VyeF9jbWRfZXAgPT0gY29udGV4dC1cXHUwMDNlZXApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjMzOlxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY29udGV4dCwgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzUtXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyeF9wZW5kaW5nKSBcXHUwMDNjPSBISUdIX1JYX1BFTkRJTkcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjM2OlxcdFxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY29udGV4dCwgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNy1cXHRcXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjQ1OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI4NTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNS1cXHRcXHRcXHRcXHQgdXNiX3JjdmludHBpcGUoY2FyZC1cXHUwMDNldWRldiwgY3R4LVxcdTAwM2VlcCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjMxNjpcXHRcXHRcXHRcXHQgY3R4LVxcdTAwM2Vza2ItXFx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMTctXFx0XFx0XFx0XFx0ICh2b2lkICopY3R4LCBjYXJkLVxcdTAwM2VyeF9jbWRfaW50ZXJ2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMC1cXHRcXHRcXHRcXHQgIHVzYl9yY3ZidWxrcGlwZShjYXJkLVxcdTAwM2V1ZGV2LCBjdHgtXFx1MDAzZWVwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzIxOlxcdFxcdFxcdFxcdCAgY3R4LVxcdTAwM2Vza2ItXFx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMjItXFx0XFx0XFx0XFx0ICAodm9pZCAqKWN0eCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozNDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfZnJlZShzdHJ1Y3QgdXNiX2NhcmRfcmVjICpjYXJkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4NC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Mzg1OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4Ni1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzItICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjUzMzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTU5OS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjAwOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVdJRklFWF9SWF9EQVRBX1VSQjsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MjY6XFx0XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MjctXFx0XFx0XFx0XFx0XFx0XFx0ICBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYzMS1cXHRcXHRpZiAoY2FyZC1cXHUwMDNlcnhfY21kLnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjMyOlxcdFxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXFx1MDAyNmNhcmQtXFx1MDAzZXJ4X2NtZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjQ1OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Njk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfY29yZWR1bXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtd2lmaWV4X3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY3OTpcXHQubmFtZSA9IFxcXCJtd2lmaWV4X3VzYlxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4MDpcXHQucHJvYmUgPSBtd2lmaWV4X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgxOlxcdC5kaXNjb25uZWN0ID0gbXdpZmlleF91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgyOlxcdC5pZF90YWJsZSA9IG13aWZpZXhfdXNiX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODM6XFx0LnN1c3BlbmQgPSBtd2lmaWV4X3VzYl9zdXNwZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODQ6XFx0LnJlc3VtZSA9IG13aWZpZXhfdXNiX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg1LVxcdC5zb2Z0X3VuYmluZCA9IDEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY4Ni1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODc6XFx0XFx0LmNvcmVkdW1wID0gbXdpZmlleF91c2JfY29yZWR1bXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY4OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTcxND1zdGF0aWMgaW50IG13aWZpZXhfcmVhZF9kYXRhX3N5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggKnBidWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3MzQ6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcG9ydF9yZXN5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjc3NjpzdGF0aWMgYm9vbCBtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3ODk6c3RhdGljIGlubGluZSB1OCBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgwMTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDItXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdXNiX3R4X2RhdGFfcG9ydCAqcG9ydCwgdTggZXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODE4LVxcdFxcdFxcdFxcdCB1c2Jfc25kaW50cGlwZShjYXJkLVxcdTAwM2V1ZGV2LCBlcCksIHNrYl9zZW5kLVxcdTAwM2VkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4MTk6XFx0XFx0XFx0XFx0IHNrYl9zZW5kLVxcdTAwM2VsZW4sIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjAtXFx0XFx0XFx0XFx0ICh2b2lkICopY29udGV4dCwgY2FyZC1cXHUwMDNldHhfY21kX2ludGVydmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjQtXFx0XFx0XFx0XFx0ICBza2Jfc2VuZC1cXHUwMDNlZGF0YSwgc2tiX3NlbmQtXFx1MDAzZWxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODI1OlxcdFxcdFxcdFxcdCAgbXdpZmlleF91c2JfdHhfY29tcGxldGUsICh2b2lkICopY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MzctXFx0XFx0cG9ydC1cXHUwMDNlYmxvY2tfc3RhdHVzID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODM4OlxcdFxcdGFkYXB0ZXItXFx1MDAzZWRhdGFfc2VudCA9IG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODM5LVxcdFxcdHJldCA9IC1FTk9TUjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjg2MjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2Ioc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODYzLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTk0Ni0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6OTQ3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfYWdncl90eF9kYXRhKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy05NDgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Mi1cXHRpZiAoZl9zZW5kX2FnZ3JfYnVmKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwNjM6XFx0XFx0cmV0ID0gbXdpZmlleF91c2JfcHJlcGFyZV90eF9hZ2dyX3NrYihhZGFwdGVyLCBwb3J0LCBcXHUwMDI2c2tiX3NlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDY0LVxcdFxcdGlmICghcmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjUtXFx0XFx0XFx0Y29udGV4dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA2NjpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBjb250ZXh0LCBza2Jfc2VuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA3OS1cXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3NlbnQgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDgwOlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA4MS1cXHRcXHRcXHRcXHQvKiBubyBhdmFpbGFibGUgdXJiLCBwb3N0Y29weSBwYWNrZXQqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTUtXFx0XFx0Y29udGV4dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA5NjpcXHRcXHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDk3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGNvbnRleHQsIHNrYl9zZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTE5OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3R4X2FnZ3JfdG1vKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTI5LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cG9ydC1cXHUwMDNldHhfYWdncl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTEzMDpcXHRlcnIgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFxcdTAwMjZza2Jfc2VuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMzEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDAtXFx0XFx0YWRhcHRlci1cXHUwMDNlZGF0YV9zZW50ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE0MTpcXHRcXHRcXHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDItXFx0XFx0ZXJyID0gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0OS1cXHR1cmJfY254dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE1MDpcXHRlcnIgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgcG9ydC1cXHUwMDNldHhfZGF0YV9lcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1MS1cXHRcXHRcXHRcXHRcXHQgICAgIHVyYl9jbnh0LCBza2Jfc2VuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1OS0vKiBUaGlzIGZ1bmN0aW9uIHdyaXRlIGEgY29tbWFuZC9kYXRhIHBhY2tldCB0byBjYXJkLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTYwOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfaG9zdF90b19jYXJkKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTYxLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExOTItXFx0XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlZGF0YV9zZW50ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE5MzpcXHRcXHRcXHRcXHRcXHRcXHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExOTQtXFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjA4LVxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cG9ydC1cXHUwMDNldHhfYWdncl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIwOTpcXHRcXHRcXHRyZXQgPSAgbXdpZmlleF91c2JfYWdncl90eF9kYXRhKGFkYXB0ZXIsIGVwLCBza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMTAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0dHhfcGFyYW0sIHBvcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyMTg6XFx0cmV0dXJuIG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihhZGFwdGVyLCBwb3J0LCBlcCwgY29udGV4dCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyMjE6c3RhdGljIGludCBtd2lmaWV4X3VzYl90eF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNTctXFx0XFx0dGltZXJfc2V0dXAoXFx1MDAyNnBvcnQtXFx1MDAzZXR4X2FnZ3IudGltZXJfY254dC5ob2xkX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjU4OlxcdFxcdFxcdCAgICBtd2lmaWV4X3VzYl90eF9hZ2dyX3RtbywgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNTktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyNjQ6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yeF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyODA6XFx0aWYgKG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXFx1MDAyNmNhcmQtXFx1MDAzZXJ4X2NtZCwgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjgxLVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjg5LVxcdFxcdFxcdHJldHVybiAtMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI5MDpcXHRcXHRpZiAobXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjkxLVxcdFxcdFxcdFxcdFxcdCAgICAgIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTI5OT1zdGF0aWMgaW50IG13aWZpZXhfcmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTMzODpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9jbGVhbnVwX3R4X2FnZ3Ioc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTMzOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTM1OT1zdGF0aWMgdm9pZCBtd2lmaWV4X3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTM2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTM2MzpcXHRtd2lmaWV4X3VzYl9mcmVlKGNhcmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzY1OlxcdG13aWZpZXhfdXNiX2NsZWFudXBfdHhfYWdncihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTM2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMzcwPXN0YXRpYyBpbnQgbXdpZmlleF9wcm9nX2Z3X3dfaGVscGVyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUwNzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2RubGRfZncoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUwOC1cXHRcXHRcXHRzdHJ1Y3QgbXdpZmlleF9md19pbWFnZSAqZncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUyMzpcXHRyZXQgPSBtd2lmaWV4X3VzYl9yeF9pbml0KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTI0LVxcdGlmICghcmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTI1OlxcdFxcdHJldCA9IG13aWZpZXhfdXNiX3R4X2luaXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTUzMD1zdGF0aWMgdm9pZCBtd2lmaWV4X3N1Ym1pdF9yeF91cmIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzNi1cXHQgICAgKCFhdG9taWNfcmVhZChcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfY21kX3VyYl9wZW5kaW5nKSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1Mzc6XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfY21kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTM4LVxcdFxcdFxcdFxcdFxcdCAgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1NDM6c3RhdGljIGludCBtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU0NC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTUyPXN0YXRpYyBpbnQgbXdpZmlleF9wbV93YWtldXBfY2FyZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1NjM6c3RhdGljIHZvaWQgbXdpZmlleF91c2Jfc3VibWl0X3JlbV9yeF91cmJzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NzItXFx0XFx0Y3R4ID0gXFx1MDAyNmNhcmQtXFx1MDAzZXJ4X2RhdGFfbGlzdFtpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU3MzpcXHRcXHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGN0eCwgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU3NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTU4ND1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5MC1cXHQvKiBVU0Igc3BlY2lmaWMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MTpcXHQuZG5sZF9mdyA9XFx0XFx0bXdpZmlleF91c2JfZG5sZF9mdyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MjpcXHQuY21kcnNwX2NvbXBsZXRlID1cXHRtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTM6XFx0LmV2ZW50X2NvbXBsZXRlID1cXHRtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTQ6XFx0Lmhvc3RfdG9fY2FyZCA9XFx0XFx0bXdpZmlleF91c2JfaG9zdF90b19jYXJkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk1OlxcdC5zdWJtaXRfcmVtX3J4X3VyYnMgPVxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yZW1fcnhfdXJicyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NjpcXHQubXVsdGlfcG9ydF9yZXN5bmMgPVxcdG13aWZpZXhfdXNiX3BvcnRfcmVzeW5jLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk3OlxcdC5pc19wb3J0X3JlYWR5ID1cXHRtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTk4LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE2MDA6bW9kdWxlX3VzYl9kcml2ZXIobXdpZmlleF91c2JfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTYwMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6NTY6NTQuMTk3NTE3MjRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc4MjIzNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBtd2lmaWV4YCBVU0IgRHJpdmVyIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gdGhlIGBtd2lmaWV4YCBkcml2ZXIgKmRvZXMqIGhhdmUgYSBVU0IgY29tcG9uZW50LCBzcGVjaWZpY2FsbHkgYG13aWZpZXhfdXNiYC4gVGhhdCdzIGZhbnRhc3RpYy4gVGhhdCBtZWFucyB3ZSBjYW4gYWJzb2x1dGVseSB0YXJnZXQgaXQgd2l0aCBVU0IgZW11bGF0aW9uIGluIHN5emthbGxlci4gVGhpcyBvcGVucyB1cCBhIHNpZ25pZmljYW50IGF0dGFjayBzdXJmYWNlLlxuXG5Ob3csIGxldCdzIHNlZSB3aGljaCBmdW5jdGlvbnMgd2Ugc2hvdWxkIGZvY3VzIG9uLiBJIHNlZSB0d28gaW1tZWRpYXRlbHk6IGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBXZSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVzZSBhcmUgYWNjZXNzaWJsZSB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuXG5cbmBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBpcyBpbiBgc2Nhbi5jYC4gR2l2ZW4gdGhhdCwgSSdtIGJldHRpbmcgaXTigJlzIGludm9sdmVkIGluIHBhcnNpbmcgc2NhbiByZXN1bHRzIG9yIGJlYWNvbiBpbmZvcm1hdGlvbi4gVGhhdCBzb3VuZHMgcHJvbWlzaW5nLCBwb3RlbnRpYWxseSB0cmlnZ2VyZWQgYnkgY3JhZnRlZCByZXNwb25zZXMgZnJvbSBlbXVsYXRlZCBVU0IgZGV2aWNlcy5cblxuYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHJlc2lkZXMgaW4gYHV0aWwuY2AsIHdoaWNoIGxlYWRzIG1lIHRvIGJlbGlldmUgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBpbml0aWFsIHN0YXRpb24gc2V0dXAgcHJvY2Vzcy4gSWYgd2UgY2FuIG1hbmlwdWxhdGUgU1RBIGNvbmZpZ3VyYXRpb24gZHVyaW5nIGVudW1lcmF0aW9uLCB3ZSBtaWdodCBiZSBhYmxlIHRvIGV4cGxvaXQgYSB2dWxuZXJhYmlsaXR5LiBUaGlzIG9uZSdzIHdvcnRoIGludmVzdGlnYXRpbmcgZnVydGhlci5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjYWxsIGdyYXBoIGFuZCBzZWUgZXhhY3RseSB3aGVyZSBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgZ2V0cyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIHByZWNpc2UgY2FsbCBwYXRoIGlzIGVzc2VudGlhbCB0byBjcmFmdGluZyBlZmZlY3RpdmUgZnV6emluZyBpbnB1dHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTY0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU2OjU4LjM3NTc0MzE3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE4NzQzNzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTM4PWludCBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDAtXFx0XFx0XFx0ICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU0MTppbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTExMj1td2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTE4MS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjExODI6aW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTExODMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19lbnRyeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0xMjk9aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0xNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjE4MDpcXHRyZXR1cm4gbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShwcml2LVxcdTAwM2VhZGFwdGVyLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE4MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjAwLjM5NDQ5NDA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5Nzk0OTI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gQlNTIERlc2NyaXB0b3IgVXBkYXRlcyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGRlZmluaXRlbHkgcGFydCBvZiB0aGlzIEJTUyBkZXNjcmlwdG9yIHVwZGF0ZSBwcm9jZXNzLiBJdCdzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjYC4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIFVuZGVyc3RhbmRpbmcgdGhlIHVwc3RyZWFtIGNhbGxzIGlzIGNydWNpYWwgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZXh0IGFuZCBwdXJwb3NlIG9mIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gc2VlIHdoZXJlIGBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjYCBpdHNlbGYgaXMgYmVpbmcgaW52b2tlZC4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk1NywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjAzLjI5MjQ1NTQxOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzM4OTM1MTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTM2PWludCBtd2lmaWV4X2dldF9ic3NfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM3LVxcdFxcdFxcdCBzdHJ1Y3QgbXdpZmlleF9ic3NfaW5mbyAqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE1Mzg6aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1MzktXFx0XFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNjU1PXN0YXRpYyBpbnQgbXdpZmlleF9zYXZlX2hpZGRlbl9zc2lkX2NoYW5uZWxzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNjY3OlxcdHJldCA9IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MocHJpdiwgYnNzLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTEtXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNjkyOlxcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjkzLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNjk5PXN0YXRpYyBpbnQgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzEwOlxcdHJldCA9IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MocHJpdiwgYnNzLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzExLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzAtXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzMxOlxcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzMyLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTc2PWludCBtd2lmaWV4X3JlcXVlc3Rfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTI4LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzoxMjk6aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTMwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0zMTg9aW50IG13aWZpZXhfYnNzX3N0YXJ0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjMzNzpcXHRcXHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zMzgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MzItXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjQzMzpcXHQgKiBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKCkuIEZyZWUgaXQgbm93LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MzQtXFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjA1LjAzMTM5Njk3MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjgzNTg4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCU1MgRGVzY3JpcHRvciBVcGRhdGVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBtd2lmaWV4YCBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIGBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjYC4gVGhpcyBmdW5jdGlvbiBzZWVtcyBwcmV0dHkgY3J1Y2lhbCBmb3IgZGVzY3JpYmluZyBuZXcgQlNTIChCYXNpYyBTZXJ2aWNlIFNldCkgZW50cmllcy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGl0J3MgY2FsbGVkIGZyb20gYSBmZXcga2V5IHBsYWNlczogYG13aWZpZXhfc2F2ZV9oaWRkZW5fc3NpZF9jaGFubmVsc2AsIHdoaWNoIGxpa2VseSBkZWFscyB3aXRoIHN0b3JpbmcgaW5mb3JtYXRpb24gYWJvdXQgaGlkZGVuIG5ldHdvcmtzOyBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCwgc3VnZ2VzdGluZyBpdCdzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyBkZXRhaWxzIG9mIHRoZSBjdXJyZW50bHkgY29ubmVjdGVkIEJTUzsgYW5kIGBtd2lmaWV4X2Jzc19zdGFydGAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgYXMgaXQgd2lsbCBuZWVkIHRvIGRlc2NyaWJlIGEgQlNTIHdoZW4gdGhlIGNvbm5lY3Rpb24gc3RhcnRzLlxuXG5HaXZlbiB0aGUgaW1wb3J0YW5jZSBvZiB0aGlzIGZ1bmN0aW9uLCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBob3cgdGhlIHN0YXRpb24ncyBIVCBjYXBhYmlsaXRpZXMgYXJlIHNldCwgc28gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgZnVuY3Rpb24gbmV4dC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgaGlnaCB0aHJvdWdocHV0IGluZm9ybWF0aW9uIGlzIHByb3Blcmx5IGFwcGxpZWQgd2hlbiBhIEJTUyBpcyBkZXNjcmliZWQsIHNvIHRoaXMgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgbmV4dCBhcmVhIHRvIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzI3MywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjA4LjQ5OTc1OTE1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5Njg5MDYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTU5MD12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTkxOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1OTItXFx0XFx0ICAgICAgIGludCBpZXNfbGVuLCBzdHJ1Y3QgbXdpZmlleF9zdGFfbm9kZSAqbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmM9OTQ9aW50IG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jOjE0OTpcXHRcXHRtd2lmaWV4X3NldF9zdGFfaHRfY2FwKHByaXYsIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNTAtXFx0XFx0XFx0XFx0ICAgICAgIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiwgbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTcxMj12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzo3MTM6bXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNzE0LVxcdFxcdCAgICAgICBpbnQgaWVzX2xlbiwgc3RydWN0IG13aWZpZXhfc3RhX25vZGUgKm5vZGUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjEwLjM5NjY2MTg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzIwNDcyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGBtd2lmaWV4YCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHNwb3R0ZWQgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBoZXJlIGluIHRoZSBgbXdpZmlleGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBVU0IgaW50ZXJmYWNlIChgbXdpZmlleF91c2JgKS4gVGhlIGNydWNpYWwgY29ubmVjdGlvbiBpcyB0aGlzOiBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgZ2V0cyBjYWxsZWQgZnJvbSBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIFRoaXMgbWVhbnMgd2UncmUgbG9va2luZyBhdCBmdW5jdGlvbmFsIGNoYW5nZXMgd2l0aGluIHRoZSBkcml2ZXIgdGhhdCB3ZSBjYW4gcHJvYmFibHkgdHJpZ2dlciB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuIEFuZCBpZiBpdCdzIFVTQiwgdGhlbiBVU0IgZW11bGF0aW9uIGJlY29tZXMgdGhlIG5hbWUgb2YgdGhlIGdhbWUuXG5cblRoZSBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgYXJlIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBUaGVzZSBib3RoIGhhbmRsZSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBleHRyYWN0ZWQgZnJvbSBiZWFjb25zLCBwcm9iZSByZXNwb25zZXMsIG9yIGFzc29jaWF0aW9uIHJlcXVlc3RzLiBUaGF0J3MgYSBjbGFzc2ljIGZ1enppbmcgdGFyZ2V0IC0gY2FyZWZ1bGx5IGNyYWZ0ZWQsIG1hbGZvcm1lZCBJRXMgYXJlIGEgZ28tdG8gZm9yIGZpbmRpbmcgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoaXMgaXMgYWJzb2x1dGVseSByZWFjaGFibGUsIGFuZCB3aXRoIHRoZSBVU0IgaW50ZXJmYWNlLCBoaWdobHkgZnV6emVhYmxlLlxuXG5Ob3csIHRvIG1ha2Ugc3VyZSBJIGNhbiBhY3R1YWxseSBidWlsZCBhbmQgdGVzdCB0aGlzLCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfTVdJRklFWGAgYW5kIGBDT05GSUdfTVdJRklFWF9VU0JgIGFyZSB0aGUga2V5cyBoZXJlLiBJJ2xsIG1ha2Ugc3VyZSB0aGVzZSBhcmUgZW5hYmxlZCBpbiBteSBidWlsZCBlbnZpcm9ubWVudC4gVGhpcyBpcyBhIHNvbGlkIGxlYWQ7IEknbGwgc3RhcnQgY3JhZnRpbmcgc29tZSBmdXp6aW5nIHBheWxvYWRzIHRvIGhpdCB0aGVzZSBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDE4LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjE0LjYyODcxMjk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTEwNDgxNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMTo1NzoxNi43MzkyMDA3MjZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxMjUxMDExMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1hcnZlbGwgV2ktRmkgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE1hcnZlbGwgV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBtd2lmaWV4YCBkcml2ZXIgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2AuIFRoZSBpbml0aWFsIGNvbmZpZ3MgSSBzZWUgYXJlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgXCJBcmUgdGhvc2UgdGhlIG9ubHkgb25lcz9cIiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGRyaXZlciwgaXQgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgLCBzbyB0aG9zZSBhcmUgZGVmaW5pdGVseSByZXF1aXJlZC4gSSBzaG91bGQgZXhwbGljaXRseSBpbmNsdWRlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBpbiB0aGUgY29uZmlnIHRvby5cblxuTm93LCBsZXQncyBpZGVudGlmeSBzb21lIGZvY3VzIHN5bWJvbHMuIEknbSB0aGlua2luZyBhYm91dCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBsaWtlbHkgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4gSSd2ZSBnb3QgYSBmZXcgY2FuZGlkYXRlcyBpbiBtaW5kOiBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAsIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCwgYW5kIGBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjYC5cblxuSSdtIGxlYW5pbmcgdG93YXJkcyBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgZGVzY3JpcHRpb24gc2F5cyBpdCdzIGNhbGxlZCB3aGVuIHBhcnNpbmcgSUVzLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgdGhlIHBhdGNoIGFwcGVhcnMgdG8gYmUgZG9pbmcuIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCBhbHNvIHNlZW1zIHJlbGV2YW50LlxuXG5JIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBuZWl0aGVyIG9mIHRob3NlIGtleSBmdW5jdGlvbnMgYXJlIGBzdGF0aWNgLCBzbyB0aGF0IEkgY2FuIHRyYWNlIHRoZW0gY29ycmVjdGx5LiBPa2F5LCB0aGV5J3JlIGJvdGggKm5vdCogc3RhdGljLCBzbyB0aGF0J3MgZ29vZC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIHBvdGVudGlhbCBmb2N1cyBzeW1ib2xzLiBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgYW5kIGBtd2lmaWV4X2Jzc19zdGFydGAgbWlnaHQgYmUgcmVsZXZhbnQsIGJ1dCBJIHRoaW5rIEknbGwgYmUgZmluZSBzdGFydGluZyB3aXRoIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGZvciBub3cuXG5cbkxldCdzIGRvdWJsZSBjaGVjayB0aG9zZSBjb25maWd1cmF0aW9uIG5hbWVzOiBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAuIFllcywgdGhvc2UgYXJlIGNvcnJlY3QuXG5cbkZpbmFsbHksIGFyZSB0aGVyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIEkndmUgb3Zlcmxvb2tlZD8gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBXTEFOYCBhbmQgYFdMQU5fVkVORE9SX01BUlZFTExgIGFyZSBwcm9wZXJseSBzZXQuIEl0J3MgZWFzeSB0byBtaXNzIHRob3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDkyOSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMTo1NzoyMi40NTE3MzYzMTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzMyMzc3ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMy1cXHRib29sIFxcXCJNYXJ2ZWxsIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjI1LjkyNDk4MzkxMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjU3NjIxMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1hcnZlbGwgV0xBTiBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFllcywgYWJzb2x1dGVseSwgd2UgbmVlZCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgZW5hYmxlZCBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydC4gTXkgYW5hbHlzaXMgaW5kaWNhdGVzIHRoaXMgaXMgYSB3b3J0aHdoaWxlIHRhcmdldC4gXG5cbkknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIE15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBsZW5ndGggY2hlY2tzIHdpdGhpbiB0aGUgTWFydmVsbCBgbXdpZmlleGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIHdpdGhpbiB3aXJlbGVzcyBjb21tdW5pY2F0aW9ucy4gSSd2ZSBwaW5wb2ludGVkIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldDogYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFRoZXNlIG5lZWQgdG8gYmUgZnJvbnQgYW5kIGNlbnRlciBpbiB0aGUgZnV6emVyJ3MgZm9jdXMgKGBGb2N1c1N5bWJvbHNgKS5cblxuRnVydGhlcm1vcmUsIEknbSBlbmFibGluZyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOiBgV0xBTl9WRU5ET1JfTUFSVkVMTGAsIGBNV0lGSUVYYCwgYW5kIGBNV0lGSUVYX1VTQmAuIFRoZSBgbXdpZmlleGAgZHJpdmVyIGlzIGNsZWFybHkgY2VudHJhbCBoZXJlLCBhbmQgdGhlIFVTQiBpbnRlcmZhY2UgcHJlc2VudHMgYSBwYXJ0aWN1bGFybHkgYXR0cmFjdGl2ZSBhdHRhY2sgc3VyZmFjZS4gVGhlIGZ1enppbmcgY2FuIGJlIGRvbmUgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBtb2RpZmllZCBwcm9jZXNzIElFcyBmcm9tIGJlYWNvbnMsIHByb2JlIHJlc3BvbnNlcywgYW5kIGFzc29jaWF0aW9uIHJlcXVlc3RzLiBUaGVzZSBJRXMgYXJlIGFsbCByZWFjaGFibGUgYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBmdXp6ZXIuIFRoaXMgYWxsIGxvb2tzIHZlcnkgcHJvbWlzaW5nLCBhbmQgdGhlIGxlbmd0aCBjaGVja3MsIGluIHRoaXMgY29udGV4dCwgYXJlIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBpZGVudGlmeWluZyBzdWJ0bGUgYnVmZmVyIG92ZXJmbG93cyBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIGFuZCBwb3RlbnRpYWxseSBoaWdobHkgZWZmZWN0aXZlIGZ1enppbmcgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTIzLCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMTo1NzozMC41ODI2MDc0ODVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTA5MTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIFdMQU4gSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gdGhlIG13aWZpZXggZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiBpbnRlcmZhY2UgKG13aWZpZXhfdXNiKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgcHJvY2VzcyBJRXMgZnJvbSBiZWFjb25zLCBwcm9iZSByZXNwb25zZXMsIGFuZCBhc3NvY2lhdGlvbiByZXF1ZXN0cywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOX1ZFTkRPUl9NQVJWRUxMXCIsXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVcIixcbiAgICBcIm13aWZpZXhfc2V0X3N0YV9odF9jYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgV0xBTiBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBpbiB0aGUgbXdpZmlleCBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSAobXdpZmlleF91c2IpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBwcm9jZXNzIElFcyBmcm9tIGJlYWNvbnMsIHByb2JlIHJlc3BvbnNlcywgYW5kIGFzc29jaWF0aW9uIHJlcXVlc3RzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownhkbx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 01:34:36 +0000 UTC FinishedAt: 2026-07-16 01:57:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_MARVELL", "MWIFIEX", "MWIFIEX_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_MARVELL", "MWIFIEX", "MWIFIEX_USB" ], "series_id": "34cd8c72-389e-44ce-aa45-aeda910ed756" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_update_bss_desc_with_ie", "mwifiex_set_sta_ht_cap" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgV0xBTiBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBpbiB0aGUgbXdpZmlleCBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSAobXdpZmlleF91c2IpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBwcm9jZXNzIElFcyBmcm9tIGJlYWNvbnMsIHByb2JlIHJlc3BvbnNlcywgYW5kIGFzc29jaWF0aW9uIHJlcXVlc3RzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDlmM2M0YzM5NjlmNDI4NmZkZDhjMzNkMTU5ZjkzMmFlY2NiN2Y1ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDAxOjU2OjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5pbmRleCA5N2MwZWMzYjgyMmU3MC4uMjIwMzFmYWJhMDU3ZjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5AQCAtMTM4NCw2ICYjNDM7MTM4NCw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdFx0XHRic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfSFRfQ0FQQUJJTElUWTpcbiYjNDM7XHRcdFx0aWYgKGVsZW1lbnRfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25faHRfY2FwID0gKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICopXG4gXHRcdFx0XHRcdChjdXJyZW50X3B0ciAmIzQzO1xuIFx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7XG5AQCAtMTM5Miw2ICYjNDM7MTM5NCw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9IVF9PUEVSQVRJT046XG4mIzQzO1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX2h0X29wZXIgPVxuIFx0XHRcdFx0KHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uICopKGN1cnJlbnRfcHRyICYjNDM7XG4gXHRcdFx0XHRcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcbkBAIC0xNDAwLDYgJiM0MzsxNDA0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX1ZIVF9DQVBBQklMSVRZOlxuJiM0MztcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2VkaXNhYmxlXzExYWMgPSBmYWxzZTtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX3ZodF9jYXAgPVxuIFx0XHRcdFx0KHZvaWQgKikoY3VycmVudF9wdHIgJiM0MztcbkBAIC0xNDA5LDYgJiM0MzsxNDE1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0ICAgICAgYnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX1ZIVF9PUEVSQVRJT046XG4mIzQzO1x0XHRcdGlmIChlbGVtZW50X2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X29wZXJhdGlvbikpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJjbl92aHRfb3BlciA9XG4gXHRcdFx0XHQodm9pZCAqKShjdXJyZW50X3B0ciAmIzQzO1xuIFx0XHRcdFx0XHQgc2l6ZW9mKHN0cnVjdCBpZWVlX3R5cGVzX2hlYWRlcikpO1xuQEAgLTE0MTcsNiAmIzQzOzE0MjUsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0XHQgICAgICBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfQlNTX0NPRVhfMjA0MDpcbiYjNDM7XHRcdFx0aWYgKCFlbGVtZW50X2xlbilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX2Jzc19jb18yMDQwID0gY3VycmVudF9wdHI7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJzc19jb18yMDQwX29mZnNldCA9XG4gXHRcdFx0XHQodTE2KSAoY3VycmVudF9wdHIgLSBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG5AQCAtMTQyNyw2ICYjNDM7MTQzNyw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHQodTE2KSAoY3VycmVudF9wdHIgLSBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfT1BNT0RFX05PVElGOlxuJiM0MztcdFx0XHRpZiAoIWVsZW1lbnRfbGVuKVxuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2VvcGVyX21vZGUgPSAodm9pZCAqKWN1cnJlbnRfcHRyO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2VvcGVyX21vZGVfb2Zmc2V0ID1cbiBcdFx0XHRcdFx0KHUxNikoKHU4ICopYnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZSAtXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbmluZGV4IDdkMzYzMWQyMTIyMzZjLi44NDQyMjNjMDRlMmVmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbkBAIC03MjEsNyAmIzQzOzcyMSw3IEBAIG13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbiBcbiBcdGh0X2NhcF9pZSA9ICh2b2lkICopY2ZnODAyMTFfZmluZF9pZShXTEFOX0VJRF9IVF9DQVBBQklMSVRZLCBpZXMsXG4gXHRcdFx0XHRcdCAgICAgaWVzX2xlbik7XG4tXHRpZiAoaHRfY2FwX2llKSB7XG4mIzQzO1x0aWYgKGh0X2NhcF9pZSBcdTAwMjZcdTAwMjYgaHRfY2FwX2llLVx1MDAzZWxlbiBcdTAwM2U9IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpIHtcbiBcdFx0aHRfY2FwID0gKHZvaWQgKikoaHRfY2FwX2llICYjNDM7IDEpO1xuIFx0XHRub2RlLVx1MDAzZWlzXzExbl9lbmFibGVkID0gMTtcbiBcdFx0bm9kZS1cdTAwM2VtYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtXHUwMDNlY2FwX2luZm8pIFx1MDAyNlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgV0xBTiBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBpbiB0aGUgbXdpZmlleCBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSAobXdpZmlleF91c2IpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBwcm9jZXNzIElFcyBmcm9tIGJlYWNvbnMsIHByb2JlIHJlc3BvbnNlcywgYW5kIGFzc29jaWF0aW9uIHJlcXVlc3RzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0OWYzYzRjMzk2OWY0Mjg2ZmRkOGMzM2QxNTlmOTMyYWVjY2I3ZjVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMTYgMDE6NTY6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwppbmRleCA5N2MwZWMzYjgyMmU3MC4uMjIwMzFmYWJhMDU3ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwpAQCAtMTM4NCw2ICYjNDM7MTM4NCw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQkJCQkJYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX0hUX0NBUEFCSUxJVFk6CiYjNDM7CQkJaWYgKGVsZW1lbnRfbGVuICZsdDsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwKSkKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQlic3NfZW50cnktJmd0O2Jjbl9odF9jYXAgPSAoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKikKIAkJCQkJKGN1cnJlbnRfcHRyICYjNDM7CiAJCQkJCXNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTsKQEAgLTEzOTIsNiAmIzQzOzEzOTQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLAogCQkJCQlic3NfZW50cnktJmd0O2JlYWNvbl9idWYpOwogCQkJYnJlYWs7CiAJCWNhc2UgV0xBTl9FSURfSFRfT1BFUkFUSU9OOgomIzQzOwkJCWlmIChlbGVtZW50X2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbikpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtiY25faHRfb3BlciA9CiAJCQkJKHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uICopKGN1cnJlbnRfcHRyICYjNDM7CiAJCQkJCXNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTsKQEAgLTE0MDAsNiAmIzQzOzE0MDQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLAogCQkJCQlic3NfZW50cnktJmd0O2JlYWNvbl9idWYpOwogCQkJYnJlYWs7CiAJCWNhc2UgV0xBTl9FSURfVkhUX0NBUEFCSUxJVFk6CiYjNDM7CQkJaWYgKGVsZW1lbnRfbGVuICZsdDsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCkpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtkaXNhYmxlXzExYWMgPSBmYWxzZTsKIAkJCWJzc19lbnRyeS0mZ3Q7YmNuX3ZodF9jYXAgPQogCQkJCSh2b2lkICopKGN1cnJlbnRfcHRyICYjNDM7CkBAIC0xNDA5LDYgJiM0MzsxNDE1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkJICAgICAgYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX1ZIVF9PUEVSQVRJT046CiYjNDM7CQkJaWYgKGVsZW1lbnRfbGVuICZsdDsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X29wZXJhdGlvbikpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtiY25fdmh0X29wZXIgPQogCQkJCSh2b2lkICopKGN1cnJlbnRfcHRyICYjNDM7CiAJCQkJCSBzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7CkBAIC0xNDE3LDYgJiM0MzsxNDI1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkJICAgICAgYnNzX2VudHJ5LSZndDtiZWFjb25fYnVmKTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fRUlEX0JTU19DT0VYXzIwNDA6CiYjNDM7CQkJaWYgKCFlbGVtZW50X2xlbikKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQlic3NfZW50cnktJmd0O2Jjbl9ic3NfY29fMjA0MCA9IGN1cnJlbnRfcHRyOwogCQkJYnNzX2VudHJ5LSZndDtic3NfY29fMjA0MF9vZmZzZXQgPQogCQkJCSh1MTYpIChjdXJyZW50X3B0ciAtIGJzc19lbnRyeS0mZ3Q7YmVhY29uX2J1Zik7CkBAIC0xNDI3LDYgJiM0MzsxNDM3LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkodTE2KSAoY3VycmVudF9wdHIgLSBic3NfZW50cnktJmd0O2JlYWNvbl9idWYpOwogCQkJYnJlYWs7CiAJCWNhc2UgV0xBTl9FSURfT1BNT0RFX05PVElGOgomIzQzOwkJCWlmICghZWxlbWVudF9sZW4pCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnNzX2VudHJ5LSZndDtvcGVyX21vZGUgPSAodm9pZCAqKWN1cnJlbnRfcHRyOwogCQkJYnNzX2VudHJ5LSZndDtvcGVyX21vZGVfb2Zmc2V0ID0KIAkJCQkJKHUxNikoKHU4ICopYnNzX2VudHJ5LSZndDtvcGVyX21vZGUgLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMKaW5kZXggN2QzNjMxZDIxMjIzNmMuLjg0NDIyM2MwNGUyZWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMKQEAgLTcyMSw3ICYjNDM7NzIxLDcgQEAgbXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLAogCiAJaHRfY2FwX2llID0gKHZvaWQgKiljZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX0hUX0NBUEFCSUxJVFksIGllcywKIAkJCQkJICAgICBpZXNfbGVuKTsKLQlpZiAoaHRfY2FwX2llKSB7CiYjNDM7CWlmIChodF9jYXBfaWUgJmFtcDsmYW1wOyBodF9jYXBfaWUtJmd0O2xlbiAmZ3Q7PSBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKSB7CiAJCWh0X2NhcCA9ICh2b2lkICopKGh0X2NhcF9pZSAmIzQzOyAxKTsKIAkJbm9kZS0mZ3Q7aXNfMTFuX2VuYWJsZWQgPSAxOwogCQlub2RlLSZndDttYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtJmd0O2NhcF9pbmZvKSAmYW1wOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU0CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWFydmVsbCBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBjaGFuZ2VzIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGFkZGluZyBsZW5ndGggY2hlY2tzIGZvciBhIHdob2xlIGJ1bmNoIG9mIFdMQU4gZWxlbWVudHMg4oCTIHRoaW5ncyBsaWtlIEhUIGFuZCBWSFQgY2FwYWJpbGl0aWVzIGFuZCBvcGVyYXRpb25zLCBhbmQgc29tZSBCU1MgY28tZXhpc3RlbmNlIGFuZCBvcGVyYXRpb24gbW9kZSBub3RpZmljYXRpb25zIOKAkyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCBmdW5jdGlvbnMuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBgbXdpZmlleGAgd2lyZWxlc3MgZHJpdmVyLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gdGVzdCB0aGlzIHByb3Blcmx5PyBUaGlzIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCBhbmQgdGhvc2UgdGhpbmdzIGFyZSB1c3VhbGx5IGEgcGFpbiB0byBkZWFsIHdpdGggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIFR5cGljYWxseSwgeW91JiMzOTtyZSByZWxpYW50IG9uIGhhdmluZyBlaXRoZXIgc29mdHdhcmUgZW11bGF0aW9uIG9mIHRoZSBoYXJkd2FyZSBvciwgYmV0dGVyIHlldCwgc29tZSBraW5kIG9mIFVTQiwgU0RJTywgb3IgUENJZSBlbXVsYXRpb24gdG8gYWN0dWFsbHkgaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUgcHJvcGVybHkuIEJ1dCB3YWl0LCB3YXNu4oCZdCBgbXdpZmlleGAgZGVzaWduZWQgdG8gc3VwcG9ydCBTRElPLCBQQ0llLCAqYW5kKiBVU0I/IFRoYXQmIzM5O3MgYSBodWdlIHBvdGVudGlhbCB3aW4hIFVTQiBkcml2ZXJzIGFyZSBvZnRlbiBtdWNoIG1vcmUgdGVzdGFibGUuIEVzcGVjaWFsbHkgc2luY2Ugc3l6a2FsbGVyIGhhcyBzb21lIHByZXR0eSBzb2xpZCBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgdXNpbmcgVVNCIGdhZGdldCBhbmQgZHVtbXlfaGNkLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIFVTQiBkcml2ZXIgY29tcG9uZW50IGluIHRoaXMgdGhpbmcuIFRoYXQgY291bGQgbWFrZSB0ZXN0aW5nIGFuZCBmdXp6aW5nIHRoaXMgcGF0Y2ggbXVjaCBzaW1wbGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfdXNiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTQ1LVx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6NDY6XHQgIG13aWZpZXhfdXNiLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZT00Mj1vYmotJChDT05GSUdfTVdJRklFWF9QQ0lFKSAmIzQzOz0gbXdpZmlleF9wY2llLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZS00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZTo0NDptd2lmaWV4X3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19NV0lGSUVYX1VTQikgJiM0Mzs9IG13aWZpZXhfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZS00Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaD05MD1lbnVtIEtFWV9UWVBFX0lEIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaC0xMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaDoxMjM6ZW51bSBtd2lmaWV4X3VzYl9lcCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaC0xMjQtXHRNV0lGSUVYX1VTQl9FUF9DTURfRVZFTlQgPSAxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9NTU9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjMtICogRG8gbm90IGNoZWNrIGZvciBkYXRhX3JlY2VpdmVkIGZvciBVU0IsIGFzIGRhdGFfcmVjZWl2ZWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI0OiAqIGlzIGhhbmRsZWQgaW4gbXdpZmlleF91c2JfcmVjdiBmb3IgVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNS0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyB1c2Jfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtd2lmaWV4X3VzYl90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE2LVx0LyogODc2NiAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozOTpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXdpZmlleF91c2JfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQxOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo0NjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Ny1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggZXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTI6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxODc6XHRcdHN0YXR1cyA9IG13aWZpZXhfdXNiX3JlY3YoYWRhcHRlciwgc2tiLCBjb250ZXh0LVx1MDAzZWVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5Ni1cdFx0XHQgKiB1cmIgZm9yIGNtZF9lcCB3aWxsIGJlIHJlLXN1Ym1pdHRlZCBpbiBjYWxsYmFja1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE5NzpcdFx0XHQgKiBtd2lmaWV4X3VzYl9yZWN2X2NvbXBsZXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk4LVx0XHRcdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzItXHRpZiAoY2FyZC1cdTAwM2VyeF9jbWRfZXAgPT0gY29udGV4dC1cdTAwM2VlcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjIzMzpcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihjb250ZXh0LCBzaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzQtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNS1cdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmFkYXB0ZXItXHUwMDNlcnhfcGVuZGluZykgXHUwMDNjPSBISUdIX1JYX1BFTkRJTkcpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyMzY6XHRcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihjb250ZXh0LCBzaXplKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzctXHRcdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyNDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfdHhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyODU6c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMTUtXHRcdFx0XHQgdXNiX3JjdmludHBpcGUoY2FyZC1cdTAwM2V1ZGV2LCBjdHgtXHUwMDNlZXApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjMxNjpcdFx0XHRcdCBjdHgtXHUwMDNlc2tiLVx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNy1cdFx0XHRcdCAodm9pZCAqKWN0eCwgY2FyZC1cdTAwM2VyeF9jbWRfaW50ZXJ2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMjAtXHRcdFx0XHQgIHVzYl9yY3ZidWxrcGlwZShjYXJkLVx1MDAzZXVkZXYsIGN0eC1cdTAwM2VlcCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzIxOlx0XHRcdFx0ICBjdHgtXHUwMDNlc2tiLVx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMi1cdFx0XHRcdCAgKHZvaWQgKiljdHgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzQ1OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2ZyZWUoc3RydWN0IHVzYl9jYXJkX3JlYyAqY2FyZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zODQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Mzg1OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg2LVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzItICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NTMzOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTk5LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYwMDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MjUtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1XSUZJRVhfUlhfREFUQV9VUkI7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYyNjpcdFx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNy1cdFx0XHRcdFx0XHQgIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYzMS1cdFx0aWYgKGNhcmQtXHUwMDNlcnhfY21kLnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MzI6XHRcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcdTAwMjZjYXJkLVx1MDAzZXJ4X2NtZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MzMtXHRcdFx0XHRcdFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2NDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjY5OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2NvcmVkdW1wKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtd2lmaWV4X3VzYl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc5Olx0Lm5hbWUgPSBcJiMzNDttd2lmaWV4X3VzYlwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODA6XHQucHJvYmUgPSBtd2lmaWV4X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODE6XHQuZGlzY29ubmVjdCA9IG13aWZpZXhfdXNiX2Rpc2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgyOlx0LmlkX3RhYmxlID0gbXdpZmlleF91c2JfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgzOlx0LnN1c3BlbmQgPSBtd2lmaWV4X3VzYl9zdXNwZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NDpcdC5yZXN1bWUgPSBtd2lmaWV4X3VzYl9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg1LVx0LnNvZnRfdW5iaW5kID0gMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02ODYtXHQuZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NzpcdFx0LmNvcmVkdW1wID0gbXdpZmlleF91c2JfY29yZWR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NzE0PXN0YXRpYyBpbnQgbXdpZmlleF9yZWFkX2RhdGFfc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCAqcGJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjczNDpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9wb3J0X3Jlc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTczNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3NzY6c3RhdGljIGJvb2wgbXdpZmlleF91c2JfaXNfcG9ydF9yZWFkeShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3ODk6c3RhdGljIGlubGluZSB1OCBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03OTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODAxOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODAyLVx0XHRcdFx0XHQgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LCB1OCBlcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODE4LVx0XHRcdFx0IHVzYl9zbmRpbnRwaXBlKGNhcmQtXHUwMDNldWRldiwgZXApLCBza2Jfc2VuZC1cdTAwM2VkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgxOTpcdFx0XHRcdCBza2Jfc2VuZC1cdTAwM2VsZW4sIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyMC1cdFx0XHRcdCAodm9pZCAqKWNvbnRleHQsIGNhcmQtXHUwMDNldHhfY21kX2ludGVydmFsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODI0LVx0XHRcdFx0ICBza2Jfc2VuZC1cdTAwM2VkYXRhLCBza2Jfc2VuZC1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODI1Olx0XHRcdFx0ICBtd2lmaWV4X3VzYl90eF9jb21wbGV0ZSwgKHZvaWQgKiljb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgzNy1cdFx0cG9ydC1cdTAwM2VibG9ja19zdGF0dXMgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgzODpcdFx0YWRhcHRlci1cdTAwM2VkYXRhX3NlbnQgPSBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODM5LVx0XHRyZXQgPSAtRU5PU1I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTg2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4NjI6c3RhdGljIGludCBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODYzLVx0XHRcdFx0XHQgICBzdHJ1Y3QgdXNiX3R4X2RhdGFfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtOTQ2LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjk0NzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2FnZ3JfdHhfZGF0YShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy05NDgtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Mi1cdGlmIChmX3NlbmRfYWdncl9idWYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDYzOlx0XHRyZXQgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFx1MDAyNnNrYl9zZW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDY0LVx0XHRpZiAoIXJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjUtXHRcdFx0Y29udGV4dCA9IFx1MDAyNnBvcnQtXHUwMDNldHhfZGF0YV9saXN0W3BvcnQtXHUwMDNldHhfZGF0YV9peCYjNDM7JiM0MztdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwNjY6XHRcdFx0cmV0ID0gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjctXHRcdFx0XHRcdFx0XHQgICAgIGNvbnRleHQsIHNrYl9zZW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA3OS1cdFx0XHRcdGFkYXB0ZXItXHUwMDNlZGF0YV9zZW50ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDgwOlx0XHRcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA4MS1cdFx0XHRcdC8qIG5vIGF2YWlsYWJsZSB1cmIsIHBvc3Rjb3B5IHBhY2tldCovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTUtXHRcdGNvbnRleHQgPSBcdTAwMjZwb3J0LVx1MDAzZXR4X2RhdGFfbGlzdFtwb3J0LVx1MDAzZXR4X2RhdGFfaXgmIzQzOyYjNDM7XTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDk2Olx0XHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTctXHRcdFx0XHRcdFx0ICAgICAgY29udGV4dCwgc2tiX3NlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExMTk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfdHhfYWdncl90bW8oc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTEyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMjktXHRzcGluX2xvY2tfYmgoXHUwMDI2cG9ydC1cdTAwM2V0eF9hZ2dyX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExMzA6XHRlcnIgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFx1MDAyNnNrYl9zZW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTMxLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTQwLVx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfc2VudCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE0MTpcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0Mi1cdFx0ZXJyID0gLTE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDktXHR1cmJfY254dCA9IFx1MDAyNnBvcnQtXHUwMDNldHhfZGF0YV9saXN0W3BvcnQtXHUwMDNldHhfZGF0YV9peCYjNDM7JiM0MztdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNTA6XHRlcnIgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgcG9ydC1cdTAwM2V0eF9kYXRhX2VwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNTEtXHRcdFx0XHRcdCAgICAgdXJiX2NueHQsIHNrYl9zZW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1OS0vKiBUaGlzIGZ1bmN0aW9uIHdyaXRlIGEgY29tbWFuZC9kYXRhIHBhY2tldCB0byBjYXJkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNjA6c3RhdGljIGludCBtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE2MS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTkyLVx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfc2VudCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE5MzpcdFx0XHRcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE5NC1cdFx0XHRcdFx0cmV0dXJuIC1FQlVTWTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIwOC1cdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2cG9ydC1cdTAwM2V0eF9hZ2dyX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyMDk6XHRcdFx0cmV0ID0gIG13aWZpZXhfdXNiX2FnZ3JfdHhfZGF0YShhZGFwdGVyLCBlcCwgc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMTAtXHRcdFx0XHRcdFx0XHR0eF9wYXJhbSwgcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIxODpcdHJldHVybiBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsIGNvbnRleHQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjIxOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfdHhfaW5pdChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMjIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjU3LVx0XHR0aW1lcl9zZXR1cChcdTAwMjZwb3J0LVx1MDAzZXR4X2FnZ3IudGltZXJfY254dC5ob2xkX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyNTg6XHRcdFx0ICAgIG13aWZpZXhfdXNiX3R4X2FnZ3JfdG1vLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjU5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyNjQ6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yeF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI4MDpcdGlmIChtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfY21kLCBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI4MS1cdFx0cmV0dXJuIC0xO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjg5LVx0XHRcdHJldHVybiAtMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjkwOlx0XHRpZiAobXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcdTAwMjZjYXJkLVx1MDAzZXJ4X2RhdGFfbGlzdFtpXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjkxLVx0XHRcdFx0XHQgICAgICBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMjk5PXN0YXRpYyBpbnQgbXdpZmlleF9yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTMzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzM4OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2NsZWFudXBfdHhfYWdncihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzMzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMzU5PXN0YXRpYyB2b2lkIG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTM2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzYzOlx0bXdpZmlleF91c2JfZnJlZShjYXJkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEzNjU6XHRtd2lmaWV4X3VzYl9jbGVhbnVwX3R4X2FnZ3IoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTM2Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTM3MD1zdGF0aWMgaW50IG13aWZpZXhfcHJvZ19md193X2hlbHBlcihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MDc6c3RhdGljIGludCBtd2lmaWV4X3VzYl9kbmxkX2Z3KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUwOC1cdFx0XHRzdHJ1Y3QgbXdpZmlleF9md19pbWFnZSAqZncpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUyMzpcdHJldCA9IG13aWZpZXhfdXNiX3J4X2luaXQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyNC1cdGlmICghcmV0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjU6XHRcdHJldCA9IG13aWZpZXhfdXNiX3R4X2luaXQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTUzMD1zdGF0aWMgdm9pZCBtd2lmaWV4X3N1Ym1pdF9yeF91cmIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MzYtXHQgICAgKCFhdG9taWNfcmVhZChcdTAwMjZjYXJkLVx1MDAzZXJ4X2NtZF91cmJfcGVuZGluZykpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1Mzc6XHRcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXHUwMDI2Y2FyZC1cdTAwM2VyeF9jbWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzOC1cdFx0XHRcdFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU0MzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NDQtXHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTU1Mj1zdGF0aWMgaW50IG13aWZpZXhfcG1fd2FrZXVwX2NhcmQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTYzOnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3N1Ym1pdF9yZW1fcnhfdXJicyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTcyLVx0XHRjdHggPSBcdTAwMjZjYXJkLVx1MDAzZXJ4X2RhdGFfbGlzdFtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTczOlx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGN0eCwgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTc0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgdXNiX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5MC1cdC8qIFVTQiBzcGVjaWZpYyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTE6XHQuZG5sZF9mdyA9XHRcdG13aWZpZXhfdXNiX2RubGRfZncsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MjpcdC5jbWRyc3BfY29tcGxldGUgPVx0bXdpZmlleF91c2JfY21kX2V2ZW50X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTM6XHQuZXZlbnRfY29tcGxldGUgPVx0bXdpZmlleF91c2JfY21kX2V2ZW50X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTQ6XHQuaG9zdF90b19jYXJkID1cdFx0bXdpZmlleF91c2JfaG9zdF90b19jYXJkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTU6XHQuc3VibWl0X3JlbV9yeF91cmJzID1cdG13aWZpZXhfdXNiX3N1Ym1pdF9yZW1fcnhfdXJicyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk2Olx0Lm11bHRpX3BvcnRfcmVzeW5jID1cdG13aWZpZXhfdXNiX3BvcnRfcmVzeW5jLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTc6XHQuaXNfcG9ydF9yZWFkeSA9XHRtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTgtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE2MDA6bW9kdWxlX3VzYl9kcml2ZXIobXdpZmlleF91c2JfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNjAxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTY0CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBtd2lmaWV4YCBVU0IgRHJpdmVyIHdpdGggU3l6a2FsbGVyKioKCk9rYXksIHNvIHRoZSBgbXdpZmlleGAgZHJpdmVyICpkb2VzKiBoYXZlIGEgVVNCIGNvbXBvbmVudCwgc3BlY2lmaWNhbGx5IGBtd2lmaWV4X3VzYmAuIFRoYXQmIzM5O3MgZmFudGFzdGljLiBUaGF0IG1lYW5zIHdlIGNhbiBhYnNvbHV0ZWx5IHRhcmdldCBpdCB3aXRoIFVTQiBlbXVsYXRpb24gaW4gc3l6a2FsbGVyLiBUaGlzIG9wZW5zIHVwIGEgc2lnbmlmaWNhbnQgYXR0YWNrIHN1cmZhY2UuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hpY2ggZnVuY3Rpb25zIHdlIHNob3VsZCBmb2N1cyBvbi4gSSBzZWUgdHdvIGltbWVkaWF0ZWx5OiBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlc2UgYXJlIGFjY2Vzc2libGUgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLgoKYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGluIGBzY2FuLmNgLiBHaXZlbiB0aGF0LCBJJiMzOTttIGJldHRpbmcgaXTigJlzIGludm9sdmVkIGluIHBhcnNpbmcgc2NhbiByZXN1bHRzIG9yIGJlYWNvbiBpbmZvcm1hdGlvbi4gVGhhdCBzb3VuZHMgcHJvbWlzaW5nLCBwb3RlbnRpYWxseSB0cmlnZ2VyZWQgYnkgY3JhZnRlZCByZXNwb25zZXMgZnJvbSBlbXVsYXRlZCBVU0IgZGV2aWNlcy4KCmBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCByZXNpZGVzIGluIGB1dGlsLmNgLCB3aGljaCBsZWFkcyBtZSB0byBiZWxpZXZlIGl0IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgaW5pdGlhbCBzdGF0aW9uIHNldHVwIHByb2Nlc3MuIElmIHdlIGNhbiBtYW5pcHVsYXRlIFNUQSBjb25maWd1cmF0aW9uIGR1cmluZyBlbnVtZXJhdGlvbiwgd2UgbWlnaHQgYmUgYWJsZSB0byBleHBsb2l0IGEgdnVsbmVyYWJpbGl0eS4gVGhpcyBvbmUmIzM5O3Mgd29ydGggaW52ZXN0aWdhdGluZyBmdXJ0aGVyLgoKSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjYWxsIGdyYXBoIGFuZCBzZWUgZXhhY3RseSB3aGVyZSBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgZ2V0cyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIHByZWNpc2UgY2FsbCBwYXRoIGlzIGVzc2VudGlhbCB0byBjcmFmdGluZyBlZmZlY3RpdmUgZnV6emluZyBpbnB1dHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1Mzg9aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDAtXHRcdFx0ICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTQxOmludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDItXHRcdFx0XHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTExMTI9bXdpZmlleF9yZXRfODAyXzExX3NjYW5fZ2V0X3Rsdl9wdHJzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xMTgxLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxMTgyOmludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTExODMtXHRcdFx0XHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0xMjk9aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjE4MDpcdHJldHVybiBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHByaXYtXHUwMDNlYWRhcHRlciwgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE4MS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NTcKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byBCU1MgRGVzY3JpcHRvciBVcGRhdGVzKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGRlZmluaXRlbHkgcGFydCBvZiB0aGlzIEJTUyBkZXNjcmlwdG9yIHVwZGF0ZSBwcm9jZXNzLiBJdCYjMzk7cyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgbXdpZmlleF9maWxsX25ld19ic3NfZGVzY2AuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBVbmRlcnN0YW5kaW5nIHRoZSB1cHN0cmVhbSBjYWxscyBpcyBjcnVjaWFsIHRvIGRldGVybWluZSB0aGUgY29udGV4dCBhbmQgcHVycG9zZSBvZiBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIHNlZSB3aGVyZSBgbXdpZmlleF9maWxsX25ld19ic3NfZGVzY2AgaXRzZWxmIGlzIGJlaW5nIGludm9rZWQuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTUzNj1pbnQgbXdpZmlleF9nZXRfYnNzX2luZm8oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM3LVx0XHRcdCBzdHJ1Y3QgbXdpZmlleF9ic3NfaW5mbyAqKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTUzODppbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM5LVx0XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2NTU9c3RhdGljIGludCBtd2lmaWV4X3NhdmVfaGlkZGVuX3NzaWRfY2hhbm5lbHMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2NjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2Njc6XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTEtXHQvKiBiZWFjb25faWUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgaW4gZnVuY3Rpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTY5MjpcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTMtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE2OTk9c3RhdGljIGludCBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3MTA6XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzExLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzAtXHQvKiBiZWFjb25faWUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgaW4gZnVuY3Rpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTczMTpcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzItXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9NzY9aW50IG13aWZpZXhfcmVxdWVzdF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTI4LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjEyOTppbnQgbXdpZmlleF9maWxsX25ld19ic3NfZGVzYyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTEzMC1cdFx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfYnNzICpic3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMxOD1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MzM3Olx0XHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTMzOC1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDMyLVx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDMzOlx0ICogbXdpZmlleF9maWxsX25ld19ic3NfZGVzYygpLiBGcmVlIGl0IG5vdy5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MzQtXHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI3MwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBCU1MgRGVzY3JpcHRvciBVcGRhdGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYG13aWZpZXhgIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHByZXR0eSBjcnVjaWFsIGZvciBkZXNjcmliaW5nIG5ldyBCU1MgKEJhc2ljIFNlcnZpY2UgU2V0KSBlbnRyaWVzLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgaXQmIzM5O3MgY2FsbGVkIGZyb20gYSBmZXcga2V5IHBsYWNlczogYG13aWZpZXhfc2F2ZV9oaWRkZW5fc3NpZF9jaGFubmVsc2AsIHdoaWNoIGxpa2VseSBkZWFscyB3aXRoIHN0b3JpbmcgaW5mb3JtYXRpb24gYWJvdXQgaGlkZGVuIG5ldHdvcmtzOyBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCwgc3VnZ2VzdGluZyBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgZGV0YWlscyBvZiB0aGUgY3VycmVudGx5IGNvbm5lY3RlZCBCU1M7IGFuZCBgbXdpZmlleF9ic3Nfc3RhcnRgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGFzIGl0IHdpbGwgbmVlZCB0byBkZXNjcmliZSBhIEJTUyB3aGVuIHRoZSBjb25uZWN0aW9uIHN0YXJ0cy4KCkdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHRoaXMgZnVuY3Rpb24sIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGhvdyB0aGUgc3RhdGlvbiYjMzk7cyBIVCBjYXBhYmlsaXRpZXMgYXJlIHNldCwgc28gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGZ1bmN0aW9uIG5leHQuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGhpZ2ggdGhyb3VnaHB1dCBpbmZvcm1hdGlvbiBpcyBwcm9wZXJseSBhcHBsaWVkIHdoZW4gYSBCU1MgaXMgZGVzY3JpYmVkLCBzbyB0aGlzIHNlZW1zIGxpa2UgYSBsb2dpY2FsIG5leHQgYXJlYSB0byBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTE1OTA9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTkxOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU5Mi1cdFx0ICAgICAgIGludCBpZXNfbGVuLCBzdHJ1Y3QgbXdpZmlleF9zdGFfbm9kZSAqbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jPTk0PWludCBtd2lmaWV4X3Byb2Nlc3NfdWFwX2V2ZW50KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jLTE0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYzoxNDk6XHRcdG13aWZpZXhfc2V0X3N0YV9odF9jYXAocHJpdiwgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNTAtXHRcdFx0XHQgICAgICAgc2luZm8tXHUwMDNlYXNzb2NfcmVxX2llc19sZW4sIG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM9NzEyPXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmM6NzEzOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNzE0LVx0XHQgICAgICAgaW50IGllc19sZW4sIHN0cnVjdCBtd2lmaWV4X3N0YV9ub2RlICpub2RlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDAxOAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogYG13aWZpZXhgIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBzcG90dGVkIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgaGVyZSBpbiB0aGUgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgVVNCIGludGVyZmFjZSAoYG13aWZpZXhfdXNiYCkuIFRoZSBjcnVjaWFsIGNvbm5lY3Rpb24gaXMgdGhpczogYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGdldHMgY2FsbGVkIGZyb20gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgLiBUaGlzIG1lYW5zIHdlJiMzOTtyZSBsb29raW5nIGF0IGZ1bmN0aW9uYWwgY2hhbmdlcyB3aXRoaW4gdGhlIGRyaXZlciB0aGF0IHdlIGNhbiBwcm9iYWJseSB0cmlnZ2VyIHZpYSB0aGUgVVNCIGludGVyZmFjZS4gQW5kIGlmIGl0JiMzOTtzIFVTQiwgdGhlbiBVU0IgZW11bGF0aW9uIGJlY29tZXMgdGhlIG5hbWUgb2YgdGhlIGdhbWUuCgpUaGUgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gVGhlc2UgYm90aCBoYW5kbGUgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgZXh0cmFjdGVkIGZyb20gYmVhY29ucywgcHJvYmUgcmVzcG9uc2VzLCBvciBhc3NvY2lhdGlvbiByZXF1ZXN0cy4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgZnV6emluZyB0YXJnZXQgLSBjYXJlZnVsbHkgY3JhZnRlZCwgbWFsZm9ybWVkIElFcyBhcmUgYSBnby10byBmb3IgZmluZGluZyBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhpcyBpcyBhYnNvbHV0ZWx5IHJlYWNoYWJsZSwgYW5kIHdpdGggdGhlIFVTQiBpbnRlcmZhY2UsIGhpZ2hseSBmdXp6ZWFibGUuCgpOb3csIHRvIG1ha2Ugc3VyZSBJIGNhbiBhY3R1YWxseSBidWlsZCBhbmQgdGVzdCB0aGlzLCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfTVdJRklFWGAgYW5kIGBDT05GSUdfTVdJRklFWF9VU0JgIGFyZSB0aGUga2V5cyBoZXJlLiBJJiMzOTtsbCBtYWtlIHN1cmUgdGhlc2UgYXJlIGVuYWJsZWQgaW4gbXkgYnVpbGQgZW52aXJvbm1lbnQuIFRoaXMgaXMgYSBzb2xpZCBsZWFkOyBJJiMzOTtsbCBzdGFydCBjcmFmdGluZyBzb21lIGZ1enppbmcgcGF5bG9hZHMgdG8gaGl0IHRoZXNlIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1XSUZJRVgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDkyOQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hcnZlbGwgV2ktRmkgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgTWFydmVsbCBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgYG13aWZpZXhgIGRyaXZlciBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvYC4gVGhlIGluaXRpYWwgY29uZmlncyBJIHNlZSBhcmUgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O0FyZSB0aG9zZSB0aGUgb25seSBvbmVzPyYjMzQ7IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZy4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBkcml2ZXIsIGl0IGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYCwgc28gdGhvc2UgYXJlIGRlZmluaXRlbHkgcmVxdWlyZWQuIEkgc2hvdWxkIGV4cGxpY2l0bHkgaW5jbHVkZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgaW4gdGhlIGNvbmZpZyB0b28uCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSBzb21lIGZvY3VzIHN5bWJvbHMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBhcmUgbGlrZWx5IGJlaW5nIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guIEkmIzM5O3ZlIGdvdCBhIGZldyBjYW5kaWRhdGVzIGluIG1pbmQ6IGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCwgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLCBhbmQgYG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NgLgoKSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhlIGRlc2NyaXB0aW9uIHNheXMgaXQmIzM5O3MgY2FsbGVkIHdoZW4gcGFyc2luZyBJRXMsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB0aGUgcGF0Y2ggYXBwZWFycyB0byBiZSBkb2luZy4gYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGFsc28gc2VlbXMgcmVsZXZhbnQuCgpJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBuZWl0aGVyIG9mIHRob3NlIGtleSBmdW5jdGlvbnMgYXJlIGBzdGF0aWNgLCBzbyB0aGF0IEkgY2FuIHRyYWNlIHRoZW0gY29ycmVjdGx5LiBPa2F5LCB0aGV5JiMzOTtyZSBib3RoICpub3QqIHN0YXRpYywgc28gdGhhdCYjMzk7cyBnb29kLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBwb3RlbnRpYWwgZm9jdXMgc3ltYm9scy4gYG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnRgIGFuZCBgbXdpZmlleF9ic3Nfc3RhcnRgIG1pZ2h0IGJlIHJlbGV2YW50LCBidXQgSSB0aGluayBJJiMzOTtsbCBiZSBmaW5lIHN0YXJ0aW5nIHdpdGggYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgZm9yIG5vdy4KCkxldCYjMzk7cyBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbiBuYW1lczogYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLiBZZXMsIHRob3NlIGFyZSBjb3JyZWN0LgoKRmluYWxseSwgYXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSYjMzk7dmUgb3Zlcmxvb2tlZD8gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgV0xBTmAgYW5kIGBXTEFOX1ZFTkRPUl9NQVJWRUxMYCBhcmUgcHJvcGVybHkgc2V0LiBJdCYjMzk7cyBlYXN5IHRvIG1pc3MgdGhvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBXTEFOX1ZFTkRPUl9NQVJWRUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNYXJ2ZWxsIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5MjMKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1hcnZlbGwgV0xBTiBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gWWVzLCBhYnNvbHV0ZWx5LCB3ZSBuZWVkIGBXTEFOX1ZFTkRPUl9NQVJWRUxMYCBlbmFibGVkIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0LiBNeSBhbmFseXNpcyBpbmRpY2F0ZXMgdGhpcyBpcyBhIHdvcnRod2hpbGUgdGFyZ2V0LiAKCkkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBNeSByZWFzb25pbmcgaXMgc29saWQ6IHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgbGVuZ3RoIGNoZWNrcyB3aXRoaW4gdGhlIE1hcnZlbGwgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSB3aXRoaW4gd2lyZWxlc3MgY29tbXVuaWNhdGlvbnMuIEkmIzM5O3ZlIHBpbnBvaW50ZWQgdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0OiBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYC4gVGhlc2UgbmVlZCB0byBiZSBmcm9udCBhbmQgY2VudGVyIGluIHRoZSBmdXp6ZXImIzM5O3MgZm9jdXMgKGBGb2N1c1N5bWJvbHNgKS4KCkZ1cnRoZXJtb3JlLCBJJiMzOTttIGVuYWJsaW5nIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnM6IGBXTEFOX1ZFTkRPUl9NQVJWRUxMYCwgYE1XSUZJRVhgLCBhbmQgYE1XSUZJRVhfVVNCYC4gVGhlIGBtd2lmaWV4YCBkcml2ZXIgaXMgY2xlYXJseSBjZW50cmFsIGhlcmUsIGFuZCB0aGUgVVNCIGludGVyZmFjZSBwcmVzZW50cyBhIHBhcnRpY3VsYXJseSBhdHRyYWN0aXZlIGF0dGFjayBzdXJmYWNlLiBUaGUgZnV6emluZyBjYW4gYmUgZG9uZSB1c2luZyBVU0IgZW11bGF0aW9uLiBUaGUgZnVuY3Rpb25zIHRoYXQgYXJlIG1vZGlmaWVkIHByb2Nlc3MgSUVzIGZyb20gYmVhY29ucywgcHJvYmUgcmVzcG9uc2VzLCBhbmQgYXNzb2NpYXRpb24gcmVxdWVzdHMuIFRoZXNlIElFcyBhcmUgYWxsIHJlYWNoYWJsZSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIGZ1enplci4gVGhpcyBhbGwgbG9va3MgdmVyeSBwcm9taXNpbmcsIGFuZCB0aGUgbGVuZ3RoIGNoZWNrcywgaW4gdGhpcyBjb250ZXh0LCBhcmUgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGlkZW50aWZ5aW5nIHN1YnRsZSBidWZmZXIgb3ZlcmZsb3dzIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgYW5kIHBvdGVudGlhbGx5IGhpZ2hseSBlZmZlY3RpdmUgZnV6emluZyBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01BUlZFTEwmIzM0OywKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9zZXRfc3RhX2h0X2NhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgV0xBTiBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBpbiB0aGUgbXdpZmlleCBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSAobXdpZmlleF91c2IpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBwcm9jZXNzIElFcyBmcm9tIGJlYWNvbnMsIHByb2JlIHJlc3BvbnNlcywgYW5kIGFzc29jaWF0aW9uIHJlcXVlc3RzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOX1ZFTkRPUl9NQVJWRUxMJiMzNDssCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llJiMzNDssCiAgICAmIzM0O213aWZpZXhfc2V0X3N0YV9odF9jYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIFdMQU4gSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gdGhlIG13aWZpZXggZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiBpbnRlcmZhY2UgKG13aWZpZXhfdXNiKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgcHJvY2VzcyBJRXMgZnJvbSBiZWFjb25zLCBwcm9iZSByZXNwb25zZXMsIGFuZCBhc3NvY2lhdGlvbiByZXF1ZXN0cywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU2OjQ2LjU1NzI5MTA4MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTA0NDIyNDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5fVkVORE9SX01BUlZFTExcIixcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZVwiLFxuICAgIFwibXdpZmlleF9zZXRfc3RhX2h0X2NhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbGVuZ3RoIGNoZWNrcyBmb3IgdmFyaW91cyBXTEFOIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGluIHRoZSBtd2lmaWV4IGRyaXZlci4gVGhlIGRyaXZlciBoYXMgYSBVU0IgaW50ZXJmYWNlIChtd2lmaWV4X3VzYikgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIHByb2Nlc3MgSUVzIGZyb20gYmVhY29ucywgcHJvYmUgcmVzcG9uc2VzLCBhbmQgYXNzb2NpYXRpb24gcmVxdWVzdHMsIHdoaWNoIGFyZSByZWFjaGFibGUgYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU2OjQ2LjU1NzI5Njk0MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzODQ3NTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDlmM2M0YzM5NjlmNDI4NmZkZDhjMzNkMTU5ZjkzMmFlY2NiN2Y1ZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAxNiAwMTo1Njo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xcbmluZGV4IDk3YzBlYzNiODIyZTcwLi4yMjAzMWZhYmEwNTdmMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xcbkBAIC0xMzg0LDYgKzEzODQsOCBAQCBpbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZWJlYWNvbl9idWYpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBXTEFOX0VJRF9IVF9DQVBBQklMSVRZOlxcbitcXHRcXHRcXHRpZiAoZWxlbWVudF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25faHRfY2FwID0gKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICopXFxuIFxcdFxcdFxcdFxcdFxcdChjdXJyZW50X3B0ciArXFxuIFxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTM5Miw2ICsxMzk0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfSFRfT1BFUkFUSU9OOlxcbitcXHRcXHRcXHRpZiAoZWxlbWVudF9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24pKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25faHRfb3BlciA9XFxuIFxcdFxcdFxcdFxcdChzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbiAqKShjdXJyZW50X3B0ciArXFxuIFxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTQwMCw2ICsxNDA0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfVkhUX0NBUEFCSUxJVFk6XFxuK1xcdFxcdFxcdGlmIChlbGVtZW50X2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2VkaXNhYmxlXzExYWMgPSBmYWxzZTtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2ViY25fdmh0X2NhcCA9XFxuIFxcdFxcdFxcdFxcdCh2b2lkICopKGN1cnJlbnRfcHRyICtcXG5AQCAtMTQwOSw2ICsxNDE1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfVkhUX09QRVJBVElPTjpcXG4rXFx0XFx0XFx0aWYgKGVsZW1lbnRfbGVuIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfdmh0X29wZXJhdGlvbikpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZWJjbl92aHRfb3BlciA9XFxuIFxcdFxcdFxcdFxcdCh2b2lkICopKGN1cnJlbnRfcHRyICtcXG4gXFx0XFx0XFx0XFx0XFx0IHNpemVvZihzdHJ1Y3QgaWVlZV90eXBlc19oZWFkZXIpKTtcXG5AQCAtMTQxNyw2ICsxNDI1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfQlNTX0NPRVhfMjA0MDpcXG4rXFx0XFx0XFx0aWYgKCFlbGVtZW50X2xlbilcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdFxcdGJzc19lbnRyeS1cXHUwMDNlYmNuX2Jzc19jb18yMDQwID0gY3VycmVudF9wdHI7XFxuIFxcdFxcdFxcdGJzc19lbnRyeS1cXHUwMDNlYnNzX2NvXzIwNDBfb2Zmc2V0ID1cXG4gXFx0XFx0XFx0XFx0KHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG5AQCAtMTQyNyw2ICsxNDM3LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0KHUxNikgKGN1cnJlbnRfcHRyIC0gYnNzX2VudHJ5LVxcdTAwM2ViZWFjb25fYnVmKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9FSURfT1BNT0RFX05PVElGOlxcbitcXHRcXHRcXHRpZiAoIWVsZW1lbnRfbGVuKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnNzX2VudHJ5LVxcdTAwM2VvcGVyX21vZGUgPSAodm9pZCAqKWN1cnJlbnRfcHRyO1xcbiBcXHRcXHRcXHRic3NfZW50cnktXFx1MDAzZW9wZXJfbW9kZV9vZmZzZXQgPVxcbiBcXHRcXHRcXHRcXHRcXHQodTE2KSgodTggKilic3NfZW50cnktXFx1MDAzZW9wZXJfbW9kZSAtXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXFxuaW5kZXggN2QzNjMxZDIxMjIzNmMuLjg0NDIyM2MwNGUyZWYzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jXFxuQEAgLTcyMSw3ICs3MjEsNyBAQCBtd2lmaWV4X3NldF9zdGFfaHRfY2FwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICppZXMsXFxuIFxcbiBcXHRodF9jYXBfaWUgPSAodm9pZCAqKWNmZzgwMjExX2ZpbmRfaWUoV0xBTl9FSURfSFRfQ0FQQUJJTElUWSwgaWVzLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIGllc19sZW4pO1xcbi1cXHRpZiAoaHRfY2FwX2llKSB7XFxuK1xcdGlmIChodF9jYXBfaWUgXFx1MDAyNlxcdTAwMjYgaHRfY2FwX2llLVxcdTAwM2VsZW4gXFx1MDAzZT0gc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwKSkge1xcbiBcXHRcXHRodF9jYXAgPSAodm9pZCAqKShodF9jYXBfaWUgKyAxKTtcXG4gXFx0XFx0bm9kZS1cXHUwMDNlaXNfMTFuX2VuYWJsZWQgPSAxO1xcbiBcXHRcXHRub2RlLVxcdTAwM2VtYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtXFx1MDAzZWNhcF9pbmZvKSBcXHUwMDI2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU2OjQ3LjEyMTg4MzA4OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM1Mzk4MjEyNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIFdMQU4gSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gdGhlIG13aWZpZXggZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiBpbnRlcmZhY2UgKG13aWZpZXhfdXNiKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgcHJvY2VzcyBJRXMgZnJvbSBiZWFjb25zLCBwcm9iZSByZXNwb25zZXMsIGFuZCBhc3NvY2lhdGlvbiByZXF1ZXN0cywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0OWYzYzRjMzk2OWY0Mjg2ZmRkOGMzM2QxNTlmOTMyYWVjY2I3ZjVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMDE6NTY6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuaW5kZXggOTdjMGVjM2I4MjJlNzAuLjIyMDMxZmFiYTA1N2YxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xuQEAgLTEzODQsNiArMTM4NCw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdFx0XHRic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9FSURfSFRfQ0FQQUJJTElUWTpcbitcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCkpXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX2h0X2NhcCA9IChzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqKVxuIFx0XHRcdFx0XHQoY3VycmVudF9wdHIgK1xuIFx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IGllZWVfdHlwZXNfaGVhZGVyKSk7XG5AQCAtMTM5Miw2ICsxMzk0LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX0hUX09QRVJBVElPTjpcbitcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbikpXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX2h0X29wZXIgPVxuIFx0XHRcdFx0KHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uICopKGN1cnJlbnRfcHRyICtcbiBcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBpZWVlX3R5cGVzX2hlYWRlcikpO1xuQEAgLTE0MDAsNiArMTQwNCw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9WSFRfQ0FQQUJJTElUWTpcbitcdFx0XHRpZiAoZWxlbWVudF9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXApKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWRpc2FibGVfMTFhYyA9IGZhbHNlO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25fdmh0X2NhcCA9XG4gXHRcdFx0XHQodm9pZCAqKShjdXJyZW50X3B0ciArXG5AQCAtMTQwOSw2ICsxNDE1LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdFx0ICAgICAgYnNzX2VudHJ5LVx1MDAzZWJlYWNvbl9idWYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fRUlEX1ZIVF9PUEVSQVRJT046XG4rXHRcdFx0aWYgKGVsZW1lbnRfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV92aHRfb3BlcmF0aW9uKSlcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2ViY25fdmh0X29wZXIgPVxuIFx0XHRcdFx0KHZvaWQgKikoY3VycmVudF9wdHIgK1xuIFx0XHRcdFx0XHQgc2l6ZW9mKHN0cnVjdCBpZWVlX3R5cGVzX2hlYWRlcikpO1xuQEAgLTE0MTcsNiArMTQyNSw4IEBAIGludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4gXHRcdFx0XHRcdCAgICAgIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9CU1NfQ09FWF8yMDQwOlxuK1x0XHRcdGlmICghZWxlbWVudF9sZW4pXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHRic3NfZW50cnktXHUwMDNlYmNuX2Jzc19jb18yMDQwID0gY3VycmVudF9wdHI7XG4gXHRcdFx0YnNzX2VudHJ5LVx1MDAzZWJzc19jb18yMDQwX29mZnNldCA9XG4gXHRcdFx0XHQodTE2KSAoY3VycmVudF9wdHIgLSBic3NfZW50cnktXHUwMDNlYmVhY29uX2J1Zik7XG5AQCAtMTQyNyw2ICsxNDM3LDggQEAgaW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0XHRcdCh1MTYpIChjdXJyZW50X3B0ciAtIGJzc19lbnRyeS1cdTAwM2ViZWFjb25fYnVmKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0VJRF9PUE1PREVfTk9USUY6XG4rXHRcdFx0aWYgKCFlbGVtZW50X2xlbilcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2VvcGVyX21vZGUgPSAodm9pZCAqKWN1cnJlbnRfcHRyO1xuIFx0XHRcdGJzc19lbnRyeS1cdTAwM2VvcGVyX21vZGVfb2Zmc2V0ID1cbiBcdFx0XHRcdFx0KHUxNikoKHU4ICopYnNzX2VudHJ5LVx1MDAzZW9wZXJfbW9kZSAtXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbmluZGV4IDdkMzYzMWQyMTIyMzZjLi44NDQyMjNjMDRlMmVmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmNcbkBAIC03MjEsNyArNzIxLDcgQEAgbXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxuIFxuIFx0aHRfY2FwX2llID0gKHZvaWQgKiljZmc4MDIxMV9maW5kX2llKFdMQU5fRUlEX0hUX0NBUEFCSUxJVFksIGllcyxcbiBcdFx0XHRcdFx0ICAgICBpZXNfbGVuKTtcbi1cdGlmIChodF9jYXBfaWUpIHtcbitcdGlmIChodF9jYXBfaWUgXHUwMDI2XHUwMDI2IGh0X2NhcF9pZS1cdTAwM2VsZW4gXHUwMDNlPSBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9odF9jYXApKSB7XG4gXHRcdGh0X2NhcCA9ICh2b2lkICopKGh0X2NhcF9pZSArIDEpO1xuIFx0XHRub2RlLVx1MDAzZWlzXzExbl9lbmFibGVkID0gMTtcbiBcdFx0bm9kZS1cdTAwM2VtYXhfYW1zZHUgPSBsZTE2X3RvX2NwdShodF9jYXAtXHUwMDNlY2FwX2luZm8pIFx1MDAyNlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6NTY6NDcuMTIxODg0NjA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5MDUyODcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1hcnZlbGwgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgY2hhbmdlcyB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGFkZGluZyBsZW5ndGggY2hlY2tzIGZvciBhIHdob2xlIGJ1bmNoIG9mIFdMQU4gZWxlbWVudHMg4oCTIHRoaW5ncyBsaWtlIEhUIGFuZCBWSFQgY2FwYWJpbGl0aWVzIGFuZCBvcGVyYXRpb25zLCBhbmQgc29tZSBCU1MgY28tZXhpc3RlbmNlIGFuZCBvcGVyYXRpb24gbW9kZSBub3RpZmljYXRpb25zIOKAkyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYW5kIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCBmdW5jdGlvbnMuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBgbXdpZmlleGAgd2lyZWxlc3MgZHJpdmVyLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZXZlbiB0ZXN0IHRoaXMgcHJvcGVybHk/IFRoaXMgaXMgYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCB0aG9zZSB0aGluZ3MgYXJlIHVzdWFsbHkgYSBwYWluIHRvIGRlYWwgd2l0aCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4gVHlwaWNhbGx5LCB5b3UncmUgcmVsaWFudCBvbiBoYXZpbmcgZWl0aGVyIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiB0aGUgaGFyZHdhcmUgb3IsIGJldHRlciB5ZXQsIHNvbWUga2luZCBvZiBVU0IsIFNESU8sIG9yIFBDSWUgZW11bGF0aW9uIHRvIGFjdHVhbGx5IGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlIHByb3Blcmx5LiBCdXQgd2FpdCwgd2FzbuKAmXQgYG13aWZpZXhgIGRlc2lnbmVkIHRvIHN1cHBvcnQgU0RJTywgUENJZSwgKmFuZCogVVNCPyBUaGF0J3MgYSBodWdlIHBvdGVudGlhbCB3aW4hIFVTQiBkcml2ZXJzIGFyZSBvZnRlbiBtdWNoIG1vcmUgdGVzdGFibGUuIEVzcGVjaWFsbHkgc2luY2Ugc3l6a2FsbGVyIGhhcyBzb21lIHByZXR0eSBzb2xpZCBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgdXNpbmcgVVNCIGdhZGdldCBhbmQgZHVtbXlfaGNkLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgVVNCIGRyaXZlciBjb21wb25lbnQgaW4gdGhpcyB0aGluZy4gVGhhdCBjb3VsZCBtYWtlIHRlc3RpbmcgYW5kIGZ1enppbmcgdGhpcyBwYXRjaCBtdWNoIHNpbXBsZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NTQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMTo1Njo1Mi4xMTI0MTUzOTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NTA5NTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VzYlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0zNz1jb25maWcgTVdJRklFWF9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTQ1LVxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzo0NjpcXHQgIG13aWZpZXhfdXNiLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19NV0lGSUVYX1BDSUUpICs9IG13aWZpZXhfcGNpZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZTo0NDptd2lmaWV4X3VzYi15ICs9IHVzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19NV0lGSUVYX1VTQikgKz0gbXdpZmlleF91c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZS00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oPTkwPWVudW0gS0VZX1RZUEVfSUQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2Z3LmgtMTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oOjEyMzplbnVtIG13aWZpZXhfdXNiX2VwIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaC0xMjQtXFx0TVdJRklFWF9VU0JfRVBfQ01EX0VWRU5UID0gMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9NTU9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyMy0gKiBEbyBub3QgY2hlY2sgZm9yIGRhdGFfcmVjZWl2ZWQgZm9yIFVTQiwgYXMgZGF0YV9yZWNlaXZlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTI0OiAqIGlzIGhhbmRsZWQgaW4gbXdpZmlleF91c2JfcmVjdiBmb3IgVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjUtICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyB1c2Jfb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG13aWZpZXhfdXNiX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE2LVxcdC8qIDg3NjYgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Mzk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG13aWZpZXhfdXNiX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQxOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDY6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxODc6XFx0XFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXFx1MDAzZWVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5Ni1cXHRcXHRcXHQgKiB1cmIgZm9yIGNtZF9lcCB3aWxsIGJlIHJlLXN1Ym1pdHRlZCBpbiBjYWxsYmFja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxOTc6XFx0XFx0XFx0ICogbXdpZmlleF91c2JfcmVjdl9jb21wbGV0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXFx0XFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjMyLVxcdGlmIChjYXJkLVxcdTAwM2VyeF9jbWRfZXAgPT0gY29udGV4dC1cXHUwMDNlZXApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjMzOlxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY29udGV4dCwgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzUtXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyeF9wZW5kaW5nKSBcXHUwMDNjPSBISUdIX1JYX1BFTkRJTkcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjM2OlxcdFxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY29udGV4dCwgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNy1cXHRcXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjQ1OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI4NTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNS1cXHRcXHRcXHRcXHQgdXNiX3JjdmludHBpcGUoY2FyZC1cXHUwMDNldWRldiwgY3R4LVxcdTAwM2VlcCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjMxNjpcXHRcXHRcXHRcXHQgY3R4LVxcdTAwM2Vza2ItXFx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMTctXFx0XFx0XFx0XFx0ICh2b2lkICopY3R4LCBjYXJkLVxcdTAwM2VyeF9jbWRfaW50ZXJ2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMC1cXHRcXHRcXHRcXHQgIHVzYl9yY3ZidWxrcGlwZShjYXJkLVxcdTAwM2V1ZGV2LCBjdHgtXFx1MDAzZWVwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzIxOlxcdFxcdFxcdFxcdCAgY3R4LVxcdTAwM2Vza2ItXFx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMjItXFx0XFx0XFx0XFx0ICAodm9pZCAqKWN0eCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozNDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfZnJlZShzdHJ1Y3QgdXNiX2NhcmRfcmVjICpjYXJkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4NC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Mzg1OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4Ni1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzItICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjUzMzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTU5OS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjAwOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVdJRklFWF9SWF9EQVRBX1VSQjsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MjY6XFx0XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MjctXFx0XFx0XFx0XFx0XFx0XFx0ICBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYzMS1cXHRcXHRpZiAoY2FyZC1cXHUwMDNlcnhfY21kLnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjMyOlxcdFxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXFx1MDAyNmNhcmQtXFx1MDAzZXJ4X2NtZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjQ1OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Njk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfY29yZWR1bXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtd2lmaWV4X3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY3OTpcXHQubmFtZSA9IFxcXCJtd2lmaWV4X3VzYlxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4MDpcXHQucHJvYmUgPSBtd2lmaWV4X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgxOlxcdC5kaXNjb25uZWN0ID0gbXdpZmlleF91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgyOlxcdC5pZF90YWJsZSA9IG13aWZpZXhfdXNiX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODM6XFx0LnN1c3BlbmQgPSBtd2lmaWV4X3VzYl9zdXNwZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODQ6XFx0LnJlc3VtZSA9IG13aWZpZXhfdXNiX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg1LVxcdC5zb2Z0X3VuYmluZCA9IDEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY4Ni1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODc6XFx0XFx0LmNvcmVkdW1wID0gbXdpZmlleF91c2JfY29yZWR1bXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY4OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTcxND1zdGF0aWMgaW50IG13aWZpZXhfcmVhZF9kYXRhX3N5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggKnBidWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3MzQ6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcG9ydF9yZXN5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjc3NjpzdGF0aWMgYm9vbCBtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3ODk6c3RhdGljIGlubGluZSB1OCBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgwMTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDItXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdXNiX3R4X2RhdGFfcG9ydCAqcG9ydCwgdTggZXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODE4LVxcdFxcdFxcdFxcdCB1c2Jfc25kaW50cGlwZShjYXJkLVxcdTAwM2V1ZGV2LCBlcCksIHNrYl9zZW5kLVxcdTAwM2VkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4MTk6XFx0XFx0XFx0XFx0IHNrYl9zZW5kLVxcdTAwM2VsZW4sIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjAtXFx0XFx0XFx0XFx0ICh2b2lkICopY29udGV4dCwgY2FyZC1cXHUwMDNldHhfY21kX2ludGVydmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjQtXFx0XFx0XFx0XFx0ICBza2Jfc2VuZC1cXHUwMDNlZGF0YSwgc2tiX3NlbmQtXFx1MDAzZWxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODI1OlxcdFxcdFxcdFxcdCAgbXdpZmlleF91c2JfdHhfY29tcGxldGUsICh2b2lkICopY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MzctXFx0XFx0cG9ydC1cXHUwMDNlYmxvY2tfc3RhdHVzID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODM4OlxcdFxcdGFkYXB0ZXItXFx1MDAzZWRhdGFfc2VudCA9IG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODM5LVxcdFxcdHJldCA9IC1FTk9TUjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjg2MjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2Ioc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODYzLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTk0Ni0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6OTQ3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfYWdncl90eF9kYXRhKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy05NDgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Mi1cXHRpZiAoZl9zZW5kX2FnZ3JfYnVmKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwNjM6XFx0XFx0cmV0ID0gbXdpZmlleF91c2JfcHJlcGFyZV90eF9hZ2dyX3NrYihhZGFwdGVyLCBwb3J0LCBcXHUwMDI2c2tiX3NlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDY0LVxcdFxcdGlmICghcmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjUtXFx0XFx0XFx0Y29udGV4dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA2NjpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBjb250ZXh0LCBza2Jfc2VuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA3OS1cXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3NlbnQgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDgwOlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA4MS1cXHRcXHRcXHRcXHQvKiBubyBhdmFpbGFibGUgdXJiLCBwb3N0Y29weSBwYWNrZXQqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTUtXFx0XFx0Y29udGV4dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA5NjpcXHRcXHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDk3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGNvbnRleHQsIHNrYl9zZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTE5OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3R4X2FnZ3JfdG1vKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTI5LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cG9ydC1cXHUwMDNldHhfYWdncl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTEzMDpcXHRlcnIgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFxcdTAwMjZza2Jfc2VuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMzEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDAtXFx0XFx0YWRhcHRlci1cXHUwMDNlZGF0YV9zZW50ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE0MTpcXHRcXHRcXHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDItXFx0XFx0ZXJyID0gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0OS1cXHR1cmJfY254dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE1MDpcXHRlcnIgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgcG9ydC1cXHUwMDNldHhfZGF0YV9lcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1MS1cXHRcXHRcXHRcXHRcXHQgICAgIHVyYl9jbnh0LCBza2Jfc2VuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1OS0vKiBUaGlzIGZ1bmN0aW9uIHdyaXRlIGEgY29tbWFuZC9kYXRhIHBhY2tldCB0byBjYXJkLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTYwOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfaG9zdF90b19jYXJkKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTYxLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExOTItXFx0XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlZGF0YV9zZW50ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE5MzpcXHRcXHRcXHRcXHRcXHRcXHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExOTQtXFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjA4LVxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cG9ydC1cXHUwMDNldHhfYWdncl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIwOTpcXHRcXHRcXHRyZXQgPSAgbXdpZmlleF91c2JfYWdncl90eF9kYXRhKGFkYXB0ZXIsIGVwLCBza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMTAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0dHhfcGFyYW0sIHBvcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyMTg6XFx0cmV0dXJuIG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihhZGFwdGVyLCBwb3J0LCBlcCwgY29udGV4dCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyMjE6c3RhdGljIGludCBtd2lmaWV4X3VzYl90eF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNTctXFx0XFx0dGltZXJfc2V0dXAoXFx1MDAyNnBvcnQtXFx1MDAzZXR4X2FnZ3IudGltZXJfY254dC5ob2xkX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjU4OlxcdFxcdFxcdCAgICBtd2lmaWV4X3VzYl90eF9hZ2dyX3RtbywgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNTktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyNjQ6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yeF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyODA6XFx0aWYgKG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXFx1MDAyNmNhcmQtXFx1MDAzZXJ4X2NtZCwgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjgxLVxcdFxcdHJldHVybiAtMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjg5LVxcdFxcdFxcdHJldHVybiAtMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI5MDpcXHRcXHRpZiAobXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjkxLVxcdFxcdFxcdFxcdFxcdCAgICAgIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTI5OT1zdGF0aWMgaW50IG13aWZpZXhfcmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTMzODpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9jbGVhbnVwX3R4X2FnZ3Ioc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTMzOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTM1OT1zdGF0aWMgdm9pZCBtd2lmaWV4X3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTM2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTM2MzpcXHRtd2lmaWV4X3VzYl9mcmVlKGNhcmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzY1OlxcdG13aWZpZXhfdXNiX2NsZWFudXBfdHhfYWdncihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTM2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMzcwPXN0YXRpYyBpbnQgbXdpZmlleF9wcm9nX2Z3X3dfaGVscGVyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUwNzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2RubGRfZncoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUwOC1cXHRcXHRcXHRzdHJ1Y3QgbXdpZmlleF9md19pbWFnZSAqZncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUyMzpcXHRyZXQgPSBtd2lmaWV4X3VzYl9yeF9pbml0KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTI0LVxcdGlmICghcmV0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTI1OlxcdFxcdHJldCA9IG13aWZpZXhfdXNiX3R4X2luaXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTUzMD1zdGF0aWMgdm9pZCBtd2lmaWV4X3N1Ym1pdF9yeF91cmIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzNi1cXHQgICAgKCFhdG9taWNfcmVhZChcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfY21kX3VyYl9wZW5kaW5nKSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1Mzc6XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfY21kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTM4LVxcdFxcdFxcdFxcdFxcdCAgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1NDM6c3RhdGljIGludCBtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU0NC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTUyPXN0YXRpYyBpbnQgbXdpZmlleF9wbV93YWtldXBfY2FyZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1NjM6c3RhdGljIHZvaWQgbXdpZmlleF91c2Jfc3VibWl0X3JlbV9yeF91cmJzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NzItXFx0XFx0Y3R4ID0gXFx1MDAyNmNhcmQtXFx1MDAzZXJ4X2RhdGFfbGlzdFtpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU3MzpcXHRcXHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGN0eCwgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU3NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTU4ND1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5MC1cXHQvKiBVU0Igc3BlY2lmaWMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MTpcXHQuZG5sZF9mdyA9XFx0XFx0bXdpZmlleF91c2JfZG5sZF9mdyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MjpcXHQuY21kcnNwX2NvbXBsZXRlID1cXHRtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTM6XFx0LmV2ZW50X2NvbXBsZXRlID1cXHRtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTQ6XFx0Lmhvc3RfdG9fY2FyZCA9XFx0XFx0bXdpZmlleF91c2JfaG9zdF90b19jYXJkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk1OlxcdC5zdWJtaXRfcmVtX3J4X3VyYnMgPVxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yZW1fcnhfdXJicyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NjpcXHQubXVsdGlfcG9ydF9yZXN5bmMgPVxcdG13aWZpZXhfdXNiX3BvcnRfcmVzeW5jLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk3OlxcdC5pc19wb3J0X3JlYWR5ID1cXHRtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTk4LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE2MDA6bW9kdWxlX3VzYl9kcml2ZXIobXdpZmlleF91c2JfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTYwMS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6NTY6NTQuMTk3NTE3MjRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc4MjIzNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBtd2lmaWV4YCBVU0IgRHJpdmVyIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gdGhlIGBtd2lmaWV4YCBkcml2ZXIgKmRvZXMqIGhhdmUgYSBVU0IgY29tcG9uZW50LCBzcGVjaWZpY2FsbHkgYG13aWZpZXhfdXNiYC4gVGhhdCdzIGZhbnRhc3RpYy4gVGhhdCBtZWFucyB3ZSBjYW4gYWJzb2x1dGVseSB0YXJnZXQgaXQgd2l0aCBVU0IgZW11bGF0aW9uIGluIHN5emthbGxlci4gVGhpcyBvcGVucyB1cCBhIHNpZ25pZmljYW50IGF0dGFjayBzdXJmYWNlLlxuXG5Ob3csIGxldCdzIHNlZSB3aGljaCBmdW5jdGlvbnMgd2Ugc2hvdWxkIGZvY3VzIG9uLiBJIHNlZSB0d28gaW1tZWRpYXRlbHk6IGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBXZSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVzZSBhcmUgYWNjZXNzaWJsZSB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuXG5cbmBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBpcyBpbiBgc2Nhbi5jYC4gR2l2ZW4gdGhhdCwgSSdtIGJldHRpbmcgaXTigJlzIGludm9sdmVkIGluIHBhcnNpbmcgc2NhbiByZXN1bHRzIG9yIGJlYWNvbiBpbmZvcm1hdGlvbi4gVGhhdCBzb3VuZHMgcHJvbWlzaW5nLCBwb3RlbnRpYWxseSB0cmlnZ2VyZWQgYnkgY3JhZnRlZCByZXNwb25zZXMgZnJvbSBlbXVsYXRlZCBVU0IgZGV2aWNlcy5cblxuYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIHJlc2lkZXMgaW4gYHV0aWwuY2AsIHdoaWNoIGxlYWRzIG1lIHRvIGJlbGlldmUgaXQgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBpbml0aWFsIHN0YXRpb24gc2V0dXAgcHJvY2Vzcy4gSWYgd2UgY2FuIG1hbmlwdWxhdGUgU1RBIGNvbmZpZ3VyYXRpb24gZHVyaW5nIGVudW1lcmF0aW9uLCB3ZSBtaWdodCBiZSBhYmxlIHRvIGV4cGxvaXQgYSB2dWxuZXJhYmlsaXR5LiBUaGlzIG9uZSdzIHdvcnRoIGludmVzdGlnYXRpbmcgZnVydGhlci5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjYWxsIGdyYXBoIGFuZCBzZWUgZXhhY3RseSB3aGVyZSBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgZ2V0cyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIHByZWNpc2UgY2FsbCBwYXRoIGlzIGVzc2VudGlhbCB0byBjcmFmdGluZyBlZmZlY3RpdmUgZnV6emluZyBpbnB1dHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTY0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU2OjU4LjM3NTc0MzE3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE4NzQzNzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTM4PWludCBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDAtXFx0XFx0XFx0ICAgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU0MTppbnQgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0Mi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTExMj1td2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTE4MS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjExODI6aW50IG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTExODMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19lbnRyeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0xMjk9aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0xNzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjE4MDpcXHRyZXR1cm4gbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZShwcml2LVxcdTAwM2VhZGFwdGVyLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE4MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjAwLjM5NDQ5NDA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5Nzk0OTI3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBjb2RlIHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gQlNTIERlc2NyaXB0b3IgVXBkYXRlcyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGlzIGRlZmluaXRlbHkgcGFydCBvZiB0aGlzIEJTUyBkZXNjcmlwdG9yIHVwZGF0ZSBwcm9jZXNzLiBJdCdzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjYC4gTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIFVuZGVyc3RhbmRpbmcgdGhlIHVwc3RyZWFtIGNhbGxzIGlzIGNydWNpYWwgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZXh0IGFuZCBwdXJwb3NlIG9mIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gc2VlIHdoZXJlIGBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjYCBpdHNlbGYgaXMgYmVpbmcgaW52b2tlZC4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk1NywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjAzLjI5MjQ1NTQxOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzM4OTM1MTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTM2PWludCBtd2lmaWV4X2dldF9ic3NfaW5mbyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICosXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTM3LVxcdFxcdFxcdCBzdHJ1Y3QgbXdpZmlleF9ic3NfaW5mbyAqKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjE1Mzg6aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1MzktXFx0XFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNjU1PXN0YXRpYyBpbnQgbXdpZmlleF9zYXZlX2hpZGRlbl9zc2lkX2NoYW5uZWxzKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2NjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNjY3OlxcdHJldCA9IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MocHJpdiwgYnNzLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjY4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2OTEtXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNjkyOlxcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjkzLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNjk5PXN0YXRpYyBpbnQgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzEwOlxcdHJldCA9IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MocHJpdiwgYnNzLCBic3NfZGVzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzExLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE3MzAtXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzMxOlxcdCAqIG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2MoKS4gRnJlZSBpdCBub3cuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzMyLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTc2PWludCBtd2lmaWV4X3JlcXVlc3Rfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTI4LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzoxMjk6aW50IG13aWZpZXhfZmlsbF9uZXdfYnNzX2Rlc2Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTMwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0zMTg9aW50IG13aWZpZXhfYnNzX3N0YXJ0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHN0cnVjdCBjZmc4MDIxMV9ic3MgKmJzcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjMzNzpcXHRcXHRyZXQgPSBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKHByaXYsIGJzcywgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zMzgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MzItXFx0LyogYmVhY29uX2llIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGluIGZ1bmN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjQzMzpcXHQgKiBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjKCkuIEZyZWUgaXQgbm93LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MzQtXFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjA1LjAzMTM5Njk3MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjgzNTg4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCU1MgRGVzY3JpcHRvciBVcGRhdGVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBtd2lmaWV4YCBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIGBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjYC4gVGhpcyBmdW5jdGlvbiBzZWVtcyBwcmV0dHkgY3J1Y2lhbCBmb3IgZGVzY3JpYmluZyBuZXcgQlNTIChCYXNpYyBTZXJ2aWNlIFNldCkgZW50cmllcy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGl0J3MgY2FsbGVkIGZyb20gYSBmZXcga2V5IHBsYWNlczogYG13aWZpZXhfc2F2ZV9oaWRkZW5fc3NpZF9jaGFubmVsc2AsIHdoaWNoIGxpa2VseSBkZWFscyB3aXRoIHN0b3JpbmcgaW5mb3JtYXRpb24gYWJvdXQgaGlkZGVuIG5ldHdvcmtzOyBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCwgc3VnZ2VzdGluZyBpdCdzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyBkZXRhaWxzIG9mIHRoZSBjdXJyZW50bHkgY29ubmVjdGVkIEJTUzsgYW5kIGBtd2lmaWV4X2Jzc19zdGFydGAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgYXMgaXQgd2lsbCBuZWVkIHRvIGRlc2NyaWJlIGEgQlNTIHdoZW4gdGhlIGNvbm5lY3Rpb24gc3RhcnRzLlxuXG5HaXZlbiB0aGUgaW1wb3J0YW5jZSBvZiB0aGlzIGZ1bmN0aW9uLCBteSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBob3cgdGhlIHN0YXRpb24ncyBIVCBjYXBhYmlsaXRpZXMgYXJlIHNldCwgc28gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgZnVuY3Rpb24gbmV4dC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgaGlnaCB0aHJvdWdocHV0IGluZm9ybWF0aW9uIGlzIHByb3Blcmx5IGFwcGxpZWQgd2hlbiBhIEJTUyBpcyBkZXNjcmliZWQsIHNvIHRoaXMgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgbmV4dCBhcmVhIHRvIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzI3MywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjA4LjQ5OTc1OTE1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5Njg5MDYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTU5MD12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTkxOm13aWZpZXhfc2V0X3N0YV9odF9jYXAoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgY29uc3QgdTggKmllcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1OTItXFx0XFx0ICAgICAgIGludCBpZXNfbGVuLCBzdHJ1Y3QgbXdpZmlleF9zdGFfbm9kZSAqbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2V2ZW50LmM9OTQ9aW50IG13aWZpZXhfcHJvY2Vzc191YXBfZXZlbnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9ldmVudC5jOjE0OTpcXHRcXHRtd2lmaWV4X3NldF9zdGFfaHRfY2FwKHByaXYsIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfZXZlbnQuYy0xNTAtXFx0XFx0XFx0XFx0ICAgICAgIHNpbmZvLVxcdTAwM2Vhc3NvY19yZXFfaWVzX2xlbiwgbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXRpbC5jPTcxMj12b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3V0aWwuYzo3MTM6bXdpZmlleF9zZXRfc3RhX2h0X2NhcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqaWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91dGlsLmMtNzE0LVxcdFxcdCAgICAgICBpbnQgaWVzX2xlbiwgc3RydWN0IG13aWZpZXhfc3RhX25vZGUgKm5vZGUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjEwLjM5NjY2MTg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzIwNDcyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGBtd2lmaWV4YCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHNwb3R0ZWQgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBoZXJlIGluIHRoZSBgbXdpZmlleGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBVU0IgaW50ZXJmYWNlIChgbXdpZmlleF91c2JgKS4gVGhlIGNydWNpYWwgY29ubmVjdGlvbiBpcyB0aGlzOiBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAgZ2V0cyBjYWxsZWQgZnJvbSBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAuIFRoaXMgbWVhbnMgd2UncmUgbG9va2luZyBhdCBmdW5jdGlvbmFsIGNoYW5nZXMgd2l0aGluIHRoZSBkcml2ZXIgdGhhdCB3ZSBjYW4gcHJvYmFibHkgdHJpZ2dlciB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuIEFuZCBpZiBpdCdzIFVTQiwgdGhlbiBVU0IgZW11bGF0aW9uIGJlY29tZXMgdGhlIG5hbWUgb2YgdGhlIGdhbWUuXG5cblRoZSBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgYXJlIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgLiBUaGVzZSBib3RoIGhhbmRsZSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBleHRyYWN0ZWQgZnJvbSBiZWFjb25zLCBwcm9iZSByZXNwb25zZXMsIG9yIGFzc29jaWF0aW9uIHJlcXVlc3RzLiBUaGF0J3MgYSBjbGFzc2ljIGZ1enppbmcgdGFyZ2V0IC0gY2FyZWZ1bGx5IGNyYWZ0ZWQsIG1hbGZvcm1lZCBJRXMgYXJlIGEgZ28tdG8gZm9yIGZpbmRpbmcgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIFRoaXMgaXMgYWJzb2x1dGVseSByZWFjaGFibGUsIGFuZCB3aXRoIHRoZSBVU0IgaW50ZXJmYWNlLCBoaWdobHkgZnV6emVhYmxlLlxuXG5Ob3csIHRvIG1ha2Ugc3VyZSBJIGNhbiBhY3R1YWxseSBidWlsZCBhbmQgdGVzdCB0aGlzLCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCBsb29rcyBsaWtlIGBDT05GSUdfTVdJRklFWGAgYW5kIGBDT05GSUdfTVdJRklFWF9VU0JgIGFyZSB0aGUga2V5cyBoZXJlLiBJJ2xsIG1ha2Ugc3VyZSB0aGVzZSBhcmUgZW5hYmxlZCBpbiBteSBidWlsZCBlbnZpcm9ubWVudC4gVGhpcyBpcyBhIHNvbGlkIGxlYWQ7IEknbGwgc3RhcnQgY3JhZnRpbmcgc29tZSBmdXp6aW5nIHBheWxvYWRzIHRvIGhpdCB0aGVzZSBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDE4LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjE0LjYyODcxMjk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTEwNDgxNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNV0lGSUVYXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMTo1NzoxNi43MzkyMDA3MjZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxMjUxMDExMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1hcnZlbGwgV2ktRmkgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE1hcnZlbGwgV2ktRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBtd2lmaWV4YCBkcml2ZXIgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2AuIFRoZSBpbml0aWFsIGNvbmZpZ3MgSSBzZWUgYXJlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgXCJBcmUgdGhvc2UgdGhlIG9ubHkgb25lcz9cIiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGRyaXZlciwgaXQgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgLCBzbyB0aG9zZSBhcmUgZGVmaW5pdGVseSByZXF1aXJlZC4gSSBzaG91bGQgZXhwbGljaXRseSBpbmNsdWRlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBpbiB0aGUgY29uZmlnIHRvby5cblxuTm93LCBsZXQncyBpZGVudGlmeSBzb21lIGZvY3VzIHN5bWJvbHMuIEknbSB0aGlua2luZyBhYm91dCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBsaWtlbHkgYmVpbmcgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4gSSd2ZSBnb3QgYSBmZXcgY2FuZGlkYXRlcyBpbiBtaW5kOiBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAsIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCwgYW5kIGBtd2lmaWV4X2ZpbGxfbmV3X2Jzc19kZXNjYC5cblxuSSdtIGxlYW5pbmcgdG93YXJkcyBgbXdpZmlleF91cGRhdGVfYnNzX2Rlc2Nfd2l0aF9pZWAgYXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgZGVzY3JpcHRpb24gc2F5cyBpdCdzIGNhbGxlZCB3aGVuIHBhcnNpbmcgSUVzLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgdGhlIHBhdGNoIGFwcGVhcnMgdG8gYmUgZG9pbmcuIGBtd2lmaWV4X3NldF9zdGFfaHRfY2FwYCBhbHNvIHNlZW1zIHJlbGV2YW50LlxuXG5JIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBuZWl0aGVyIG9mIHRob3NlIGtleSBmdW5jdGlvbnMgYXJlIGBzdGF0aWNgLCBzbyB0aGF0IEkgY2FuIHRyYWNlIHRoZW0gY29ycmVjdGx5LiBPa2F5LCB0aGV5J3JlIGJvdGggKm5vdCogc3RhdGljLCBzbyB0aGF0J3MgZ29vZC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIHBvdGVudGlhbCBmb2N1cyBzeW1ib2xzLiBgbXdpZmlleF9wcm9jZXNzX3VhcF9ldmVudGAgYW5kIGBtd2lmaWV4X2Jzc19zdGFydGAgbWlnaHQgYmUgcmVsZXZhbnQsIGJ1dCBJIHRoaW5rIEknbGwgYmUgZmluZSBzdGFydGluZyB3aXRoIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYCBhbmQgYG13aWZpZXhfc2V0X3N0YV9odF9jYXBgIGZvciBub3cuXG5cbkxldCdzIGRvdWJsZSBjaGVjayB0aG9zZSBjb25maWd1cmF0aW9uIG5hbWVzOiBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAuIFllcywgdGhvc2UgYXJlIGNvcnJlY3QuXG5cbkZpbmFsbHksIGFyZSB0aGVyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIEkndmUgb3Zlcmxvb2tlZD8gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBXTEFOYCBhbmQgYFdMQU5fVkVORE9SX01BUlZFTExgIGFyZSBwcm9wZXJseSBzZXQuIEl0J3MgZWFzeSB0byBtaXNzIHRob3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDkyOSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMTo1NzoyMi40NTE3MzYzMTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NzMyMzc3ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01BUlZFTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWctMy1cXHRib29sIFxcXCJNYXJ2ZWxsIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjU3OjI1LjkyNDk4MzkxMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjU3NjIxMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1hcnZlbGwgV0xBTiBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFllcywgYWJzb2x1dGVseSwgd2UgbmVlZCBgV0xBTl9WRU5ET1JfTUFSVkVMTGAgZW5hYmxlZCBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydC4gTXkgYW5hbHlzaXMgaW5kaWNhdGVzIHRoaXMgaXMgYSB3b3J0aHdoaWxlIHRhcmdldC4gXG5cbkknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIE15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBsZW5ndGggY2hlY2tzIHdpdGhpbiB0aGUgTWFydmVsbCBgbXdpZmlleGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIHdpdGhpbiB3aXJlbGVzcyBjb21tdW5pY2F0aW9ucy4gSSd2ZSBwaW5wb2ludGVkIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldDogYG13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVgIGFuZCBgbXdpZmlleF9zZXRfc3RhX2h0X2NhcGAuIFRoZXNlIG5lZWQgdG8gYmUgZnJvbnQgYW5kIGNlbnRlciBpbiB0aGUgZnV6emVyJ3MgZm9jdXMgKGBGb2N1c1N5bWJvbHNgKS5cblxuRnVydGhlcm1vcmUsIEknbSBlbmFibGluZyB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zOiBgV0xBTl9WRU5ET1JfTUFSVkVMTGAsIGBNV0lGSUVYYCwgYW5kIGBNV0lGSUVYX1VTQmAuIFRoZSBgbXdpZmlleGAgZHJpdmVyIGlzIGNsZWFybHkgY2VudHJhbCBoZXJlLCBhbmQgdGhlIFVTQiBpbnRlcmZhY2UgcHJlc2VudHMgYSBwYXJ0aWN1bGFybHkgYXR0cmFjdGl2ZSBhdHRhY2sgc3VyZmFjZS4gVGhlIGZ1enppbmcgY2FuIGJlIGRvbmUgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBtb2RpZmllZCBwcm9jZXNzIElFcyBmcm9tIGJlYWNvbnMsIHByb2JlIHJlc3BvbnNlcywgYW5kIGFzc29jaWF0aW9uIHJlcXVlc3RzLiBUaGVzZSBJRXMgYXJlIGFsbCByZWFjaGFibGUgYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBmdXp6ZXIuIFRoaXMgYWxsIGxvb2tzIHZlcnkgcHJvbWlzaW5nLCBhbmQgdGhlIGxlbmd0aCBjaGVja3MsIGluIHRoaXMgY29udGV4dCwgYXJlIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBpZGVudGlmeWluZyBzdWJ0bGUgYnVmZmVyIG92ZXJmbG93cyBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIGFuZCBwb3RlbnRpYWxseSBoaWdobHkgZWZmZWN0aXZlIGZ1enppbmcgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTIzLCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMTo1NzozMC41ODI2MDc0ODVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTA5MTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTl9WRU5ET1JfTUFSVkVMTFwiLFxuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llXCIsXG4gICAgXCJtd2lmaWV4X3NldF9zdGFfaHRfY2FwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBsZW5ndGggY2hlY2tzIGZvciB2YXJpb3VzIFdMQU4gSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgaW4gdGhlIG13aWZpZXggZHJpdmVyLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiBpbnRlcmZhY2UgKG13aWZpZXhfdXNiKSB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24uIFRoZSBtb2RpZmllZCBmdW5jdGlvbnMgcHJvY2VzcyBJRXMgZnJvbSBiZWFjb25zLCBwcm9iZSByZXNwb25zZXMsIGFuZCBhc3NvY2lhdGlvbiByZXF1ZXN0cywgd2hpY2ggYXJlIHJlYWNoYWJsZSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOX1ZFTkRPUl9NQVJWRUxMXCIsXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfdXBkYXRlX2Jzc19kZXNjX3dpdGhfaWVcIixcbiAgICBcIm13aWZpZXhfc2V0X3N0YV9odF9jYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGxlbmd0aCBjaGVja3MgZm9yIHZhcmlvdXMgV0xBTiBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKSBpbiB0aGUgbXdpZmlleCBkcml2ZXIuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSAobXdpZmlleF91c2IpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBwcm9jZXNzIElFcyBmcm9tIGJlYWNvbnMsIHByb2JlIHJlc3BvbnNlcywgYW5kIGFzc29jaWF0aW9uIHJlcXVlc3RzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownhkbx[1] Phase: Succeeded StartedAt: 2026-07-16 01:57:41 +0000 UTC FinishedAt: 2026-07-16 01:57:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 01:57:41 +0000 UTC FinishedAt: 2026-07-16 01:57:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2] Phase: Succeeded StartedAt: 2026-07-16 01:57:41 +0000 UTC FinishedAt: 2026-07-16 04:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-16 01:57:41 +0000 UTC FinishedAt: 2026-07-16 04:00:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-16 01:57:41 +0000 UTC FinishedAt: 2026-07-16 01:57:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-16 01:57:41 +0000 UTC FinishedAt: 2026-07-16 01:57:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflownhkbx/series-workflownhkbx-convert-artifact-626536649/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-16 01:57:51 +0000 UTC FinishedAt: 2026-07-16 02:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-16 01:57:51 +0000 UTC FinishedAt: 2026-07-16 02:33:01 +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:*62a31f86-03b3-4274-8a01-1a217e42d8b8,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-workflownhkbx/series-workflownhkbx-convert-artifact-626536649/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": "faffd02a-b0a4-465f-9f54-ab1986195b92", "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-workflownhkbx/series-workflownhkbx-build-action-2220470183/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-16 01:57:51 +0000 UTC FinishedAt: 2026-07-16 02:32:51 +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:*62a31f86-03b3-4274-8a01-1a217e42d8b8,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-workflownhkbx/series-workflownhkbx-convert-artifact-626536649/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": "faffd02a-b0a4-465f-9f54-ab1986195b92", "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-workflownhkbx/series-workflownhkbx-build-action-2220470183/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-16 02:33:01 +0000 UTC FinishedAt: 2026-07-16 02:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-16 02:33:01 +0000 UTC FinishedAt: 2026-07-16 02:33:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-16 02:33:01 +0000 UTC FinishedAt: 2026-07-16 02:33:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-16 02:33:01 +0000 UTC FinishedAt: 2026-07-16 02:33:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflownhkbx/series-workflownhkbx-convert-artifact-1976029660/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-16 02:33:11 +0000 UTC FinishedAt: 2026-07-16 02:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-16 02:33:11 +0000 UTC FinishedAt: 2026-07-16 02:35:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*faffd02a-b0a4-465f-9f54-ab1986195b92,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-workflownhkbx/series-workflownhkbx-build-action-2220470183/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-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-16 02:35:12 +0000 UTC FinishedAt: 2026-07-16 02:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-16 02:35:12 +0000 UTC FinishedAt: 2026-07-16 02:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-16 02:35:12 +0000 UTC FinishedAt: 2026-07-16 03:08:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-16 02:35:12 +0000 UTC FinishedAt: 2026-07-16 03:08:40 +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:*62a31f86-03b3-4274-8a01-1a217e42d8b8,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-workflownhkbx/series-workflownhkbx-convert-artifact-1976029660/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": "89aff11a-5001-4401-9218-4b8b96ec6574", "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-workflownhkbx/series-workflownhkbx-build-action-2288948792/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-16 02:35:12 +0000 UTC FinishedAt: 2026-07-16 03:08:30 +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:*62a31f86-03b3-4274-8a01-1a217e42d8b8,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-workflownhkbx/series-workflownhkbx-convert-artifact-1976029660/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": "89aff11a-5001-4401-9218-4b8b96ec6574", "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-workflownhkbx/series-workflownhkbx-build-action-2288948792/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-16 03:08:40 +0000 UTC FinishedAt: 2026-07-16 03:08:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-16 03:08:40 +0000 UTC FinishedAt: 2026-07-16 03:08:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-16 03:08:40 +0000 UTC FinishedAt: 2026-07-16 03:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-16 03:08:40 +0000 UTC FinishedAt: 2026-07-16 03:10:49 +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:*89aff11a-5001-4401-9218-4b8b96ec6574,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-workflownhkbx/series-workflownhkbx-build-action-2288948792/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-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-16 03:10:59 +0000 UTC FinishedAt: 2026-07-16 04:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-16 03:10:59 +0000 UTC FinishedAt: 2026-07-16 04:00:18 +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":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"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:*faffd02a-b0a4-465f-9f54-ab1986195b92,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*89aff11a-5001-4401-9218-4b8b96ec6574,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-workflownhkbx/series-workflownhkbx-build-action-2220470183/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-workflownhkbx/series-workflownhkbx-build-action-2288948792/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-16 03:10:59 +0000 UTC FinishedAt: 2026-07-16 03:11:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-16 03:10:59 +0000 UTC FinishedAt: 2026-07-16 03:11:07 +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":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"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-workflownhkbx/series-workflownhkbx-convert-artifact-1964980133/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-16 03:10:59 +0000 UTC FinishedAt: 2026-07-16 03:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-16 03:10:59 +0000 UTC FinishedAt: 2026-07-16 03:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-16 03:10:59 +0000 UTC FinishedAt: 2026-07-16 03:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-16 03:11:09 +0000 UTC FinishedAt: 2026-07-16 04:00:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflownhkbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_update_bss_desc_with_ie","mwifiex_set_sta_ht_cap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MARVELL","MWIFIEX","MWIFIEX_USB"],"series_id":"34cd8c72-389e-44ce-aa45-aeda910ed756","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-16 03:11:09 +0000 UTC FinishedAt: 2026-07-16 04:00:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*faffd02a-b0a4-465f-9f54-ab1986195b92,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*89aff11a-5001-4401-9218-4b8b96ec6574,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-workflownhkbx/series-workflownhkbx-build-action-2220470183/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-workflownhkbx/series-workflownhkbx-build-action-2288948792/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-workflownhkbx/series-workflownhkbx-convert-artifact-1964980133/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,}