Name: series-workflow76fq2 Phase: Succeeded StartedAt: 2026-07-17 01:39:50 +0000 UTC FinishedAt: 2026-07-17 03:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[0] Phase: Succeeded StartedAt: 2026-07-17 01:39:50 +0000 UTC FinishedAt: 2026-07-17 01:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 01:39:50 +0000 UTC FinishedAt: 2026-07-17 01:57:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "d42e6d72-f004-4456-99b2-a04d35db46f5" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "emit_alu_r", "emit_alu_r64", "emit_divmod_r64", "jit_smod64" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzE3IDAxOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X2FsdV9yJiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3I2NCYjMzQ7LAogICAgJiMzNDtlbWl0X2Rpdm1vZF9yNjQmIzM0OywKICAgICYjMzQ7aml0X3Ntb2Q2NCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgZm9yIEJQRiBwcm9ncmFtcyBvbiBNSVBTLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIEpJVCBjb21waWxlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBuZXcgc2lnbmVkIG9wZXJhdGlvbnMgYW5kIGRvZXMgbm90IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDAxOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGU0MmNhNjdjNzE5Mjc2MzUyY2I3OTMyYjhmYTYyNjNkOGY5NzE5ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDE3IDAxOjU0OjAyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXG5pbmRleCBiNDNiZmQ0NDUyNTIxMy4uOWQzZWRiNTllZmMwOTggMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXG5AQCAtODUsMTUgJiM0Mzs4NSwyMCBAQCBJcF91MXUyKF9jdGMxKTtcbiBJcF91MnUxKF9jdGNtc2EpO1xuIElwX3UydTFzMyhfZGFkZGl1KTtcbiBJcF91M3UxdTIoX2RhZGR1KTtcbiYjNDM7SXBfdTF1MihfZGRpdik7XG4mIzQzO0lwX3UzdTF1MihfZGRpdl9yNik7XG4gSXBfdTF1MihfZGRpdnUpO1xuIElwX3UzdTF1MihfZGRpdnVfcjYpO1xuIElwX3UxKF9kaSk7XG4gSXBfdTJ1MW1zYnUzKF9kaW5zKTtcbiBJcF91MnUxbXNidTMoX2RpbnNtKTtcbiBJcF91MnUxbXNidTMoX2RpbnN1KTtcbiYjNDM7SXBfdTF1MihfZGl2KTtcbiYjNDM7SXBfdTN1MXUyKF9kaXZfcjYpO1xuIElwX3UxdTIoX2RpdnUpO1xuIElwX3UzdTF1MihfZGl2dV9yNik7XG4gSXBfdTF1MnUzKF9kbWZjMCk7XG4mIzQzO0lwX3UzdTF1MihfZG1vZCk7XG4gSXBfdTN1MXUyKF9kbW9kdSk7XG4gSXBfdTF1MnUzKF9kbXRjMCk7XG4gSXBfdTF1MihfZG11bHR1KTtcbkBAIC0xMzUsNiAmIzQzOzE0MCw3IEBAIElwX3UxdTJ1MyhfbWZjMCk7XG4gSXBfdTF1MnUzKF9tZmhjMCk7XG4gSXBfdTEoX21maGkpO1xuIElwX3UxKF9tZmxvKTtcbiYjNDM7SXBfdTN1MXUyKF9tb2QpO1xuIElwX3UzdTF1MihfbW9kdSk7XG4gSXBfdTN1MXUyKF9tb3ZuKTtcbiBJcF91M3UxdTIoX21vdnopO1xuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuaW5kZXggZTE1YzY3MDBjZDA4ODQuLmVmMWEyYjA0MDA3MDA3IDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcbkBAIC03NSw2ICYjNDM7NzUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fY3RjbXNhXVx0PSB7TShtc2Ffb3AsIDAsIG1zYV9jdGNfb3AsIDAsIDAsIG1zYV9lbG1fb3ApLCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RhZGRpdV1cdD0ge00oZGFkZGl1X29wLCAwLCAwLCAwLCAwLCAwKSwgUlMgfCBSVCB8IFNJTU19LFxuIFx0W2luc25fZGFkZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRhZGR1X29wKSwgUlMgfCBSVCB8IFJEfSxcbiYjNDM7XHRbaW5zbl9kZGl2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2X29wKSwgUlMgfCBSVH0sXG4mIzQzO1x0W2luc25fZGRpdl9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kZGl2Nl9vcCwgZGRpdl9vcCksXG4mIzQzO1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RkaXZ1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2dV9vcCksIFJTIHwgUlR9LFxuIFx0W2luc25fZGRpdnVfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2RkaXZ1Nl9vcCwgZGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbkBAIC04MiwxMCAmIzQzOzg1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9kaW5zXVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc19vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RpbnNtXVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc21fb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kaW5zdV1cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnN1X29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuJiM0MztcdFtpbnNuX2Rpdl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2X29wKSwgUlMgfCBSVH0sXG4mIzQzO1x0W2luc25fZGl2X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfZGl2Nl9vcCwgZGl2X29wKSxcbiYjNDM7XHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZGl2dV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2dV9vcCksIFJTIHwgUlR9LFxuIFx0W2luc25fZGl2dV9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9kaXZ1Nl9vcCwgZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG1mYzBdXHQ9IHtNKGNvcDBfb3AsIGRtZmNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcbiYjNDM7XHRbaW5zbl9kbW9kXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2Rtb2Rfb3AsIGRkaXZfb3ApLFxuJiM0MztcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbW9kdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZG1vZHVfb3AsIGRkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbXRjMF1cdD0ge00oY29wMF9vcCwgZG10Y19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxuQEAgLTE0MCw2ICYjNDM7MTQ4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX21maGMwXVx0PSB7TShjb3AwX29wLCBtZmhjMF9vcCwgMCwgMCwgMCwgMCksICBSVCB8IFJEIHwgU0VUfSxcbiBcdFtpbnNuX21maGldXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1maGlfb3ApLCBSRH0sXG4gXHRbaW5zbl9tZmxvXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmxvX29wKSwgUkR9LFxuJiM0MztcdFtpbnNuX21vZF1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X21vZF9vcCwgZGl2X29wKSxcbiYjNDM7XHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fbW9kdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9tb2R1X29wLCBkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9tb3ZuXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtb3ZuX29wKSwgUlMgfCBSVCB8IFJEfSxcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS5jIGIvYXJjaC9taXBzL21tL3Vhc20uY1xuaW5kZXggMTI1MTQwOTc5ZDYyYzUuLjlkODdkNTcxNjRkNzk4IDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20uY1xuQEAgLTQ5LDE2ICYjNDM7NDksMTcgQEAgZW51bSBvcGNvZGUge1xuIFx0aW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLFxuIFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcbiBcdGluc25fYmx0eiwgaW5zbl9ibHR6bCwgaW5zbl9ibmUsIGluc25fYnJlYWssIGluc25fY2FjaGUsIGluc25fY2ZjMSxcbi1cdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSxcbi1cdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxuLVx0aW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbiYjNDM7XHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdixcbiYjNDM7XHRpbnNuX2RkaXZfcjYsIGluc25fZGRpdnUsIGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSxcbiYjNDM7XHRpbnNuX2RpbnN1LCBpbnNuX2RpdiwgaW5zbl9kaXZfcjYsIGluc25fZGl2dSwgaW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLFxuJiM0MztcdGluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsXG4gXHRpbnNuX2RtdWx1LCBpbnNuX2Ryb3RyLCBpbnNuX2Ryb3RyMzIsIGluc25fZHNiaCwgaW5zbl9kc2hkLCBpbnNuX2RzbGwsXG4gXHRpbnNuX2RzbGwzMiwgaW5zbl9kc2xsdiwgaW5zbl9kc3JhLCBpbnNuX2RzcmEzMiwgaW5zbl9kc3JhdiwgaW5zbl9kc3JsLFxuIFx0aW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLFxuIFx0aW5zbl9qLCBpbnNuX2phbCwgaW5zbl9qYWxyLCBpbnNuX2pyLCBpbnNuX2xiLCBpbnNuX2xidSwgaW5zbl9sZCxcbiBcdGluc25fbGRkaXIsIGluc25fbGRwdGUsIGluc25fbGR4LCBpbnNuX2xoLCBpbnNuX2xodSwgaW5zbl9sbCwgaW5zbl9sbGQsXG4gXHRpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSxcbi1cdGluc25fbWZsbywgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLCBpbnNuX210aGMwLFxuJiM0MztcdGluc25fbWZsbywgaW5zbl9tb2QsIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCwgaW5zbl9tdGhjMCxcbiBcdGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LCBpbnNuX211aHUsIGluc25fbm9yLFxuIFx0aW5zbl9vciwgaW5zbl9vcmksIGluc25fcHJlZiwgaW5zbl9yZmUsIGluc25fcm90ciwgaW5zbl9zYiwgaW5zbl9zYyxcbiBcdGluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLFxuQEAgLTI4Nyw5ICYjNDM7Mjg4LDEyIEBAIElfdTF1MihfY2ZjMSlcbiBJX3UydTEoX2NmY21zYSlcbiBJX3UxdTIoX2N0YzEpXG4gSV91MnUxKF9jdGNtc2EpXG4mIzQzO0lfdTF1MihfZGRpdilcbiYjNDM7SV91M3UxdTIoX2RkaXZfcjYpXG4gSV91MXUyKF9kZGl2dSlcbiBJX3UzdTF1MihfZGRpdnVfcjYpXG4gSV91MXUydTMoX2RtZmMwKVxuJiM0MztJX3UzdTF1MihfZG1vZClcbiBJX3UzdTF1MihfZG1vZHUpXG4gSV91MXUydTMoX2RtdGMwKVxuIElfdTF1MihfZG11bHR1KVxuQEAgLTI5Nyw2ICYjNDM7MzAxLDggQEAgSV91M3UxdTIoX2RtdWx1KVxuIElfdTJ1MXMzKF9kYWRkaXUpXG4gSV91M3UxdTIoX2RhZGR1KVxuIElfdTEoX2RpKTtcbiYjNDM7SV91MXUyKF9kaXYpXG4mIzQzO0lfdTN1MXUyKF9kaXZfcjYpXG4gSV91MXUyKF9kaXZ1KVxuIElfdTN1MXUyKF9kaXZ1X3I2KVxuIElfdTJ1MShfZHNiaCk7XG5AQCAtMzMyLDYgJiM0MzszMzgsNyBAQCBJX3UyczN1MShfbHcpXG4gSV91MnMzdTEoX2x3dSlcbiBJX3UxdTJ1MyhfbWZjMClcbiBJX3UxdTJ1MyhfbWZoYzApXG4mIzQzO0lfdTN1MXUyKF9tb2QpXG4gSV91M3UxdTIoX21vZHUpXG4gSV91M3UxdTIoX21vdm4pXG4gSV91M3UxdTIoX21vdnopXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDZlZTRhYmU2YTFmNzA1Li41MDRkYWVhNGFhYzJlOSAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0yMDgsNyAmIzQzOzIwOCw3IEBAIHZvaWQgZW1pdF9tb3ZfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMpXG4gfVxuIFxuIC8qIFZhbGlkYXRlIEFMVSBpbW1lZGlhdGUgcmFuZ2UgKi9cbi1ib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxuJiM0Mztib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBib29sIGlzX3NpZ25lZClcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdGNhc2UgQlBGX05FRzpcbkBAIC0yMzcsNiAmIzQzOzIzNywxNSBAQCBib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxuIFx0XHRyZXR1cm4gaW1tID09IDAgfHwgKGltbSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMihpbW0pKTtcbiBcdGNhc2UgQlBGX0RJVjpcbiBcdGNhc2UgQlBGX01PRDpcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBUaGUgcmV3cml0ZSB0byBhIHNoaWZ0L21hc2sgYmVsb3cgaXMgYW4gdW5zaWduZWQtb25seVxuJiM0MztcdFx0ICogb3B0aW1pemF0aW9uOiBhcml0aG1ldGljIHJpZ2h0IHNoaWZ0IHJvdW5kcyB0b3dhcmRcbiYjNDM7XHRcdCAqIG5lZ2F0aXZlIGluZmluaXR5IHJhdGhlciB0aGFuIHplcm8sIGFuZCBtYXNraW5nIGRvZXMgbm90XG4mIzQzO1x0XHQgKiByZXByb2R1Y2UgYSBuZWdhdGl2ZSBkaXZpZGVuZCYjMzk7cyBzaWduLiBGb3JjZSB0aGUgc2lnbmVkXG4mIzQzO1x0XHQgKiBjYXNlIHRocm91Z2ggdGhlIGdlbmVyYWwgcmVnaXN0ZXIgcGF0aCBpbnN0ZWFkLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoaXNfc2lnbmVkKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cbiBcdFx0cmV0dXJuICh1MzIpaW1tIFx1MDAzYz0gMHgxMDAwMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XG4gXHR9XG5AQCAtMzM5LDcgJiM0MzszNDgsNyBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4gfVxuIFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiYjNDM7dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IFx1MDAyNiBzcmMgKi9cbkBAIC0zODUsMjAgJiM0MzszOTQsMzggQEAgdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZCkge1xuJiM0MztcdFx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbiYjNDM7XHRcdFx0fVxuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4mIzQzO1x0XHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGlmIChpc19zaWduZWQpIHtcbiYjNDM7XHRcdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgbW9kLCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuJiM0MztcdFx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaCBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbmluZGV4IGEzN2ZlMjA4MThlYjljLi42MzY3YjkzNmI2N2U3MCAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbkBAIC0xNjMsNyAmIzQzOzE2Myw3IEBAIHZvaWQgZW1pdF9tb3ZfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tKTtcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcbiBcbiAvKiBWYWxpZGF0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIHJhbmdlICovXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XG4mIzQzO2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKTtcbiBcbiAvKiBSZXdyaXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgb3BlcmF0aW9uICovXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG5AQCAtMTcyLDcgJiM0MzsxNzIsNyBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcbiB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApO1xuIFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCk7XG4mIzQzO3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZCk7XG4gXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXG4gdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCA0MGE4NzhiNjcyZjVkMy4uNWQ3NjI0ZjBlMzAxNjMgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTUxMiw3ICYjNDM7NTEyLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9tdWxfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuIFx0Y2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7XG4gfVxuIFxuLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqL1xuJiM0MzsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHVuc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cbiBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXG4ge1xuIFx0dTY0IHJlbTtcbkBAIC01MjEsOSAmIzQzOzUyMSwxNyBAQCBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXG4gXHRyZXR1cm4gcmVtO1xuIH1cbiBcbiYjNDM7LyogSGVscGVyIGZ1bmN0aW9uIGZvciBzaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuJiM0MztzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKVxuJiM0Mzt7XG4mIzQzO1x0czY0IHF1b3QgPSBkaXY2NF9zNjQoYSwgYik7XG4mIzQzO1xuJiM0MztcdHJldHVybiBhIC0gcXVvdCAqIGI7XG4mIzQzO31cbiYjNDM7XG4gLyogQUxVIGRpdi9tb2QgcmVnaXN0ZXIgKDY0LWJpdCkgKi9cbi1zdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4tXHRcdFx0ICAgIGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXG4mIzQzO1x0XHRcdCAgICBjb25zdCB1OCBzcmNbXSwgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdGNvbnN0IHU4ICpyMCA9IGJwZjJtaXBzMzJbQlBGX1JFR18wXTsgLyogTWFwcGVkIHRvIHYwLXYxICovXG4gXHRjb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqL1xuQEAgLTU0NiwxMSAmIzQzOzU1NCwxMSBAQCBzdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRhZGRyID0gKHUzMilcdTAwMjZkaXY2NF91NjQ7XG4mIzQzO1x0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZkaXY2NF9zNjQgOiAodTMyKVx1MDAyNmRpdjY0X3U2NDtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0YWRkciA9ICh1MzIpXHUwMDI2aml0X21vZDY0O1xuJiM0MztcdFx0YWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpXHUwMDI2aml0X3Ntb2Q2NCA6ICh1MzIpXHUwMDI2aml0X21vZDY0O1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDksIGFkZHIpO1xuQEAgLTE1MTYsOSAmIzQzOzE1MjQsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuJiM0MztcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmID09IDEpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgbG8oZHN0KSwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtMTU0Niw3ICYjNDM7MTU1NCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cbkBAIC0xNTk5LDcgJiM0MzsxNjA3LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdFx0ICogYW5kIHRoZW4gZG8gdGhlIG9wZXJhdGlvbiBvbiB0aGlzIHJlZ2lzdGVyLlxuIFx0XHQgKi9cbiBcdFx0ZW1pdF9tb3Zfc2VfaTY0KGN0eCwgdG1wLCBpbW0pO1xuLVx0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDI2IHNyYyAoNjQtYml0KSAqL1xuIFx0LyogZHN0ID0gZHN0IHwgc3JjICg2NC1iaXQpICovXG5AQCAtMTYyOSw3ICYjNDM7MTYzNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGZhN2U5YWEzN2Y0OThkLi5kMGE4ZmI3OTJjOWJlMSAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMTk4LDcgJiM0MzsxOTgsOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4gfVxuIFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi9cbi1zdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiYjNDM7c3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG4mIzQzO1x0XHRcdCBib29sIGlzX3NpZ25lZClcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCBcdTAwM2NcdTAwM2Mgc3JjICovXG5AQCAtMjM1LDI1ICYjNDM7MjM2LDQzIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRpZiAoaXNfc2lnbmVkKSB7XG4mIzQzO1x0XHRcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbiYjNDM7XHRcdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgZGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZCkge1xuJiM0MztcdFx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuJiM0MztcdFx0XHR9XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4mIzQzO1x0XHRcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbiYjNDM7XHRcdFx0fVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0LyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovXG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3ApO1xuJiM0MztcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgZmFsc2UpO1xuIFx0fVxuIFx0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xuIH1cbkBAIC02NzQsOSAmIzQzOzY5Myw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfQU5EIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4mIzQzO1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBmYWxzZSkpIHtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG4gXHRcdH1cbkBAIC02OTYsMTAgJiM0Mzs3MTUsMTAgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbiYjNDM7XHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZiA9PSAxKSkge1xuIFx0XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XG4gXHRcdFx0ZW1pdF9hbHVfaShjdHgsIGRzdCwgdmFsLCBhbHUpO1xuQEAgLTcxNCw3ICYjNDM7NzMzLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9PUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDNlXHUwMDNlIHNyYyAqL1xuQEAgLTczMyw3ICYjNDM7NzUyLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbiBcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRlbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuQEAgLTc3MCw5ICYjNDM7Nzg5LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbiYjNDM7XHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZiA9PSAxKSkge1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTc5OSw3ICYjNDM7ODE4LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xuIFx0LyogZHN0ID0gaHRvYmUoZHN0KSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDAxOjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X2FsdV9yJiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3I2NCYjMzQ7LAogICAgJiMzNDtlbWl0X2Rpdm1vZF9yNjQmIzM0OywKICAgICYjMzQ7aml0X3Ntb2Q2NCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgZm9yIEJQRiBwcm9ncmFtcyBvbiBNSVBTLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIEpJVCBjb21waWxlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBuZXcgc2lnbmVkIG9wZXJhdGlvbnMgYW5kIGRvZXMgbm90IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZTQyY2E2N2M3MTkyNzYzNTJjYjc5MzJiOGZhNjI2M2Q4Zjk3MTlkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTcgMDE6NTQ6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaAppbmRleCBiNDNiZmQ0NDUyNTIxMy4uOWQzZWRiNTllZmMwOTggMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaApAQCAtODUsMTUgJiM0Mzs4NSwyMCBAQCBJcF91MXUyKF9jdGMxKTsKIElwX3UydTEoX2N0Y21zYSk7CiBJcF91MnUxczMoX2RhZGRpdSk7CiBJcF91M3UxdTIoX2RhZGR1KTsKJiM0MztJcF91MXUyKF9kZGl2KTsKJiM0MztJcF91M3UxdTIoX2RkaXZfcjYpOwogSXBfdTF1MihfZGRpdnUpOwogSXBfdTN1MXUyKF9kZGl2dV9yNik7CiBJcF91MShfZGkpOwogSXBfdTJ1MW1zYnUzKF9kaW5zKTsKIElwX3UydTFtc2J1MyhfZGluc20pOwogSXBfdTJ1MW1zYnUzKF9kaW5zdSk7CiYjNDM7SXBfdTF1MihfZGl2KTsKJiM0MztJcF91M3UxdTIoX2Rpdl9yNik7CiBJcF91MXUyKF9kaXZ1KTsKIElwX3UzdTF1MihfZGl2dV9yNik7CiBJcF91MXUydTMoX2RtZmMwKTsKJiM0MztJcF91M3UxdTIoX2Rtb2QpOwogSXBfdTN1MXUyKF9kbW9kdSk7CiBJcF91MXUydTMoX2RtdGMwKTsKIElwX3UxdTIoX2RtdWx0dSk7CkBAIC0xMzUsNiAmIzQzOzE0MCw3IEBAIElwX3UxdTJ1MyhfbWZjMCk7CiBJcF91MXUydTMoX21maGMwKTsKIElwX3UxKF9tZmhpKTsKIElwX3UxKF9tZmxvKTsKJiM0MztJcF91M3UxdTIoX21vZCk7CiBJcF91M3UxdTIoX21vZHUpOwogSXBfdTN1MXUyKF9tb3ZuKTsKIElwX3UzdTF1MihfbW92eik7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMKaW5kZXggZTE1YzY3MDBjZDA4ODQuLmVmMWEyYjA0MDA3MDA3IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jCkBAIC03NSw2ICYjNDM7NzUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0gewogCVtpbnNuX2N0Y21zYV0JPSB7TShtc2Ffb3AsIDAsIG1zYV9jdGNfb3AsIDAsIDAsIG1zYV9lbG1fb3ApLCBSRCB8IFJFfSwKIAlbaW5zbl9kYWRkaXVdCT0ge00oZGFkZGl1X29wLCAwLCAwLCAwLCAwLCAwKSwgUlMgfCBSVCB8IFNJTU19LAogCVtpbnNuX2RhZGR1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRhZGR1X29wKSwgUlMgfCBSVCB8IFJEfSwKJiM0MzsJW2luc25fZGRpdl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2X29wKSwgUlMgfCBSVH0sCiYjNDM7CVtpbnNuX2RkaXZfcjZdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kZGl2Nl9vcCwgZGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZGRpdnVdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdnVfb3ApLCBSUyB8IFJUfSwKIAlbaW5zbl9kZGl2dV9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kZGl2dTZfb3AsIGRkaXZ1X29wKSwKIAkJCQlSUyB8IFJUIHwgUkR9LApAQCAtODIsMTAgJiM0Mzs4NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0gewogCVtpbnNuX2RpbnNdCT0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sCiAJW2luc25fZGluc21dCT0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNtX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LAogCVtpbnNuX2RpbnN1XQk9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zdV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSwKJiM0MzsJW2luc25fZGl2XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdl9vcCksIFJTIHwgUlR9LAomIzQzOwlbaW5zbl9kaXZfcjZdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X2RpdjZfb3AsIGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZGl2dV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZ1X29wKSwgUlMgfCBSVH0sCiAJW2luc25fZGl2dV9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X2RpdnU2X29wLCBkaXZ1X29wKSwKIAkJCQlSUyB8IFJUIHwgUkR9LAogCVtpbnNuX2RtZmMwXQk9IHtNKGNvcDBfb3AsIGRtZmNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSwKJiM0MzsJW2luc25fZG1vZF0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2Rtb2Rfb3AsIGRkaXZfb3ApLAomIzQzOwkJCQlSUyB8IFJUIHwgUkR9LAogCVtpbnNuX2Rtb2R1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2Rtb2R1X29wLCBkZGl2dV9vcCksCiAJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9kbXRjMF0JPSB7TShjb3AwX29wLCBkbXRjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sCkBAIC0xNDAsNiAmIzQzOzE0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7CiAJW2luc25fbWZoYzBdCT0ge00oY29wMF9vcCwgbWZoYzBfb3AsIDAsIDAsIDAsIDApLCAgUlQgfCBSRCB8IFNFVH0sCiAJW2luc25fbWZoaV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmhpX29wKSwgUkR9LAogCVtpbnNuX21mbG9dCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZsb19vcCksIFJEfSwKJiM0MzsJW2luc25fbW9kXQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9tb2Rfb3AsIGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fbW9kdV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X21vZHVfb3AsIGRpdnVfb3ApLAogCQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fbW92bl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtb3ZuX29wKSwgUlMgfCBSVCB8IFJEfSwKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jCmluZGV4IDEyNTE0MDk3OWQ2MmM1Li45ZDg3ZDU3MTY0ZDc5OCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL3Vhc20uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbW0vdWFzbS5jCkBAIC00OSwxNiAmIzQzOzQ5LDE3IEBAIGVudW0gb3Bjb2RlIHsKIAlpbnNuX2FkZGl1LCBpbnNuX2FkZHUsIGluc25fYW5kLCBpbnNuX2FuZGksIGluc25fYmJpdDAsIGluc25fYmJpdDEsCiAJaW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleiwKIAlpbnNuX2JsdHosIGluc25fYmx0emwsIGluc25fYm5lLCBpbnNuX2JyZWFrLCBpbnNuX2NhY2hlLCBpbnNuX2NmYzEsCi0JaW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXZ1LAotCWluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LAotCWluc25fZGl2dV9yNiwgaW5zbl9kbWZjMCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsCiYjNDM7CWluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2LAomIzQzOwlpbnNuX2RkaXZfcjYsIGluc25fZGRpdnUsIGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwKJiM0MzsJaW5zbl9kaW5zdSwgaW5zbl9kaXYsIGluc25fZGl2X3I2LCBpbnNuX2RpdnUsIGluc25fZGl2dV9yNiwgaW5zbl9kbWZjMCwKJiM0MzsJaW5zbl9kbW9kLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSwKIAlpbnNuX2RtdWx1LCBpbnNuX2Ryb3RyLCBpbnNuX2Ryb3RyMzIsIGluc25fZHNiaCwgaW5zbl9kc2hkLCBpbnNuX2RzbGwsCiAJaW5zbl9kc2xsMzIsIGluc25fZHNsbHYsIGluc25fZHNyYSwgaW5zbl9kc3JhMzIsIGluc25fZHNyYXYsIGluc25fZHNybCwKIAlpbnNuX2RzcmwzMiwgaW5zbl9kc3JsdiwgaW5zbl9kc3VidSwgaW5zbl9lcmV0LCBpbnNuX2V4dCwgaW5zbl9pbnMsCiAJaW5zbl9qLCBpbnNuX2phbCwgaW5zbl9qYWxyLCBpbnNuX2pyLCBpbnNuX2xiLCBpbnNuX2xidSwgaW5zbl9sZCwKIAlpbnNuX2xkZGlyLCBpbnNuX2xkcHRlLCBpbnNuX2xkeCwgaW5zbl9saCwgaW5zbl9saHUsIGluc25fbGwsIGluc25fbGxkLAogCWluc25fbHVpLCBpbnNuX2x3LCBpbnNuX2x3dSwgaW5zbl9sd3gsIGluc25fbWZjMCwgaW5zbl9tZmhjMCwgaW5zbl9tZmhpLAotCWluc25fbWZsbywgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLCBpbnNuX210aGMwLAomIzQzOwlpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsCiAJaW5zbl9tdGhpLCBpbnNuX210bG8sIGluc25fbXVsLCBpbnNuX211bHR1LCBpbnNuX211bHUsIGluc25fbXVodSwgaW5zbl9ub3IsCiAJaW5zbl9vciwgaW5zbl9vcmksIGluc25fcHJlZiwgaW5zbl9yZmUsIGluc25fcm90ciwgaW5zbl9zYiwgaW5zbl9zYywKIAlpbnNuX3NjZCwgaW5zbl9zZWxlcXosIGluc25fc2VsbmV6LCBpbnNuX3NkLCBpbnNuX3NoLCBpbnNuX3NsbCwKQEAgLTI4Nyw5ICYjNDM7Mjg4LDEyIEBAIElfdTF1MihfY2ZjMSkKIElfdTJ1MShfY2ZjbXNhKQogSV91MXUyKF9jdGMxKQogSV91MnUxKF9jdGNtc2EpCiYjNDM7SV91MXUyKF9kZGl2KQomIzQzO0lfdTN1MXUyKF9kZGl2X3I2KQogSV91MXUyKF9kZGl2dSkKIElfdTN1MXUyKF9kZGl2dV9yNikKIElfdTF1MnUzKF9kbWZjMCkKJiM0MztJX3UzdTF1MihfZG1vZCkKIElfdTN1MXUyKF9kbW9kdSkKIElfdTF1MnUzKF9kbXRjMCkKIElfdTF1MihfZG11bHR1KQpAQCAtMjk3LDYgJiM0MzszMDEsOCBAQCBJX3UzdTF1MihfZG11bHUpCiBJX3UydTFzMyhfZGFkZGl1KQogSV91M3UxdTIoX2RhZGR1KQogSV91MShfZGkpOwomIzQzO0lfdTF1MihfZGl2KQomIzQzO0lfdTN1MXUyKF9kaXZfcjYpCiBJX3UxdTIoX2RpdnUpCiBJX3UzdTF1MihfZGl2dV9yNikKIElfdTJ1MShfZHNiaCk7CkBAIC0zMzIsNiAmIzQzOzMzOCw3IEBAIElfdTJzM3UxKF9sdykKIElfdTJzM3UxKF9sd3UpCiBJX3UxdTJ1MyhfbWZjMCkKIElfdTF1MnUzKF9tZmhjMCkKJiM0MztJX3UzdTF1MihfbW9kKQogSV91M3UxdTIoX21vZHUpCiBJX3UzdTF1MihfbW92bikKIElfdTN1MXUyKF9tb3Z6KQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMKaW5kZXggNmVlNGFiZTZhMWY3MDUuLjUwNGRhZWE0YWFjMmU5IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTIwOCw3ICYjNDM7MjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYykKIH0KIAogLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqLwotYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSkKJiM0Mztib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBib29sIGlzX3NpZ25lZCkKIHsKIAlzd2l0Y2ggKEJQRl9PUChvcCkpIHsKIAljYXNlIEJQRl9ORUc6CkBAIC0yMzcsNiAmIzQzOzIzNywxNSBAQCBib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKQogCQlyZXR1cm4gaW1tID09IDAgfHwgKGltbSAmZ3Q7IDAgJmFtcDsmYW1wOyBpc19wb3dlcl9vZl8yKGltbSkpOwogCWNhc2UgQlBGX0RJVjoKIAljYXNlIEJQRl9NT0Q6CiYjNDM7CQkvKgomIzQzOwkJICogVGhlIHJld3JpdGUgdG8gYSBzaGlmdC9tYXNrIGJlbG93IGlzIGFuIHVuc2lnbmVkLW9ubHkKJiM0MzsJCSAqIG9wdGltaXphdGlvbjogYXJpdGhtZXRpYyByaWdodCBzaGlmdCByb3VuZHMgdG93YXJkCiYjNDM7CQkgKiBuZWdhdGl2ZSBpbmZpbml0eSByYXRoZXIgdGhhbiB6ZXJvLCBhbmQgbWFza2luZyBkb2VzIG5vdAomIzQzOwkJICogcmVwcm9kdWNlIGEgbmVnYXRpdmUgZGl2aWRlbmQmIzM5O3Mgc2lnbi4gRm9yY2UgdGhlIHNpZ25lZAomIzQzOwkJICogY2FzZSB0aHJvdWdoIHRoZSBnZW5lcmFsIHJlZ2lzdGVyIHBhdGggaW5zdGVhZC4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKGlzX3NpZ25lZCkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiAJCS8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi8KIAkJcmV0dXJuICh1MzIpaW1tICZsdDs9IDB4MTAwMDAgJmFtcDsmYW1wOyBpc19wb3dlcl9vZl8yKCh1MzIpaW1tKTsKIAl9CkBAIC0zMzksNyAmIzQzOzM0OCw3IEBAIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCkKIH0KIAogLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqLwotdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApCiYjNDM7dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIGJvb2wgaXNfc2lnbmVkKQogewogCXN3aXRjaCAoQlBGX09QKG9wKSkgewogCS8qIGRzdCA9IGRzdCAmYW1wOyBzcmMgKi8KQEAgLTM4NSwyMCAmIzQzOzM5NCwzOCBAQCB2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCkKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0IC8gc3JjICovCiAJY2FzZSBCUEZfRElWOgotCQlpZiAoY3B1X2hhc19taXBzMzJyNikgewotCQkJZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJaWYgKGlzX3NpZ25lZCkgewomIzQzOwkJCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkaXZfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7CiYjNDM7CQkJfQogCQl9IGVsc2UgewotCQkJZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTsKLQkJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwomIzQzOwkJCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwomIzQzOwkJCQllbWl0KGN0eCwgbWZsbywgZHN0KTsKJiM0MzsJCQl9CiAJCX0KIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICUgc3JjICovCiAJY2FzZSBCUEZfTU9EOgotCQlpZiAoY3B1X2hhc19taXBzMzJyNikgewotCQkJZW1pdChjdHgsIG1vZHUsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJaWYgKGlzX3NpZ25lZCkgewomIzQzOwkJCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCQkJZW1pdChjdHgsIG1maGksIGRzdCk7CiYjNDM7CQkJfQogCQl9IGVsc2UgewotCQkJZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTsKLQkJCWVtaXQoY3R4LCBtZmhpLCBkc3QpOwomIzQzOwkJCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwomIzQzOwkJCQllbWl0KGN0eCwgbWZoaSwgZHN0KTsKJiM0MzsJCQl9CiAJCX0KIAkJYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaCBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgKaW5kZXggYTM3ZmUyMDgxOGViOWMuLjYzNjdiOTM2YjY3ZTcwIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgKQEAgLTE2Myw3ICYjNDM7MTYzLDcgQEAgdm9pZCBlbWl0X21vdl9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0pOwogdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYyk7CiAKIC8qIFZhbGlkYXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgcmFuZ2UgKi8KLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pOwomIzQzO2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKTsKIAogLyogUmV3cml0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIG9wZXJhdGlvbiAqLwogYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7CkBAIC0xNzIsNyAmIzQzOzE3Miw3IEBAIGJvb2wgcmV3cml0ZV9hbHVfaSh1OCBvcCwgczMyIGltbSwgdTggKmFsdSwgczMyICp2YWwpOwogdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTsKIAogLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqLwotdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApOwomIzQzO3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZCk7CiAKIC8qIEF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoMzItYml0KSAqLwogdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMKaW5kZXggNDBhODc4YjY3MmY1ZDMuLjVkNzYyNGYwZTMwMTYzIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jCkBAIC01MTIsNyAmIzQzOzUxMiw3IEBAIHN0YXRpYyB2b2lkIGVtaXRfbXVsX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwKIAljbG9iYmVyX3JlZzY0KGN0eCwgZHN0KTsKIH0KIAotLyogSGVscGVyIGZ1bmN0aW9uIGZvciA2NC1iaXQgbW9kdWxvICovCiYjNDM7LyogSGVscGVyIGZ1bmN0aW9uIGZvciB1bnNpZ25lZCA2NC1iaXQgbW9kdWxvICovCiBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpCiB7CiAJdTY0IHJlbTsKQEAgLTUyMSw5ICYjNDM7NTIxLDE3IEBAIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYikKIAlyZXR1cm4gcmVtOwogfQogCiYjNDM7LyogSGVscGVyIGZ1bmN0aW9uIGZvciBzaWduZWQgNjQtYml0IG1vZHVsbyAqLwomIzQzO3N0YXRpYyBzNjQgaml0X3Ntb2Q2NChzNjQgYSwgczY0IGIpCiYjNDM7ewomIzQzOwlzNjQgcXVvdCA9IGRpdjY0X3M2NChhLCBiKTsKJiM0MzsKJiM0MzsJcmV0dXJuIGEgLSBxdW90ICogYjsKJiM0Mzt9CiYjNDM7CiAvKiBBTFUgZGl2L21vZCByZWdpc3RlciAoNjQtYml0KSAqLwotc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LAotCQkJICAgIGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBkc3RbXSwKJiM0MzsJCQkgICAgY29uc3QgdTggc3JjW10sIHU4IG9wLCBib29sIGlzX3NpZ25lZCkKIHsKIAljb25zdCB1OCAqcjAgPSBicGYybWlwczMyW0JQRl9SRUdfMF07IC8qIE1hcHBlZCB0byB2MC12MSAqLwogCWNvbnN0IHU4ICpyMSA9IGJwZjJtaXBzMzJbQlBGX1JFR18xXTsgLyogTWFwcGVkIHRvIGEwLWExICovCkBAIC01NDYsMTEgJiM0Mzs1NTQsMTEgQEAgc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LAogCXN3aXRjaCAoQlBGX09QKG9wKSkgewogCS8qIGRzdCA9IGRzdCAvIHNyYyAqLwogCWNhc2UgQlBGX0RJVjoKLQkJYWRkciA9ICh1MzIpJmFtcDtkaXY2NF91NjQ7CiYjNDM7CQlhZGRyID0gaXNfc2lnbmVkID8gKHUzMikmYW1wO2RpdjY0X3M2NCA6ICh1MzIpJmFtcDtkaXY2NF91NjQ7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJYWRkciA9ICh1MzIpJmFtcDtqaXRfbW9kNjQ7CiYjNDM7CQlhZGRyID0gaXNfc2lnbmVkID8gKHUzMikmYW1wO2ppdF9zbW9kNjQgOiAodTMyKSZhbXA7aml0X21vZDY0OwogCQlicmVhazsKIAl9CiAJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7CkBAIC0xNTE2LDkgJiM0MzsxNTI0LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZiA9PSAxKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSk7CiYjNDM7CQkJZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7CiAJCX0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgJmFtcDthbHUsICZhbXA7dmFsKSkgewogCQkJZW1pdF9hbHVfaShjdHgsIGxvKGRzdCksIHZhbCwgYWx1KTsKIAkJfQpAQCAtMTU0Niw3ICYjNDM7MTU1NCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfWDoKIAljYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6Ci0JCWVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpOwogCQllbWl0X3pleHRfdmVyKGN0eCwgZHN0KTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaW1tICg2NC1iaXQpICovCkBAIC0xNTk5LDcgJiM0MzsxNjA3LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAkJICogYW5kIHRoZW4gZG8gdGhlIG9wZXJhdGlvbiBvbiB0aGlzIHJlZ2lzdGVyLgogCQkgKi8KIAkJZW1pdF9tb3Zfc2VfaTY0KGN0eCwgdG1wLCBpbW0pOwotCQllbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICZhbXA7IHNyYyAoNjQtYml0KSAqLwogCS8qIGRzdCA9IGRzdCB8IHNyYyAoNjQtYml0KSAqLwpAQCAtMTYyOSw3ICYjNDM7MTYzNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJLyogZHN0ID0gZHN0ICUgc3JjICg2NC1iaXQpICovCiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6Ci0JCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpOwogCQlicmVhazsKIAkvKiBkc3QgPSBodG9sZShkc3QpICovCiAJLyogZHN0ID0gaHRvYmUoZHN0KSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IGZhN2U5YWEzN2Y0OThkLi5kMGE4ZmI3OTJjOWJlMSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYwpAQCAtMTk4LDcgJiM0MzsxOTgsOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApCiB9CiAKIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi8KLXN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKQomIzQzO3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLAomIzQzOwkJCSBib29sIGlzX3NpZ25lZCkKIHsKIAlzd2l0Y2ggKEJQRl9PUChvcCkpIHsKIAkvKiBkc3QgPSBkc3QgJmx0OyZsdDsgc3JjICovCkBAIC0yMzUsMjUgJiM0MzsyMzYsNDMgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApCiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAvIHNyYyAqLwogCWNhc2UgQlBGX0RJVjoKLQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKLQkJCWVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CQlpZiAoaXNfc2lnbmVkKSB7CiYjNDM7CQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKJiM0MzsJCQkJZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQkJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwomIzQzOwkJCX0KIAkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7CiYjNDM7CQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKJiM0MzsJCQkJZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7CiYjNDM7CQkJfQogCQl9CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKLQkJCWVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CQlpZiAoaXNfc2lnbmVkKSB7CiYjNDM7CQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKJiM0MzsJCQkJZW1pdChjdHgsIGRtb2QsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQkJCWVtaXQoY3R4LCBtZmhpLCBkc3QpOwomIzQzOwkJCX0KIAkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1maGksIGRzdCk7CiYjNDM7CQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKJiM0MzsJCQkJZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCQkJZW1pdChjdHgsIG1maGksIGRzdCk7CiYjNDM7CQkJfQogCQl9CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCS8qIFdpZHRoLWdlbmVyaWMgb3BlcmF0aW9ucyAqLwotCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wKTsKJiM0MzsJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTsKIAl9CiAJY2xvYmJlcl9yZWcoY3R4LCBkc3QpOwogfQpAQCAtNjc0LDkgJiM0Mzs2OTMsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9BTkQgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOgotCQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkgewomIzQzOwkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgZmFsc2UpKSB7CiAJCQllbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pOwotCQkJZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7CiAJCX0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgJmFtcDthbHUsICZhbXA7dmFsKSkgewogCQkJZW1pdF9hbHVfaShjdHgsIGRzdCwgdmFsLCBhbHUpOwogCQl9CkBAIC02OTYsMTAgJiM0Mzs3MTUsMTAgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZiA9PSAxKSkgewogCQkJZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpOwogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpOwogCQl9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sICZhbXA7YWx1LCAmYW1wO3ZhbCkpIHsKIAkJCWVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTsKIAkJCWVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTsKQEAgLTcxNCw3ICYjNDM7NzMzLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDoKIAljYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9YOgotCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7CiYjNDM7CQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpOwogCQllbWl0X3pleHRfdmVyKGN0eCwgZHN0KTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICZndDsmZ3Q7IHNyYyAqLwpAQCAtNzMzLDcgJiM0Mzs3NTIsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDoKIAkJZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpOwogCQllbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7Ci0JCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7CiAJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwogCQlicmVhazsKIAkvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi8KQEAgLTc3MCw5ICYjNDM7Nzg5LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZiA9PSAxKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTsKIAkJfSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCAmYW1wO2FsdSwgJmFtcDt2YWwpKSB7CiAJCQllbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTsKIAkJfQpAQCAtNzk5LDcgJiM0Mzs4MTgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOgotCQllbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaHRvbGUoZHN0KSAqLwogCS8qIGRzdCA9IGh0b2JlKGRzdCkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMzEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0OTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNSVBTIEJQRiBKSVQgQ29tcGlsZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIFRoZSBjaGFuZ2VzIGFyZSBzcHJlYWQgYWNyb3NzIHNldmVyYWwgZmlsZXMgaW4gdGhlIGBhcmNoL21pcHNgIGRpcmVjdG9yeTogYGluY2x1ZGUvYXNtL3Vhc20uaGAsIGBtbS91YXNtLW1pcHMuY2AsIGBtbS91YXNtLmNgLCBhbmQgdGhlIEJQRiBKSVQgY29tcGlsYXRpb24gZmlsZXMgaW4gdGhlIGBuZXRgIGRpcmVjdG9yeSAoYGJwZl9qaXRfY29tcC5jYCwgYC5oYCwgYGJwZl9qaXRfY29tcDMyLmNgLCBgYnBmX2ppdF9jb21wNjQuY2ApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBlbmFibGluZyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyB3aXRoaW4gdGhlIEJQRiBmcmFtZXdvcmsgb24gTUlQUy4KCkkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCBob3cgQlBGIGhhbmRsZXMgc2lnbmVkIGRpdmlzaW9uL21vZHVsby4gUmlnaHQsIGl0JiMzOTtzIG5vdCB1c2luZyBkZWRpY2F0ZWQgaW5zdHJ1Y3Rpb25zIGxpa2UgYEJQRl9TRElWYCBvciBgQlBGX1NNT0RgOyBpbnN0ZWFkLCBpdCBsZXZlcmFnZXMgYEJQRl9ESVZgIGFuZCBgQlBGX01PRGAgYnV0IGluZGljYXRlcyBzaWduZWRuZXNzLCBpZiBgb2ZmID09IDFgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIGNvZGUgcmVhY2hhYmxlPyBJIGtub3cgQlBGIEpJVCBpcyBhY3RpdmUgd2hlbiBgQ09ORklHX0JQRl9KSVRgIGlzIGVuYWJsZWQsIGFuZCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBNSVBTIGFyY2hpdGVjdHVyZS4gU2luY2UgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBKSVQgY29tcGlsZXIsIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gRXZlbiB0aG91Z2ggc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGZvY3VzIG9uIE1JUFMgYnkgZGVmYXVsdCwgSSBjYW4gc3RpbGwgZmxhZyBpdCBhcyBgV29ydGhGdXp6aW5nPXRydWVgIGFuZCBzcGVjaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEdvb2QsIHN5emthbGxlciBkb2VzIHN1cHBvcnQgTUlQUy4KClRoZSBwcm9tcHQgc3RhdGVzIEkgc2hvdWxkIHZlcmlmeSBpZiB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHNvIEkgbmVlZCB0byBjaGVjayBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AgYW5kIHRoZSBvdGhlciBmaWxlcy4gVGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGFyZSBgQ09ORklHX0JQRl9KSVRgIGFuZCBgQ09ORklHX01JUFNgICh3aGljaCBpcyBpbXBsaWVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUsIHNvIEkgd29uJiMzOTt0IHdvcnJ5IHRvbyBtdWNoIGFib3V0IGl0KS4gSSYjMzk7bGwgZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYGVtaXRfYWx1X3JgLCBgZW1pdF9kaXZtb2RfcjY0YCwgYGVtaXRfYWx1X3I2NGAsIGFuZCBgYnVpbGRfaW5zbmAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVzZSBjb25maWd1cmF0aW9ucyBhcmUgc2V0IGluIHRoZSBrZXJuZWwgY29uZmlnIGZvciB0aGlzIHRvIGJlIHZhbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDAxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9KSVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL21pcHMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNTQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBCUEZfSklUIFN1cHBvcnQgb24gTUlQUyBBcmNoaXRlY3R1cmUqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHN0YXR1cyBvZiBCUEYgSklUIChKdXN0LUluLVRpbWUgY29tcGlsYXRpb24pIHN1cHBvcnQgb24gdGhlIE1JUFMgYXJjaGl0ZWN0dXJlLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGFuZCBzcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBNSVBTLXJlbGF0ZWQgY29kZS4gTXkgaHVuY2ggaXMgdGhhdCB0aGUgYGFyY2gvbWlwc2AgZGlyZWN0b3J5IGlzIHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCYjMzk7cyB3aGVyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB3b3VsZCByZXNpZGUsIGFuZCBhbnkgQlBGIEpJVCBpbXBsZW1lbnRhdGlvbiBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb24gd291bGQgbGlrZWx5IGJlIGZvdW5kIHRoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSBzZWFyY2hpbmcgc2tpbGxzIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBpcyBsb2NhdGVkLiBUaW1lIHRvIHN0YXJ0IHRoZSBzZWFyY2ghCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX0pJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9taXBzL0tjb25maWc9Mj1jb25maWcgTUlQU1xuLS1cbmFyY2gvbWlwcy9LY29uZmlnLTcwLVx0c2VsZWN0IEhBVkVfRFlOQU1JQ19GVFJBQ0VcbmFyY2gvbWlwcy9LY29uZmlnOjcxOlx0c2VsZWN0IEhBVkVfRUJQRl9KSVQgaWYgIUNQVV9NSUNST01JUFNcbmFyY2gvbWlwcy9LY29uZmlnLTcyLVx0c2VsZWN0IEhBVkVfRVhJVF9USFJFQURcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTg9Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6OTpDT05GSUdfQlBGX0pJVD15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTEwLUNPTkZJR19QUkVFTVBUPXlcbi0tXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTMtXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAub1xuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHXzMyQklUKSx5KVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo3OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTgtZWxzZVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xMy1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MTQ6I2lmbmRlZiBfQlBGX0pJVF9DT01QX0hcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MTU6I2RlZmluZSBfQlBGX0pJVF9DT01QX0hcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgtMTYtXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaD0yMzM9aW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oLTIzNC1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MjM1OiNlbmRpZiAvKiBfQlBGX0pJVF9DT01QX0ggKi9cbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtNDAtLyogVGVtcG9yYXJ5IDY0LWJpdCByZWdpc3RlciB1c2VkIGJ5IEpJVCAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjQxOiNkZWZpbmUgSklUX1JFR19UTVAgTUFYX0JQRl9KSVRfUkVHXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtNDItXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTMzLS8qIEV4dHJhIDY0LWJpdCBlQlBGIHJlZ2lzdGVycyB1c2VkIGJ5IEpJVCAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjM0OiNkZWZpbmUgSklUX1JFR19UQyAoTUFYX0JQRl9KSVRfUkVHICYjNDM7IDApXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MzU6I2RlZmluZSBKSVRfUkVHX1pYIChNQVhfQlBGX0pJVF9SRUcgJiM0MzsgMSlcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0zNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM1NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTUlQUyBCUEYgSklUIENvbXBpbGF0aW9uIGZvciBzeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgQlBGIEpJVCBjb25maWd1cmF0aW9uIChgQlBGX0pJVGApIG9uIGEgTUlQUyBhcmNoaXRlY3R1cmUuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgTUlQUyBpbnN0YW5jZSBwcmUtY29uZmlndXJlZCwgYnV0IHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRoYXQgY2FuIGJlIHNldCB1cC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGVsc2UgaXMgaW52b2x2ZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIHVzdWFsbHkgdGhlIGNhc2UgdGhhdCBJIGFsc28gbmVlZCBgQlBGX1NZU0NBTExgIGVuYWJsZWQgZm9yIEJQRiB0byB3b3JrIGNvcnJlY3RseS4KCk5leHQsIEkgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcyBiZWVuIG1vZGlmaWVkIHRvIHN1cHBvcnQgTUlQUyB3aXRoIEJQRiBKSVQuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgb24gdGhlIGZ1bmN0aW9ucyBpbiBgYnBmX2ppdF9jb21wLmNgIHRoYXQgaGF2ZSBsaWtlbHkgYmVlbiBjaGFuZ2VkLiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBgdmFsaWRfYWx1X2lgLCBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgYnVpbGRfaW5zbmAsIGFuZCBgZW1pdF9hbHVfcjY0YCBhcmUgYWxsIGdvb2QgY2FuZGlkYXRlcyB0byByZXZpZXcuCgpJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AsIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgIGFuZCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jYCB0byBzZWUgaG93IE1JUFMgaGFuZGxlcyB0aGVzZSBmdW5jdGlvbnMuIE15IHByaW1hcnkgZm9jdXMgaXMgb24gYGJ1aWxkX2luc25gLCBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgZW1pdF9hbHVfcjY0YCwgYW5kIGB2YWxpZF9hbHVfaWAuCgpXYWl0LCBgYnVpbGRfaW5zbmAgaXMgcHJvYmFibHkgdG9vIGdlbmVyaWMgdG8gYmUgdXNlZnVsLiBJIHRoaW5rIGBlbWl0X2FsdV9yYCwgYGVtaXRfZGl2bW9kX3I2NGAsIGFuZCBgZW1pdF9hbHVfcjY0YCBhcmUgbW9yZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYW5kIHRodXMsIG1vcmUgaW5zaWdodGZ1bC4gT2gsIGFuZCBJIHNlZSB0aGF0IGEgYGppdF9zbW9kNjRgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkLgoKTm93IEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGppdF9zbW9kNjRgIGlzIGRlY2xhcmVkIGBzdGF0aWNgLCBhcyBpdCBtb3N0IGxpa2VseSBpcy4gWWVwLCBpdCBpcy4gV2FpdCwgbG9va3MgbGlrZSBgYnBmX2ppdF9jb21wMzIuY2AgZGVmaW5lcyBpdCB0b28uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgZm9yIHRoaXMsIGp1c3QgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtqaXRfc21vZDY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz01MTY9c3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy01MjQtLyogSGVscGVyIGZ1bmN0aW9uIGZvciBzaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjUyNTpzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTUyNi17XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jPTUzMz1zdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy01NjAtXHRjYXNlIEJQRl9NT0Q6XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6NTYxOlx0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtNTYyLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzYwNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTUlQUyBCUEYgSklUIFBhdGNoKioKCk9rYXksIHNvIGBqaXRfc21vZDY0YCBpcyBkZWZpbml0ZWx5IHN0YXRpYywgZ29vZCB0byBjb25maXJtIHRoYXQuIE5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgc3ltYm9scyB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBMb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHByaW1hcmlseSB3aXRoIHRoZXNlOiBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgZW1pdF9hbHVfcjY0YCwgYW5kIG9mIGNvdXJzZSwgYGppdF9zbW9kNjRgIGl0c2VsZi4KClRoZSBnaXN0IG9mIHRoaXMgcGF0Y2ggaXMgc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gc3VwcG9ydCB3aXRoaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gQSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gR2l2ZW4gdGhhdCwgd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gZnV6eiB0aGlzLiBBbnkgYnVncyBoZXJlIGNvdWxkIGxlYWQgdG8gY3Jhc2hlcyBvciwgd29yc2UsIHZ1bG5lcmFiaWxpdGllcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLiBDb3JyZWN0bmVzcyBpcyBwYXJhbW91bnQsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggYXJpdGhtZXRpYyBvcGVyYXRpb25zIHdpdGhpbiBhIEpJVC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgYXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWcgZmxhZ3M/IEFoLCB5ZXMsIGBDT05GSUdfTUlQU2AgaXMgdGhlIGFyY2hpdGVjdHVyZSwgYnV0IG5vIG5lZWQgdG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoYXQgc2luY2UgaXQmIzM5O3MgYW4gYXJjaGl0ZWN0dXJlIGNvbmZpZy4gVGhlIGltcG9ydGFudCBvbmVzIGZvciB0aGlzIGFyZSBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAsIHJpZ2h0PyBZZXMsIHRob3NlIGFyZSB0aGUgb25lcy4KClJpZ2h0LCBiYWNrIHRvIHRoZSBzeW1ib2xzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlJiMzOTtyZSBnb29kIHdpdGggYGVtaXRfYWx1X3JgIGFuZCBgZW1pdF9hbHVfcjY0YC4gSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlc2UgaW50ZXJhY3Qgd2l0aCB0aGUgbmV3IGRpdmlzaW9uIGFuZCBtb2R1bG8gbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfYWx1X3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jPTMwNz12b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNTAtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzozNTE6dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNTIte1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg9MTcyPXZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCk7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNzQtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaDoxNzU6dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIGJvb2wgaXNfc2lnbmVkKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgtMTc2LVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0yMDE9c3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0yNjYtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjI2NzpzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMjY4LVx0XHRcdCBjb25zdCB1OCBkc3RbXSwgY29uc3QgdTggc3JjW10sIHU4IG9wKVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNDcxPWludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1MjgtXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNTI5Olx0XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1MzAtXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1NTYtXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTU1NzpcdFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1NTgtXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjIxLVx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfU1VCIHwgQlBGX1g6XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTYyMjpcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYyMy1cdFx0YnJlYWs7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTE1OD1zdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIwMC0vKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjAxOnN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIwMi1cdFx0XHQgYm9vbCBpc19zaWduZWQpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTI3NC1cdFx0LyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6Mjc1Olx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wLCBmYWxzZSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjc2LVx0fVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYz02NTQ9aW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNjk3LVx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6Njk4Olx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNjk5LVx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MjAtXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3MjE6XHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MjItXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTczNS1cdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3MzY6XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBmYWxzZSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzM3LVx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzU0LVx0XHRlbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzU1Olx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc1Ni1cdFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc5My1cdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjc5NDpcdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzk1LVx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy04MjAtXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo4MjE6XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy04MjItXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjI4MwoJCQkJCQkJb3V0cHV0OiAxNTAKCQkJCQkJCXRob3VnaHRzOiA0NTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNSVBTIEJQRiBKSVQgQ29tcGlsZXIgUGF0Y2gqKgoKQWxyaWdodCwgbXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyB0b3VjaGVkIGJ5IHRoaXMgcGF0Y2g6IGBlbWl0X2FsdV9yYCwgYGVtaXRfYWx1X3I2NGAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBhbmQgYGppdF9zbW9kNjRgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgYXJlIGFmZmVjdGVkIGJ5IHRoZSBjaGFuZ2VzIGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zLgoKQSBtaW5vciBkZXRhaWwganVtcGVkIG91dCDigJMgdGhlIGBlbWl0X2FsdV9yNjRgIGZ1bmN0aW9uJiMzOTtzIHNpZ25hdHVyZSBkaWZmZXJzIGJldHdlZW4gYGJwZl9qaXRfY29tcDMyLmNgIGFuZCBgYnBmX2ppdF9jb21wNjQuY2AuIFNwZWNpZmljYWxseSwgdGhlIDMyLWJpdCB2ZXJzaW9uICpsYWNrcyogdGhlIGBpc19zaWduZWRgIGFyZ3VtZW50LCB1bmxpa2UgaXRzIDY0LWJpdCBjb3VudGVycGFydC4gVGhpcyBkaWZmZXJlbmNlIGlzIHdvcnRoIG5vdGluZzsgaXQgY291bGQgaW5kaWNhdGUgdmFyaWF0aW9ucyBpbiB0aGUgc2lnbmVkbmVzcyBoYW5kbGluZy4gSG93ZXZlciwgSSBhbSBzYXRpc2ZpZWQgdGhhdCBgZW1pdF9hbHVfcjY0YCBpcyByZWxldmFudCBhcyBhIGZvY3VzIHN5bWJvbC4KCmBqaXRfc21vZDY0YCBpcyBhbHNvIGludGVyZXN0aW5nIGJlY2F1c2Ugd2hpbGUgaXQmIzM5O3MgZGVjbGFyZWQgc3RhdGljLCBpdCYjMzk7cyBjYWxsZWQgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIgZnJvbSB3aXRoaW4gYGVtaXRfZGl2bW9kX3I2NGAsIHNvIGl0JiMzOTtzIGRpcmVjdGx5IHJlbGV2YW50IHRvIHRoZSBzaWduZWQgbW9kdWxvIGltcGxlbWVudGF0aW9uLiBUaGUgc2NvcGUgb2YgZWFjaCBmdW5jdGlvbiBpcyB1bmRlcnN0b29kIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjb21waWxhdGlvbi4KClRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2ggaXMgaW1wbGVtZW50aW5nIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIEpJVCB0cmFuc2xhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBvcGVyYXRpb25zIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgc2VjdXJpdHkgaXNzdWVzIG9yIHJ1bnRpbWUgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLgoKVG8gZW5zdXJlIHByb3BlciBmdW5jdGlvbmFsaXR5LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDT05GSUdfQlBGX0pJVGAgaXMgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFuZCB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGFsc28gbmVlZGVkIGZvciBsb2FkaW5nIGFuZCBleGVjdXRpbmcgQlBGIHByb2dyYW1zLgoKV2l0aCB0aGlzIHVuZGVyc3RhbmRpbmcsIGxldCYjMzk7cyBwcm9jZWVkIHdpdGggc2V0dGluZyB0aGUgcmVzdWx0cyBhbmQgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X2FsdV9yJiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3I2NCYjMzQ7LAogICAgJiMzNDtlbWl0X2Rpdm1vZF9yNjQmIzM0OywKICAgICYjMzQ7aml0X3Ntb2Q2NCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgZm9yIEJQRiBwcm9ncmFtcyBvbiBNSVBTLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIEpJVCBjb21waWxlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBuZXcgc2lnbmVkIG9wZXJhdGlvbnMgYW5kIGRvZXMgbm90IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9hbHVfciYjMzQ7LAogICAgJiMzNDtlbWl0X2FsdV9yNjQmIzM0OywKICAgICYjMzQ7ZW1pdF9kaXZtb2RfcjY0JiMzNDssCiAgICAmIzM0O2ppdF9zbW9kNjQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgSklUIHRyYW5zbGF0aW9uIGxvZ2ljIGZvciBCUEYgcHJvZ3JhbXMgb24gTUlQUy4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBKSVQgY29tcGlsZXIgY29ycmVjdGx5IGhhbmRsZXMgdGhlc2UgbmV3IHNpZ25lZCBvcGVyYXRpb25zIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzIG9yIGNyYXNoZXMgZHVyaW5nIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDAxOjU0OjAzLjk5MzcxNTY4N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjAxNTQ2OTE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYWx1X3JcIixcbiAgICBcImVtaXRfYWx1X3I2NFwiLFxuICAgIFwiZW1pdF9kaXZtb2RfcjY0XCIsXG4gICAgXCJqaXRfc21vZDY0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgSklUIHRyYW5zbGF0aW9uIGxvZ2ljIGZvciBCUEYgcHJvZ3JhbXMgb24gTUlQUy4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBKSVQgY29tcGlsZXIgY29ycmVjdGx5IGhhbmRsZXMgdGhlc2UgbmV3IHNpZ25lZCBvcGVyYXRpb25zIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzIG9yIGNyYXNoZXMgZHVyaW5nIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDE6NTQ6MDMuOTkzNzIyODE3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzcwNDQ1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZTQyY2E2N2M3MTkyNzYzNTJjYjc5MzJiOGZhNjI2M2Q4Zjk3MTlkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDE3IDAxOjU0OjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuaW5kZXggYjQzYmZkNDQ1MjUyMTMuLjlkM2VkYjU5ZWZjMDk4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcXG4rKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuQEAgLTg1LDE1ICs4NSwyMCBAQCBJcF91MXUyKF9jdGMxKTtcXG4gSXBfdTJ1MShfY3RjbXNhKTtcXG4gSXBfdTJ1MXMzKF9kYWRkaXUpO1xcbiBJcF91M3UxdTIoX2RhZGR1KTtcXG4rSXBfdTF1MihfZGRpdik7XFxuK0lwX3UzdTF1MihfZGRpdl9yNik7XFxuIElwX3UxdTIoX2RkaXZ1KTtcXG4gSXBfdTN1MXUyKF9kZGl2dV9yNik7XFxuIElwX3UxKF9kaSk7XFxuIElwX3UydTFtc2J1MyhfZGlucyk7XFxuIElwX3UydTFtc2J1MyhfZGluc20pO1xcbiBJcF91MnUxbXNidTMoX2RpbnN1KTtcXG4rSXBfdTF1MihfZGl2KTtcXG4rSXBfdTN1MXUyKF9kaXZfcjYpO1xcbiBJcF91MXUyKF9kaXZ1KTtcXG4gSXBfdTN1MXUyKF9kaXZ1X3I2KTtcXG4gSXBfdTF1MnUzKF9kbWZjMCk7XFxuK0lwX3UzdTF1MihfZG1vZCk7XFxuIElwX3UzdTF1MihfZG1vZHUpO1xcbiBJcF91MXUydTMoX2RtdGMwKTtcXG4gSXBfdTF1MihfZG11bHR1KTtcXG5AQCAtMTM1LDYgKzE0MCw3IEBAIElwX3UxdTJ1MyhfbWZjMCk7XFxuIElwX3UxdTJ1MyhfbWZoYzApO1xcbiBJcF91MShfbWZoaSk7XFxuIElwX3UxKF9tZmxvKTtcXG4rSXBfdTN1MXUyKF9tb2QpO1xcbiBJcF91M3UxdTIoX21vZHUpO1xcbiBJcF91M3UxdTIoX21vdm4pO1xcbiBJcF91M3UxdTIoX21vdnopO1xcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcXG5pbmRleCBlMTVjNjcwMGNkMDg4NC4uZWYxYTJiMDQwMDcwMDcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXFxuKysrIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXFxuQEAgLTc1LDYgKzc1LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcXG4gXFx0W2luc25fY3RjbXNhXVxcdD0ge00obXNhX29wLCAwLCBtc2FfY3RjX29wLCAwLCAwLCBtc2FfZWxtX29wKSwgUkQgfCBSRX0sXFxuIFxcdFtpbnNuX2RhZGRpdV1cXHQ9IHtNKGRhZGRpdV9vcCwgMCwgMCwgMCwgMCwgMCksIFJTIHwgUlQgfCBTSU1NfSxcXG4gXFx0W2luc25fZGFkZHVdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkYWRkdV9vcCksIFJTIHwgUlQgfCBSRH0sXFxuK1xcdFtpbnNuX2RkaXZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2X29wKSwgUlMgfCBSVH0sXFxuK1xcdFtpbnNuX2RkaXZfcjZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2RkaXY2X29wLCBkZGl2X29wKSxcXG4rXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fZGRpdnVdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2dV9vcCksIFJTIHwgUlR9LFxcbiBcXHRbaW5zbl9kZGl2dV9yNl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2RkaXZ1Nl9vcCwgZGRpdnVfb3ApLFxcbiBcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbkBAIC04MiwxMCArODUsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcXG4gXFx0W2luc25fZGluc11cXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxcbiBcXHRbaW5zbl9kaW5zbV1cXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zbV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcXG4gXFx0W2luc25fZGluc3VdXFx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc3Vfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXFxuK1xcdFtpbnNuX2Rpdl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdl9vcCksIFJTIHwgUlR9LFxcbitcXHRbaW5zbl9kaXZfcjZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfZGl2Nl9vcCwgZGl2X29wKSxcXG4rXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fZGl2dV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdnVfb3ApLCBSUyB8IFJUfSxcXG4gXFx0W2luc25fZGl2dV9yNl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfZGl2dTZfb3AsIGRpdnVfb3ApLFxcbiBcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9kbWZjMF1cXHQ9IHtNKGNvcDBfb3AsIGRtZmNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcXG4rXFx0W2luc25fZG1vZF1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZG1vZF9vcCwgZGRpdl9vcCksXFxuK1xcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX2Rtb2R1XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZG1vZHVfb3AsIGRkaXZ1X29wKSxcXG4gXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fZG10YzBdXFx0PSB7TShjb3AwX29wLCBkbXRjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXFxuQEAgLTE0MCw2ICsxNDgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xcbiBcXHRbaW5zbl9tZmhjMF1cXHQ9IHtNKGNvcDBfb3AsIG1maGMwX29wLCAwLCAwLCAwLCAwKSwgIFJUIHwgUkQgfCBTRVR9LFxcbiBcXHRbaW5zbl9tZmhpXVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZoaV9vcCksIFJEfSxcXG4gXFx0W2luc25fbWZsb11cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1mbG9fb3ApLCBSRH0sXFxuK1xcdFtpbnNuX21vZF1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9tb2Rfb3AsIGRpdl9vcCksXFxuK1xcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX21vZHVdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X21vZHVfb3AsIGRpdnVfb3ApLFxcbiBcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9tb3ZuXVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbW92bl9vcCksIFJTIHwgUlQgfCBSRH0sXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jXFxuaW5kZXggMTI1MTQwOTc5ZDYyYzUuLjlkODdkNTcxNjRkNzk4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmNcXG4rKysgYi9hcmNoL21pcHMvbW0vdWFzbS5jXFxuQEAgLTQ5LDE2ICs0OSwxNyBAQCBlbnVtIG9wY29kZSB7XFxuIFxcdGluc25fYWRkaXUsIGluc25fYWRkdSwgaW5zbl9hbmQsIGluc25fYW5kaSwgaW5zbl9iYml0MCwgaW5zbl9iYml0MSxcXG4gXFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcXG4gXFx0aW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLFxcbi1cXHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdnUsXFxuLVxcdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxcbi1cXHRpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxcbitcXHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdixcXG4rXFx0aW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sXFxuK1xcdGluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsXFxuK1xcdGluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsXFxuIFxcdGluc25fZG11bHUsIGluc25fZHJvdHIsIGluc25fZHJvdHIzMiwgaW5zbl9kc2JoLCBpbnNuX2RzaGQsIGluc25fZHNsbCxcXG4gXFx0aW5zbl9kc2xsMzIsIGluc25fZHNsbHYsIGluc25fZHNyYSwgaW5zbl9kc3JhMzIsIGluc25fZHNyYXYsIGluc25fZHNybCxcXG4gXFx0aW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLFxcbiBcXHRpbnNuX2osIGluc25famFsLCBpbnNuX2phbHIsIGluc25fanIsIGluc25fbGIsIGluc25fbGJ1LCBpbnNuX2xkLFxcbiBcXHRpbnNuX2xkZGlyLCBpbnNuX2xkcHRlLCBpbnNuX2xkeCwgaW5zbl9saCwgaW5zbl9saHUsIGluc25fbGwsIGluc25fbGxkLFxcbiBcXHRpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSxcXG4tXFx0aW5zbl9tZmxvLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXFxuK1xcdGluc25fbWZsbywgaW5zbl9tb2QsIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCwgaW5zbl9tdGhjMCxcXG4gXFx0aW5zbl9tdGhpLCBpbnNuX210bG8sIGluc25fbXVsLCBpbnNuX211bHR1LCBpbnNuX211bHUsIGluc25fbXVodSwgaW5zbl9ub3IsXFxuIFxcdGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsIGluc25fc2IsIGluc25fc2MsXFxuIFxcdGluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLFxcbkBAIC0yODcsOSArMjg4LDEyIEBAIElfdTF1MihfY2ZjMSlcXG4gSV91MnUxKF9jZmNtc2EpXFxuIElfdTF1MihfY3RjMSlcXG4gSV91MnUxKF9jdGNtc2EpXFxuK0lfdTF1MihfZGRpdilcXG4rSV91M3UxdTIoX2RkaXZfcjYpXFxuIElfdTF1MihfZGRpdnUpXFxuIElfdTN1MXUyKF9kZGl2dV9yNilcXG4gSV91MXUydTMoX2RtZmMwKVxcbitJX3UzdTF1MihfZG1vZClcXG4gSV91M3UxdTIoX2Rtb2R1KVxcbiBJX3UxdTJ1MyhfZG10YzApXFxuIElfdTF1MihfZG11bHR1KVxcbkBAIC0yOTcsNiArMzAxLDggQEAgSV91M3UxdTIoX2RtdWx1KVxcbiBJX3UydTFzMyhfZGFkZGl1KVxcbiBJX3UzdTF1MihfZGFkZHUpXFxuIElfdTEoX2RpKTtcXG4rSV91MXUyKF9kaXYpXFxuK0lfdTN1MXUyKF9kaXZfcjYpXFxuIElfdTF1MihfZGl2dSlcXG4gSV91M3UxdTIoX2RpdnVfcjYpXFxuIElfdTJ1MShfZHNiaCk7XFxuQEAgLTMzMiw2ICszMzgsNyBAQCBJX3UyczN1MShfbHcpXFxuIElfdTJzM3UxKF9sd3UpXFxuIElfdTF1MnUzKF9tZmMwKVxcbiBJX3UxdTJ1MyhfbWZoYzApXFxuK0lfdTN1MXUyKF9tb2QpXFxuIElfdTN1MXUyKF9tb2R1KVxcbiBJX3UzdTF1MihfbW92bilcXG4gSV91M3UxdTIoX21vdnopXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggNmVlNGFiZTZhMWY3MDUuLjUwNGRhZWE0YWFjMmU5IDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXFxuQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKVxcbiB9XFxuIFxcbiAvKiBWYWxpZGF0ZSBBTFUgaW1tZWRpYXRlIHJhbmdlICovXFxuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXFxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKVxcbiB7XFxuIFxcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xcbiBcXHRjYXNlIEJQRl9ORUc6XFxuQEAgLTIzNyw2ICsyMzcsMTUgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcXG4gXFx0XFx0cmV0dXJuIGltbSA9PSAwIHx8IChpbW0gXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IGlzX3Bvd2VyX29mXzIoaW1tKSk7XFxuIFxcdGNhc2UgQlBGX0RJVjpcXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBUaGUgcmV3cml0ZSB0byBhIHNoaWZ0L21hc2sgYmVsb3cgaXMgYW4gdW5zaWduZWQtb25seVxcbitcXHRcXHQgKiBvcHRpbWl6YXRpb246IGFyaXRobWV0aWMgcmlnaHQgc2hpZnQgcm91bmRzIHRvd2FyZFxcbitcXHRcXHQgKiBuZWdhdGl2ZSBpbmZpbml0eSByYXRoZXIgdGhhbiB6ZXJvLCBhbmQgbWFza2luZyBkb2VzIG5vdFxcbitcXHRcXHQgKiByZXByb2R1Y2UgYSBuZWdhdGl2ZSBkaXZpZGVuZCdzIHNpZ24uIEZvcmNlIHRoZSBzaWduZWRcXG4rXFx0XFx0ICogY2FzZSB0aHJvdWdoIHRoZSBnZW5lcmFsIHJlZ2lzdGVyIHBhdGggaW5zdGVhZC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChpc19zaWduZWQpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0XFx0LyogaW1tIG11c3QgYmUgYW4gMTctYml0IHBvd2VyIG9mIHR3byAqL1xcbiBcXHRcXHRyZXR1cm4gKHUzMilpbW0gXFx1MDAzYz0gMHgxMDAwMCBcXHUwMDI2XFx1MDAyNiBpc19wb3dlcl9vZl8yKCh1MzIpaW1tKTtcXG4gXFx0fVxcbkBAIC0zMzksNyArMzQ4LDcgQEAgdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxcbiB9XFxuIFxcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovXFxuLXZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpXFxuIHtcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdC8qIGRzdCA9IGRzdCBcXHUwMDI2IHNyYyAqL1xcbkBAIC0zODUsMjAgKzM5NCwzOCBAQCB2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0aWYgKGlzX3NpZ25lZCkge1xcbitcXHRcXHRcXHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0XFx0XFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpIHtcXG4rXFx0XFx0XFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIG1vZCwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdFxcdFxcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XFxuK1xcdFxcdFxcdFxcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxcbmluZGV4IGEzN2ZlMjA4MThlYjljLi42MzY3YjkzNmI2N2U3MCAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxcbkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBlbWl0X21vdl9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0pO1xcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcXG4gXFxuIC8qIFZhbGlkYXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgcmFuZ2UgKi9cXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XFxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKTtcXG4gXFxuIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi9cXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XFxuQEAgLTE3Miw3ICsxNzIsNyBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcXG4gdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTtcXG4gXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApO1xcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpO1xcbiBcXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXFxuIHZvaWQgZW1pdF9hdG9taWNfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYsIHU4IGNvZGUpO1xcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcXG5pbmRleCA0MGE4NzhiNjcyZjVkMy4uNWQ3NjI0ZjBlMzAxNjMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXFxuIFxcdGNsb2JiZXJfcmVnNjQoY3R4LCBkc3QpO1xcbiB9XFxuIFxcbi0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIDY0LWJpdCBtb2R1bG8gKi9cXG4rLyogSGVscGVyIGZ1bmN0aW9uIGZvciB1bnNpZ25lZCA2NC1iaXQgbW9kdWxvICovXFxuIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcXG4ge1xcbiBcXHR1NjQgcmVtO1xcbkBAIC01MjEsOSArNTIxLDE3IEBAIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcXG4gXFx0cmV0dXJuIHJlbTtcXG4gfVxcbiBcXG4rLyogSGVscGVyIGZ1bmN0aW9uIGZvciBzaWduZWQgNjQtYml0IG1vZHVsbyAqL1xcbitzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKVxcbit7XFxuK1xcdHM2NCBxdW90ID0gZGl2NjRfczY0KGEsIGIpO1xcbitcXG4rXFx0cmV0dXJuIGEgLSBxdW90ICogYjtcXG4rfVxcbitcXG4gLyogQUxVIGRpdi9tb2QgcmVnaXN0ZXIgKDY0LWJpdCkgKi9cXG4tc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxcbi1cXHRcXHRcXHQgICAgY29uc3QgdTggZHN0W10sIGNvbnN0IHU4IHNyY1tdLCB1OCBvcClcXG4rc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBkc3RbXSxcXG4rXFx0XFx0XFx0ICAgIGNvbnN0IHU4IHNyY1tdLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpXFxuIHtcXG4gXFx0Y29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi9cXG4gXFx0Y29uc3QgdTggKnIxID0gYnBmMm1pcHMzMltCUEZfUkVHXzFdOyAvKiBNYXBwZWQgdG8gYTAtYTEgKi9cXG5AQCAtNTQ2LDExICs1NTQsMTEgQEAgc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxcbiBcXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcXG4gXFx0LyogZHN0ID0gZHN0IC8gc3JjICovXFxuIFxcdGNhc2UgQlBGX0RJVjpcXG4tXFx0XFx0YWRkciA9ICh1MzIpXFx1MDAyNmRpdjY0X3U2NDtcXG4rXFx0XFx0YWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpXFx1MDAyNmRpdjY0X3M2NCA6ICh1MzIpXFx1MDAyNmRpdjY0X3U2NDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9NT0Q6XFxuLVxcdFxcdGFkZHIgPSAodTMyKVxcdTAwMjZqaXRfbW9kNjQ7XFxuK1xcdFxcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVxcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcXHUwMDI2aml0X21vZDY0O1xcbiBcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q5LCBhZGRyKTtcXG5AQCAtMTUxNiw5ICsxNTI0LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcXG4tXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcXG4rXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmID09IDEpKSB7XFxuIFxcdFxcdFxcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDYsIGltbSk7XFxuLVxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBsbyhkc3QpLCB2YWwsIGFsdSk7XFxuIFxcdFxcdH1cXG5AQCAtMTU0Niw3ICsxNTU0LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG4gXFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cXG5AQCAtMTU5OSw3ICsxNjA3LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0XFx0ICogYW5kIHRoZW4gZG8gdGhlIG9wZXJhdGlvbiBvbiB0aGlzIHJlZ2lzdGVyLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0ZW1pdF9tb3Zfc2VfaTY0KGN0eCwgdG1wLCBpbW0pO1xcbi1cXHRcXHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gZHN0IFxcdTAwMjYgc3JjICg2NC1iaXQpICovXFxuIFxcdC8qIGRzdCA9IGRzdCB8IHNyYyAoNjQtYml0KSAqL1xcbkBAIC0xNjI5LDcgKzE2MzcsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKDY0LWJpdCkgKi9cXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxcbi1cXHRcXHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xcbiBcXHQvKiBkc3QgPSBodG9iZShkc3QpICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbmluZGV4IGZhN2U5YWEzN2Y0OThkLi5kMGE4ZmI3OTJjOWJlMSAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5AQCAtMTk4LDcgKzE5OCw4IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcXG4gfVxcbiBcXG4gLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xcbi1zdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4rc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXFxuK1xcdFxcdFxcdCBib29sIGlzX3NpZ25lZClcXG4ge1xcbiBcXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcXG4gXFx0LyogZHN0ID0gZHN0IFxcdTAwM2NcXHUwMDNjIHNyYyAqL1xcbkBAIC0yMzUsMjUgKzIzNiw0MyBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpIHtcXG4rXFx0XFx0XFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XFxuK1xcdFxcdFxcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XFxuK1xcdFxcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRpZiAoaXNfc2lnbmVkKSB7XFxuK1xcdFxcdFxcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XFxuK1xcdFxcdFxcdFxcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xcbitcXHRcXHRcXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0LyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovXFxuLVxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3ApO1xcbitcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wLCBmYWxzZSk7XFxuIFxcdH1cXG4gXFx0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xcbiB9XFxuQEAgLTY3NCw5ICs2OTMsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfQU5EIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9YT1IgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOlxcbi1cXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xcbitcXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBmYWxzZSkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG4gXFx0XFx0fVxcbkBAIC02OTYsMTAgKzcxNSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxcbi1cXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xcbitcXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYgPT0gMSkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xcbiBcXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xcbi1cXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XFxuIFxcdFxcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXFx1MDAyNmFsdSwgXFx1MDAyNnZhbCkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XFxuQEAgLTcxNCw3ICs3MzMsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX1g6XFxuLVxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGZhbHNlKTtcXG4gXFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgXFx1MDAzZVxcdTAwM2Ugc3JjICovXFxuQEAgLTczMyw3ICs3NTIsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XFxuIFxcdFxcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcXG4gXFx0XFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xcbi1cXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XFxuIFxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaW1tICg2NC1iaXQpICovXFxuQEAgLTc3MCw5ICs3ODksOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOlxcbi1cXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xcbitcXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYgPT0gMSkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG4gXFx0XFx0fVxcbkBAIC03OTksNyArODE4LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cXG4gXFx0LyogZHN0ID0gaHRvYmUoZHN0KSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1NDowNC44MzE4NjA4NTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxNTE3NzMwNTY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYWx1X3JcIixcbiAgICBcImVtaXRfYWx1X3I2NFwiLFxuICAgIFwiZW1pdF9kaXZtb2RfcjY0XCIsXG4gICAgXCJqaXRfc21vZDY0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgSklUIHRyYW5zbGF0aW9uIGxvZ2ljIGZvciBCUEYgcHJvZ3JhbXMgb24gTUlQUy4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBKSVQgY29tcGlsZXIgY29ycmVjdGx5IGhhbmRsZXMgdGhlc2UgbmV3IHNpZ25lZCBvcGVyYXRpb25zIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzIG9yIGNyYXNoZXMgZHVyaW5nIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZTQyY2E2N2M3MTkyNzYzNTJjYjc5MzJiOGZhNjI2M2Q4Zjk3MTlkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDE6NTQ6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuaW5kZXggYjQzYmZkNDQ1MjUyMTMuLjlkM2VkYjU5ZWZjMDk4IDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuQEAgLTg1LDE1ICs4NSwyMCBAQCBJcF91MXUyKF9jdGMxKTtcbiBJcF91MnUxKF9jdGNtc2EpO1xuIElwX3UydTFzMyhfZGFkZGl1KTtcbiBJcF91M3UxdTIoX2RhZGR1KTtcbitJcF91MXUyKF9kZGl2KTtcbitJcF91M3UxdTIoX2RkaXZfcjYpO1xuIElwX3UxdTIoX2RkaXZ1KTtcbiBJcF91M3UxdTIoX2RkaXZ1X3I2KTtcbiBJcF91MShfZGkpO1xuIElwX3UydTFtc2J1MyhfZGlucyk7XG4gSXBfdTJ1MW1zYnUzKF9kaW5zbSk7XG4gSXBfdTJ1MW1zYnUzKF9kaW5zdSk7XG4rSXBfdTF1MihfZGl2KTtcbitJcF91M3UxdTIoX2Rpdl9yNik7XG4gSXBfdTF1MihfZGl2dSk7XG4gSXBfdTN1MXUyKF9kaXZ1X3I2KTtcbiBJcF91MXUydTMoX2RtZmMwKTtcbitJcF91M3UxdTIoX2Rtb2QpO1xuIElwX3UzdTF1MihfZG1vZHUpO1xuIElwX3UxdTJ1MyhfZG10YzApO1xuIElwX3UxdTIoX2RtdWx0dSk7XG5AQCAtMTM1LDYgKzE0MCw3IEBAIElwX3UxdTJ1MyhfbWZjMCk7XG4gSXBfdTF1MnUzKF9tZmhjMCk7XG4gSXBfdTEoX21maGkpO1xuIElwX3UxKF9tZmxvKTtcbitJcF91M3UxdTIoX21vZCk7XG4gSXBfdTN1MXUyKF9tb2R1KTtcbiBJcF91M3UxdTIoX21vdm4pO1xuIElwX3UzdTF1MihfbW92eik7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG5pbmRleCBlMTVjNjcwMGNkMDg4NC4uZWYxYTJiMDQwMDcwMDcgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcbisrKyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuQEAgLTc1LDYgKzc1LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX2N0Y21zYV1cdD0ge00obXNhX29wLCAwLCBtc2FfY3RjX29wLCAwLCAwLCBtc2FfZWxtX29wKSwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kYWRkaXVdXHQ9IHtNKGRhZGRpdV9vcCwgMCwgMCwgMCwgMCwgMCksIFJTIHwgUlQgfCBTSU1NfSxcbiBcdFtpbnNuX2RhZGR1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkYWRkdV9vcCksIFJTIHwgUlQgfCBSRH0sXG4rXHRbaW5zbl9kZGl2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2X29wKSwgUlMgfCBSVH0sXG4rXHRbaW5zbl9kZGl2X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2RkaXY2X29wLCBkZGl2X29wKSxcbitcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kZGl2dV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdnVfb3ApLCBSUyB8IFJUfSxcbiBcdFtpbnNuX2RkaXZ1X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kZGl2dTZfb3AsIGRkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG5AQCAtODIsMTAgKzg1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9kaW5zXVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc19vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RpbnNtXVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc21fb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kaW5zdV1cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnN1X29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuK1x0W2luc25fZGl2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZfb3ApLCBSUyB8IFJUfSxcbitcdFtpbnNuX2Rpdl9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X2RpdjZfb3AsIGRpdl9vcCksXG4rXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZGl2dV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2dV9vcCksIFJTIHwgUlR9LFxuIFx0W2luc25fZGl2dV9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9kaXZ1Nl9vcCwgZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG1mYzBdXHQ9IHtNKGNvcDBfb3AsIGRtZmNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcbitcdFtpbnNuX2Rtb2RdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZG1vZF9vcCwgZGRpdl9vcCksXG4rXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG1vZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2Rtb2R1X29wLCBkZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG10YzBdXHQ9IHtNKGNvcDBfb3AsIGRtdGNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcbkBAIC0xNDAsNiArMTQ4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX21maGMwXVx0PSB7TShjb3AwX29wLCBtZmhjMF9vcCwgMCwgMCwgMCwgMCksICBSVCB8IFJEIHwgU0VUfSxcbiBcdFtpbnNuX21maGldXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1maGlfb3ApLCBSRH0sXG4gXHRbaW5zbl9tZmxvXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmxvX29wKSwgUkR9LFxuK1x0W2luc25fbW9kXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfbW9kX29wLCBkaXZfb3ApLFxuK1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX21vZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfbW9kdV9vcCwgZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fbW92bl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbW92bl9vcCksIFJTIHwgUlQgfCBSRH0sXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20uYyBiL2FyY2gvbWlwcy9tbS91YXNtLmNcbmluZGV4IDEyNTE0MDk3OWQ2MmM1Li45ZDg3ZDU3MTY0ZDc5OCAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmNcbisrKyBiL2FyY2gvbWlwcy9tbS91YXNtLmNcbkBAIC00OSwxNiArNDksMTcgQEAgZW51bSBvcGNvZGUge1xuIFx0aW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLFxuIFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcbiBcdGluc25fYmx0eiwgaW5zbl9ibHR6bCwgaW5zbl9ibmUsIGluc25fYnJlYWssIGluc25fY2FjaGUsIGluc25fY2ZjMSxcbi1cdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSxcbi1cdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxuLVx0aW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbitcdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2LFxuK1x0aW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sXG4rXHRpbnNuX2RpbnN1LCBpbnNuX2RpdiwgaW5zbl9kaXZfcjYsIGluc25fZGl2dSwgaW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLFxuK1x0aW5zbl9kbW9kLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbiBcdGluc25fZG11bHUsIGluc25fZHJvdHIsIGluc25fZHJvdHIzMiwgaW5zbl9kc2JoLCBpbnNuX2RzaGQsIGluc25fZHNsbCxcbiBcdGluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsXG4gXHRpbnNuX2RzcmwzMiwgaW5zbl9kc3JsdiwgaW5zbl9kc3VidSwgaW5zbl9lcmV0LCBpbnNuX2V4dCwgaW5zbl9pbnMsXG4gXHRpbnNuX2osIGluc25famFsLCBpbnNuX2phbHIsIGluc25fanIsIGluc25fbGIsIGluc25fbGJ1LCBpbnNuX2xkLFxuIFx0aW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCxcbiBcdGluc25fbHVpLCBpbnNuX2x3LCBpbnNuX2x3dSwgaW5zbl9sd3gsIGluc25fbWZjMCwgaW5zbl9tZmhjMCwgaW5zbl9tZmhpLFxuLVx0aW5zbl9tZmxvLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXG4rXHRpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXG4gXHRpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vcixcbiBcdGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsIGluc25fc2IsIGluc25fc2MsXG4gXHRpbnNuX3NjZCwgaW5zbl9zZWxlcXosIGluc25fc2VsbmV6LCBpbnNuX3NkLCBpbnNuX3NoLCBpbnNuX3NsbCxcbkBAIC0yODcsOSArMjg4LDEyIEBAIElfdTF1MihfY2ZjMSlcbiBJX3UydTEoX2NmY21zYSlcbiBJX3UxdTIoX2N0YzEpXG4gSV91MnUxKF9jdGNtc2EpXG4rSV91MXUyKF9kZGl2KVxuK0lfdTN1MXUyKF9kZGl2X3I2KVxuIElfdTF1MihfZGRpdnUpXG4gSV91M3UxdTIoX2RkaXZ1X3I2KVxuIElfdTF1MnUzKF9kbWZjMClcbitJX3UzdTF1MihfZG1vZClcbiBJX3UzdTF1MihfZG1vZHUpXG4gSV91MXUydTMoX2RtdGMwKVxuIElfdTF1MihfZG11bHR1KVxuQEAgLTI5Nyw2ICszMDEsOCBAQCBJX3UzdTF1MihfZG11bHUpXG4gSV91MnUxczMoX2RhZGRpdSlcbiBJX3UzdTF1MihfZGFkZHUpXG4gSV91MShfZGkpO1xuK0lfdTF1MihfZGl2KVxuK0lfdTN1MXUyKF9kaXZfcjYpXG4gSV91MXUyKF9kaXZ1KVxuIElfdTN1MXUyKF9kaXZ1X3I2KVxuIElfdTJ1MShfZHNiaCk7XG5AQCAtMzMyLDYgKzMzOCw3IEBAIElfdTJzM3UxKF9sdylcbiBJX3UyczN1MShfbHd1KVxuIElfdTF1MnUzKF9tZmMwKVxuIElfdTF1MnUzKF9tZmhjMClcbitJX3UzdTF1MihfbW9kKVxuIElfdTN1MXUyKF9tb2R1KVxuIElfdTN1MXUyKF9tb3ZuKVxuIElfdTN1MXUyKF9tb3Z6KVxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCA2ZWU0YWJlNmExZjcwNS4uNTA0ZGFlYTRhYWMyZTkgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgZW1pdF9tb3ZfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMpXG4gfVxuIFxuIC8qIFZhbGlkYXRlIEFMVSBpbW1lZGlhdGUgcmFuZ2UgKi9cbi1ib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0Y2FzZSBCUEZfTkVHOlxuQEAgLTIzNyw2ICsyMzcsMTUgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcbiBcdFx0cmV0dXJuIGltbSA9PSAwIHx8IChpbW0gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIoaW1tKSk7XG4gXHRjYXNlIEJQRl9ESVY6XG4gXHRjYXNlIEJQRl9NT0Q6XG4rXHRcdC8qXG4rXHRcdCAqIFRoZSByZXdyaXRlIHRvIGEgc2hpZnQvbWFzayBiZWxvdyBpcyBhbiB1bnNpZ25lZC1vbmx5XG4rXHRcdCAqIG9wdGltaXphdGlvbjogYXJpdGhtZXRpYyByaWdodCBzaGlmdCByb3VuZHMgdG93YXJkXG4rXHRcdCAqIG5lZ2F0aXZlIGluZmluaXR5IHJhdGhlciB0aGFuIHplcm8sIGFuZCBtYXNraW5nIGRvZXMgbm90XG4rXHRcdCAqIHJlcHJvZHVjZSBhIG5lZ2F0aXZlIGRpdmlkZW5kJ3Mgc2lnbi4gRm9yY2UgdGhlIHNpZ25lZFxuK1x0XHQgKiBjYXNlIHRocm91Z2ggdGhlIGdlbmVyYWwgcmVnaXN0ZXIgcGF0aCBpbnN0ZWFkLlxuK1x0XHQgKi9cbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cbiBcdFx0cmV0dXJuICh1MzIpaW1tIFx1MDAzYz0gMHgxMDAwMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XG4gXHR9XG5AQCAtMzM5LDcgKzM0OCw3IEBAIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcbiB9XG4gXG4gLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuLXZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuK3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZClcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCBcdTAwMjYgc3JjICovXG5AQCAtMzg1LDIwICszOTQsMzggQEAgdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRpZiAoaXNfc2lnbmVkKSB7XG4rXHRcdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbitcdFx0XHRcdGVtaXQoY3R4LCBkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7XG4rXHRcdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbitcdFx0XHR9XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbitcdFx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuK1x0XHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4rXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0ICUgc3JjICovXG4gXHRjYXNlIEJQRl9NT0Q6XG4tXHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRpZiAoaXNfc2lnbmVkKSB7XG4rXHRcdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbitcdFx0XHRcdGVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7XG4rXHRcdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbitcdFx0XHR9XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbitcdFx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuK1x0XHRcdFx0ZW1pdChjdHgsIG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuK1x0XHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4rXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmggYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG5pbmRleCBhMzdmZTIwODE4ZWI5Yy4uNjM2N2I5MzZiNjdlNzAgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG5AQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgZW1pdF9tb3ZfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tKTtcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcbiBcbiAvKiBWYWxpZGF0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIHJhbmdlICovXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XG4rYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgYm9vbCBpc19zaWduZWQpO1xuIFxuIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi9cbiBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcbkBAIC0xNzIsNyArMTcyLDcgQEAgYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG4gdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTtcbiBcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApO1xuK3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZCk7XG4gXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXG4gdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCA0MGE4NzhiNjcyZjVkMy4uNWQ3NjI0ZjBlMzAxNjMgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4gXHRjbG9iYmVyX3JlZzY0KGN0eCwgZHN0KTtcbiB9XG4gXG4tLyogSGVscGVyIGZ1bmN0aW9uIGZvciA2NC1iaXQgbW9kdWxvICovXG4rLyogSGVscGVyIGZ1bmN0aW9uIGZvciB1bnNpZ25lZCA2NC1iaXQgbW9kdWxvICovXG4gc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKVxuIHtcbiBcdHU2NCByZW07XG5AQCAtNTIxLDkgKzUyMSwxNyBAQCBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXG4gXHRyZXR1cm4gcmVtO1xuIH1cbiBcbisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNpZ25lZCA2NC1iaXQgbW9kdWxvICovXG4rc3RhdGljIHM2NCBqaXRfc21vZDY0KHM2NCBhLCBzNjQgYilcbit7XG4rXHRzNjQgcXVvdCA9IGRpdjY0X3M2NChhLCBiKTtcbitcbitcdHJldHVybiBhIC0gcXVvdCAqIGI7XG4rfVxuK1xuIC8qIEFMVSBkaXYvbW9kIHJlZ2lzdGVyICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuLVx0XHRcdCAgICBjb25zdCB1OCBkc3RbXSwgY29uc3QgdTggc3JjW10sIHU4IG9wKVxuK3N0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXG4rXHRcdFx0ICAgIGNvbnN0IHU4IHNyY1tdLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpXG4ge1xuIFx0Y29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi9cbiBcdGNvbnN0IHU4ICpyMSA9IGJwZjJtaXBzMzJbQlBGX1JFR18xXTsgLyogTWFwcGVkIHRvIGEwLWExICovXG5AQCAtNTQ2LDExICs1NTQsMTEgQEAgc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuIFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XG4gXHQvKiBkc3QgPSBkc3QgLyBzcmMgKi9cbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0YWRkciA9ICh1MzIpXHUwMDI2ZGl2NjRfdTY0O1xuK1x0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZkaXY2NF9zNjQgOiAodTMyKVx1MDAyNmRpdjY0X3U2NDtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0YWRkciA9ICh1MzIpXHUwMDI2aml0X21vZDY0O1xuK1x0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7XG5AQCAtMTUxNiw5ICsxNTI0LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbitcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmID09IDEpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2koY3R4LCBsbyhkc3QpLCB2YWwsIGFsdSk7XG4gXHRcdH1cbkBAIC0xNTQ2LDcgKzE1NTQsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cbkBAIC0xNTk5LDcgKzE2MDcsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0XHQgKiBhbmQgdGhlbiBkbyB0aGUgb3BlcmF0aW9uIG9uIHRoaXMgcmVnaXN0ZXIuXG4gXHRcdCAqL1xuIFx0XHRlbWl0X21vdl9zZV9pNjQoY3R4LCB0bXAsIGltbSk7XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IFx1MDAyNiBzcmMgKDY0LWJpdCkgKi9cbiBcdC8qIGRzdCA9IGRzdCB8IHNyYyAoNjQtYml0KSAqL1xuQEAgLTE2MjksNyArMTYzNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xuIFx0LyogZHN0ID0gaHRvYmUoZHN0KSAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggZmE3ZTlhYTM3ZjQ5OGQuLmQwYThmYjc5MmM5YmUxIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xOTgsNyArMTk4LDggQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxuIH1cbiBcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4rc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG4rXHRcdFx0IGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IFx1MDAzY1x1MDAzYyBzcmMgKi9cbkBAIC0yMzUsMjUgKzIzNiw0MyBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgLyBzcmMgKi9cbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRpZiAoaXNfc2lnbmVkKSB7XG4rXHRcdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbitcdFx0XHRcdGVtaXQoY3R4LCBkZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcbitcdFx0XHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuK1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbitcdFx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4rXHRcdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbitcdFx0XHR9XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRpZiAoaXNfc2lnbmVkKSB7XG4rXHRcdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbitcdFx0XHRcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcbitcdFx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuK1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbitcdFx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4rXHRcdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbitcdFx0XHR9XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHQvKiBXaWR0aC1nZW5lcmljIG9wZXJhdGlvbnMgKi9cbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCk7XG4rXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTtcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG5AQCAtNjc0LDkgKzY5Myw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfQU5EIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4rXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGZhbHNlKSkge1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7XG4gXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4gXHRcdFx0ZW1pdF9hbHVfaShjdHgsIGRzdCwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtNjk2LDEwICs3MTUsMTAgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbitcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmID09IDEpKSB7XG4gXHRcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4gXHRcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcbkBAIC03MTQsNyArNzMzLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9PUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4rXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBmYWxzZSk7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCBcdTAwM2VcdTAwM2Ugc3JjICovXG5AQCAtNzMzLDcgKzc1Miw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4gXHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xuLVx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XG4rXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuQEAgLTc3MCw5ICs3ODksOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYgPT0gMSkpIHtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTc5OSw3ICs4MTgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDAxOjU0OjA0LjgzMTg2MzM1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NTQ4NzYxMzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUlQUyBCUEYgSklUIENvbXBpbGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyB3aXRoaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhlIGNoYW5nZXMgYXJlIHNwcmVhZCBhY3Jvc3Mgc2V2ZXJhbCBmaWxlcyBpbiB0aGUgYGFyY2gvbWlwc2AgZGlyZWN0b3J5OiBgaW5jbHVkZS9hc20vdWFzbS5oYCwgYG1tL3Vhc20tbWlwcy5jYCwgYG1tL3Vhc20uY2AsIGFuZCB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBmaWxlcyBpbiB0aGUgYG5ldGAgZGlyZWN0b3J5IChgYnBmX2ppdF9jb21wLmNgLCBgLmhgLCBgYnBmX2ppdF9jb21wMzIuY2AsIGBicGZfaml0X2NvbXA2NC5jYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGVuYWJsaW5nIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIHdpdGhpbiB0aGUgQlBGIGZyYW1ld29yayBvbiBNSVBTLlxuXG5JIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgaG93IEJQRiBoYW5kbGVzIHNpZ25lZCBkaXZpc2lvbi9tb2R1bG8uIFJpZ2h0LCBpdCdzIG5vdCB1c2luZyBkZWRpY2F0ZWQgaW5zdHJ1Y3Rpb25zIGxpa2UgYEJQRl9TRElWYCBvciBgQlBGX1NNT0RgOyBpbnN0ZWFkLCBpdCBsZXZlcmFnZXMgYEJQRl9ESVZgIGFuZCBgQlBGX01PRGAgYnV0IGluZGljYXRlcyBzaWduZWRuZXNzLCBpZiBgb2ZmID09IDFgLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIHRoaXMgY29kZSByZWFjaGFibGU/IEkga25vdyBCUEYgSklUIGlzIGFjdGl2ZSB3aGVuIGBDT05GSUdfQlBGX0pJVGAgaXMgZW5hYmxlZCwgYW5kIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgTUlQUyBhcmNoaXRlY3R1cmUuIFNpbmNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgSklUIGNvbXBpbGVyLCBpdCdzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gRXZlbiB0aG91Z2ggc3l6a2FsbGVyIGRvZXNuJ3QgZm9jdXMgb24gTUlQUyBieSBkZWZhdWx0LCBJIGNhbiBzdGlsbCBmbGFnIGl0IGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAgYW5kIHNwZWNpZnkgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gR29vZCwgc3l6a2FsbGVyIGRvZXMgc3VwcG9ydCBNSVBTLlxuXG5UaGUgcHJvbXB0IHN0YXRlcyBJIHNob3VsZCB2ZXJpZnkgaWYgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCBzbyBJIG5lZWQgdG8gY2hlY2sgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNgIGFuZCB0aGUgb3RoZXIgZmlsZXMuIFRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgYENPTkZJR19CUEZfSklUYCBhbmQgYENPTkZJR19NSVBTYCAod2hpY2ggaXMgaW1wbGllZCBieSB0aGUgYXJjaGl0ZWN0dXJlLCBzbyBJIHdvbid0IHdvcnJ5IHRvbyBtdWNoIGFib3V0IGl0KS4gSSdsbCBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgZW1pdF9hbHVfcjY0YCwgYW5kIGBidWlsZF9pbnNuYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWcgZm9yIHRoaXMgdG8gYmUgdmFsaWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzMxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDE6NTU6MzQuMzgwNjI3OTc4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5Mjg0OTU1NDEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbWlwcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1NTozNi4zMDkxMzQ2OThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTg2NzM0NTUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgQlBGX0pJVCBTdXBwb3J0IG9uIE1JUFMgQXJjaGl0ZWN0dXJlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHN0YXR1cyBvZiBCUEYgSklUIChKdXN0LUluLVRpbWUgY29tcGlsYXRpb24pIHN1cHBvcnQgb24gdGhlIE1JUFMgYXJjaGl0ZWN0dXJlLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGFuZCBzcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBNSVBTLXJlbGF0ZWQgY29kZS4gTXkgaHVuY2ggaXMgdGhhdCB0aGUgYGFyY2gvbWlwc2AgZGlyZWN0b3J5IGlzIHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCdzIHdoZXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIHdvdWxkIHJlc2lkZSwgYW5kIGFueSBCUEYgSklUIGltcGxlbWVudGF0aW9uIG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbiB3b3VsZCBsaWtlbHkgYmUgZm91bmQgdGhlcmUuIEknbGwgbmVlZCB0byB1c2UgbXkgc2VhcmNoaW5nIHNraWxscyB0byB0cmFjayBkb3duIHdoZXJlIHRoaXMgaXMgbG9jYXRlZC4gVGltZSB0byBzdGFydCB0aGUgc2VhcmNoIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM1NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDAxOjU2OjI2LjE3NjQ4NDkzOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDc1ODI0NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX0pJVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL21pcHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9LY29uZmlnPTI9Y29uZmlnIE1JUFNcXG4tLVxcbmFyY2gvbWlwcy9LY29uZmlnLTcwLVxcdHNlbGVjdCBIQVZFX0RZTkFNSUNfRlRSQUNFXFxuYXJjaC9taXBzL0tjb25maWc6NzE6XFx0c2VsZWN0IEhBVkVfRUJQRl9KSVQgaWYgIUNQVV9NSUNST01JUFNcXG5hcmNoL21pcHMvS2NvbmZpZy03Mi1cXHRzZWxlY3QgSEFWRV9FWElUX1RIUkVBRFxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZz04PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo5OkNPTkZJR19CUEZfSklUPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTEwLUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMy1cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU9Nj1pZmVxICgkKENPTkZJR18zMkJJVCkseSlcXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjc6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wMzIub1xcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtOC1lbHNlXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDY0Lm9cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oLTEzLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MTQ6I2lmbmRlZiBfQlBGX0pJVF9DT01QX0hcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oOjE1OiNkZWZpbmUgX0JQRl9KSVRfQ09NUF9IXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNi1cXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg9MjMzPWludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgtMjM0LVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MjM1OiNlbmRpZiAvKiBfQlBGX0pJVF9DT01QX0ggKi9cXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy00MC0vKiBUZW1wb3JhcnkgNjQtYml0IHJlZ2lzdGVyIHVzZWQgYnkgSklUICovXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjQxOiNkZWZpbmUgSklUX1JFR19UTVAgTUFYX0JQRl9KSVRfUkVHXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTQyLVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTMzLS8qIEV4dHJhIDY0LWJpdCBlQlBGIHJlZ2lzdGVycyB1c2VkIGJ5IEpJVCAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzozNDojZGVmaW5lIEpJVF9SRUdfVEMgKE1BWF9CUEZfSklUX1JFRyArIDApXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjM1OiNkZWZpbmUgSklUX1JFR19aWCAoTUFYX0JQRl9KSVRfUkVHICsgMSlcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDAxOjU2OjI2LjkyNDA3NjI5M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzNTEyNTc4NzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBNSVBTIEJQRiBKSVQgQ29tcGlsYXRpb24gZm9yIHN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgQlBGIEpJVCBjb25maWd1cmF0aW9uIChgQlBGX0pJVGApIG9uIGEgTUlQUyBhcmNoaXRlY3R1cmUuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBNSVBTIGluc3RhbmNlIHByZS1jb25maWd1cmVkLCBidXQgdGhhdCdzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBzZXQgdXAuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBlbHNlIGlzIGludm9sdmVkIGluIHRoZSBjb25maWd1cmF0aW9uLiBJdCdzIHVzdWFsbHkgdGhlIGNhc2UgdGhhdCBJIGFsc28gbmVlZCBgQlBGX1NZU0NBTExgIGVuYWJsZWQgZm9yIEJQRiB0byB3b3JrIGNvcnJlY3RseS5cblxuTmV4dCwgSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUga2VybmVsIGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFzIGJlZW4gbW9kaWZpZWQgdG8gc3VwcG9ydCBNSVBTIHdpdGggQlBGIEpJVC4gSSdtIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgaW4gYGJwZl9qaXRfY29tcC5jYCB0aGF0IGhhdmUgbGlrZWx5IGJlZW4gY2hhbmdlZC4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgYHZhbGlkX2FsdV9pYCwgYGVtaXRfYWx1X3JgLCBgZW1pdF9kaXZtb2RfcjY0YCwgYGJ1aWxkX2luc25gLCBhbmQgYGVtaXRfYWx1X3I2NGAgYXJlIGFsbCBnb29kIGNhbmRpZGF0ZXMgdG8gcmV2aWV3LlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuIEknbGwgbmVlZCB0byBleGFtaW5lIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jYCwgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIHNlZSBob3cgTUlQUyBoYW5kbGVzIHRoZXNlIGZ1bmN0aW9ucy4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBgYnVpbGRfaW5zbmAsIGBlbWl0X2FsdV9yYCwgYGVtaXRfZGl2bW9kX3I2NGAsIGBlbWl0X2FsdV9yNjRgLCBhbmQgYHZhbGlkX2FsdV9pYC5cblxuV2FpdCwgYGJ1aWxkX2luc25gIGlzIHByb2JhYmx5IHRvbyBnZW5lcmljIHRvIGJlIHVzZWZ1bC4gSSB0aGluayBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBhbmQgYGVtaXRfYWx1X3I2NGAgYXJlIG1vcmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFuZCB0aHVzLCBtb3JlIGluc2lnaHRmdWwuIE9oLCBhbmQgSSBzZWUgdGhhdCBhIGBqaXRfc21vZDY0YCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZC5cblxuTm93IEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGppdF9zbW9kNjRgIGlzIGRlY2xhcmVkIGBzdGF0aWNgLCBhcyBpdCBtb3N0IGxpa2VseSBpcy4gWWVwLCBpdCBpcy4gV2FpdCwgbG9va3MgbGlrZSBgYnBmX2ppdF9jb21wMzIuY2AgZGVmaW5lcyBpdCB0b28uIEknbGwgbmVlZCB0byBjaGVjayBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jYCBmb3IgdGhpcywganVzdCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM1NiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1Njo1MC40MzY2NTc2MzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM4NzAyNzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImppdF9zbW9kNjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz01MTY9c3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTUyNC0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNpZ25lZCA2NC1iaXQgbW9kdWxvICovXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjUyNTpzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy01MjYte1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jPTUzMz1zdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTU2MC1cXHRjYXNlIEJQRl9NT0Q6XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjU2MTpcXHRcXHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcXHUwMDI2aml0X3Ntb2Q2NCA6ICh1MzIpXFx1MDAyNmppdF9tb2Q2NDtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtNTYyLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1Njo1MS4wNzUzNjgxMjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzYwOTQ1OTc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTUlQUyBCUEYgSklUIFBhdGNoKipcblxuT2theSwgc28gYGppdF9zbW9kNjRgIGlzIGRlZmluaXRlbHkgc3RhdGljLCBnb29kIHRvIGNvbmZpcm0gdGhhdC4gTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgd2UgbmVlZCB0byBmb2N1cyBvbi4gTG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHByaW1hcmlseSB3aXRoIHRoZXNlOiBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgZW1pdF9hbHVfcjY0YCwgYW5kIG9mIGNvdXJzZSwgYGppdF9zbW9kNjRgIGl0c2VsZi5cblxuVGhlIGdpc3Qgb2YgdGhpcyBwYXRjaCBpcyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBzdXBwb3J0IHdpdGhpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBBIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLiBHaXZlbiB0aGF0LCB3ZSAqYWJzb2x1dGVseSogbmVlZCB0byBmdXp6IHRoaXMuIEFueSBidWdzIGhlcmUgY291bGQgbGVhZCB0byBjcmFzaGVzIG9yLCB3b3JzZSwgdnVsbmVyYWJpbGl0aWVzIGR1cmluZyBCUEYgcHJvZ3JhbSBleGVjdXRpb24uIENvcnJlY3RuZXNzIGlzIHBhcmFtb3VudCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBhcml0aG1ldGljIG9wZXJhdGlvbnMgd2l0aGluIGEgSklULlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlnIGZsYWdzPyBBaCwgeWVzLCBgQ09ORklHX01JUFNgIGlzIHRoZSBhcmNoaXRlY3R1cmUsIGJ1dCBubyBuZWVkIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGF0IHNpbmNlIGl0J3MgYW4gYXJjaGl0ZWN0dXJlIGNvbmZpZy4gVGhlIGltcG9ydGFudCBvbmVzIGZvciB0aGlzIGFyZSBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAsIHJpZ2h0PyBZZXMsIHRob3NlIGFyZSB0aGUgb25lcy5cblxuUmlnaHQsIGJhY2sgdG8gdGhlIHN5bWJvbHMuIExldCdzIG1ha2Ugc3VyZSB3ZSdyZSBnb29kIHdpdGggYGVtaXRfYWx1X3JgIGFuZCBgZW1pdF9hbHVfcjY0YC4gSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlc2UgaW50ZXJhY3Qgd2l0aCB0aGUgbmV3IGRpdmlzaW9uIGFuZCBtb2R1bG8gbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjA2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDAxOjU3OjA4LjY4NDgzMTkyOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgyMjM0ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtaXRfYWx1X3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9taXBzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYz0zMDc9dm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNTAtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmM6MzUxOnZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZClcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTM1Mi17XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oPTE3Mj12b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNzQtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MTc1OnZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZCk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNzYtXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM9MjAxPXN0YXRpYyB2b2lkIGVtaXRfYWx1X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0yNjYtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoyNjc6c3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0yNjgtXFx0XFx0XFx0IGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM9MTQ3MT1pbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1MjgtXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTUyOTpcXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTUzMC1cXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTU1Ni1cXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjE1NTc6XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNTU4LVxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE2MjEtXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfU1VCIHwgQlBGX1g6XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjE2MjI6XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE2MjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTU4PXN0YXRpYyB2b2lkIGVtaXRfYWx1X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMDAtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzoyMDE6c3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIwMi1cXHRcXHRcXHQgYm9vbCBpc19zaWduZWQpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjc0LVxcdFxcdC8qIFdpZHRoLWdlbmVyaWMgb3BlcmF0aW9ucyAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzoyNzU6XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgZmFsc2UpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yNzYtXFx0fVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTY1ND1pbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTY5Ny1cXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo2OTg6XFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNjk5LVxcdFxcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXFx1MDAyNmFsdSwgXFx1MDAyNnZhbCkpIHtcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MjAtXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzIxOlxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTcyMi1cXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzM1LVxcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzM2OlxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBmYWxzZSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTczNy1cXHRcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03NTQtXFx0XFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3NTU6XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzU2LVxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc5My1cXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3OTQ6XFx0XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03OTUtXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTgyMC1cXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6ODIxOlxcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODIyLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1NzowOS4yNjcwNzYwMjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0NzE5ODU3MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNSVBTIEJQRiBKSVQgQ29tcGlsZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGNvcmUgZnVuY3Rpb25zIHRvdWNoZWQgYnkgdGhpcyBwYXRjaDogYGVtaXRfYWx1X3JgLCBgZW1pdF9hbHVfcjY0YCwgYGVtaXRfZGl2bW9kX3I2NGAsIGFuZCBgaml0X3Ntb2Q2NGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBhcmUgYWZmZWN0ZWQgYnkgdGhlIGNoYW5nZXMgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMuXG5cbkEgbWlub3IgZGV0YWlsIGp1bXBlZCBvdXQg4oCTIHRoZSBgZW1pdF9hbHVfcjY0YCBmdW5jdGlvbidzIHNpZ25hdHVyZSBkaWZmZXJzIGJldHdlZW4gYGJwZl9qaXRfY29tcDMyLmNgIGFuZCBgYnBmX2ppdF9jb21wNjQuY2AuIFNwZWNpZmljYWxseSwgdGhlIDMyLWJpdCB2ZXJzaW9uICpsYWNrcyogdGhlIGBpc19zaWduZWRgIGFyZ3VtZW50LCB1bmxpa2UgaXRzIDY0LWJpdCBjb3VudGVycGFydC4gVGhpcyBkaWZmZXJlbmNlIGlzIHdvcnRoIG5vdGluZzsgaXQgY291bGQgaW5kaWNhdGUgdmFyaWF0aW9ucyBpbiB0aGUgc2lnbmVkbmVzcyBoYW5kbGluZy4gSG93ZXZlciwgSSBhbSBzYXRpc2ZpZWQgdGhhdCBgZW1pdF9hbHVfcjY0YCBpcyByZWxldmFudCBhcyBhIGZvY3VzIHN5bWJvbC5cblxuYGppdF9zbW9kNjRgIGlzIGFsc28gaW50ZXJlc3RpbmcgYmVjYXVzZSB3aGlsZSBpdCdzIGRlY2xhcmVkIHN0YXRpYywgaXQncyBjYWxsZWQgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIgZnJvbSB3aXRoaW4gYGVtaXRfZGl2bW9kX3I2NGAsIHNvIGl0J3MgZGlyZWN0bHkgcmVsZXZhbnQgdG8gdGhlIHNpZ25lZCBtb2R1bG8gaW1wbGVtZW50YXRpb24uIFRoZSBzY29wZSBvZiBlYWNoIGZ1bmN0aW9uIGlzIHVuZGVyc3Rvb2QgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNvbXBpbGF0aW9uLlxuXG5UaGUgY29udGV4dCBvZiB0aGlzIHBhdGNoIGlzIGltcGxlbWVudGluZyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgdGhlc2Ugb3BlcmF0aW9ucyB0byBhdm9pZCBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IGlzc3VlcyBvciBydW50aW1lIGNyYXNoZXMgZHVyaW5nIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cblxuVG8gZW5zdXJlIHByb3BlciBmdW5jdGlvbmFsaXR5LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDT05GSUdfQlBGX0pJVGAgaXMgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFuZCB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGFsc28gbmVlZGVkIGZvciBsb2FkaW5nIGFuZCBleGVjdXRpbmcgQlBGIHByb2dyYW1zLlxuXG5XaXRoIHRoaXMgdW5kZXJzdGFuZGluZywgbGV0J3MgcHJvY2VlZCB3aXRoIHNldHRpbmcgdGhlIHJlc3VsdHMgYW5kIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MjgzLCJPdXRwdXRUb2tlbnMiOjE1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1NzozOS43MzkwNjQ3OTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzAwODk3ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9hbHVfclwiLFxuICAgIFwiZW1pdF9hbHVfcjY0XCIsXG4gICAgXCJlbWl0X2Rpdm1vZF9yNjRcIixcbiAgICBcImppdF9zbW9kNjRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgZm9yIEJQRiBwcm9ncmFtcyBvbiBNSVBTLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIEpJVCBjb21waWxlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBuZXcgc2lnbmVkIG9wZXJhdGlvbnMgYW5kIGRvZXMgbm90IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9hbHVfclwiLFxuICAgIFwiZW1pdF9hbHVfcjY0XCIsXG4gICAgXCJlbWl0X2Rpdm1vZF9yNjRcIixcbiAgICBcImppdF9zbW9kNjRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgZm9yIEJQRiBwcm9ncmFtcyBvbiBNSVBTLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIEpJVCBjb21waWxlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBuZXcgc2lnbmVkIG9wZXJhdGlvbnMgYW5kIGRvZXMgbm90IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow76fq2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 01:39:50 +0000 UTC FinishedAt: 2026-07-17 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": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "d42e6d72-f004-4456-99b2-a04d35db46f5" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "emit_alu_r", "emit_alu_r64", "emit_divmod_r64", "jit_smod64" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzE3IDAxOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X2FsdV9yJiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3I2NCYjMzQ7LAogICAgJiMzNDtlbWl0X2Rpdm1vZF9yNjQmIzM0OywKICAgICYjMzQ7aml0X3Ntb2Q2NCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgZm9yIEJQRiBwcm9ncmFtcyBvbiBNSVBTLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIEpJVCBjb21waWxlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBuZXcgc2lnbmVkIG9wZXJhdGlvbnMgYW5kIGRvZXMgbm90IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDAxOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGU0MmNhNjdjNzE5Mjc2MzUyY2I3OTMyYjhmYTYyNjNkOGY5NzE5ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDE3IDAxOjU0OjAyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXG5pbmRleCBiNDNiZmQ0NDUyNTIxMy4uOWQzZWRiNTllZmMwOTggMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXG5AQCAtODUsMTUgJiM0Mzs4NSwyMCBAQCBJcF91MXUyKF9jdGMxKTtcbiBJcF91MnUxKF9jdGNtc2EpO1xuIElwX3UydTFzMyhfZGFkZGl1KTtcbiBJcF91M3UxdTIoX2RhZGR1KTtcbiYjNDM7SXBfdTF1MihfZGRpdik7XG4mIzQzO0lwX3UzdTF1MihfZGRpdl9yNik7XG4gSXBfdTF1MihfZGRpdnUpO1xuIElwX3UzdTF1MihfZGRpdnVfcjYpO1xuIElwX3UxKF9kaSk7XG4gSXBfdTJ1MW1zYnUzKF9kaW5zKTtcbiBJcF91MnUxbXNidTMoX2RpbnNtKTtcbiBJcF91MnUxbXNidTMoX2RpbnN1KTtcbiYjNDM7SXBfdTF1MihfZGl2KTtcbiYjNDM7SXBfdTN1MXUyKF9kaXZfcjYpO1xuIElwX3UxdTIoX2RpdnUpO1xuIElwX3UzdTF1MihfZGl2dV9yNik7XG4gSXBfdTF1MnUzKF9kbWZjMCk7XG4mIzQzO0lwX3UzdTF1MihfZG1vZCk7XG4gSXBfdTN1MXUyKF9kbW9kdSk7XG4gSXBfdTF1MnUzKF9kbXRjMCk7XG4gSXBfdTF1MihfZG11bHR1KTtcbkBAIC0xMzUsNiAmIzQzOzE0MCw3IEBAIElwX3UxdTJ1MyhfbWZjMCk7XG4gSXBfdTF1MnUzKF9tZmhjMCk7XG4gSXBfdTEoX21maGkpO1xuIElwX3UxKF9tZmxvKTtcbiYjNDM7SXBfdTN1MXUyKF9tb2QpO1xuIElwX3UzdTF1MihfbW9kdSk7XG4gSXBfdTN1MXUyKF9tb3ZuKTtcbiBJcF91M3UxdTIoX21vdnopO1xuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuYyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuaW5kZXggZTE1YzY3MDBjZDA4ODQuLmVmMWEyYjA0MDA3MDA3IDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcbkBAIC03NSw2ICYjNDM7NzUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xuIFx0W2luc25fY3RjbXNhXVx0PSB7TShtc2Ffb3AsIDAsIG1zYV9jdGNfb3AsIDAsIDAsIG1zYV9lbG1fb3ApLCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RhZGRpdV1cdD0ge00oZGFkZGl1X29wLCAwLCAwLCAwLCAwLCAwKSwgUlMgfCBSVCB8IFNJTU19LFxuIFx0W2luc25fZGFkZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRhZGR1X29wKSwgUlMgfCBSVCB8IFJEfSxcbiYjNDM7XHRbaW5zbl9kZGl2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2X29wKSwgUlMgfCBSVH0sXG4mIzQzO1x0W2luc25fZGRpdl9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kZGl2Nl9vcCwgZGRpdl9vcCksXG4mIzQzO1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX2RkaXZ1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2dV9vcCksIFJTIHwgUlR9LFxuIFx0W2luc25fZGRpdnVfcjZdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2RkaXZ1Nl9vcCwgZGRpdnVfb3ApLFxuIFx0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbkBAIC04MiwxMCAmIzQzOzg1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9kaW5zXVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc19vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RpbnNtXVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc21fb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kaW5zdV1cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnN1X29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuJiM0MztcdFtpbnNuX2Rpdl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2X29wKSwgUlMgfCBSVH0sXG4mIzQzO1x0W2luc25fZGl2X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfZGl2Nl9vcCwgZGl2X29wKSxcbiYjNDM7XHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZGl2dV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2dV9vcCksIFJTIHwgUlR9LFxuIFx0W2luc25fZGl2dV9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9kaXZ1Nl9vcCwgZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG1mYzBdXHQ9IHtNKGNvcDBfb3AsIGRtZmNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcbiYjNDM7XHRbaW5zbl9kbW9kXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2Rtb2Rfb3AsIGRkaXZfb3ApLFxuJiM0MztcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbW9kdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZG1vZHVfb3AsIGRkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kbXRjMF1cdD0ge00oY29wMF9vcCwgZG10Y19vcCwgMCwgMCwgMCwgMCksIFJUIHwgUkQgfCBTRVR9LFxuQEAgLTE0MCw2ICYjNDM7MTQ4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX21maGMwXVx0PSB7TShjb3AwX29wLCBtZmhjMF9vcCwgMCwgMCwgMCwgMCksICBSVCB8IFJEIHwgU0VUfSxcbiBcdFtpbnNuX21maGldXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1maGlfb3ApLCBSRH0sXG4gXHRbaW5zbl9tZmxvXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmxvX29wKSwgUkR9LFxuJiM0MztcdFtpbnNuX21vZF1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X21vZF9vcCwgZGl2X29wKSxcbiYjNDM7XHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fbW9kdV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9tb2R1X29wLCBkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9tb3ZuXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtb3ZuX29wKSwgUlMgfCBSVCB8IFJEfSxcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS5jIGIvYXJjaC9taXBzL21tL3Vhc20uY1xuaW5kZXggMTI1MTQwOTc5ZDYyYzUuLjlkODdkNTcxNjRkNzk4IDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20uY1xuQEAgLTQ5LDE2ICYjNDM7NDksMTcgQEAgZW51bSBvcGNvZGUge1xuIFx0aW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLFxuIFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcbiBcdGluc25fYmx0eiwgaW5zbl9ibHR6bCwgaW5zbl9ibmUsIGluc25fYnJlYWssIGluc25fY2FjaGUsIGluc25fY2ZjMSxcbi1cdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSxcbi1cdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxuLVx0aW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbiYjNDM7XHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdixcbiYjNDM7XHRpbnNuX2RkaXZfcjYsIGluc25fZGRpdnUsIGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSxcbiYjNDM7XHRpbnNuX2RpbnN1LCBpbnNuX2RpdiwgaW5zbl9kaXZfcjYsIGluc25fZGl2dSwgaW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLFxuJiM0MztcdGluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsXG4gXHRpbnNuX2RtdWx1LCBpbnNuX2Ryb3RyLCBpbnNuX2Ryb3RyMzIsIGluc25fZHNiaCwgaW5zbl9kc2hkLCBpbnNuX2RzbGwsXG4gXHRpbnNuX2RzbGwzMiwgaW5zbl9kc2xsdiwgaW5zbl9kc3JhLCBpbnNuX2RzcmEzMiwgaW5zbl9kc3JhdiwgaW5zbl9kc3JsLFxuIFx0aW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLFxuIFx0aW5zbl9qLCBpbnNuX2phbCwgaW5zbl9qYWxyLCBpbnNuX2pyLCBpbnNuX2xiLCBpbnNuX2xidSwgaW5zbl9sZCxcbiBcdGluc25fbGRkaXIsIGluc25fbGRwdGUsIGluc25fbGR4LCBpbnNuX2xoLCBpbnNuX2xodSwgaW5zbl9sbCwgaW5zbl9sbGQsXG4gXHRpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSxcbi1cdGluc25fbWZsbywgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLCBpbnNuX210aGMwLFxuJiM0MztcdGluc25fbWZsbywgaW5zbl9tb2QsIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCwgaW5zbl9tdGhjMCxcbiBcdGluc25fbXRoaSwgaW5zbl9tdGxvLCBpbnNuX211bCwgaW5zbl9tdWx0dSwgaW5zbl9tdWx1LCBpbnNuX211aHUsIGluc25fbm9yLFxuIFx0aW5zbl9vciwgaW5zbl9vcmksIGluc25fcHJlZiwgaW5zbl9yZmUsIGluc25fcm90ciwgaW5zbl9zYiwgaW5zbl9zYyxcbiBcdGluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLFxuQEAgLTI4Nyw5ICYjNDM7Mjg4LDEyIEBAIElfdTF1MihfY2ZjMSlcbiBJX3UydTEoX2NmY21zYSlcbiBJX3UxdTIoX2N0YzEpXG4gSV91MnUxKF9jdGNtc2EpXG4mIzQzO0lfdTF1MihfZGRpdilcbiYjNDM7SV91M3UxdTIoX2RkaXZfcjYpXG4gSV91MXUyKF9kZGl2dSlcbiBJX3UzdTF1MihfZGRpdnVfcjYpXG4gSV91MXUydTMoX2RtZmMwKVxuJiM0MztJX3UzdTF1MihfZG1vZClcbiBJX3UzdTF1MihfZG1vZHUpXG4gSV91MXUydTMoX2RtdGMwKVxuIElfdTF1MihfZG11bHR1KVxuQEAgLTI5Nyw2ICYjNDM7MzAxLDggQEAgSV91M3UxdTIoX2RtdWx1KVxuIElfdTJ1MXMzKF9kYWRkaXUpXG4gSV91M3UxdTIoX2RhZGR1KVxuIElfdTEoX2RpKTtcbiYjNDM7SV91MXUyKF9kaXYpXG4mIzQzO0lfdTN1MXUyKF9kaXZfcjYpXG4gSV91MXUyKF9kaXZ1KVxuIElfdTN1MXUyKF9kaXZ1X3I2KVxuIElfdTJ1MShfZHNiaCk7XG5AQCAtMzMyLDYgJiM0MzszMzgsNyBAQCBJX3UyczN1MShfbHcpXG4gSV91MnMzdTEoX2x3dSlcbiBJX3UxdTJ1MyhfbWZjMClcbiBJX3UxdTJ1MyhfbWZoYzApXG4mIzQzO0lfdTN1MXUyKF9tb2QpXG4gSV91M3UxdTIoX21vZHUpXG4gSV91M3UxdTIoX21vdm4pXG4gSV91M3UxdTIoX21vdnopXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDZlZTRhYmU2YTFmNzA1Li41MDRkYWVhNGFhYzJlOSAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0yMDgsNyAmIzQzOzIwOCw3IEBAIHZvaWQgZW1pdF9tb3ZfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMpXG4gfVxuIFxuIC8qIFZhbGlkYXRlIEFMVSBpbW1lZGlhdGUgcmFuZ2UgKi9cbi1ib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxuJiM0Mztib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBib29sIGlzX3NpZ25lZClcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdGNhc2UgQlBGX05FRzpcbkBAIC0yMzcsNiAmIzQzOzIzNywxNSBAQCBib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxuIFx0XHRyZXR1cm4gaW1tID09IDAgfHwgKGltbSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMihpbW0pKTtcbiBcdGNhc2UgQlBGX0RJVjpcbiBcdGNhc2UgQlBGX01PRDpcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBUaGUgcmV3cml0ZSB0byBhIHNoaWZ0L21hc2sgYmVsb3cgaXMgYW4gdW5zaWduZWQtb25seVxuJiM0MztcdFx0ICogb3B0aW1pemF0aW9uOiBhcml0aG1ldGljIHJpZ2h0IHNoaWZ0IHJvdW5kcyB0b3dhcmRcbiYjNDM7XHRcdCAqIG5lZ2F0aXZlIGluZmluaXR5IHJhdGhlciB0aGFuIHplcm8sIGFuZCBtYXNraW5nIGRvZXMgbm90XG4mIzQzO1x0XHQgKiByZXByb2R1Y2UgYSBuZWdhdGl2ZSBkaXZpZGVuZCYjMzk7cyBzaWduLiBGb3JjZSB0aGUgc2lnbmVkXG4mIzQzO1x0XHQgKiBjYXNlIHRocm91Z2ggdGhlIGdlbmVyYWwgcmVnaXN0ZXIgcGF0aCBpbnN0ZWFkLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAoaXNfc2lnbmVkKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cbiBcdFx0cmV0dXJuICh1MzIpaW1tIFx1MDAzYz0gMHgxMDAwMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XG4gXHR9XG5AQCAtMzM5LDcgJiM0MzszNDgsNyBAQCB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4gfVxuIFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiYjNDM7dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IFx1MDAyNiBzcmMgKi9cbkBAIC0zODUsMjAgJiM0MzszOTQsMzggQEAgdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZCkge1xuJiM0MztcdFx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbiYjNDM7XHRcdFx0fVxuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4mIzQzO1x0XHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkaXZ1LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xuIFx0Y2FzZSBCUEZfTU9EOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdGlmIChpc19zaWduZWQpIHtcbiYjNDM7XHRcdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgbW9kLCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuLVx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuJiM0MztcdFx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaCBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbmluZGV4IGEzN2ZlMjA4MThlYjljLi42MzY3YjkzNmI2N2U3MCAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmhcbkBAIC0xNjMsNyAmIzQzOzE2Myw3IEBAIHZvaWQgZW1pdF9tb3ZfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tKTtcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcbiBcbiAvKiBWYWxpZGF0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIHJhbmdlICovXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XG4mIzQzO2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKTtcbiBcbiAvKiBSZXdyaXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgb3BlcmF0aW9uICovXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG5AQCAtMTcyLDcgJiM0MzsxNzIsNyBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcbiB2b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApO1xuIFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cbi12b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCk7XG4mIzQzO3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZCk7XG4gXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXG4gdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCA0MGE4NzhiNjcyZjVkMy4uNWQ3NjI0ZjBlMzAxNjMgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTUxMiw3ICYjNDM7NTEyLDcgQEAgc3RhdGljIHZvaWQgZW1pdF9tdWxfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuIFx0Y2xvYmJlcl9yZWc2NChjdHgsIGRzdCk7XG4gfVxuIFxuLS8qIEhlbHBlciBmdW5jdGlvbiBmb3IgNjQtYml0IG1vZHVsbyAqL1xuJiM0MzsvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHVuc2lnbmVkIDY0LWJpdCBtb2R1bG8gKi9cbiBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXG4ge1xuIFx0dTY0IHJlbTtcbkBAIC01MjEsOSAmIzQzOzUyMSwxNyBAQCBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXG4gXHRyZXR1cm4gcmVtO1xuIH1cbiBcbiYjNDM7LyogSGVscGVyIGZ1bmN0aW9uIGZvciBzaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuJiM0MztzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKVxuJiM0Mzt7XG4mIzQzO1x0czY0IHF1b3QgPSBkaXY2NF9zNjQoYSwgYik7XG4mIzQzO1xuJiM0MztcdHJldHVybiBhIC0gcXVvdCAqIGI7XG4mIzQzO31cbiYjNDM7XG4gLyogQUxVIGRpdi9tb2QgcmVnaXN0ZXIgKDY0LWJpdCkgKi9cbi1zdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4tXHRcdFx0ICAgIGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApXG4mIzQzO3N0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXG4mIzQzO1x0XHRcdCAgICBjb25zdCB1OCBzcmNbXSwgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdGNvbnN0IHU4ICpyMCA9IGJwZjJtaXBzMzJbQlBGX1JFR18wXTsgLyogTWFwcGVkIHRvIHYwLXYxICovXG4gXHRjb25zdCB1OCAqcjEgPSBicGYybWlwczMyW0JQRl9SRUdfMV07IC8qIE1hcHBlZCB0byBhMC1hMSAqL1xuQEAgLTU0NiwxMSAmIzQzOzU1NCwxMSBAQCBzdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRhZGRyID0gKHUzMilcdTAwMjZkaXY2NF91NjQ7XG4mIzQzO1x0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZkaXY2NF9zNjQgOiAodTMyKVx1MDAyNmRpdjY0X3U2NDtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0YWRkciA9ICh1MzIpXHUwMDI2aml0X21vZDY0O1xuJiM0MztcdFx0YWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpXHUwMDI2aml0X3Ntb2Q2NCA6ICh1MzIpXHUwMDI2aml0X21vZDY0O1xuIFx0XHRicmVhaztcbiBcdH1cbiBcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDksIGFkZHIpO1xuQEAgLTE1MTYsOSAmIzQzOzE1MjQsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuJiM0MztcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmID09IDEpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgbG8oZHN0KSwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtMTU0Niw3ICYjNDM7MTU1NCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cbkBAIC0xNTk5LDcgJiM0MzsxNjA3LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdFx0ICogYW5kIHRoZW4gZG8gdGhlIG9wZXJhdGlvbiBvbiB0aGlzIHJlZ2lzdGVyLlxuIFx0XHQgKi9cbiBcdFx0ZW1pdF9tb3Zfc2VfaTY0KGN0eCwgdG1wLCBpbW0pO1xuLVx0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDI2IHNyYyAoNjQtYml0KSAqL1xuIFx0LyogZHN0ID0gZHN0IHwgc3JjICg2NC1iaXQpICovXG5AQCAtMTYyOSw3ICYjNDM7MTYzNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuJiM0MztcdFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGZhN2U5YWEzN2Y0OThkLi5kMGE4ZmI3OTJjOWJlMSAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMTk4LDcgJiM0MzsxOTgsOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4gfVxuIFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi9cbi1zdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiYjNDM7c3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG4mIzQzO1x0XHRcdCBib29sIGlzX3NpZ25lZClcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCBcdTAwM2NcdTAwM2Mgc3JjICovXG5AQCAtMjM1LDI1ICYjNDM7MjM2LDQzIEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xuIFx0Y2FzZSBCUEZfRElWOlxuLVx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuLVx0XHRcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRpZiAoaXNfc2lnbmVkKSB7XG4mIzQzO1x0XHRcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbiYjNDM7XHRcdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgZGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuJiM0MztcdFx0aWYgKGlzX3NpZ25lZCkge1xuJiM0MztcdFx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xuJiM0MztcdFx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuJiM0MztcdFx0XHR9XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4tXHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4mIzQzO1x0XHRcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XG4mIzQzO1x0XHRcdFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbiYjNDM7XHRcdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbiYjNDM7XHRcdFx0fVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0LyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovXG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3ApO1xuJiM0MztcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgZmFsc2UpO1xuIFx0fVxuIFx0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xuIH1cbkBAIC02NzQsOSAmIzQzOzY5Myw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfQU5EIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4mIzQzO1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBmYWxzZSkpIHtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XG4gXHRcdH1cbkBAIC02OTYsMTAgJiM0Mzs3MTUsMTAgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbiYjNDM7XHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZiA9PSAxKSkge1xuIFx0XHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X3NleHQoY3R4LCBkc3QsIGRzdCk7XG4gXHRcdFx0ZW1pdF9hbHVfaShjdHgsIGRzdCwgdmFsLCBhbHUpO1xuQEAgLTcxNCw3ICYjNDM7NzMzLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9PUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgXHUwMDNlXHUwMDNlIHNyYyAqL1xuQEAgLTczMyw3ICYjNDM7NzUyLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcbiBcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRlbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7XG4tXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTtcbiYjNDM7XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuQEAgLTc3MCw5ICYjNDM7Nzg5LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9LOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbiYjNDM7XHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZiA9PSAxKSkge1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTc5OSw3ICYjNDM7ODE4LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbi1cdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4mIzQzO1x0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xuIFx0LyogZHN0ID0gaHRvYmUoZHN0KSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDAxOjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X2FsdV9yJiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3I2NCYjMzQ7LAogICAgJiMzNDtlbWl0X2Rpdm1vZF9yNjQmIzM0OywKICAgICYjMzQ7aml0X3Ntb2Q2NCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgZm9yIEJQRiBwcm9ncmFtcyBvbiBNSVBTLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIEpJVCBjb21waWxlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBuZXcgc2lnbmVkIG9wZXJhdGlvbnMgYW5kIGRvZXMgbm90IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZTQyY2E2N2M3MTkyNzYzNTJjYjc5MzJiOGZhNjI2M2Q4Zjk3MTlkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTcgMDE6NTQ6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaAppbmRleCBiNDNiZmQ0NDUyNTIxMy4uOWQzZWRiNTllZmMwOTggMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaApAQCAtODUsMTUgJiM0Mzs4NSwyMCBAQCBJcF91MXUyKF9jdGMxKTsKIElwX3UydTEoX2N0Y21zYSk7CiBJcF91MnUxczMoX2RhZGRpdSk7CiBJcF91M3UxdTIoX2RhZGR1KTsKJiM0MztJcF91MXUyKF9kZGl2KTsKJiM0MztJcF91M3UxdTIoX2RkaXZfcjYpOwogSXBfdTF1MihfZGRpdnUpOwogSXBfdTN1MXUyKF9kZGl2dV9yNik7CiBJcF91MShfZGkpOwogSXBfdTJ1MW1zYnUzKF9kaW5zKTsKIElwX3UydTFtc2J1MyhfZGluc20pOwogSXBfdTJ1MW1zYnUzKF9kaW5zdSk7CiYjNDM7SXBfdTF1MihfZGl2KTsKJiM0MztJcF91M3UxdTIoX2Rpdl9yNik7CiBJcF91MXUyKF9kaXZ1KTsKIElwX3UzdTF1MihfZGl2dV9yNik7CiBJcF91MXUydTMoX2RtZmMwKTsKJiM0MztJcF91M3UxdTIoX2Rtb2QpOwogSXBfdTN1MXUyKF9kbW9kdSk7CiBJcF91MXUydTMoX2RtdGMwKTsKIElwX3UxdTIoX2RtdWx0dSk7CkBAIC0xMzUsNiAmIzQzOzE0MCw3IEBAIElwX3UxdTJ1MyhfbWZjMCk7CiBJcF91MXUydTMoX21maGMwKTsKIElwX3UxKF9tZmhpKTsKIElwX3UxKF9tZmxvKTsKJiM0MztJcF91M3UxdTIoX21vZCk7CiBJcF91M3UxdTIoX21vZHUpOwogSXBfdTN1MXUyKF9tb3ZuKTsKIElwX3UzdTF1MihfbW92eik7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMKaW5kZXggZTE1YzY3MDBjZDA4ODQuLmVmMWEyYjA0MDA3MDA3IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jCkBAIC03NSw2ICYjNDM7NzUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0gewogCVtpbnNuX2N0Y21zYV0JPSB7TShtc2Ffb3AsIDAsIG1zYV9jdGNfb3AsIDAsIDAsIG1zYV9lbG1fb3ApLCBSRCB8IFJFfSwKIAlbaW5zbl9kYWRkaXVdCT0ge00oZGFkZGl1X29wLCAwLCAwLCAwLCAwLCAwKSwgUlMgfCBSVCB8IFNJTU19LAogCVtpbnNuX2RhZGR1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRhZGR1X29wKSwgUlMgfCBSVCB8IFJEfSwKJiM0MzsJW2luc25fZGRpdl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2X29wKSwgUlMgfCBSVH0sCiYjNDM7CVtpbnNuX2RkaXZfcjZdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdl9kZGl2Nl9vcCwgZGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZGRpdnVdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdnVfb3ApLCBSUyB8IFJUfSwKIAlbaW5zbl9kZGl2dV9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kZGl2dTZfb3AsIGRkaXZ1X29wKSwKIAkJCQlSUyB8IFJUIHwgUkR9LApAQCAtODIsMTAgJiM0Mzs4NSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0gewogCVtpbnNuX2RpbnNdCT0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sCiAJW2luc25fZGluc21dCT0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnNtX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LAogCVtpbnNuX2RpbnN1XQk9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zdV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSwKJiM0MzsJW2luc25fZGl2XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdl9vcCksIFJTIHwgUlR9LAomIzQzOwlbaW5zbl9kaXZfcjZdCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X2RpdjZfb3AsIGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fZGl2dV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZ1X29wKSwgUlMgfCBSVH0sCiAJW2luc25fZGl2dV9yNl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X2RpdnU2X29wLCBkaXZ1X29wKSwKIAkJCQlSUyB8IFJUIHwgUkR9LAogCVtpbnNuX2RtZmMwXQk9IHtNKGNvcDBfb3AsIGRtZmNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSwKJiM0MzsJW2luc25fZG1vZF0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2Rtb2Rfb3AsIGRkaXZfb3ApLAomIzQzOwkJCQlSUyB8IFJUIHwgUkR9LAogCVtpbnNuX2Rtb2R1XQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2Rtb2R1X29wLCBkZGl2dV9vcCksCiAJCQkJUlMgfCBSVCB8IFJEfSwKIAlbaW5zbl9kbXRjMF0JPSB7TShjb3AwX29wLCBkbXRjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sCkBAIC0xNDAsNiAmIzQzOzE0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7CiAJW2luc25fbWZoYzBdCT0ge00oY29wMF9vcCwgbWZoYzBfb3AsIDAsIDAsIDAsIDApLCAgUlQgfCBSRCB8IFNFVH0sCiAJW2luc25fbWZoaV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmhpX29wKSwgUkR9LAogCVtpbnNuX21mbG9dCT0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZsb19vcCksIFJEfSwKJiM0MzsJW2luc25fbW9kXQk9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9tb2Rfb3AsIGRpdl9vcCksCiYjNDM7CQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fbW9kdV0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X21vZHVfb3AsIGRpdnVfb3ApLAogCQkJCVJTIHwgUlQgfCBSRH0sCiAJW2luc25fbW92bl0JPSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtb3ZuX29wKSwgUlMgfCBSVCB8IFJEfSwKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jCmluZGV4IDEyNTE0MDk3OWQ2MmM1Li45ZDg3ZDU3MTY0ZDc5OCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL3Vhc20uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL21pcHMvbW0vdWFzbS5jCkBAIC00OSwxNiAmIzQzOzQ5LDE3IEBAIGVudW0gb3Bjb2RlIHsKIAlpbnNuX2FkZGl1LCBpbnNuX2FkZHUsIGluc25fYW5kLCBpbnNuX2FuZGksIGluc25fYmJpdDAsIGluc25fYmJpdDEsCiAJaW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleiwKIAlpbnNuX2JsdHosIGluc25fYmx0emwsIGluc25fYm5lLCBpbnNuX2JyZWFrLCBpbnNuX2NhY2hlLCBpbnNuX2NmYzEsCi0JaW5zbl9jZmNtc2EsIGluc25fY3RjMSwgaW5zbl9jdGNtc2EsIGluc25fZGFkZGl1LCBpbnNuX2RhZGR1LCBpbnNuX2RkaXZ1LAotCWluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LAotCWluc25fZGl2dV9yNiwgaW5zbl9kbWZjMCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsCiYjNDM7CWluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2LAomIzQzOwlpbnNuX2RkaXZfcjYsIGluc25fZGRpdnUsIGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwKJiM0MzsJaW5zbl9kaW5zdSwgaW5zbl9kaXYsIGluc25fZGl2X3I2LCBpbnNuX2RpdnUsIGluc25fZGl2dV9yNiwgaW5zbl9kbWZjMCwKJiM0MzsJaW5zbl9kbW9kLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSwKIAlpbnNuX2RtdWx1LCBpbnNuX2Ryb3RyLCBpbnNuX2Ryb3RyMzIsIGluc25fZHNiaCwgaW5zbl9kc2hkLCBpbnNuX2RzbGwsCiAJaW5zbl9kc2xsMzIsIGluc25fZHNsbHYsIGluc25fZHNyYSwgaW5zbl9kc3JhMzIsIGluc25fZHNyYXYsIGluc25fZHNybCwKIAlpbnNuX2RzcmwzMiwgaW5zbl9kc3JsdiwgaW5zbl9kc3VidSwgaW5zbl9lcmV0LCBpbnNuX2V4dCwgaW5zbl9pbnMsCiAJaW5zbl9qLCBpbnNuX2phbCwgaW5zbl9qYWxyLCBpbnNuX2pyLCBpbnNuX2xiLCBpbnNuX2xidSwgaW5zbl9sZCwKIAlpbnNuX2xkZGlyLCBpbnNuX2xkcHRlLCBpbnNuX2xkeCwgaW5zbl9saCwgaW5zbl9saHUsIGluc25fbGwsIGluc25fbGxkLAogCWluc25fbHVpLCBpbnNuX2x3LCBpbnNuX2x3dSwgaW5zbl9sd3gsIGluc25fbWZjMCwgaW5zbl9tZmhjMCwgaW5zbl9tZmhpLAotCWluc25fbWZsbywgaW5zbl9tb2R1LCBpbnNuX21vdm4sIGluc25fbW92eiwgaW5zbl9tdGMwLCBpbnNuX210aGMwLAomIzQzOwlpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsCiAJaW5zbl9tdGhpLCBpbnNuX210bG8sIGluc25fbXVsLCBpbnNuX211bHR1LCBpbnNuX211bHUsIGluc25fbXVodSwgaW5zbl9ub3IsCiAJaW5zbl9vciwgaW5zbl9vcmksIGluc25fcHJlZiwgaW5zbl9yZmUsIGluc25fcm90ciwgaW5zbl9zYiwgaW5zbl9zYywKIAlpbnNuX3NjZCwgaW5zbl9zZWxlcXosIGluc25fc2VsbmV6LCBpbnNuX3NkLCBpbnNuX3NoLCBpbnNuX3NsbCwKQEAgLTI4Nyw5ICYjNDM7Mjg4LDEyIEBAIElfdTF1MihfY2ZjMSkKIElfdTJ1MShfY2ZjbXNhKQogSV91MXUyKF9jdGMxKQogSV91MnUxKF9jdGNtc2EpCiYjNDM7SV91MXUyKF9kZGl2KQomIzQzO0lfdTN1MXUyKF9kZGl2X3I2KQogSV91MXUyKF9kZGl2dSkKIElfdTN1MXUyKF9kZGl2dV9yNikKIElfdTF1MnUzKF9kbWZjMCkKJiM0MztJX3UzdTF1MihfZG1vZCkKIElfdTN1MXUyKF9kbW9kdSkKIElfdTF1MnUzKF9kbXRjMCkKIElfdTF1MihfZG11bHR1KQpAQCAtMjk3LDYgJiM0MzszMDEsOCBAQCBJX3UzdTF1MihfZG11bHUpCiBJX3UydTFzMyhfZGFkZGl1KQogSV91M3UxdTIoX2RhZGR1KQogSV91MShfZGkpOwomIzQzO0lfdTF1MihfZGl2KQomIzQzO0lfdTN1MXUyKF9kaXZfcjYpCiBJX3UxdTIoX2RpdnUpCiBJX3UzdTF1MihfZGl2dV9yNikKIElfdTJ1MShfZHNiaCk7CkBAIC0zMzIsNiAmIzQzOzMzOCw3IEBAIElfdTJzM3UxKF9sdykKIElfdTJzM3UxKF9sd3UpCiBJX3UxdTJ1MyhfbWZjMCkKIElfdTF1MnUzKF9tZmhjMCkKJiM0MztJX3UzdTF1MihfbW9kKQogSV91M3UxdTIoX21vZHUpCiBJX3UzdTF1MihfbW92bikKIElfdTN1MXUyKF9tb3Z6KQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMKaW5kZXggNmVlNGFiZTZhMWY3MDUuLjUwNGRhZWE0YWFjMmU5IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTIwOCw3ICYjNDM7MjA4LDcgQEAgdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYykKIH0KIAogLyogVmFsaWRhdGUgQUxVIGltbWVkaWF0ZSByYW5nZSAqLwotYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSkKJiM0Mztib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCBib29sIGlzX3NpZ25lZCkKIHsKIAlzd2l0Y2ggKEJQRl9PUChvcCkpIHsKIAljYXNlIEJQRl9ORUc6CkBAIC0yMzcsNiAmIzQzOzIzNywxNSBAQCBib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKQogCQlyZXR1cm4gaW1tID09IDAgfHwgKGltbSAmZ3Q7IDAgJmFtcDsmYW1wOyBpc19wb3dlcl9vZl8yKGltbSkpOwogCWNhc2UgQlBGX0RJVjoKIAljYXNlIEJQRl9NT0Q6CiYjNDM7CQkvKgomIzQzOwkJICogVGhlIHJld3JpdGUgdG8gYSBzaGlmdC9tYXNrIGJlbG93IGlzIGFuIHVuc2lnbmVkLW9ubHkKJiM0MzsJCSAqIG9wdGltaXphdGlvbjogYXJpdGhtZXRpYyByaWdodCBzaGlmdCByb3VuZHMgdG93YXJkCiYjNDM7CQkgKiBuZWdhdGl2ZSBpbmZpbml0eSByYXRoZXIgdGhhbiB6ZXJvLCBhbmQgbWFza2luZyBkb2VzIG5vdAomIzQzOwkJICogcmVwcm9kdWNlIGEgbmVnYXRpdmUgZGl2aWRlbmQmIzM5O3Mgc2lnbi4gRm9yY2UgdGhlIHNpZ25lZAomIzQzOwkJICogY2FzZSB0aHJvdWdoIHRoZSBnZW5lcmFsIHJlZ2lzdGVyIHBhdGggaW5zdGVhZC4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKGlzX3NpZ25lZCkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiAJCS8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi8KIAkJcmV0dXJuICh1MzIpaW1tICZsdDs9IDB4MTAwMDAgJmFtcDsmYW1wOyBpc19wb3dlcl9vZl8yKCh1MzIpaW1tKTsKIAl9CkBAIC0zMzksNyAmIzQzOzM0OCw3IEBAIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCkKIH0KIAogLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqLwotdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApCiYjNDM7dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIGJvb2wgaXNfc2lnbmVkKQogewogCXN3aXRjaCAoQlBGX09QKG9wKSkgewogCS8qIGRzdCA9IGRzdCAmYW1wOyBzcmMgKi8KQEAgLTM4NSwyMCAmIzQzOzM5NCwzOCBAQCB2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCkKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0IC8gc3JjICovCiAJY2FzZSBCUEZfRElWOgotCQlpZiAoY3B1X2hhc19taXBzMzJyNikgewotCQkJZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJaWYgKGlzX3NpZ25lZCkgewomIzQzOwkJCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkaXZfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7CiYjNDM7CQkJfQogCQl9IGVsc2UgewotCQkJZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTsKLQkJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwomIzQzOwkJCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwomIzQzOwkJCQllbWl0KGN0eCwgbWZsbywgZHN0KTsKJiM0MzsJCQl9CiAJCX0KIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICUgc3JjICovCiAJY2FzZSBCUEZfTU9EOgotCQlpZiAoY3B1X2hhc19taXBzMzJyNikgewotCQkJZW1pdChjdHgsIG1vZHUsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJaWYgKGlzX3NpZ25lZCkgewomIzQzOwkJCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTsKJiM0MzsJCQkJZW1pdChjdHgsIG1maGksIGRzdCk7CiYjNDM7CQkJfQogCQl9IGVsc2UgewotCQkJZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTsKLQkJCWVtaXQoY3R4LCBtZmhpLCBkc3QpOwomIzQzOwkJCWlmIChjcHVfaGFzX21pcHMzMnI2KSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpOwomIzQzOwkJCQllbWl0KGN0eCwgbWZoaSwgZHN0KTsKJiM0MzsJCQl9CiAJCX0KIAkJYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaCBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgKaW5kZXggYTM3ZmUyMDgxOGViOWMuLjYzNjdiOTM2YjY3ZTcwIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgKQEAgLTE2Myw3ICYjNDM7MTYzLDcgQEAgdm9pZCBlbWl0X21vdl9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0pOwogdm9pZCBlbWl0X21vdl9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYyk7CiAKIC8qIFZhbGlkYXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgcmFuZ2UgKi8KLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pOwomIzQzO2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKTsKIAogLyogUmV3cml0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIG9wZXJhdGlvbiAqLwogYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7CkBAIC0xNzIsNyAmIzQzOzE3Miw3IEBAIGJvb2wgcmV3cml0ZV9hbHVfaSh1OCBvcCwgczMyIGltbSwgdTggKmFsdSwgczMyICp2YWwpOwogdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTsKIAogLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqLwotdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApOwomIzQzO3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZCk7CiAKIC8qIEF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoMzItYml0KSAqLwogdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMKaW5kZXggNDBhODc4YjY3MmY1ZDMuLjVkNzYyNGYwZTMwMTYzIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jCkBAIC01MTIsNyAmIzQzOzUxMiw3IEBAIHN0YXRpYyB2b2lkIGVtaXRfbXVsX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwKIAljbG9iYmVyX3JlZzY0KGN0eCwgZHN0KTsKIH0KIAotLyogSGVscGVyIGZ1bmN0aW9uIGZvciA2NC1iaXQgbW9kdWxvICovCiYjNDM7LyogSGVscGVyIGZ1bmN0aW9uIGZvciB1bnNpZ25lZCA2NC1iaXQgbW9kdWxvICovCiBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpCiB7CiAJdTY0IHJlbTsKQEAgLTUyMSw5ICYjNDM7NTIxLDE3IEBAIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYikKIAlyZXR1cm4gcmVtOwogfQogCiYjNDM7LyogSGVscGVyIGZ1bmN0aW9uIGZvciBzaWduZWQgNjQtYml0IG1vZHVsbyAqLwomIzQzO3N0YXRpYyBzNjQgaml0X3Ntb2Q2NChzNjQgYSwgczY0IGIpCiYjNDM7ewomIzQzOwlzNjQgcXVvdCA9IGRpdjY0X3M2NChhLCBiKTsKJiM0MzsKJiM0MzsJcmV0dXJuIGEgLSBxdW90ICogYjsKJiM0Mzt9CiYjNDM7CiAvKiBBTFUgZGl2L21vZCByZWdpc3RlciAoNjQtYml0KSAqLwotc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LAotCQkJICAgIGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApCiYjNDM7c3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBkc3RbXSwKJiM0MzsJCQkgICAgY29uc3QgdTggc3JjW10sIHU4IG9wLCBib29sIGlzX3NpZ25lZCkKIHsKIAljb25zdCB1OCAqcjAgPSBicGYybWlwczMyW0JQRl9SRUdfMF07IC8qIE1hcHBlZCB0byB2MC12MSAqLwogCWNvbnN0IHU4ICpyMSA9IGJwZjJtaXBzMzJbQlBGX1JFR18xXTsgLyogTWFwcGVkIHRvIGEwLWExICovCkBAIC01NDYsMTEgJiM0Mzs1NTQsMTEgQEAgc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LAogCXN3aXRjaCAoQlBGX09QKG9wKSkgewogCS8qIGRzdCA9IGRzdCAvIHNyYyAqLwogCWNhc2UgQlBGX0RJVjoKLQkJYWRkciA9ICh1MzIpJmFtcDtkaXY2NF91NjQ7CiYjNDM7CQlhZGRyID0gaXNfc2lnbmVkID8gKHUzMikmYW1wO2RpdjY0X3M2NCA6ICh1MzIpJmFtcDtkaXY2NF91NjQ7CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJYWRkciA9ICh1MzIpJmFtcDtqaXRfbW9kNjQ7CiYjNDM7CQlhZGRyID0gaXNfc2lnbmVkID8gKHUzMikmYW1wO2ppdF9zbW9kNjQgOiAodTMyKSZhbXA7aml0X21vZDY0OwogCQlicmVhazsKIAl9CiAJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7CkBAIC0xNTE2LDkgJiM0MzsxNTI0LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZiA9PSAxKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSk7CiYjNDM7CQkJZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIE1JUFNfUl9UNiwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7CiAJCX0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgJmFtcDthbHUsICZhbXA7dmFsKSkgewogCQkJZW1pdF9hbHVfaShjdHgsIGxvKGRzdCksIHZhbCwgYWx1KTsKIAkJfQpAQCAtMTU0Niw3ICYjNDM7MTU1NCw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfWDoKIAljYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6Ci0JCWVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpOwogCQllbWl0X3pleHRfdmVyKGN0eCwgZHN0KTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaW1tICg2NC1iaXQpICovCkBAIC0xNTk5LDcgJiM0MzsxNjA3LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAkJICogYW5kIHRoZW4gZG8gdGhlIG9wZXJhdGlvbiBvbiB0aGlzIHJlZ2lzdGVyLgogCQkgKi8KIAkJZW1pdF9tb3Zfc2VfaTY0KGN0eCwgdG1wLCBpbW0pOwotCQllbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICZhbXA7IHNyYyAoNjQtYml0KSAqLwogCS8qIGRzdCA9IGRzdCB8IHNyYyAoNjQtYml0KSAqLwpAQCAtMTYyOSw3ICYjNDM7MTYzNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpCiAJLyogZHN0ID0gZHN0ICUgc3JjICg2NC1iaXQpICovCiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6Ci0JCWVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpOwomIzQzOwkJZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpOwogCQlicmVhazsKIAkvKiBkc3QgPSBodG9sZShkc3QpICovCiAJLyogZHN0ID0gaHRvYmUoZHN0KSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IGZhN2U5YWEzN2Y0OThkLi5kMGE4ZmI3OTJjOWJlMSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYwpAQCAtMTk4LDcgJiM0MzsxOTgsOCBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApCiB9CiAKIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDY0LWJpdCkgKi8KLXN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKQomIzQzO3N0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLAomIzQzOwkJCSBib29sIGlzX3NpZ25lZCkKIHsKIAlzd2l0Y2ggKEJQRl9PUChvcCkpIHsKIAkvKiBkc3QgPSBkc3QgJmx0OyZsdDsgc3JjICovCkBAIC0yMzUsMjUgJiM0MzsyMzYsNDMgQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApCiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAvIHNyYyAqLwogCWNhc2UgQlBGX0RJVjoKLQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKLQkJCWVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CQlpZiAoaXNfc2lnbmVkKSB7CiYjNDM7CQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKJiM0MzsJCQkJZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQkJCWVtaXQoY3R4LCBtZmxvLCBkc3QpOwomIzQzOwkJCX0KIAkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7CiYjNDM7CQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKJiM0MzsJCQkJZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCQkJZW1pdChjdHgsIG1mbG8sIGRzdCk7CiYjNDM7CQkJfQogCQl9CiAJCWJyZWFrOwogCS8qIGRzdCA9IGRzdCAlIHNyYyAqLwogCWNhc2UgQlBGX01PRDoKLQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKLQkJCWVtaXQoY3R4LCBkbW9kdSwgZHN0LCBkc3QsIHNyYyk7CiYjNDM7CQlpZiAoaXNfc2lnbmVkKSB7CiYjNDM7CQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKJiM0MzsJCQkJZW1pdChjdHgsIGRtb2QsIGRzdCwgZHN0LCBzcmMpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCWVtaXQoY3R4LCBkZGl2LCBkc3QsIHNyYyk7CiYjNDM7CQkJCWVtaXQoY3R4LCBtZmhpLCBkc3QpOwomIzQzOwkJCX0KIAkJfSBlbHNlIHsKLQkJCWVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpOwotCQkJZW1pdChjdHgsIG1maGksIGRzdCk7CiYjNDM7CQkJaWYgKGNwdV9oYXNfbWlwczY0cjYpIHsKJiM0MzsJCQkJZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQllbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTsKJiM0MzsJCQkJZW1pdChjdHgsIG1maGksIGRzdCk7CiYjNDM7CQkJfQogCQl9CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCS8qIFdpZHRoLWdlbmVyaWMgb3BlcmF0aW9ucyAqLwotCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wKTsKJiM0MzsJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTsKIAl9CiAJY2xvYmJlcl9yZWcoY3R4LCBkc3QpOwogfQpAQCAtNjc0LDkgJiM0Mzs2OTMsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9BTkQgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOgotCQlpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkgewomIzQzOwkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgZmFsc2UpKSB7CiAJCQllbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pOwotCQkJZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7CiAJCX0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgJmFtcDthbHUsICZhbXA7dmFsKSkgewogCQkJZW1pdF9hbHVfaShjdHgsIGRzdCwgdmFsLCBhbHUpOwogCQl9CkBAIC02OTYsMTAgJiM0Mzs3MTUsMTAgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9LOgogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZiA9PSAxKSkgewogCQkJZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpOwogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpOwogCQl9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sICZhbXA7YWx1LCAmYW1wO3ZhbCkpIHsKIAkJCWVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTsKIAkJCWVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTsKQEAgLTcxNCw3ICYjNDM7NzMzLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDoKIAljYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX1g6CiAJY2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9YOgotCQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7CiYjNDM7CQllbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgZmFsc2UpOwogCQllbWl0X3pleHRfdmVyKGN0eCwgZHN0KTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gZHN0ICZndDsmZ3Q7IHNyYyAqLwpAQCAtNzMzLDcgJiM0Mzs3NTIsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDoKIAkJZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpOwogCQllbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7Ci0JCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7CiAJCWVtaXRfemV4dF92ZXIoY3R4LCBkc3QpOwogCQlicmVhazsKIAkvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi8KQEAgLTc3MCw5ICYjNDM7Nzg5LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCkKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzoKIAljYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfSzoKLQkJaWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHsKJiM0MzsJCWlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIG9mZiA9PSAxKSkgewogCQkJZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTsKLQkJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpOwomIzQzOwkJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTsKIAkJfSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCAmYW1wO2FsdSwgJmFtcDt2YWwpKSB7CiAJCQllbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTsKIAkJfQpAQCAtNzk5LDcgJiM0Mzs4MTgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KQogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01VTCB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOgogCWNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOgotCQllbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTsKJiM0MzsJCWVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTsKIAkJYnJlYWs7CiAJLyogZHN0ID0gaHRvbGUoZHN0KSAqLwogCS8qIGRzdCA9IGh0b2JlKGRzdCkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMzEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0OTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNSVBTIEJQRiBKSVQgQ29tcGlsZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBhZGRzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgd2l0aGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIFRoZSBjaGFuZ2VzIGFyZSBzcHJlYWQgYWNyb3NzIHNldmVyYWwgZmlsZXMgaW4gdGhlIGBhcmNoL21pcHNgIGRpcmVjdG9yeTogYGluY2x1ZGUvYXNtL3Vhc20uaGAsIGBtbS91YXNtLW1pcHMuY2AsIGBtbS91YXNtLmNgLCBhbmQgdGhlIEJQRiBKSVQgY29tcGlsYXRpb24gZmlsZXMgaW4gdGhlIGBuZXRgIGRpcmVjdG9yeSAoYGJwZl9qaXRfY29tcC5jYCwgYC5oYCwgYGJwZl9qaXRfY29tcDMyLmNgLCBgYnBmX2ppdF9jb21wNjQuY2ApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBlbmFibGluZyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyB3aXRoaW4gdGhlIEJQRiBmcmFtZXdvcmsgb24gTUlQUy4KCkkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCBob3cgQlBGIGhhbmRsZXMgc2lnbmVkIGRpdmlzaW9uL21vZHVsby4gUmlnaHQsIGl0JiMzOTtzIG5vdCB1c2luZyBkZWRpY2F0ZWQgaW5zdHJ1Y3Rpb25zIGxpa2UgYEJQRl9TRElWYCBvciBgQlBGX1NNT0RgOyBpbnN0ZWFkLCBpdCBsZXZlcmFnZXMgYEJQRl9ESVZgIGFuZCBgQlBGX01PRGAgYnV0IGluZGljYXRlcyBzaWduZWRuZXNzLCBpZiBgb2ZmID09IDFgLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIGNvZGUgcmVhY2hhYmxlPyBJIGtub3cgQlBGIEpJVCBpcyBhY3RpdmUgd2hlbiBgQ09ORklHX0JQRl9KSVRgIGlzIGVuYWJsZWQsIGFuZCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBNSVBTIGFyY2hpdGVjdHVyZS4gU2luY2UgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBKSVQgY29tcGlsZXIsIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gRXZlbiB0aG91Z2ggc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGZvY3VzIG9uIE1JUFMgYnkgZGVmYXVsdCwgSSBjYW4gc3RpbGwgZmxhZyBpdCBhcyBgV29ydGhGdXp6aW5nPXRydWVgIGFuZCBzcGVjaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEdvb2QsIHN5emthbGxlciBkb2VzIHN1cHBvcnQgTUlQUy4KClRoZSBwcm9tcHQgc3RhdGVzIEkgc2hvdWxkIHZlcmlmeSBpZiB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHNvIEkgbmVlZCB0byBjaGVjayBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AgYW5kIHRoZSBvdGhlciBmaWxlcy4gVGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGFyZSBgQ09ORklHX0JQRl9KSVRgIGFuZCBgQ09ORklHX01JUFNgICh3aGljaCBpcyBpbXBsaWVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUsIHNvIEkgd29uJiMzOTt0IHdvcnJ5IHRvbyBtdWNoIGFib3V0IGl0KS4gSSYjMzk7bGwgZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYGVtaXRfYWx1X3JgLCBgZW1pdF9kaXZtb2RfcjY0YCwgYGVtaXRfYWx1X3I2NGAsIGFuZCBgYnVpbGRfaW5zbmAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVzZSBjb25maWd1cmF0aW9ucyBhcmUgc2V0IGluIHRoZSBrZXJuZWwgY29uZmlnIGZvciB0aGlzIHRvIGJlIHZhbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDAxOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9KSVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL21pcHMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDE6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNTQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBCUEZfSklUIFN1cHBvcnQgb24gTUlQUyBBcmNoaXRlY3R1cmUqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHN0YXR1cyBvZiBCUEYgSklUIChKdXN0LUluLVRpbWUgY29tcGlsYXRpb24pIHN1cHBvcnQgb24gdGhlIE1JUFMgYXJjaGl0ZWN0dXJlLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGFuZCBzcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBNSVBTLXJlbGF0ZWQgY29kZS4gTXkgaHVuY2ggaXMgdGhhdCB0aGUgYGFyY2gvbWlwc2AgZGlyZWN0b3J5IGlzIHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCYjMzk7cyB3aGVyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSB3b3VsZCByZXNpZGUsIGFuZCBhbnkgQlBGIEpJVCBpbXBsZW1lbnRhdGlvbiBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb24gd291bGQgbGlrZWx5IGJlIGZvdW5kIHRoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSBzZWFyY2hpbmcgc2tpbGxzIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBpcyBsb2NhdGVkLiBUaW1lIHRvIHN0YXJ0IHRoZSBzZWFyY2ghCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX0pJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9taXBzL0tjb25maWc9Mj1jb25maWcgTUlQU1xuLS1cbmFyY2gvbWlwcy9LY29uZmlnLTcwLVx0c2VsZWN0IEhBVkVfRFlOQU1JQ19GVFJBQ0VcbmFyY2gvbWlwcy9LY29uZmlnOjcxOlx0c2VsZWN0IEhBVkVfRUJQRl9KSVQgaWYgIUNQVV9NSUNST01JUFNcbmFyY2gvbWlwcy9LY29uZmlnLTcyLVx0c2VsZWN0IEhBVkVfRVhJVF9USFJFQURcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTg9Q09ORklHX0JQRl9TWVNDQUxMPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc6OTpDT05GSUdfQlBGX0pJVD15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTEwLUNPTkZJR19QUkVFTVBUPXlcbi0tXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTMtXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAub1xuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZT02PWlmZXEgKCQoQ09ORklHXzMyQklUKSx5KVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo3OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTgtZWxzZVxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXA2NC5vXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xMy1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MTQ6I2lmbmRlZiBfQlBGX0pJVF9DT01QX0hcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MTU6I2RlZmluZSBfQlBGX0pJVF9DT01QX0hcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgtMTYtXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaD0yMzM9aW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oLTIzNC1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MjM1OiNlbmRpZiAvKiBfQlBGX0pJVF9DT01QX0ggKi9cbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtNDAtLyogVGVtcG9yYXJ5IDY0LWJpdCByZWdpc3RlciB1c2VkIGJ5IEpJVCAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjQxOiNkZWZpbmUgSklUX1JFR19UTVAgTUFYX0JQRl9KSVRfUkVHXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtNDItXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTMzLS8qIEV4dHJhIDY0LWJpdCBlQlBGIHJlZ2lzdGVycyB1c2VkIGJ5IEpJVCAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjM0OiNkZWZpbmUgSklUX1JFR19UQyAoTUFYX0JQRl9KSVRfUkVHICYjNDM7IDApXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MzU6I2RlZmluZSBKSVRfUkVHX1pYIChNQVhfQlBGX0pJVF9SRUcgJiM0MzsgMSlcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0zNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM1NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTUlQUyBCUEYgSklUIENvbXBpbGF0aW9uIGZvciBzeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgQlBGIEpJVCBjb25maWd1cmF0aW9uIChgQlBGX0pJVGApIG9uIGEgTUlQUyBhcmNoaXRlY3R1cmUuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgTUlQUyBpbnN0YW5jZSBwcmUtY29uZmlndXJlZCwgYnV0IHRoYXQmIzM5O3Mgc29tZXRoaW5nIHRoYXQgY2FuIGJlIHNldCB1cC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGVsc2UgaXMgaW52b2x2ZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIHVzdWFsbHkgdGhlIGNhc2UgdGhhdCBJIGFsc28gbmVlZCBgQlBGX1NZU0NBTExgIGVuYWJsZWQgZm9yIEJQRiB0byB3b3JrIGNvcnJlY3RseS4KCk5leHQsIEkgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcyBiZWVuIG1vZGlmaWVkIHRvIHN1cHBvcnQgTUlQUyB3aXRoIEJQRiBKSVQuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgb24gdGhlIGZ1bmN0aW9ucyBpbiBgYnBmX2ppdF9jb21wLmNgIHRoYXQgaGF2ZSBsaWtlbHkgYmVlbiBjaGFuZ2VkLiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBgdmFsaWRfYWx1X2lgLCBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgYnVpbGRfaW5zbmAsIGFuZCBgZW1pdF9hbHVfcjY0YCBhcmUgYWxsIGdvb2QgY2FuZGlkYXRlcyB0byByZXZpZXcuCgpJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuY2AsIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNgIGFuZCBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jYCB0byBzZWUgaG93IE1JUFMgaGFuZGxlcyB0aGVzZSBmdW5jdGlvbnMuIE15IHByaW1hcnkgZm9jdXMgaXMgb24gYGJ1aWxkX2luc25gLCBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgZW1pdF9hbHVfcjY0YCwgYW5kIGB2YWxpZF9hbHVfaWAuCgpXYWl0LCBgYnVpbGRfaW5zbmAgaXMgcHJvYmFibHkgdG9vIGdlbmVyaWMgdG8gYmUgdXNlZnVsLiBJIHRoaW5rIGBlbWl0X2FsdV9yYCwgYGVtaXRfZGl2bW9kX3I2NGAsIGFuZCBgZW1pdF9hbHVfcjY0YCBhcmUgbW9yZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYW5kIHRodXMsIG1vcmUgaW5zaWdodGZ1bC4gT2gsIGFuZCBJIHNlZSB0aGF0IGEgYGppdF9zbW9kNjRgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkLgoKTm93IEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGppdF9zbW9kNjRgIGlzIGRlY2xhcmVkIGBzdGF0aWNgLCBhcyBpdCBtb3N0IGxpa2VseSBpcy4gWWVwLCBpdCBpcy4gV2FpdCwgbG9va3MgbGlrZSBgYnBmX2ppdF9jb21wMzIuY2AgZGVmaW5lcyBpdCB0b28uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgZm9yIHRoaXMsIGp1c3QgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtqaXRfc21vZDY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz01MTY9c3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy01MjQtLyogSGVscGVyIGZ1bmN0aW9uIGZvciBzaWduZWQgNjQtYml0IG1vZHVsbyAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjUyNTpzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTUyNi17XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jPTUzMz1zdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy01NjAtXHRjYXNlIEJQRl9NT0Q6XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6NTYxOlx0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtNTYyLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzYwNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTUlQUyBCUEYgSklUIFBhdGNoKioKCk9rYXksIHNvIGBqaXRfc21vZDY0YCBpcyBkZWZpbml0ZWx5IHN0YXRpYywgZ29vZCB0byBjb25maXJtIHRoYXQuIE5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgc3ltYm9scyB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBMb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHByaW1hcmlseSB3aXRoIHRoZXNlOiBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgZW1pdF9hbHVfcjY0YCwgYW5kIG9mIGNvdXJzZSwgYGppdF9zbW9kNjRgIGl0c2VsZi4KClRoZSBnaXN0IG9mIHRoaXMgcGF0Y2ggaXMgc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gc3VwcG9ydCB3aXRoaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gQSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gR2l2ZW4gdGhhdCwgd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gZnV6eiB0aGlzLiBBbnkgYnVncyBoZXJlIGNvdWxkIGxlYWQgdG8gY3Jhc2hlcyBvciwgd29yc2UsIHZ1bG5lcmFiaWxpdGllcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLiBDb3JyZWN0bmVzcyBpcyBwYXJhbW91bnQsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggYXJpdGhtZXRpYyBvcGVyYXRpb25zIHdpdGhpbiBhIEpJVC4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgYXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWcgZmxhZ3M/IEFoLCB5ZXMsIGBDT05GSUdfTUlQU2AgaXMgdGhlIGFyY2hpdGVjdHVyZSwgYnV0IG5vIG5lZWQgdG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoYXQgc2luY2UgaXQmIzM5O3MgYW4gYXJjaGl0ZWN0dXJlIGNvbmZpZy4gVGhlIGltcG9ydGFudCBvbmVzIGZvciB0aGlzIGFyZSBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAsIHJpZ2h0PyBZZXMsIHRob3NlIGFyZSB0aGUgb25lcy4KClJpZ2h0LCBiYWNrIHRvIHRoZSBzeW1ib2xzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHdlJiMzOTtyZSBnb29kIHdpdGggYGVtaXRfYWx1X3JgIGFuZCBgZW1pdF9hbHVfcjY0YC4gSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlc2UgaW50ZXJhY3Qgd2l0aCB0aGUgbmV3IGRpdmlzaW9uIGFuZCBtb2R1bG8gbG9naWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfYWx1X3ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jPTMwNz12b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNTAtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYzozNTE6dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIGJvb2wgaXNfc2lnbmVkKVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNTIte1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg9MTcyPXZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcCk7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNzQtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaDoxNzU6dm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsIGJvb2wgaXNfc2lnbmVkKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgtMTc2LVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0yMDE9c3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0yNjYtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjI2NzpzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMjY4LVx0XHRcdCBjb25zdCB1OCBkc3RbXSwgY29uc3QgdTggc3JjW10sIHU4IG9wKVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz0xNDcxPWludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1MjgtXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoxNTI5Olx0XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1MzAtXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1NTYtXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTU1NzpcdFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1NTgtXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNjIxLVx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfU1VCIHwgQlBGX1g6XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTYyMjpcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTYyMy1cdFx0YnJlYWs7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTE1OD1zdGF0aWMgdm9pZCBlbWl0X2FsdV9pNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIwMC0vKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjAxOnN0YXRpYyB2b2lkIGVtaXRfYWx1X3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIwMi1cdFx0XHQgYm9vbCBpc19zaWduZWQpXG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTI3NC1cdFx0LyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6Mjc1Olx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wLCBmYWxzZSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjc2LVx0fVxuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYz02NTQ9aW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNjk3LVx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6Njk4Olx0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNjk5LVx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MjAtXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3MjE6XHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MjItXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTczNS1cdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3MzY6XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBmYWxzZSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzM3LVx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbi0tXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzU0LVx0XHRlbWl0X3NleHQoY3R4LCBNSVBTX1JfVDQsIHNyYyk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzU1Olx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc1Ni1cdFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XG4tLVxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc5My1cdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjc5NDpcdFx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzk1LVx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuLS1cbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy04MjAtXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo4MjE6XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy04MjItXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjI4MwoJCQkJCQkJb3V0cHV0OiAxNTAKCQkJCQkJCXRob3VnaHRzOiA0NTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNSVBTIEJQRiBKSVQgQ29tcGlsZXIgUGF0Y2gqKgoKQWxyaWdodCwgbXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyB0b3VjaGVkIGJ5IHRoaXMgcGF0Y2g6IGBlbWl0X2FsdV9yYCwgYGVtaXRfYWx1X3I2NGAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBhbmQgYGppdF9zbW9kNjRgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgYXJlIGFmZmVjdGVkIGJ5IHRoZSBjaGFuZ2VzIGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zLgoKQSBtaW5vciBkZXRhaWwganVtcGVkIG91dCDigJMgdGhlIGBlbWl0X2FsdV9yNjRgIGZ1bmN0aW9uJiMzOTtzIHNpZ25hdHVyZSBkaWZmZXJzIGJldHdlZW4gYGJwZl9qaXRfY29tcDMyLmNgIGFuZCBgYnBmX2ppdF9jb21wNjQuY2AuIFNwZWNpZmljYWxseSwgdGhlIDMyLWJpdCB2ZXJzaW9uICpsYWNrcyogdGhlIGBpc19zaWduZWRgIGFyZ3VtZW50LCB1bmxpa2UgaXRzIDY0LWJpdCBjb3VudGVycGFydC4gVGhpcyBkaWZmZXJlbmNlIGlzIHdvcnRoIG5vdGluZzsgaXQgY291bGQgaW5kaWNhdGUgdmFyaWF0aW9ucyBpbiB0aGUgc2lnbmVkbmVzcyBoYW5kbGluZy4gSG93ZXZlciwgSSBhbSBzYXRpc2ZpZWQgdGhhdCBgZW1pdF9hbHVfcjY0YCBpcyByZWxldmFudCBhcyBhIGZvY3VzIHN5bWJvbC4KCmBqaXRfc21vZDY0YCBpcyBhbHNvIGludGVyZXN0aW5nIGJlY2F1c2Ugd2hpbGUgaXQmIzM5O3MgZGVjbGFyZWQgc3RhdGljLCBpdCYjMzk7cyBjYWxsZWQgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIgZnJvbSB3aXRoaW4gYGVtaXRfZGl2bW9kX3I2NGAsIHNvIGl0JiMzOTtzIGRpcmVjdGx5IHJlbGV2YW50IHRvIHRoZSBzaWduZWQgbW9kdWxvIGltcGxlbWVudGF0aW9uLiBUaGUgc2NvcGUgb2YgZWFjaCBmdW5jdGlvbiBpcyB1bmRlcnN0b29kIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjb21waWxhdGlvbi4KClRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2ggaXMgaW1wbGVtZW50aW5nIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIEpJVCB0cmFuc2xhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBvcGVyYXRpb25zIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgc2VjdXJpdHkgaXNzdWVzIG9yIHJ1bnRpbWUgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLgoKVG8gZW5zdXJlIHByb3BlciBmdW5jdGlvbmFsaXR5LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDT05GSUdfQlBGX0pJVGAgaXMgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFuZCB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGFsc28gbmVlZGVkIGZvciBsb2FkaW5nIGFuZCBleGVjdXRpbmcgQlBGIHByb2dyYW1zLgoKV2l0aCB0aGlzIHVuZGVyc3RhbmRpbmcsIGxldCYjMzk7cyBwcm9jZWVkIHdpdGggc2V0dGluZyB0aGUgcmVzdWx0cyBhbmQgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X2FsdV9yJiMzNDssCiAgICAmIzM0O2VtaXRfYWx1X3I2NCYjMzQ7LAogICAgJiMzNDtlbWl0X2Rpdm1vZF9yNjQmIzM0OywKICAgICYjMzQ7aml0X3Ntb2Q2NCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgZm9yIEJQRiBwcm9ncmFtcyBvbiBNSVBTLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIEpJVCBjb21waWxlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBuZXcgc2lnbmVkIG9wZXJhdGlvbnMgYW5kIGRvZXMgbm90IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9hbHVfciYjMzQ7LAogICAgJiMzNDtlbWl0X2FsdV9yNjQmIzM0OywKICAgICYjMzQ7ZW1pdF9kaXZtb2RfcjY0JiMzNDssCiAgICAmIzM0O2ppdF9zbW9kNjQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgSklUIHRyYW5zbGF0aW9uIGxvZ2ljIGZvciBCUEYgcHJvZ3JhbXMgb24gTUlQUy4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBKSVQgY29tcGlsZXIgY29ycmVjdGx5IGhhbmRsZXMgdGhlc2UgbmV3IHNpZ25lZCBvcGVyYXRpb25zIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzIG9yIGNyYXNoZXMgZHVyaW5nIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDAxOjU0OjAzLjk5MzcxNTY4N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjAxNTQ2OTE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYWx1X3JcIixcbiAgICBcImVtaXRfYWx1X3I2NFwiLFxuICAgIFwiZW1pdF9kaXZtb2RfcjY0XCIsXG4gICAgXCJqaXRfc21vZDY0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgSklUIHRyYW5zbGF0aW9uIGxvZ2ljIGZvciBCUEYgcHJvZ3JhbXMgb24gTUlQUy4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBKSVQgY29tcGlsZXIgY29ycmVjdGx5IGhhbmRsZXMgdGhlc2UgbmV3IHNpZ25lZCBvcGVyYXRpb25zIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzIG9yIGNyYXNoZXMgZHVyaW5nIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDE6NTQ6MDMuOTkzNzIyODE3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzcwNDQ1MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZTQyY2E2N2M3MTkyNzYzNTJjYjc5MzJiOGZhNjI2M2Q4Zjk3MTlkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDE3IDAxOjU0OjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuaW5kZXggYjQzYmZkNDQ1MjUyMTMuLjlkM2VkYjU5ZWZjMDk4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS91YXNtLmhcXG4rKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oXFxuQEAgLTg1LDE1ICs4NSwyMCBAQCBJcF91MXUyKF9jdGMxKTtcXG4gSXBfdTJ1MShfY3RjbXNhKTtcXG4gSXBfdTJ1MXMzKF9kYWRkaXUpO1xcbiBJcF91M3UxdTIoX2RhZGR1KTtcXG4rSXBfdTF1MihfZGRpdik7XFxuK0lwX3UzdTF1MihfZGRpdl9yNik7XFxuIElwX3UxdTIoX2RkaXZ1KTtcXG4gSXBfdTN1MXUyKF9kZGl2dV9yNik7XFxuIElwX3UxKF9kaSk7XFxuIElwX3UydTFtc2J1MyhfZGlucyk7XFxuIElwX3UydTFtc2J1MyhfZGluc20pO1xcbiBJcF91MnUxbXNidTMoX2RpbnN1KTtcXG4rSXBfdTF1MihfZGl2KTtcXG4rSXBfdTN1MXUyKF9kaXZfcjYpO1xcbiBJcF91MXUyKF9kaXZ1KTtcXG4gSXBfdTN1MXUyKF9kaXZ1X3I2KTtcXG4gSXBfdTF1MnUzKF9kbWZjMCk7XFxuK0lwX3UzdTF1MihfZG1vZCk7XFxuIElwX3UzdTF1MihfZG1vZHUpO1xcbiBJcF91MXUydTMoX2RtdGMwKTtcXG4gSXBfdTF1MihfZG11bHR1KTtcXG5AQCAtMTM1LDYgKzE0MCw3IEBAIElwX3UxdTJ1MyhfbWZjMCk7XFxuIElwX3UxdTJ1MyhfbWZoYzApO1xcbiBJcF91MShfbWZoaSk7XFxuIElwX3UxKF9tZmxvKTtcXG4rSXBfdTN1MXUyKF9tb2QpO1xcbiBJcF91M3UxdTIoX21vZHUpO1xcbiBJcF91M3UxdTIoX21vdm4pO1xcbiBJcF91M3UxdTIoX21vdnopO1xcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmMgYi9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcXG5pbmRleCBlMTVjNjcwMGNkMDg4NC4uZWYxYTJiMDQwMDcwMDcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXFxuKysrIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXFxuQEAgLTc1LDYgKzc1LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcXG4gXFx0W2luc25fY3RjbXNhXVxcdD0ge00obXNhX29wLCAwLCBtc2FfY3RjX29wLCAwLCAwLCBtc2FfZWxtX29wKSwgUkQgfCBSRX0sXFxuIFxcdFtpbnNuX2RhZGRpdV1cXHQ9IHtNKGRhZGRpdV9vcCwgMCwgMCwgMCwgMCwgMCksIFJTIHwgUlQgfCBTSU1NfSxcXG4gXFx0W2luc25fZGFkZHVdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkYWRkdV9vcCksIFJTIHwgUlQgfCBSRH0sXFxuK1xcdFtpbnNuX2RkaXZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2X29wKSwgUlMgfCBSVH0sXFxuK1xcdFtpbnNuX2RkaXZfcjZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2RkaXY2X29wLCBkZGl2X29wKSxcXG4rXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fZGRpdnVdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2dV9vcCksIFJTIHwgUlR9LFxcbiBcXHRbaW5zbl9kZGl2dV9yNl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2RkaXZ1Nl9vcCwgZGRpdnVfb3ApLFxcbiBcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbkBAIC04MiwxMCArODUsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcXG4gXFx0W2luc25fZGluc11cXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zX29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxcbiBcXHRbaW5zbl9kaW5zbV1cXHQ9IHtNKHNwZWMzX29wLCAwLCAwLCAwLCAwLCBkaW5zbV9vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcXG4gXFx0W2luc25fZGluc3VdXFx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc3Vfb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXFxuK1xcdFtpbnNuX2Rpdl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdl9vcCksIFJTIHwgUlR9LFxcbitcXHRbaW5zbl9kaXZfcjZdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfZGl2Nl9vcCwgZGl2X29wKSxcXG4rXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fZGl2dV1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIGRpdnVfb3ApLCBSUyB8IFJUfSxcXG4gXFx0W2luc25fZGl2dV9yNl1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfZGl2dTZfb3AsIGRpdnVfb3ApLFxcbiBcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9kbWZjMF1cXHQ9IHtNKGNvcDBfb3AsIGRtZmNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcXG4rXFx0W2luc25fZG1vZF1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZG1vZF9vcCwgZGRpdl9vcCksXFxuK1xcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX2Rtb2R1XVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGRpdnVfZG1vZHVfb3AsIGRkaXZ1X29wKSxcXG4gXFx0XFx0XFx0XFx0UlMgfCBSVCB8IFJEfSxcXG4gXFx0W2luc25fZG10YzBdXFx0PSB7TShjb3AwX29wLCBkbXRjX29wLCAwLCAwLCAwLCAwKSwgUlQgfCBSRCB8IFNFVH0sXFxuQEAgLTE0MCw2ICsxNDgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGluc24gaW5zbl90YWJsZVtpbnNuX2ludmFsaWRdID0ge1xcbiBcXHRbaW5zbl9tZmhjMF1cXHQ9IHtNKGNvcDBfb3AsIG1maGMwX29wLCAwLCAwLCAwLCAwKSwgIFJUIHwgUkQgfCBTRVR9LFxcbiBcXHRbaW5zbl9tZmhpXVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbWZoaV9vcCksIFJEfSxcXG4gXFx0W2luc25fbWZsb11cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1mbG9fb3ApLCBSRH0sXFxuK1xcdFtpbnNuX21vZF1cXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdl9tb2Rfb3AsIGRpdl9vcCksXFxuK1xcdFxcdFxcdFxcdFJTIHwgUlQgfCBSRH0sXFxuIFxcdFtpbnNuX21vZHVdXFx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZ1X21vZHVfb3AsIGRpdnVfb3ApLFxcbiBcXHRcXHRcXHRcXHRSUyB8IFJUIHwgUkR9LFxcbiBcXHRbaW5zbl9tb3ZuXVxcdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbW92bl9vcCksIFJTIHwgUlQgfCBSRH0sXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS91YXNtLmMgYi9hcmNoL21pcHMvbW0vdWFzbS5jXFxuaW5kZXggMTI1MTQwOTc5ZDYyYzUuLjlkODdkNTcxNjRkNzk4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmNcXG4rKysgYi9hcmNoL21pcHMvbW0vdWFzbS5jXFxuQEAgLTQ5LDE2ICs0OSwxNyBAQCBlbnVtIG9wY29kZSB7XFxuIFxcdGluc25fYWRkaXUsIGluc25fYWRkdSwgaW5zbl9hbmQsIGluc25fYW5kaSwgaW5zbl9iYml0MCwgaW5zbl9iYml0MSxcXG4gXFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcXG4gXFx0aW5zbl9ibHR6LCBpbnNuX2JsdHpsLCBpbnNuX2JuZSwgaW5zbl9icmVhaywgaW5zbl9jYWNoZSwgaW5zbl9jZmMxLFxcbi1cXHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdnUsXFxuLVxcdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxcbi1cXHRpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsIGluc25fZG1vZHUsIGluc25fZG10YzAsIGluc25fZG11bHR1LFxcbitcXHRpbnNuX2NmY21zYSwgaW5zbl9jdGMxLCBpbnNuX2N0Y21zYSwgaW5zbl9kYWRkaXUsIGluc25fZGFkZHUsIGluc25fZGRpdixcXG4rXFx0aW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sXFxuK1xcdGluc25fZGluc3UsIGluc25fZGl2LCBpbnNuX2Rpdl9yNiwgaW5zbl9kaXZ1LCBpbnNuX2RpdnVfcjYsIGluc25fZG1mYzAsXFxuK1xcdGluc25fZG1vZCwgaW5zbl9kbW9kdSwgaW5zbl9kbXRjMCwgaW5zbl9kbXVsdHUsXFxuIFxcdGluc25fZG11bHUsIGluc25fZHJvdHIsIGluc25fZHJvdHIzMiwgaW5zbl9kc2JoLCBpbnNuX2RzaGQsIGluc25fZHNsbCxcXG4gXFx0aW5zbl9kc2xsMzIsIGluc25fZHNsbHYsIGluc25fZHNyYSwgaW5zbl9kc3JhMzIsIGluc25fZHNyYXYsIGluc25fZHNybCxcXG4gXFx0aW5zbl9kc3JsMzIsIGluc25fZHNybHYsIGluc25fZHN1YnUsIGluc25fZXJldCwgaW5zbl9leHQsIGluc25faW5zLFxcbiBcXHRpbnNuX2osIGluc25famFsLCBpbnNuX2phbHIsIGluc25fanIsIGluc25fbGIsIGluc25fbGJ1LCBpbnNuX2xkLFxcbiBcXHRpbnNuX2xkZGlyLCBpbnNuX2xkcHRlLCBpbnNuX2xkeCwgaW5zbl9saCwgaW5zbl9saHUsIGluc25fbGwsIGluc25fbGxkLFxcbiBcXHRpbnNuX2x1aSwgaW5zbl9sdywgaW5zbl9sd3UsIGluc25fbHd4LCBpbnNuX21mYzAsIGluc25fbWZoYzAsIGluc25fbWZoaSxcXG4tXFx0aW5zbl9tZmxvLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXFxuK1xcdGluc25fbWZsbywgaW5zbl9tb2QsIGluc25fbW9kdSwgaW5zbl9tb3ZuLCBpbnNuX21vdnosIGluc25fbXRjMCwgaW5zbl9tdGhjMCxcXG4gXFx0aW5zbl9tdGhpLCBpbnNuX210bG8sIGluc25fbXVsLCBpbnNuX211bHR1LCBpbnNuX211bHUsIGluc25fbXVodSwgaW5zbl9ub3IsXFxuIFxcdGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsIGluc25fc2IsIGluc25fc2MsXFxuIFxcdGluc25fc2NkLCBpbnNuX3NlbGVxeiwgaW5zbl9zZWxuZXosIGluc25fc2QsIGluc25fc2gsIGluc25fc2xsLFxcbkBAIC0yODcsOSArMjg4LDEyIEBAIElfdTF1MihfY2ZjMSlcXG4gSV91MnUxKF9jZmNtc2EpXFxuIElfdTF1MihfY3RjMSlcXG4gSV91MnUxKF9jdGNtc2EpXFxuK0lfdTF1MihfZGRpdilcXG4rSV91M3UxdTIoX2RkaXZfcjYpXFxuIElfdTF1MihfZGRpdnUpXFxuIElfdTN1MXUyKF9kZGl2dV9yNilcXG4gSV91MXUydTMoX2RtZmMwKVxcbitJX3UzdTF1MihfZG1vZClcXG4gSV91M3UxdTIoX2Rtb2R1KVxcbiBJX3UxdTJ1MyhfZG10YzApXFxuIElfdTF1MihfZG11bHR1KVxcbkBAIC0yOTcsNiArMzAxLDggQEAgSV91M3UxdTIoX2RtdWx1KVxcbiBJX3UydTFzMyhfZGFkZGl1KVxcbiBJX3UzdTF1MihfZGFkZHUpXFxuIElfdTEoX2RpKTtcXG4rSV91MXUyKF9kaXYpXFxuK0lfdTN1MXUyKF9kaXZfcjYpXFxuIElfdTF1MihfZGl2dSlcXG4gSV91M3UxdTIoX2RpdnVfcjYpXFxuIElfdTJ1MShfZHNiaCk7XFxuQEAgLTMzMiw2ICszMzgsNyBAQCBJX3UyczN1MShfbHcpXFxuIElfdTJzM3UxKF9sd3UpXFxuIElfdTF1MnUzKF9tZmMwKVxcbiBJX3UxdTJ1MyhfbWZoYzApXFxuK0lfdTN1MXUyKF9tb2QpXFxuIElfdTN1MXUyKF9tb2R1KVxcbiBJX3UzdTF1MihfbW92bilcXG4gSV91M3UxdTIoX21vdnopXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggNmVlNGFiZTZhMWY3MDUuLjUwNGRhZWE0YWFjMmU5IDEwMDY0NFxcbi0tLSBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXFxuQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKVxcbiB9XFxuIFxcbiAvKiBWYWxpZGF0ZSBBTFUgaW1tZWRpYXRlIHJhbmdlICovXFxuLWJvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0pXFxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKVxcbiB7XFxuIFxcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xcbiBcXHRjYXNlIEJQRl9ORUc6XFxuQEAgLTIzNyw2ICsyMzcsMTUgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcXG4gXFx0XFx0cmV0dXJuIGltbSA9PSAwIHx8IChpbW0gXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IGlzX3Bvd2VyX29mXzIoaW1tKSk7XFxuIFxcdGNhc2UgQlBGX0RJVjpcXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBUaGUgcmV3cml0ZSB0byBhIHNoaWZ0L21hc2sgYmVsb3cgaXMgYW4gdW5zaWduZWQtb25seVxcbitcXHRcXHQgKiBvcHRpbWl6YXRpb246IGFyaXRobWV0aWMgcmlnaHQgc2hpZnQgcm91bmRzIHRvd2FyZFxcbitcXHRcXHQgKiBuZWdhdGl2ZSBpbmZpbml0eSByYXRoZXIgdGhhbiB6ZXJvLCBhbmQgbWFza2luZyBkb2VzIG5vdFxcbitcXHRcXHQgKiByZXByb2R1Y2UgYSBuZWdhdGl2ZSBkaXZpZGVuZCdzIHNpZ24uIEZvcmNlIHRoZSBzaWduZWRcXG4rXFx0XFx0ICogY2FzZSB0aHJvdWdoIHRoZSBnZW5lcmFsIHJlZ2lzdGVyIHBhdGggaW5zdGVhZC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChpc19zaWduZWQpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0XFx0LyogaW1tIG11c3QgYmUgYW4gMTctYml0IHBvd2VyIG9mIHR3byAqL1xcbiBcXHRcXHRyZXR1cm4gKHUzMilpbW0gXFx1MDAzYz0gMHgxMDAwMCBcXHUwMDI2XFx1MDAyNiBpc19wb3dlcl9vZl8yKCh1MzIpaW1tKTtcXG4gXFx0fVxcbkBAIC0zMzksNyArMzQ4LDcgQEAgdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxcbiB9XFxuIFxcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovXFxuLXZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpXFxuIHtcXG4gXFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XFxuIFxcdC8qIGRzdCA9IGRzdCBcXHUwMDI2IHNyYyAqL1xcbkBAIC0zODUsMjAgKzM5NCwzOCBAQCB2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0aWYgKGlzX3NpZ25lZCkge1xcbitcXHRcXHRcXHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIGRpdiwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0XFx0XFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgbW9kdSwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpIHtcXG4rXFx0XFx0XFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIG1vZCwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGVtaXQoY3R4LCBkaXYsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdFxcdFxcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XFxuK1xcdFxcdFxcdFxcdGVtaXQoY3R4LCBtb2R1LCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxcbmluZGV4IGEzN2ZlMjA4MThlYjljLi42MzY3YjkzNmI2N2U3MCAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaFxcbkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBlbWl0X21vdl9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0pO1xcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcXG4gXFxuIC8qIFZhbGlkYXRlIEFMVS9BTFU2NCBpbW1lZGlhdGUgcmFuZ2UgKi9cXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XFxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKTtcXG4gXFxuIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi9cXG4gYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XFxuQEAgLTE3Miw3ICsxNzIsNyBAQCBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcXG4gdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTtcXG4gXFxuIC8qIEFMVSByZWdpc3RlciBvcGVyYXRpb24gKDMyLWJpdCkgKi9cXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApO1xcbit2b2lkIGVtaXRfYWx1X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpO1xcbiBcXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXFxuIHZvaWQgZW1pdF9hdG9taWNfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHMxNiBvZmYsIHU4IGNvZGUpO1xcbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcXG5pbmRleCA0MGE4NzhiNjcyZjVkMy4uNWQ3NjI0ZjBlMzAxNjMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuKysrIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXFxuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXFxuIFxcdGNsb2JiZXJfcmVnNjQoY3R4LCBkc3QpO1xcbiB9XFxuIFxcbi0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIDY0LWJpdCBtb2R1bG8gKi9cXG4rLyogSGVscGVyIGZ1bmN0aW9uIGZvciB1bnNpZ25lZCA2NC1iaXQgbW9kdWxvICovXFxuIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcXG4ge1xcbiBcXHR1NjQgcmVtO1xcbkBAIC01MjEsOSArNTIxLDE3IEBAIHN0YXRpYyB1NjQgaml0X21vZDY0KHU2NCBhLCB1NjQgYilcXG4gXFx0cmV0dXJuIHJlbTtcXG4gfVxcbiBcXG4rLyogSGVscGVyIGZ1bmN0aW9uIGZvciBzaWduZWQgNjQtYml0IG1vZHVsbyAqL1xcbitzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKVxcbit7XFxuK1xcdHM2NCBxdW90ID0gZGl2NjRfczY0KGEsIGIpO1xcbitcXG4rXFx0cmV0dXJuIGEgLSBxdW90ICogYjtcXG4rfVxcbitcXG4gLyogQUxVIGRpdi9tb2QgcmVnaXN0ZXIgKDY0LWJpdCkgKi9cXG4tc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxcbi1cXHRcXHRcXHQgICAgY29uc3QgdTggZHN0W10sIGNvbnN0IHU4IHNyY1tdLCB1OCBvcClcXG4rc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCBjb25zdCB1OCBkc3RbXSxcXG4rXFx0XFx0XFx0ICAgIGNvbnN0IHU4IHNyY1tdLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpXFxuIHtcXG4gXFx0Y29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi9cXG4gXFx0Y29uc3QgdTggKnIxID0gYnBmMm1pcHMzMltCUEZfUkVHXzFdOyAvKiBNYXBwZWQgdG8gYTAtYTEgKi9cXG5AQCAtNTQ2LDExICs1NTQsMTEgQEAgc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxcbiBcXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcXG4gXFx0LyogZHN0ID0gZHN0IC8gc3JjICovXFxuIFxcdGNhc2UgQlBGX0RJVjpcXG4tXFx0XFx0YWRkciA9ICh1MzIpXFx1MDAyNmRpdjY0X3U2NDtcXG4rXFx0XFx0YWRkciA9IGlzX3NpZ25lZCA/ICh1MzIpXFx1MDAyNmRpdjY0X3M2NCA6ICh1MzIpXFx1MDAyNmRpdjY0X3U2NDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAlIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9NT0Q6XFxuLVxcdFxcdGFkZHIgPSAodTMyKVxcdTAwMjZqaXRfbW9kNjQ7XFxuK1xcdFxcdGFkZHIgPSBpc19zaWduZWQgPyAodTMyKVxcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcXHUwMDI2aml0X21vZDY0O1xcbiBcXHRcXHRicmVhaztcXG4gXFx0fVxcbiBcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q5LCBhZGRyKTtcXG5AQCAtMTUxNiw5ICsxNTI0LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9LOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcXG4tXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcXG4rXFx0XFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmID09IDEpKSB7XFxuIFxcdFxcdFxcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDYsIGltbSk7XFxuLVxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBsbyhkc3QpLCB2YWwsIGFsdSk7XFxuIFxcdFxcdH1cXG5AQCAtMTU0Niw3ICsxNTU0LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfRElWIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBsbyhzcmMpLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG4gXFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cXG5AQCAtMTU5OSw3ICsxNjA3LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0XFx0ICogYW5kIHRoZW4gZG8gdGhlIG9wZXJhdGlvbiBvbiB0aGlzIHJlZ2lzdGVyLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0ZW1pdF9tb3Zfc2VfaTY0KGN0eCwgdG1wLCBpbW0pO1xcbi1cXHRcXHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCB0bXAsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gZHN0IFxcdTAwMjYgc3JjICg2NC1iaXQpICovXFxuIFxcdC8qIGRzdCA9IGRzdCB8IHNyYyAoNjQtYml0KSAqL1xcbkBAIC0xNjI5LDcgKzE2MzcsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKDY0LWJpdCkgKi9cXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxcbi1cXHRcXHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0ZW1pdF9kaXZtb2RfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xcbiBcXHQvKiBkc3QgPSBodG9iZShkc3QpICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xcbmluZGV4IGZhN2U5YWEzN2Y0OThkLi5kMGE4ZmI3OTJjOWJlMSAxMDA2NDRcXG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG5AQCAtMTk4LDcgKzE5OCw4IEBAIHN0YXRpYyB2b2lkIGVtaXRfYWx1X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcXG4gfVxcbiBcXG4gLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xcbi1zdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4rc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXFxuK1xcdFxcdFxcdCBib29sIGlzX3NpZ25lZClcXG4ge1xcbiBcXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcXG4gXFx0LyogZHN0ID0gZHN0IFxcdTAwM2NcXHUwMDNjIHNyYyAqL1xcbkBAIC0yMzUsMjUgKzIzNiw0MyBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGRzdCAvIHNyYyAqL1xcbiBcXHRjYXNlIEJQRl9ESVY6XFxuLVxcdFxcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdFxcdGlmIChpc19zaWduZWQpIHtcXG4rXFx0XFx0XFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgZGRpdiwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XFxuK1xcdFxcdFxcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XFxuK1xcdFxcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dV9yNiwgZHN0LCBkc3QsIHNyYyk7XFxuK1xcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdGVtaXQoY3R4LCBkZGl2dSwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cXG4gXFx0Y2FzZSBCUEZfTU9EOlxcbi1cXHRcXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xcbi1cXHRcXHRcXHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRpZiAoaXNfc2lnbmVkKSB7XFxuK1xcdFxcdFxcdGlmIChjcHVfaGFzX21pcHM2NHI2KSB7XFxuK1xcdFxcdFxcdFxcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XFxuLVxcdFxcdFxcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xcbitcXHRcXHRcXHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcXG4rXFx0XFx0XFx0XFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XFxuK1xcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0LyogV2lkdGgtZ2VuZXJpYyBvcGVyYXRpb25zICovXFxuLVxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3ApO1xcbitcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIG9wLCBmYWxzZSk7XFxuIFxcdH1cXG4gXFx0Y2xvYmJlcl9yZWcoY3R4LCBkc3QpO1xcbiB9XFxuQEAgLTY3NCw5ICs2OTMsOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfQU5EIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9YT1IgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOlxcbi1cXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xcbitcXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBmYWxzZSkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xcbitcXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgZmFsc2UpO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuIFxcdFxcdFxcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG4gXFx0XFx0fVxcbkBAIC02OTYsMTAgKzcxNSwxMCBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTVVMIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9LOlxcbi1cXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xcbitcXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYgPT0gMSkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xcbiBcXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xcbi1cXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XFxuIFxcdFxcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXFx1MDAyNmFsdSwgXFx1MDAyNnZhbCkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pKGN0eCwgZHN0LCB2YWwsIGFsdSk7XFxuQEAgLTcxNCw3ICs3MzMsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfT1IgfCBCUEZfWDpcXG4gXFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX1g6XFxuLVxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcXG4rXFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIGZhbHNlKTtcXG4gXFx0XFx0ZW1pdF96ZXh0X3ZlcihjdHgsIGRzdCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHQvKiBkc3QgPSBkc3QgXFx1MDAzZVxcdTAwM2Ugc3JjICovXFxuQEAgLTczMyw3ICs3NTIsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XFxuIFxcdFxcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcXG4gXFx0XFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xcbi1cXHRcXHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XFxuIFxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0LyogZHN0ID0gaW1tICg2NC1iaXQpICovXFxuQEAgLTc3MCw5ICs3ODksOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NVUwgfCBCUEZfSzpcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfRElWIHwgQlBGX0s6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOlxcbi1cXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xcbitcXHRcXHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYgPT0gMSkpIHtcXG4gXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG4tXFx0XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG4gXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbiBcXHRcXHRcXHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcXG4gXFx0XFx0fVxcbkBAIC03OTksNyArODE4LDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcXG4gXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XFxuIFxcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxcbiBcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcXG4tXFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XFxuK1xcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cXG4gXFx0LyogZHN0ID0gaHRvYmUoZHN0KSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1NDowNC44MzE4NjA4NTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxNTE3NzMwNTY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYWx1X3JcIixcbiAgICBcImVtaXRfYWx1X3I2NFwiLFxuICAgIFwiZW1pdF9kaXZtb2RfcjY0XCIsXG4gICAgXCJqaXRfc21vZDY0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBzdXBwb3J0IGZvciBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRpb25zIGluIHRoZSBNSVBTIEJQRiBKSVQgY29tcGlsZXIuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgSklUIHRyYW5zbGF0aW9uIGxvZ2ljIGZvciBCUEYgcHJvZ3JhbXMgb24gTUlQUy4gRnV6emluZyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBKSVQgY29tcGlsZXIgY29ycmVjdGx5IGhhbmRsZXMgdGhlc2UgbmV3IHNpZ25lZCBvcGVyYXRpb25zIGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzIG9yIGNyYXNoZXMgZHVyaW5nIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZTQyY2E2N2M3MTkyNzYzNTJjYjc5MzJiOGZhNjI2M2Q4Zjk3MTlkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDE6NTQ6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vdWFzbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuaW5kZXggYjQzYmZkNDQ1MjUyMTMuLjlkM2VkYjU5ZWZjMDk4IDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Vhc20uaFxuQEAgLTg1LDE1ICs4NSwyMCBAQCBJcF91MXUyKF9jdGMxKTtcbiBJcF91MnUxKF9jdGNtc2EpO1xuIElwX3UydTFzMyhfZGFkZGl1KTtcbiBJcF91M3UxdTIoX2RhZGR1KTtcbitJcF91MXUyKF9kZGl2KTtcbitJcF91M3UxdTIoX2RkaXZfcjYpO1xuIElwX3UxdTIoX2RkaXZ1KTtcbiBJcF91M3UxdTIoX2RkaXZ1X3I2KTtcbiBJcF91MShfZGkpO1xuIElwX3UydTFtc2J1MyhfZGlucyk7XG4gSXBfdTJ1MW1zYnUzKF9kaW5zbSk7XG4gSXBfdTJ1MW1zYnUzKF9kaW5zdSk7XG4rSXBfdTF1MihfZGl2KTtcbitJcF91M3UxdTIoX2Rpdl9yNik7XG4gSXBfdTF1MihfZGl2dSk7XG4gSXBfdTN1MXUyKF9kaXZ1X3I2KTtcbiBJcF91MXUydTMoX2RtZmMwKTtcbitJcF91M3UxdTIoX2Rtb2QpO1xuIElwX3UzdTF1MihfZG1vZHUpO1xuIElwX3UxdTJ1MyhfZG10YzApO1xuIElwX3UxdTIoX2RtdWx0dSk7XG5AQCAtMTM1LDYgKzE0MCw3IEBAIElwX3UxdTJ1MyhfbWZjMCk7XG4gSXBfdTF1MnUzKF9tZmhjMCk7XG4gSXBfdTEoX21maGkpO1xuIElwX3UxKF9tZmxvKTtcbitJcF91M3UxdTIoX21vZCk7XG4gSXBfdTN1MXUyKF9tb2R1KTtcbiBJcF91M3UxdTIoX21vdm4pO1xuIElwX3UzdTF1MihfbW92eik7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jIGIvYXJjaC9taXBzL21tL3Vhc20tbWlwcy5jXG5pbmRleCBlMTVjNjcwMGNkMDg4NC4uZWYxYTJiMDQwMDcwMDcgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbW0vdWFzbS1taXBzLmNcbisrKyBiL2FyY2gvbWlwcy9tbS91YXNtLW1pcHMuY1xuQEAgLTc1LDYgKzc1LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX2N0Y21zYV1cdD0ge00obXNhX29wLCAwLCBtc2FfY3RjX29wLCAwLCAwLCBtc2FfZWxtX29wKSwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kYWRkaXVdXHQ9IHtNKGRhZGRpdV9vcCwgMCwgMCwgMCwgMCwgMCksIFJTIHwgUlQgfCBTSU1NfSxcbiBcdFtpbnNuX2RhZGR1XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkYWRkdV9vcCksIFJTIHwgUlQgfCBSRH0sXG4rXHRbaW5zbl9kZGl2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkZGl2X29wKSwgUlMgfCBSVH0sXG4rXHRbaW5zbl9kZGl2X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2X2RkaXY2X29wLCBkZGl2X29wKSxcbitcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG4gXHRbaW5zbl9kZGl2dV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGRpdnVfb3ApLCBSUyB8IFJUfSxcbiBcdFtpbnNuX2RkaXZ1X3I2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkZGl2dV9kZGl2dTZfb3AsIGRkaXZ1X29wKSxcbiBcdFx0XHRcdFJTIHwgUlQgfCBSRH0sXG5AQCAtODIsMTAgKzg1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5zbiBpbnNuX3RhYmxlW2luc25faW52YWxpZF0gPSB7XG4gXHRbaW5zbl9kaW5zXVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc19vcCksIFJTIHwgUlQgfCBSRCB8IFJFfSxcbiBcdFtpbnNuX2RpbnNtXVx0PSB7TShzcGVjM19vcCwgMCwgMCwgMCwgMCwgZGluc21fb3ApLCBSUyB8IFJUIHwgUkQgfCBSRX0sXG4gXHRbaW5zbl9kaW5zdV1cdD0ge00oc3BlYzNfb3AsIDAsIDAsIDAsIDAsIGRpbnN1X29wKSwgUlMgfCBSVCB8IFJEIHwgUkV9LFxuK1x0W2luc25fZGl2XVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBkaXZfb3ApLCBSUyB8IFJUfSxcbitcdFtpbnNuX2Rpdl9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2X2RpdjZfb3AsIGRpdl9vcCksXG4rXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZGl2dV1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgZGl2dV9vcCksIFJTIHwgUlR9LFxuIFx0W2luc25fZGl2dV9yNl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgZGl2dV9kaXZ1Nl9vcCwgZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG1mYzBdXHQ9IHtNKGNvcDBfb3AsIGRtZmNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcbitcdFtpbnNuX2Rtb2RdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZfZG1vZF9vcCwgZGRpdl9vcCksXG4rXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG1vZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRkaXZ1X2Rtb2R1X29wLCBkZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fZG10YzBdXHQ9IHtNKGNvcDBfb3AsIGRtdGNfb3AsIDAsIDAsIDAsIDApLCBSVCB8IFJEIHwgU0VUfSxcbkBAIC0xNDAsNiArMTQ4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnNuIGluc25fdGFibGVbaW5zbl9pbnZhbGlkXSA9IHtcbiBcdFtpbnNuX21maGMwXVx0PSB7TShjb3AwX29wLCBtZmhjMF9vcCwgMCwgMCwgMCwgMCksICBSVCB8IFJEIHwgU0VUfSxcbiBcdFtpbnNuX21maGldXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIDAsIG1maGlfb3ApLCBSRH0sXG4gXHRbaW5zbl9tZmxvXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCAwLCBtZmxvX29wKSwgUkR9LFxuK1x0W2luc25fbW9kXVx0PSB7TShzcGVjX29wLCAwLCAwLCAwLCBkaXZfbW9kX29wLCBkaXZfb3ApLFxuK1x0XHRcdFx0UlMgfCBSVCB8IFJEfSxcbiBcdFtpbnNuX21vZHVdXHQ9IHtNKHNwZWNfb3AsIDAsIDAsIDAsIGRpdnVfbW9kdV9vcCwgZGl2dV9vcCksXG4gXHRcdFx0XHRSUyB8IFJUIHwgUkR9LFxuIFx0W2luc25fbW92bl1cdD0ge00oc3BlY19vcCwgMCwgMCwgMCwgMCwgbW92bl9vcCksIFJTIHwgUlQgfCBSRH0sXG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3Vhc20uYyBiL2FyY2gvbWlwcy9tbS91YXNtLmNcbmluZGV4IDEyNTE0MDk3OWQ2MmM1Li45ZDg3ZDU3MTY0ZDc5OCAxMDA2NDRcbi0tLSBhL2FyY2gvbWlwcy9tbS91YXNtLmNcbisrKyBiL2FyY2gvbWlwcy9tbS91YXNtLmNcbkBAIC00OSwxNiArNDksMTcgQEAgZW51bSBvcGNvZGUge1xuIFx0aW5zbl9hZGRpdSwgaW5zbl9hZGR1LCBpbnNuX2FuZCwgaW5zbl9hbmRpLCBpbnNuX2JiaXQwLCBpbnNuX2JiaXQxLFxuIFx0aW5zbl9iZXEsIGluc25fYmVxbCwgaW5zbl9iZ2V6LCBpbnNuX2JnZXpsLCBpbnNuX2JndHosIGluc25fYmxleixcbiBcdGluc25fYmx0eiwgaW5zbl9ibHR6bCwgaW5zbl9ibmUsIGluc25fYnJlYWssIGluc25fY2FjaGUsIGluc25fY2ZjMSxcbi1cdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2dSxcbi1cdGluc25fZGRpdnVfcjYsIGluc25fZGksIGluc25fZGlucywgaW5zbl9kaW5zbSwgaW5zbl9kaW5zdSwgaW5zbl9kaXZ1LFxuLVx0aW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbitcdGluc25fY2ZjbXNhLCBpbnNuX2N0YzEsIGluc25fY3RjbXNhLCBpbnNuX2RhZGRpdSwgaW5zbl9kYWRkdSwgaW5zbl9kZGl2LFxuK1x0aW5zbl9kZGl2X3I2LCBpbnNuX2RkaXZ1LCBpbnNuX2RkaXZ1X3I2LCBpbnNuX2RpLCBpbnNuX2RpbnMsIGluc25fZGluc20sXG4rXHRpbnNuX2RpbnN1LCBpbnNuX2RpdiwgaW5zbl9kaXZfcjYsIGluc25fZGl2dSwgaW5zbl9kaXZ1X3I2LCBpbnNuX2RtZmMwLFxuK1x0aW5zbl9kbW9kLCBpbnNuX2Rtb2R1LCBpbnNuX2RtdGMwLCBpbnNuX2RtdWx0dSxcbiBcdGluc25fZG11bHUsIGluc25fZHJvdHIsIGluc25fZHJvdHIzMiwgaW5zbl9kc2JoLCBpbnNuX2RzaGQsIGluc25fZHNsbCxcbiBcdGluc25fZHNsbDMyLCBpbnNuX2RzbGx2LCBpbnNuX2RzcmEsIGluc25fZHNyYTMyLCBpbnNuX2RzcmF2LCBpbnNuX2RzcmwsXG4gXHRpbnNuX2RzcmwzMiwgaW5zbl9kc3JsdiwgaW5zbl9kc3VidSwgaW5zbl9lcmV0LCBpbnNuX2V4dCwgaW5zbl9pbnMsXG4gXHRpbnNuX2osIGluc25famFsLCBpbnNuX2phbHIsIGluc25fanIsIGluc25fbGIsIGluc25fbGJ1LCBpbnNuX2xkLFxuIFx0aW5zbl9sZGRpciwgaW5zbl9sZHB0ZSwgaW5zbl9sZHgsIGluc25fbGgsIGluc25fbGh1LCBpbnNuX2xsLCBpbnNuX2xsZCxcbiBcdGluc25fbHVpLCBpbnNuX2x3LCBpbnNuX2x3dSwgaW5zbl9sd3gsIGluc25fbWZjMCwgaW5zbl9tZmhjMCwgaW5zbl9tZmhpLFxuLVx0aW5zbl9tZmxvLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXG4rXHRpbnNuX21mbG8sIGluc25fbW9kLCBpbnNuX21vZHUsIGluc25fbW92biwgaW5zbl9tb3Z6LCBpbnNuX210YzAsIGluc25fbXRoYzAsXG4gXHRpbnNuX210aGksIGluc25fbXRsbywgaW5zbl9tdWwsIGluc25fbXVsdHUsIGluc25fbXVsdSwgaW5zbl9tdWh1LCBpbnNuX25vcixcbiBcdGluc25fb3IsIGluc25fb3JpLCBpbnNuX3ByZWYsIGluc25fcmZlLCBpbnNuX3JvdHIsIGluc25fc2IsIGluc25fc2MsXG4gXHRpbnNuX3NjZCwgaW5zbl9zZWxlcXosIGluc25fc2VsbmV6LCBpbnNuX3NkLCBpbnNuX3NoLCBpbnNuX3NsbCxcbkBAIC0yODcsOSArMjg4LDEyIEBAIElfdTF1MihfY2ZjMSlcbiBJX3UydTEoX2NmY21zYSlcbiBJX3UxdTIoX2N0YzEpXG4gSV91MnUxKF9jdGNtc2EpXG4rSV91MXUyKF9kZGl2KVxuK0lfdTN1MXUyKF9kZGl2X3I2KVxuIElfdTF1MihfZGRpdnUpXG4gSV91M3UxdTIoX2RkaXZ1X3I2KVxuIElfdTF1MnUzKF9kbWZjMClcbitJX3UzdTF1MihfZG1vZClcbiBJX3UzdTF1MihfZG1vZHUpXG4gSV91MXUydTMoX2RtdGMwKVxuIElfdTF1MihfZG11bHR1KVxuQEAgLTI5Nyw2ICszMDEsOCBAQCBJX3UzdTF1MihfZG11bHUpXG4gSV91MnUxczMoX2RhZGRpdSlcbiBJX3UzdTF1MihfZGFkZHUpXG4gSV91MShfZGkpO1xuK0lfdTF1MihfZGl2KVxuK0lfdTN1MXUyKF9kaXZfcjYpXG4gSV91MXUyKF9kaXZ1KVxuIElfdTN1MXUyKF9kaXZ1X3I2KVxuIElfdTJ1MShfZHNiaCk7XG5AQCAtMzMyLDYgKzMzOCw3IEBAIElfdTJzM3UxKF9sdylcbiBJX3UyczN1MShfbHd1KVxuIElfdTF1MnUzKF9tZmMwKVxuIElfdTF1MnUzKF9tZmhjMClcbitJX3UzdTF1MihfbW9kKVxuIElfdTN1MXUyKF9tb2R1KVxuIElfdTN1MXUyKF9tb3ZuKVxuIElfdTN1MXUyKF9tb3Z6KVxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCA2ZWU0YWJlNmExZjcwNS4uNTA0ZGFlYTRhYWMyZTkgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgZW1pdF9tb3ZfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMpXG4gfVxuIFxuIC8qIFZhbGlkYXRlIEFMVSBpbW1lZGlhdGUgcmFuZ2UgKi9cbi1ib29sIHZhbGlkX2FsdV9pKHU4IG9wLCBzMzIgaW1tKVxuK2Jvb2wgdmFsaWRfYWx1X2kodTggb3AsIHMzMiBpbW0sIGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0Y2FzZSBCUEZfTkVHOlxuQEAgLTIzNyw2ICsyMzcsMTUgQEAgYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSlcbiBcdFx0cmV0dXJuIGltbSA9PSAwIHx8IChpbW0gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIoaW1tKSk7XG4gXHRjYXNlIEJQRl9ESVY6XG4gXHRjYXNlIEJQRl9NT0Q6XG4rXHRcdC8qXG4rXHRcdCAqIFRoZSByZXdyaXRlIHRvIGEgc2hpZnQvbWFzayBiZWxvdyBpcyBhbiB1bnNpZ25lZC1vbmx5XG4rXHRcdCAqIG9wdGltaXphdGlvbjogYXJpdGhtZXRpYyByaWdodCBzaGlmdCByb3VuZHMgdG93YXJkXG4rXHRcdCAqIG5lZ2F0aXZlIGluZmluaXR5IHJhdGhlciB0aGFuIHplcm8sIGFuZCBtYXNraW5nIGRvZXMgbm90XG4rXHRcdCAqIHJlcHJvZHVjZSBhIG5lZ2F0aXZlIGRpdmlkZW5kJ3Mgc2lnbi4gRm9yY2UgdGhlIHNpZ25lZFxuK1x0XHQgKiBjYXNlIHRocm91Z2ggdGhlIGdlbmVyYWwgcmVnaXN0ZXIgcGF0aCBpbnN0ZWFkLlxuK1x0XHQgKi9cbitcdFx0aWYgKGlzX3NpZ25lZClcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdC8qIGltbSBtdXN0IGJlIGFuIDE3LWJpdCBwb3dlciBvZiB0d28gKi9cbiBcdFx0cmV0dXJuICh1MzIpaW1tIFx1MDAzYz0gMHgxMDAwMCBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMigodTMyKWltbSk7XG4gXHR9XG5AQCAtMzM5LDcgKzM0OCw3IEBAIHZvaWQgZW1pdF9hbHVfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcbiB9XG4gXG4gLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xuLXZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wKVxuK3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZClcbiB7XG4gXHRzd2l0Y2ggKEJQRl9PUChvcCkpIHtcbiBcdC8qIGRzdCA9IGRzdCBcdTAwMjYgc3JjICovXG5AQCAtMzg1LDIwICszOTQsMzggQEAgdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IC8gc3JjICovXG4gXHRjYXNlIEJQRl9ESVY6XG4tXHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRpZiAoaXNfc2lnbmVkKSB7XG4rXHRcdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbitcdFx0XHRcdGVtaXQoY3R4LCBkaXZfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7XG4rXHRcdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbitcdFx0XHR9XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbitcdFx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuK1x0XHRcdFx0ZW1pdChjdHgsIG1mbG8sIGRzdCk7XG4rXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0ICUgc3JjICovXG4gXHRjYXNlIEJQRl9NT0Q6XG4tXHRcdGlmIChjcHVfaGFzX21pcHMzMnI2KSB7XG4tXHRcdFx0ZW1pdChjdHgsIG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRpZiAoaXNfc2lnbmVkKSB7XG4rXHRcdFx0aWYgKGNwdV9oYXNfbWlwczMycjYpIHtcbitcdFx0XHRcdGVtaXQoY3R4LCBtb2QsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0KGN0eCwgZGl2LCBkc3QsIHNyYyk7XG4rXHRcdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbitcdFx0XHR9XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdChjdHgsIGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbitcdFx0XHRpZiAoY3B1X2hhc19taXBzMzJyNikge1xuK1x0XHRcdFx0ZW1pdChjdHgsIG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRlbWl0KGN0eCwgZGl2dSwgZHN0LCBzcmMpO1xuK1x0XHRcdFx0ZW1pdChjdHgsIG1maGksIGRzdCk7XG4rXHRcdFx0fVxuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmggYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG5pbmRleCBhMzdmZTIwODE4ZWI5Yy4uNjM2N2I5MzZiNjdlNzAgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oXG5AQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgZW1pdF9tb3ZfaShzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tKTtcbiB2b2lkIGVtaXRfbW92X3Ioc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjKTtcbiBcbiAvKiBWYWxpZGF0ZSBBTFUvQUxVNjQgaW1tZWRpYXRlIHJhbmdlICovXG4tYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSk7XG4rYm9vbCB2YWxpZF9hbHVfaSh1OCBvcCwgczMyIGltbSwgYm9vbCBpc19zaWduZWQpO1xuIFxuIC8qIFJld3JpdGUgQUxVL0FMVTY0IGltbWVkaWF0ZSBvcGVyYXRpb24gKi9cbiBib29sIHJld3JpdGVfYWx1X2kodTggb3AsIHMzMiBpbW0sIHU4ICphbHUsIHMzMiAqdmFsKTtcbkBAIC0xNzIsNyArMTcyLDcgQEAgYm9vbCByZXdyaXRlX2FsdV9pKHU4IG9wLCBzMzIgaW1tLCB1OCAqYWx1LCBzMzIgKnZhbCk7XG4gdm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKTtcbiBcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICgzMi1iaXQpICovXG4tdm9pZCBlbWl0X2FsdV9yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApO1xuK3ZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZCk7XG4gXG4gLyogQXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlICgzMi1iaXQpICovXG4gdm9pZCBlbWl0X2F0b21pY19yKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgczE2IG9mZiwgdTggY29kZSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXG5pbmRleCA0MGE4NzhiNjcyZjVkMy4uNWQ3NjI0ZjBlMzAxNjMgMTAwNjQ0XG4tLS0gYS9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmNcbisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY1xuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X211bF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsXG4gXHRjbG9iYmVyX3JlZzY0KGN0eCwgZHN0KTtcbiB9XG4gXG4tLyogSGVscGVyIGZ1bmN0aW9uIGZvciA2NC1iaXQgbW9kdWxvICovXG4rLyogSGVscGVyIGZ1bmN0aW9uIGZvciB1bnNpZ25lZCA2NC1iaXQgbW9kdWxvICovXG4gc3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKVxuIHtcbiBcdHU2NCByZW07XG5AQCAtNTIxLDkgKzUyMSwxNyBAQCBzdGF0aWMgdTY0IGppdF9tb2Q2NCh1NjQgYSwgdTY0IGIpXG4gXHRyZXR1cm4gcmVtO1xuIH1cbiBcbisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNpZ25lZCA2NC1iaXQgbW9kdWxvICovXG4rc3RhdGljIHM2NCBqaXRfc21vZDY0KHM2NCBhLCBzNjQgYilcbit7XG4rXHRzNjQgcXVvdCA9IGRpdjY0X3M2NChhLCBiKTtcbitcbitcdHJldHVybiBhIC0gcXVvdCAqIGI7XG4rfVxuK1xuIC8qIEFMVSBkaXYvbW9kIHJlZ2lzdGVyICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuLVx0XHRcdCAgICBjb25zdCB1OCBkc3RbXSwgY29uc3QgdTggc3JjW10sIHU4IG9wKVxuK3N0YXRpYyB2b2lkIGVtaXRfZGl2bW9kX3I2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgY29uc3QgdTggZHN0W10sXG4rXHRcdFx0ICAgIGNvbnN0IHU4IHNyY1tdLCB1OCBvcCwgYm9vbCBpc19zaWduZWQpXG4ge1xuIFx0Y29uc3QgdTggKnIwID0gYnBmMm1pcHMzMltCUEZfUkVHXzBdOyAvKiBNYXBwZWQgdG8gdjAtdjEgKi9cbiBcdGNvbnN0IHU4ICpyMSA9IGJwZjJtaXBzMzJbQlBGX1JFR18xXTsgLyogTWFwcGVkIHRvIGEwLWExICovXG5AQCAtNTQ2LDExICs1NTQsMTEgQEAgc3RhdGljIHZvaWQgZW1pdF9kaXZtb2RfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxuIFx0c3dpdGNoIChCUEZfT1Aob3ApKSB7XG4gXHQvKiBkc3QgPSBkc3QgLyBzcmMgKi9cbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0YWRkciA9ICh1MzIpXHUwMDI2ZGl2NjRfdTY0O1xuK1x0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZkaXY2NF9zNjQgOiAodTMyKVx1MDAyNmRpdjY0X3U2NDtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0YWRkciA9ICh1MzIpXHUwMDI2aml0X21vZDY0O1xuK1x0XHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcdTAwMjZqaXRfc21vZDY0IDogKHUzMilcdTAwMjZqaXRfbW9kNjQ7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UOSwgYWRkcik7XG5AQCAtMTUxNiw5ICsxNTI0LDkgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbitcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmID09IDEpKSB7XG4gXHRcdFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcbi1cdFx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBsbyhkc3QpLCBNSVBTX1JfVDYsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFx1MDAyNmFsdSwgXHUwMDI2dmFsKSkge1xuIFx0XHRcdGVtaXRfYWx1X2koY3R4LCBsbyhkc3QpLCB2YWwsIGFsdSk7XG4gXHRcdH1cbkBAIC0xNTQ2LDcgKzE1NTQsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01VTCB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX01PRCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgbG8oc3JjKSwgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBpbW0gKDY0LWJpdCkgKi9cbkBAIC0xNTk5LDcgKzE2MDcsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0XHQgKiBhbmQgdGhlbiBkbyB0aGUgb3BlcmF0aW9uIG9uIHRoaXMgcmVnaXN0ZXIuXG4gXHRcdCAqL1xuIFx0XHRlbWl0X21vdl9zZV9pNjQoY3R4LCB0bXAsIGltbSk7XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgdG1wLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHRtcCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gZHN0IFx1MDAyNiBzcmMgKDY0LWJpdCkgKi9cbiBcdC8qIGRzdCA9IGRzdCB8IHNyYyAoNjQtYml0KSAqL1xuQEAgLTE2MjksNyArMTYzNyw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKDY0LWJpdCkgKi9cbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX0RJViB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTU9EIHwgQlBGX1g6XG4tXHRcdGVtaXRfZGl2bW9kX3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSkpO1xuK1x0XHRlbWl0X2Rpdm1vZF9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGJyZWFrO1xuIFx0LyogZHN0ID0gaHRvbGUoZHN0KSAqL1xuIFx0LyogZHN0ID0gaHRvYmUoZHN0KSAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggZmE3ZTlhYTM3ZjQ5OGQuLmQwYThmYjc5MmM5YmUxIDEwMDY0NFxuLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jXG4rKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xOTgsNyArMTk4LDggQEAgc3RhdGljIHZvaWQgZW1pdF9hbHVfaTY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxuIH1cbiBcbiAvKiBBTFUgcmVnaXN0ZXIgb3BlcmF0aW9uICg2NC1iaXQpICovXG4tc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3ApXG4rc3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXG4rXHRcdFx0IGJvb2wgaXNfc2lnbmVkKVxuIHtcbiBcdHN3aXRjaCAoQlBGX09QKG9wKSkge1xuIFx0LyogZHN0ID0gZHN0IFx1MDAzY1x1MDAzYyBzcmMgKi9cbkBAIC0yMzUsMjUgKzIzNiw0MyBAQCBzdGF0aWMgdm9pZCBlbWl0X2FsdV9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgdTggc3JjLCB1OCBvcClcbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgLyBzcmMgKi9cbiBcdGNhc2UgQlBGX0RJVjpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnVfcjYsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRpZiAoaXNfc2lnbmVkKSB7XG4rXHRcdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbitcdFx0XHRcdGVtaXQoY3R4LCBkZGl2X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcbitcdFx0XHRcdGVtaXQoY3R4LCBtZmxvLCBkc3QpO1xuK1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbitcdFx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRkaXZ1X3I2LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4rXHRcdFx0XHRlbWl0KGN0eCwgbWZsbywgZHN0KTtcbitcdFx0XHR9XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHQvKiBkc3QgPSBkc3QgJSBzcmMgKi9cbiBcdGNhc2UgQlBGX01PRDpcbi1cdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbi1cdFx0XHRlbWl0KGN0eCwgZG1vZHUsIGRzdCwgZHN0LCBzcmMpO1xuK1x0XHRpZiAoaXNfc2lnbmVkKSB7XG4rXHRcdFx0aWYgKGNwdV9oYXNfbWlwczY0cjYpIHtcbitcdFx0XHRcdGVtaXQoY3R4LCBkbW9kLCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRkaXYsIGRzdCwgc3JjKTtcbitcdFx0XHRcdGVtaXQoY3R4LCBtZmhpLCBkc3QpO1xuK1x0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0KGN0eCwgZGRpdnUsIGRzdCwgc3JjKTtcbi1cdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbitcdFx0XHRpZiAoY3B1X2hhc19taXBzNjRyNikge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRtb2R1LCBkc3QsIGRzdCwgc3JjKTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0ZW1pdChjdHgsIGRkaXZ1LCBkc3QsIHNyYyk7XG4rXHRcdFx0XHRlbWl0KGN0eCwgbWZoaSwgZHN0KTtcbitcdFx0XHR9XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHQvKiBXaWR0aC1nZW5lcmljIG9wZXJhdGlvbnMgKi9cbi1cdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCk7XG4rXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgb3AsIGZhbHNlKTtcbiBcdH1cbiBcdGNsb2JiZXJfcmVnKGN0eCwgZHN0KTtcbiB9XG5AQCAtNjc0LDkgKzY5Myw5IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfQU5EIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfWE9SIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX0s6XG4tXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0pKSB7XG4rXHRcdGlmICghdmFsaWRfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIGZhbHNlKSkge1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBmYWxzZSk7XG4gXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4gXHRcdFx0ZW1pdF9hbHVfaShjdHgsIGRzdCwgdmFsLCBhbHUpO1xuIFx0XHR9XG5AQCAtNjk2LDEwICs3MTUsMTAgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NVUwgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9NT0QgfCBCUEZfSzpcbi1cdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSkpIHtcbitcdFx0aWYgKCF2YWxpZF9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgb2ZmID09IDEpKSB7XG4gXHRcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRcdGVtaXRfbW92X2koY3R4LCBNSVBTX1JfVDQsIGltbSk7XG4tXHRcdFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXHUwMDI2YWx1LCBcdTAwMjZ2YWwpKSB7XG4gXHRcdFx0ZW1pdF9zZXh0KGN0eCwgZHN0LCBkc3QpO1xuIFx0XHRcdGVtaXRfYWx1X2koY3R4LCBkc3QsIHZhbCwgYWx1KTtcbkBAIC03MTQsNyArNzMzLDcgQEAgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eClcbiBcdGNhc2UgQlBGX0FMVSB8IEJQRl9PUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX1hPUiB8IEJQRl9YOlxuIFx0Y2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XG4rXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBmYWxzZSk7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGRzdCBcdTAwM2VcdTAwM2Ugc3JjICovXG5AQCAtNzMzLDcgKzc1Miw3IEBAIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XG4gXHRcdGVtaXRfc2V4dChjdHgsIGRzdCwgZHN0KTtcbiBcdFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xuLVx0XHRlbWl0X2FsdV9yKGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSk7XG4rXHRcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XG4gXHRcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGltbSAoNjQtYml0KSAqL1xuQEAgLTc3MCw5ICs3ODksOSBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX0s6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfSzpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9LOlxuLVx0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tKSkge1xuK1x0XHRpZiAoIXZhbGlkX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBvZmYgPT0gMSkpIHtcbiBcdFx0XHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xuLVx0XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSkpO1xuK1x0XHRcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcbiBcdFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcdTAwMjZhbHUsIFx1MDAyNnZhbCkpIHtcbiBcdFx0XHRlbWl0X2FsdV9pNjQoY3R4LCBkc3QsIHZhbCwgYWx1KTtcbiBcdFx0fVxuQEAgLTc5OSw3ICs4MTgsNyBAQCBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfTVVMIHwgQlBGX1g6XG4gXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9ESVYgfCBCUEZfWDpcbiBcdGNhc2UgQlBGX0FMVTY0IHwgQlBGX01PRCB8IEJQRl9YOlxuLVx0XHRlbWl0X2FsdV9yNjQoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpKTtcbitcdFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xuIFx0XHRicmVhaztcbiBcdC8qIGRzdCA9IGh0b2xlKGRzdCkgKi9cbiBcdC8qIGRzdCA9IGh0b2JlKGRzdCkgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDAxOjU0OjA0LjgzMTg2MzM1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NTQ4NzYxMzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUlQUyBCUEYgSklUIENvbXBpbGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGFkZHMgc3VwcG9ydCBmb3Igc2lnbmVkIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0aW9ucyB3aXRoaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhlIGNoYW5nZXMgYXJlIHNwcmVhZCBhY3Jvc3Mgc2V2ZXJhbCBmaWxlcyBpbiB0aGUgYGFyY2gvbWlwc2AgZGlyZWN0b3J5OiBgaW5jbHVkZS9hc20vdWFzbS5oYCwgYG1tL3Vhc20tbWlwcy5jYCwgYG1tL3Vhc20uY2AsIGFuZCB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBmaWxlcyBpbiB0aGUgYG5ldGAgZGlyZWN0b3J5IChgYnBmX2ppdF9jb21wLmNgLCBgLmhgLCBgYnBmX2ppdF9jb21wMzIuY2AsIGBicGZfaml0X2NvbXA2NC5jYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGVuYWJsaW5nIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIHdpdGhpbiB0aGUgQlBGIGZyYW1ld29yayBvbiBNSVBTLlxuXG5JIG5lZWQgdG8gcXVpY2tseSByZWNhbGwgaG93IEJQRiBoYW5kbGVzIHNpZ25lZCBkaXZpc2lvbi9tb2R1bG8uIFJpZ2h0LCBpdCdzIG5vdCB1c2luZyBkZWRpY2F0ZWQgaW5zdHJ1Y3Rpb25zIGxpa2UgYEJQRl9TRElWYCBvciBgQlBGX1NNT0RgOyBpbnN0ZWFkLCBpdCBsZXZlcmFnZXMgYEJQRl9ESVZgIGFuZCBgQlBGX01PRGAgYnV0IGluZGljYXRlcyBzaWduZWRuZXNzLCBpZiBgb2ZmID09IDFgLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIHRoaXMgY29kZSByZWFjaGFibGU/IEkga25vdyBCUEYgSklUIGlzIGFjdGl2ZSB3aGVuIGBDT05GSUdfQlBGX0pJVGAgaXMgZW5hYmxlZCwgYW5kIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgTUlQUyBhcmNoaXRlY3R1cmUuIFNpbmNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgSklUIGNvbXBpbGVyLCBpdCdzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gRXZlbiB0aG91Z2ggc3l6a2FsbGVyIGRvZXNuJ3QgZm9jdXMgb24gTUlQUyBieSBkZWZhdWx0LCBJIGNhbiBzdGlsbCBmbGFnIGl0IGFzIGBXb3J0aEZ1enppbmc9dHJ1ZWAgYW5kIHNwZWNpZnkgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gR29vZCwgc3l6a2FsbGVyIGRvZXMgc3VwcG9ydCBNSVBTLlxuXG5UaGUgcHJvbXB0IHN0YXRlcyBJIHNob3VsZCB2ZXJpZnkgaWYgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCBzbyBJIG5lZWQgdG8gY2hlY2sgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmNgIGFuZCB0aGUgb3RoZXIgZmlsZXMuIFRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBhcmUgYENPTkZJR19CUEZfSklUYCBhbmQgYENPTkZJR19NSVBTYCAod2hpY2ggaXMgaW1wbGllZCBieSB0aGUgYXJjaGl0ZWN0dXJlLCBzbyBJIHdvbid0IHdvcnJ5IHRvbyBtdWNoIGFib3V0IGl0KS4gSSdsbCBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgZW1pdF9hbHVfcjY0YCwgYW5kIGBidWlsZF9pbnNuYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWcgZm9yIHRoaXMgdG8gYmUgdmFsaWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzMxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDE6NTU6MzQuMzgwNjI3OTc4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5Mjg0OTU1NDEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbWlwcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1NTozNi4zMDkxMzQ2OThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTg2NzM0NTUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgQlBGX0pJVCBTdXBwb3J0IG9uIE1JUFMgQXJjaGl0ZWN0dXJlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHN0YXR1cyBvZiBCUEYgSklUIChKdXN0LUluLVRpbWUgY29tcGlsYXRpb24pIHN1cHBvcnQgb24gdGhlIE1JUFMgYXJjaGl0ZWN0dXJlLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlIGFuZCBzcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBNSVBTLXJlbGF0ZWQgY29kZS4gTXkgaHVuY2ggaXMgdGhhdCB0aGUgYGFyY2gvbWlwc2AgZGlyZWN0b3J5IGlzIHRoZSBwbGFjZSB0byBzdGFydC4gVGhhdCdzIHdoZXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIHdvdWxkIHJlc2lkZSwgYW5kIGFueSBCUEYgSklUIGltcGxlbWVudGF0aW9uIG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbiB3b3VsZCBsaWtlbHkgYmUgZm91bmQgdGhlcmUuIEknbGwgbmVlZCB0byB1c2UgbXkgc2VhcmNoaW5nIHNraWxscyB0byB0cmFjayBkb3duIHdoZXJlIHRoaXMgaXMgbG9jYXRlZC4gVGltZSB0byBzdGFydCB0aGUgc2VhcmNoIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM1NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDAxOjU2OjI2LjE3NjQ4NDkzOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDc1ODI0NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX0pJVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL21pcHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9LY29uZmlnPTI9Y29uZmlnIE1JUFNcXG4tLVxcbmFyY2gvbWlwcy9LY29uZmlnLTcwLVxcdHNlbGVjdCBIQVZFX0RZTkFNSUNfRlRSQUNFXFxuYXJjaC9taXBzL0tjb25maWc6NzE6XFx0c2VsZWN0IEhBVkVfRUJQRl9KSVQgaWYgIUNQVV9NSUNST01JUFNcXG5hcmNoL21pcHMvS2NvbmZpZy03Mi1cXHRzZWxlY3QgSEFWRV9FWElUX1RIUkVBRFxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZz04PUNPTkZJR19CUEZfU1lTQ0FMTD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo5OkNPTkZJR19CUEZfSklUPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTEwLUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtMy1cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZS01LVxcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGU9Nj1pZmVxICgkKENPTkZJR18zMkJJVCkseSlcXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlOjc6ICAgICAgICBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdF9jb21wMzIub1xcbmFyY2gvbWlwcy9uZXQvTWFrZWZpbGUtOC1lbHNlXFxuYXJjaC9taXBzL25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDY0Lm9cXG5hcmNoL21pcHMvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oLTEzLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MTQ6I2lmbmRlZiBfQlBGX0pJVF9DT01QX0hcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oOjE1OiNkZWZpbmUgX0JQRl9KSVRfQ09NUF9IXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNi1cXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg9MjMzPWludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jb250ZXh0ICpjdHgpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmgtMjM0LVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MjM1OiNlbmRpZiAvKiBfQlBGX0pJVF9DT01QX0ggKi9cXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy00MC0vKiBUZW1wb3JhcnkgNjQtYml0IHJlZ2lzdGVyIHVzZWQgYnkgSklUICovXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjQxOiNkZWZpbmUgSklUX1JFR19UTVAgTUFYX0JQRl9KSVRfUkVHXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTQyLVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTMzLS8qIEV4dHJhIDY0LWJpdCBlQlBGIHJlZ2lzdGVycyB1c2VkIGJ5IEpJVCAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzozNDojZGVmaW5lIEpJVF9SRUdfVEMgKE1BWF9CUEZfSklUX1JFRyArIDApXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jOjM1OiNkZWZpbmUgSklUX1JFR19aWCAoTUFYX0JQRl9KSVRfUkVHICsgMSlcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDAxOjU2OjI2LjkyNDA3NjI5M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzNTEyNTc4NzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBNSVBTIEJQRiBKSVQgQ29tcGlsYXRpb24gZm9yIHN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgQlBGIEpJVCBjb25maWd1cmF0aW9uIChgQlBGX0pJVGApIG9uIGEgTUlQUyBhcmNoaXRlY3R1cmUuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBNSVBTIGluc3RhbmNlIHByZS1jb25maWd1cmVkLCBidXQgdGhhdCdzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBzZXQgdXAuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBlbHNlIGlzIGludm9sdmVkIGluIHRoZSBjb25maWd1cmF0aW9uLiBJdCdzIHVzdWFsbHkgdGhlIGNhc2UgdGhhdCBJIGFsc28gbmVlZCBgQlBGX1NZU0NBTExgIGVuYWJsZWQgZm9yIEJQRiB0byB3b3JrIGNvcnJlY3RseS5cblxuTmV4dCwgSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUga2VybmVsIGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFzIGJlZW4gbW9kaWZpZWQgdG8gc3VwcG9ydCBNSVBTIHdpdGggQlBGIEpJVC4gSSdtIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgaW4gYGJwZl9qaXRfY29tcC5jYCB0aGF0IGhhdmUgbGlrZWx5IGJlZW4gY2hhbmdlZC4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgYHZhbGlkX2FsdV9pYCwgYGVtaXRfYWx1X3JgLCBgZW1pdF9kaXZtb2RfcjY0YCwgYGJ1aWxkX2luc25gLCBhbmQgYGVtaXRfYWx1X3I2NGAgYXJlIGFsbCBnb29kIGNhbmRpZGF0ZXMgdG8gcmV2aWV3LlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuIEknbGwgbmVlZCB0byBleGFtaW5lIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jYCwgYGFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuY2AgYW5kIGBhcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIHNlZSBob3cgTUlQUyBoYW5kbGVzIHRoZXNlIGZ1bmN0aW9ucy4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBgYnVpbGRfaW5zbmAsIGBlbWl0X2FsdV9yYCwgYGVtaXRfZGl2bW9kX3I2NGAsIGBlbWl0X2FsdV9yNjRgLCBhbmQgYHZhbGlkX2FsdV9pYC5cblxuV2FpdCwgYGJ1aWxkX2luc25gIGlzIHByb2JhYmx5IHRvbyBnZW5lcmljIHRvIGJlIHVzZWZ1bC4gSSB0aGluayBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBhbmQgYGVtaXRfYWx1X3I2NGAgYXJlIG1vcmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFuZCB0aHVzLCBtb3JlIGluc2lnaHRmdWwuIE9oLCBhbmQgSSBzZWUgdGhhdCBhIGBqaXRfc21vZDY0YCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZC5cblxuTm93IEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGppdF9zbW9kNjRgIGlzIGRlY2xhcmVkIGBzdGF0aWNgLCBhcyBpdCBtb3N0IGxpa2VseSBpcy4gWWVwLCBpdCBpcy4gV2FpdCwgbG9va3MgbGlrZSBgYnBmX2ppdF9jb21wMzIuY2AgZGVmaW5lcyBpdCB0b28uIEknbGwgbmVlZCB0byBjaGVjayBgYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jYCBmb3IgdGhpcywganVzdCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjM1NiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1Njo1MC40MzY2NTc2MzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM4NzAyNzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImppdF9zbW9kNjRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYz01MTY9c3RhdGljIHU2NCBqaXRfbW9kNjQodTY0IGEsIHU2NCBiKVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTUyNC0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNpZ25lZCA2NC1iaXQgbW9kdWxvICovXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjUyNTpzdGF0aWMgczY0IGppdF9zbW9kNjQoczY0IGEsIHM2NCBiKVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy01MjYte1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jPTUzMz1zdGF0aWMgdm9pZCBlbWl0X2Rpdm1vZF9yNjQoc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIGNvbnN0IHU4IGRzdFtdLFxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTU2MC1cXHRjYXNlIEJQRl9NT0Q6XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjU2MTpcXHRcXHRhZGRyID0gaXNfc2lnbmVkID8gKHUzMilcXHUwMDI2aml0X3Ntb2Q2NCA6ICh1MzIpXFx1MDAyNmppdF9tb2Q2NDtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtNTYyLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1Njo1MS4wNzUzNjgxMjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzYwOTQ1OTc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTUlQUyBCUEYgSklUIFBhdGNoKipcblxuT2theSwgc28gYGppdF9zbW9kNjRgIGlzIGRlZmluaXRlbHkgc3RhdGljLCBnb29kIHRvIGNvbmZpcm0gdGhhdC4gTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgd2UgbmVlZCB0byBmb2N1cyBvbi4gTG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHByaW1hcmlseSB3aXRoIHRoZXNlOiBgZW1pdF9hbHVfcmAsIGBlbWl0X2Rpdm1vZF9yNjRgLCBgZW1pdF9hbHVfcjY0YCwgYW5kIG9mIGNvdXJzZSwgYGppdF9zbW9kNjRgIGl0c2VsZi5cblxuVGhlIGdpc3Qgb2YgdGhpcyBwYXRjaCBpcyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBzdXBwb3J0IHdpdGhpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBBIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLiBHaXZlbiB0aGF0LCB3ZSAqYWJzb2x1dGVseSogbmVlZCB0byBmdXp6IHRoaXMuIEFueSBidWdzIGhlcmUgY291bGQgbGVhZCB0byBjcmFzaGVzIG9yLCB3b3JzZSwgdnVsbmVyYWJpbGl0aWVzIGR1cmluZyBCUEYgcHJvZ3JhbSBleGVjdXRpb24uIENvcnJlY3RuZXNzIGlzIHBhcmFtb3VudCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBhcml0aG1ldGljIG9wZXJhdGlvbnMgd2l0aGluIGEgSklULlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlnIGZsYWdzPyBBaCwgeWVzLCBgQ09ORklHX01JUFNgIGlzIHRoZSBhcmNoaXRlY3R1cmUsIGJ1dCBubyBuZWVkIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGF0IHNpbmNlIGl0J3MgYW4gYXJjaGl0ZWN0dXJlIGNvbmZpZy4gVGhlIGltcG9ydGFudCBvbmVzIGZvciB0aGlzIGFyZSBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAsIHJpZ2h0PyBZZXMsIHRob3NlIGFyZSB0aGUgb25lcy5cblxuUmlnaHQsIGJhY2sgdG8gdGhlIHN5bWJvbHMuIExldCdzIG1ha2Ugc3VyZSB3ZSdyZSBnb29kIHdpdGggYGVtaXRfYWx1X3JgIGFuZCBgZW1pdF9hbHVfcjY0YC4gSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlc2UgaW50ZXJhY3Qgd2l0aCB0aGUgbmV3IGRpdmlzaW9uIGFuZCBtb2R1bG8gbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjA2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDAxOjU3OjA4LjY4NDgzMTkyOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgyMjM0ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtaXRfYWx1X3JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9taXBzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYz0zMDc9dm9pZCBlbWl0X2FsdV9pKHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHMzMiBpbW0sIHU4IG9wKVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuYy0zNTAtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmM6MzUxOnZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZClcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5jLTM1Mi17XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcC5oPTE3Mj12b2lkIGVtaXRfYWx1X2koc3RydWN0IGppdF9jb250ZXh0ICpjdHgsIHU4IGRzdCwgczMyIGltbSwgdTggb3ApO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNzQtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoMzItYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wLmg6MTc1OnZvaWQgZW1pdF9hbHVfcihzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCB1OCBzcmMsIHU4IG9wLCBib29sIGlzX3NpZ25lZCk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAuaC0xNzYtXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM9MjAxPXN0YXRpYyB2b2lkIGVtaXRfYWx1X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCxcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0yNjYtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYzoyNjc6c3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0yNjgtXFx0XFx0XFx0IGNvbnN0IHU4IGRzdFtdLCBjb25zdCB1OCBzcmNbXSwgdTggb3ApXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM9MTQ3MT1pbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE1MjgtXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNiwgaW1tKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmM6MTUyOTpcXHRcXHRcXHRlbWl0X2FsdV9yKGN0eCwgbG8oZHN0KSwgTUlQU19SX1Q2LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTUzMC1cXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDMyLmMtMTU1Ni1cXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9EIHwgQlBGX1g6XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjE1NTc6XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGxvKGRzdCksIGxvKHNyYyksIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wMzIuYy0xNTU4LVxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE2MjEtXFx0Y2FzZSBCUEZfQUxVNjQgfCBCUEZfU1VCIHwgQlBGX1g6XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jOjE2MjI6XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBzcmMsIEJQRl9PUChjb2RlKSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXAzMi5jLTE2MjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTU4PXN0YXRpYyB2b2lkIGVtaXRfYWx1X2k2NChzdHJ1Y3Qgaml0X2NvbnRleHQgKmN0eCwgdTggZHN0LCBzMzIgaW1tLCB1OCBvcClcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMDAtLyogQUxVIHJlZ2lzdGVyIG9wZXJhdGlvbiAoNjQtYml0KSAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzoyMDE6c3RhdGljIHZvaWQgZW1pdF9hbHVfcjY0KHN0cnVjdCBqaXRfY29udGV4dCAqY3R4LCB1OCBkc3QsIHU4IHNyYywgdTggb3AsXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTIwMi1cXHRcXHRcXHQgYm9vbCBpc19zaWduZWQpXFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjc0LVxcdFxcdC8qIFdpZHRoLWdlbmVyaWMgb3BlcmF0aW9ucyAqL1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzoyNzU6XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgc3JjLCBvcCwgZmFsc2UpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy0yNzYtXFx0fVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jPTY1ND1pbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY29udGV4dCAqY3R4KVxcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTY5Ny1cXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo2OTg6XFx0XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIGZhbHNlKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNjk5LVxcdFxcdH0gZWxzZSBpZiAocmV3cml0ZV9hbHVfaShCUEZfT1AoY29kZSksIGltbSwgXFx1MDAyNmFsdSwgXFx1MDAyNnZhbCkpIHtcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03MjAtXFx0XFx0XFx0ZW1pdF9tb3ZfaShjdHgsIE1JUFNfUl9UNCwgaW1tKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzIxOlxcdFxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIE1JUFNfUl9UNCwgQlBGX09QKGNvZGUpLCBvZmYgPT0gMSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTcyMi1cXHRcXHR9IGVsc2UgaWYgKHJld3JpdGVfYWx1X2koQlBGX09QKGNvZGUpLCBpbW0sIFxcdTAwMjZhbHUsIFxcdTAwMjZ2YWwpKSB7XFxuLS1cXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzM1LVxcdGNhc2UgQlBGX0FMVSB8IEJQRl9MU0ggfCBCUEZfWDpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6NzM2OlxcdFxcdGVtaXRfYWx1X3IoY3R4LCBkc3QsIHNyYywgQlBGX09QKGNvZGUpLCBmYWxzZSk7XFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTczNy1cXHRcXHRlbWl0X3pleHRfdmVyKGN0eCwgZHN0KTtcXG4tLVxcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03NTQtXFx0XFx0ZW1pdF9zZXh0KGN0eCwgTUlQU19SX1Q0LCBzcmMpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3NTU6XFx0XFx0ZW1pdF9hbHVfcihjdHgsIGRzdCwgTUlQU19SX1Q0LCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtNzU2LVxcdFxcdGVtaXRfemV4dF92ZXIoY3R4LCBkc3QpO1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTc5My1cXHRcXHRcXHRlbWl0X21vdl9pKGN0eCwgTUlQU19SX1Q0LCBpbW0pO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYzo3OTQ6XFx0XFx0XFx0ZW1pdF9hbHVfcjY0KGN0eCwgZHN0LCBNSVBTX1JfVDQsIEJQRl9PUChjb2RlKSwgb2ZmID09IDEpO1xcbmFyY2gvbWlwcy9uZXQvYnBmX2ppdF9jb21wNjQuYy03OTUtXFx0XFx0fSBlbHNlIGlmIChyZXdyaXRlX2FsdV9pKEJQRl9PUChjb2RlKSwgaW1tLCBcXHUwMDI2YWx1LCBcXHUwMDI2dmFsKSkge1xcbi0tXFxuYXJjaC9taXBzL25ldC9icGZfaml0X2NvbXA2NC5jLTgyMC1cXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT0QgfCBCUEZfWDpcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmM6ODIxOlxcdFxcdGVtaXRfYWx1X3I2NChjdHgsIGRzdCwgc3JjLCBCUEZfT1AoY29kZSksIG9mZiA9PSAxKTtcXG5hcmNoL21pcHMvbmV0L2JwZl9qaXRfY29tcDY0LmMtODIyLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1NzowOS4yNjcwNzYwMjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0NzE5ODU3MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNSVBTIEJQRiBKSVQgQ29tcGlsZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIGNvcmUgZnVuY3Rpb25zIHRvdWNoZWQgYnkgdGhpcyBwYXRjaDogYGVtaXRfYWx1X3JgLCBgZW1pdF9hbHVfcjY0YCwgYGVtaXRfZGl2bW9kX3I2NGAsIGFuZCBgaml0X3Ntb2Q2NGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBhcmUgYWZmZWN0ZWQgYnkgdGhlIGNoYW5nZXMgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMuXG5cbkEgbWlub3IgZGV0YWlsIGp1bXBlZCBvdXQg4oCTIHRoZSBgZW1pdF9hbHVfcjY0YCBmdW5jdGlvbidzIHNpZ25hdHVyZSBkaWZmZXJzIGJldHdlZW4gYGJwZl9qaXRfY29tcDMyLmNgIGFuZCBgYnBmX2ppdF9jb21wNjQuY2AuIFNwZWNpZmljYWxseSwgdGhlIDMyLWJpdCB2ZXJzaW9uICpsYWNrcyogdGhlIGBpc19zaWduZWRgIGFyZ3VtZW50LCB1bmxpa2UgaXRzIDY0LWJpdCBjb3VudGVycGFydC4gVGhpcyBkaWZmZXJlbmNlIGlzIHdvcnRoIG5vdGluZzsgaXQgY291bGQgaW5kaWNhdGUgdmFyaWF0aW9ucyBpbiB0aGUgc2lnbmVkbmVzcyBoYW5kbGluZy4gSG93ZXZlciwgSSBhbSBzYXRpc2ZpZWQgdGhhdCBgZW1pdF9hbHVfcjY0YCBpcyByZWxldmFudCBhcyBhIGZvY3VzIHN5bWJvbC5cblxuYGppdF9zbW9kNjRgIGlzIGFsc28gaW50ZXJlc3RpbmcgYmVjYXVzZSB3aGlsZSBpdCdzIGRlY2xhcmVkIHN0YXRpYywgaXQncyBjYWxsZWQgdGhyb3VnaCBhIGZ1bmN0aW9uIHBvaW50ZXIgZnJvbSB3aXRoaW4gYGVtaXRfZGl2bW9kX3I2NGAsIHNvIGl0J3MgZGlyZWN0bHkgcmVsZXZhbnQgdG8gdGhlIHNpZ25lZCBtb2R1bG8gaW1wbGVtZW50YXRpb24uIFRoZSBzY29wZSBvZiBlYWNoIGZ1bmN0aW9uIGlzIHVuZGVyc3Rvb2QgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNvbXBpbGF0aW9uLlxuXG5UaGUgY29udGV4dCBvZiB0aGlzIHBhdGNoIGlzIGltcGxlbWVudGluZyBzaWduZWQgZGl2aXNpb24gYW5kIG1vZHVsbyBpbiB0aGUgTUlQUyBCUEYgSklUIGNvbXBpbGVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgdGhlc2Ugb3BlcmF0aW9ucyB0byBhdm9pZCBhbnkgcG90ZW50aWFsIHNlY3VyaXR5IGlzc3VlcyBvciBydW50aW1lIGNyYXNoZXMgZHVyaW5nIEJQRiBwcm9ncmFtIGV4ZWN1dGlvbi5cblxuVG8gZW5zdXJlIHByb3BlciBmdW5jdGlvbmFsaXR5LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBDT05GSUdfQlBGX0pJVGAgaXMgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFuZCB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGFsc28gbmVlZGVkIGZvciBsb2FkaW5nIGFuZCBleGVjdXRpbmcgQlBGIHByb2dyYW1zLlxuXG5XaXRoIHRoaXMgdW5kZXJzdGFuZGluZywgbGV0J3MgcHJvY2VlZCB3aXRoIHNldHRpbmcgdGhlIHJlc3VsdHMgYW5kIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MjgzLCJPdXRwdXRUb2tlbnMiOjE1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwMTo1NzozOS43MzkwNjQ3OTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzAwODk3ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9hbHVfclwiLFxuICAgIFwiZW1pdF9hbHVfcjY0XCIsXG4gICAgXCJlbWl0X2Rpdm1vZF9yNjRcIixcbiAgICBcImppdF9zbW9kNjRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgZm9yIEJQRiBwcm9ncmFtcyBvbiBNSVBTLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIEpJVCBjb21waWxlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBuZXcgc2lnbmVkIG9wZXJhdGlvbnMgYW5kIGRvZXMgbm90IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9hbHVfclwiLFxuICAgIFwiZW1pdF9hbHVfcjY0XCIsXG4gICAgXCJlbWl0X2Rpdm1vZF9yNjRcIixcbiAgICBcImppdF9zbW9kNjRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIHNpZ25lZCBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdGlvbnMgaW4gdGhlIE1JUFMgQlBGIEpJVCBjb21waWxlci4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBKSVQgdHJhbnNsYXRpb24gbG9naWMgZm9yIEJQRiBwcm9ncmFtcyBvbiBNSVBTLiBGdXp6aW5nIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIEpJVCBjb21waWxlciBjb3JyZWN0bHkgaGFuZGxlcyB0aGVzZSBuZXcgc2lnbmVkIG9wZXJhdGlvbnMgYW5kIGRvZXMgbm90IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgY3Jhc2hlcyBkdXJpbmcgQlBGIHByb2dyYW0gZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow76fq2[1] Phase: Succeeded StartedAt: 2026-07-17 01:57:52 +0000 UTC FinishedAt: 2026-07-17 01:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 01:57:52 +0000 UTC FinishedAt: 2026-07-17 01:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2] Phase: Succeeded StartedAt: 2026-07-17 01:57:52 +0000 UTC FinishedAt: 2026-07-17 03:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-17 01:57:52 +0000 UTC FinishedAt: 2026-07-17 03:39:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-17 01:57:52 +0000 UTC FinishedAt: 2026-07-17 01:58:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-17 01:57:52 +0000 UTC FinishedAt: 2026-07-17 01:58:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow76fq2/series-workflow76fq2-convert-artifact-2468998649/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-17 01:58:19 +0000 UTC FinishedAt: 2026-07-17 02:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-17 01:58:19 +0000 UTC FinishedAt: 2026-07-17 02:39:05 +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:*a51d96dc-40b3-4f18-87e1-c8b6ade585a6,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-workflow76fq2/series-workflow76fq2-convert-artifact-2468998649/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": "121968c9-6ebd-40bc-ab94-edf8cbca39c2", "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-workflow76fq2/series-workflow76fq2-build-action-826443543/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-17 01:58:19 +0000 UTC FinishedAt: 2026-07-17 02:38:55 +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:*a51d96dc-40b3-4f18-87e1-c8b6ade585a6,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-workflow76fq2/series-workflow76fq2-convert-artifact-2468998649/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": "121968c9-6ebd-40bc-ab94-edf8cbca39c2", "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-workflow76fq2/series-workflow76fq2-build-action-826443543/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-17 02:39:05 +0000 UTC FinishedAt: 2026-07-17 02:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-17 02:39:05 +0000 UTC FinishedAt: 2026-07-17 02:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-17 02:39:05 +0000 UTC FinishedAt: 2026-07-17 02:39:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-17 02:39:05 +0000 UTC FinishedAt: 2026-07-17 02:39:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow76fq2/series-workflow76fq2-convert-artifact-2232201676/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-17 02:39:15 +0000 UTC FinishedAt: 2026-07-17 02:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-17 02:39:15 +0000 UTC FinishedAt: 2026-07-17 02:41:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*121968c9-6ebd-40bc-ab94-edf8cbca39c2,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-workflow76fq2/series-workflow76fq2-build-action-826443543/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-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-17 02:41:21 +0000 UTC FinishedAt: 2026-07-17 02:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-17 02:41:21 +0000 UTC FinishedAt: 2026-07-17 02:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-17 02:41:21 +0000 UTC FinishedAt: 2026-07-17 03:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-17 02:41:21 +0000 UTC FinishedAt: 2026-07-17 03:34:07 +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:*a51d96dc-40b3-4f18-87e1-c8b6ade585a6,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-workflow76fq2/series-workflow76fq2-convert-artifact-2232201676/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": "b51eb25d-c0cd-4117-9b3e-a85655831689", "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-workflow76fq2/series-workflow76fq2-build-action-1734803432/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-17 02:41:21 +0000 UTC FinishedAt: 2026-07-17 03:32:55 +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:*a51d96dc-40b3-4f18-87e1-c8b6ade585a6,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-workflow76fq2/series-workflow76fq2-convert-artifact-2232201676/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": "b51eb25d-c0cd-4117-9b3e-a85655831689", "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-workflow76fq2/series-workflow76fq2-build-action-1734803432/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-17 03:34:07 +0000 UTC FinishedAt: 2026-07-17 03:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-17 03:34:07 +0000 UTC FinishedAt: 2026-07-17 03:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-17 03:34:07 +0000 UTC FinishedAt: 2026-07-17 03:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-17 03:34:07 +0000 UTC FinishedAt: 2026-07-17 03:36:07 +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:*b51eb25d-c0cd-4117-9b3e-a85655831689,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-workflow76fq2/series-workflow76fq2-build-action-1734803432/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-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-17 03:36:17 +0000 UTC FinishedAt: 2026-07-17 03:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-17 03:36:17 +0000 UTC FinishedAt: 2026-07-17 03:39:34 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"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:*121968c9-6ebd-40bc-ab94-edf8cbca39c2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b51eb25d-c0cd-4117-9b3e-a85655831689,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-workflow76fq2/series-workflow76fq2-build-action-826443543/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-workflow76fq2/series-workflow76fq2-build-action-1734803432/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-17 03:36:17 +0000 UTC FinishedAt: 2026-07-17 03:36:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-17 03:36:17 +0000 UTC FinishedAt: 2026-07-17 03:36:26 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"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-workflow76fq2/series-workflow76fq2-convert-artifact-134196277/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-17 03:36:17 +0000 UTC FinishedAt: 2026-07-17 03:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-17 03:36:17 +0000 UTC FinishedAt: 2026-07-17 03:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-17 03:36:17 +0000 UTC FinishedAt: 2026-07-17 03:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-17 03:36:38 +0000 UTC FinishedAt: 2026-07-17 03:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76fq2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_alu_r","emit_alu_r64","emit_divmod_r64","jit_smod64"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"d42e6d72-f004-4456-99b2-a04d35db46f5","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-17 03:36:38 +0000 UTC FinishedAt: 2026-07-17 03:39:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*121968c9-6ebd-40bc-ab94-edf8cbca39c2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b51eb25d-c0cd-4117-9b3e-a85655831689,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-workflow76fq2/series-workflow76fq2-build-action-826443543/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-workflow76fq2/series-workflow76fq2-build-action-1734803432/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-workflow76fq2/series-workflow76fq2-convert-artifact-134196277/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,}