Name: series-workflowh77wm Phase: Succeeded StartedAt: 2026-08-01 03:14:17 +0000 UTC FinishedAt: 2026-08-01 07:15:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[0] Phase: Succeeded StartedAt: 2026-08-01 03:14:17 +0000 UTC FinishedAt: 2026-08-01 03:37:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 03:14:17 +0000 UTC FinishedAt: 2026-08-01 03:37:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "28b997c5-b016-4de4-a0fe-8e4094905298" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "hva_to_pfn", "__kvm_faultin_pfn" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAzOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2h2YV90b19wZm4mIzM0OywKICAgICYjMzQ7X19rdm1fZmF1bHRpbl9wZm4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGh2YV90b19wZm5fcmVtYXBwZWRgIGluIEtWTSYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudCB0byBwcm9wZXJseSBoYW5kbGUgd3JpdGUgZmF1bHRzIG9uIFZNX1BGTk1BUCBWTUFzIGJ5IHRyaWdnZXJpbmcgYSB3cml0ZSB1cGdyYWRlIHZpYSBgZml4dXBfdXNlcl9mYXVsdGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBwYWdlIGZhdWx0IGhhbmRsaW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZHVyaW5nIGd1ZXN0IGV4ZWN1dGlvbiB3aGVuIGFjY2Vzc2luZyBtZW1vcnktbWFwcGVkIEkvTyBvciBQRk5NQVAgcmVnaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk0MmE3NGM5N2EzMzdmZjQwZWMyOWJkMTZiNmQzMjk1YmZmMjM1NjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDAzOjM1OjI4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5pbmRleCA0NWU3ODQ0NjJlYzZlLi44MmM1YTZiOTQyNjdmIDEwMDY0NFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdmlydC9rdm0va3ZtX21haW4uY1xuQEAgLTI5NDEsNiAmIzQzOzI5NDEsNyBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4ge1xuIFx0c3RydWN0IGZvbGxvd19wZm5tYXBfYXJncyBhcmdzID0geyAudm1hID0gdm1hLCAuYWRkcmVzcyA9IGtmcC1cdTAwM2VodmEgfTtcbiBcdGJvb2wgd3JpdGVfZmF1bHQgPSBrZnAtXHUwMDNlZmxhZ3MgXHUwMDI2IEZPTExfV1JJVEU7XG4mIzQzO1x0Ym9vbCB1bmxvY2tlZCA9IGZhbHNlO1xuIFx0aW50IHI7XG4gXG4gXHQvKlxuQEAgLTI5NTcsNyAmIzQzOzI5NTgsNiBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdCAqIGdldF91c2VyX3BhZ2VzIGZhaWxzIGZvciBWTV9JTyBhbmQgVk1fUEZOTUFQIHZtYXMgYW5kIGRvZXNcbiBcdFx0ICogbm90IGNhbGwgdGhlIGZhdWx0IGhhbmRsZXIsIHNvIGRvIGl0IGhlcmUuXG4gXHRcdCAqL1xuLVx0XHRib29sIHVubG9ja2VkID0gZmFsc2U7XG4gXHRcdHIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXHUwMDNlbW0sIGtmcC1cdTAwM2VodmEsXG4gXHRcdFx0XHQgICAgICh3cml0ZV9mYXVsdCA/IEZBVUxUX0ZMQUdfV1JJVEUgOiAwKSxcbiBcdFx0XHRcdCAgICAgXHUwMDI2dW5sb2NrZWQpO1xuQEAgLTI5NzIsOCAmIzQzOzI5NzIsMjcgQEAgc3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0fVxuIFxuIFx0aWYgKHdyaXRlX2ZhdWx0IFx1MDAyNlx1MDAyNiAhYXJncy53cml0YWJsZSkge1xuLVx0XHQqcF9wZm4gPSBLVk1fUEZOX0VSUl9ST19GQVVMVDtcbi1cdFx0Z290byBvdXQ7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogVk1fUEZOTUFQIGZhdWx0IGhhbmRsZXJzIG1heSBpbnN0YWxsIHJlYWQtb25seSBQVEVzIHZpYVxuJiM0MztcdFx0ICogdm1mX2luc2VydF9wZm4oKSwgZGVmZXJyaW5nIHRoZSB3cml0ZSB1cGdyYWRlIHRvIGEgc2Vjb25kXG4mIzQzO1x0XHQgKiBmYXVsdC4gVHJpZ2dlciB0aGF0IHVwZ3JhZGUgbm93LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRmb2xsb3dfcGZubWFwX2VuZChcdTAwMjZhcmdzKTtcbiYjNDM7XHRcdHIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXHUwMDNlbW0sIGtmcC1cdTAwM2VodmEsIEZBVUxUX0ZMQUdfV1JJVEUsXG4mIzQzO1x0XHRcdFx0ICAgICBcdTAwMjZ1bmxvY2tlZCk7XG4mIzQzO1x0XHRpZiAodW5sb2NrZWQpXG4mIzQzO1x0XHRcdHJldHVybiAtRUFHQUlOO1xuJiM0MztcdFx0aWYgKHIpXG4mIzQzO1x0XHRcdHJldHVybiByO1xuJiM0MztcbiYjNDM7XHRcdHIgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFx1MDAyNmFyZ3MpO1xuJiM0MztcdFx0aWYgKHIpXG4mIzQzO1x0XHRcdHJldHVybiByO1xuJiM0MztcbiYjNDM7XHRcdGlmICghYXJncy53cml0YWJsZSkge1xuJiM0MztcdFx0XHQqcF9wZm4gPSBLVk1fUEZOX0VSUl9ST19GQVVMVDtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHQqcF9wZm4gPSBrdm1fcmVzb2x2ZV9wZm4oa2ZwLCBOVUxMLCBcdTAwMjZhcmdzLCBhcmdzLndyaXRhYmxlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHZhX3RvX3BmbiYjMzQ7LAogICAgJiMzNDtfX2t2bV9mYXVsdGluX3BmbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaW4gS1ZNJiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50IHRvIHByb3Blcmx5IGhhbmRsZSB3cml0ZSBmYXVsdHMgb24gVk1fUEZOTUFQIFZNQXMgYnkgdHJpZ2dlcmluZyBhIHdyaXRlIHVwZ3JhZGUgdmlhIGBmaXh1cF91c2VyX2ZhdWx0YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIHBhZ2UgZmF1bHQgaGFuZGxpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgZXhlY3V0aW9uIHdoZW4gYWNjZXNzaW5nIG1lbW9yeS1tYXBwZWQgSS9PIG9yIFBGTk1BUCByZWdpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTQyYTc0Yzk3YTMzN2ZmNDBlYzI5YmQxNmI2ZDMyOTViZmYyMzU2MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMDM6MzU6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1fbWFpbi5jIGIvdmlydC9rdm0va3ZtX21haW4uYwppbmRleCA0NWU3ODQ0NjJlYzZlLi44MmM1YTZiOTQyNjdmIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKQEAgLTI5NDEsNiAmIzQzOzI5NDEsNyBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiB7CiAJc3RydWN0IGZvbGxvd19wZm5tYXBfYXJncyBhcmdzID0geyAudm1hID0gdm1hLCAuYWRkcmVzcyA9IGtmcC0mZ3Q7aHZhIH07CiAJYm9vbCB3cml0ZV9mYXVsdCA9IGtmcC0mZ3Q7ZmxhZ3MgJmFtcDsgRk9MTF9XUklURTsKJiM0MzsJYm9vbCB1bmxvY2tlZCA9IGZhbHNlOwogCWludCByOwogCiAJLyoKQEAgLTI5NTcsNyAmIzQzOzI5NTgsNiBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCSAqIGdldF91c2VyX3BhZ2VzIGZhaWxzIGZvciBWTV9JTyBhbmQgVk1fUEZOTUFQIHZtYXMgYW5kIGRvZXMKIAkJICogbm90IGNhbGwgdGhlIGZhdWx0IGhhbmRsZXIsIHNvIGRvIGl0IGhlcmUuCiAJCSAqLwotCQlib29sIHVubG9ja2VkID0gZmFsc2U7CiAJCXIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtJmd0O21tLCBrZnAtJmd0O2h2YSwKIAkJCQkgICAgICh3cml0ZV9mYXVsdCA/IEZBVUxUX0ZMQUdfV1JJVEUgOiAwKSwKIAkJCQkgICAgICZhbXA7dW5sb2NrZWQpOwpAQCAtMjk3Miw4ICYjNDM7Mjk3MiwyNyBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJfQogCiAJaWYgKHdyaXRlX2ZhdWx0ICZhbXA7JmFtcDsgIWFyZ3Mud3JpdGFibGUpIHsKLQkJKnBfcGZuID0gS1ZNX1BGTl9FUlJfUk9fRkFVTFQ7Ci0JCWdvdG8gb3V0OwomIzQzOwkJLyoKJiM0MzsJCSAqIFZNX1BGTk1BUCBmYXVsdCBoYW5kbGVycyBtYXkgaW5zdGFsbCByZWFkLW9ubHkgUFRFcyB2aWEKJiM0MzsJCSAqIHZtZl9pbnNlcnRfcGZuKCksIGRlZmVycmluZyB0aGUgd3JpdGUgdXBncmFkZSB0byBhIHNlY29uZAomIzQzOwkJICogZmF1bHQuIFRyaWdnZXIgdGhhdCB1cGdyYWRlIG5vdy4KJiM0MzsJCSAqLwomIzQzOwkJZm9sbG93X3Bmbm1hcF9lbmQoJmFtcDthcmdzKTsKJiM0MzsJCXIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtJmd0O21tLCBrZnAtJmd0O2h2YSwgRkFVTFRfRkxBR19XUklURSwKJiM0MzsJCQkJICAgICAmYW1wO3VubG9ja2VkKTsKJiM0MzsJCWlmICh1bmxvY2tlZCkKJiM0MzsJCQlyZXR1cm4gLUVBR0FJTjsKJiM0MzsJCWlmIChyKQomIzQzOwkJCXJldHVybiByOwomIzQzOwomIzQzOwkJciA9IGZvbGxvd19wZm5tYXBfc3RhcnQoJmFtcDthcmdzKTsKJiM0MzsJCWlmIChyKQomIzQzOwkJCXJldHVybiByOwomIzQzOwomIzQzOwkJaWYgKCFhcmdzLndyaXRhYmxlKSB7CiYjNDM7CQkJKnBfcGZuID0gS1ZNX1BGTl9FUlJfUk9fRkFVTFQ7CiYjNDM7CQkJZ290byBvdXQ7CiYjNDM7CQl9CiAJfQogCiAJKnBfcGZuID0ga3ZtX3Jlc29sdmVfcGZuKGtmcCwgTlVMTCwgJmFtcDthcmdzLCBhcmdzLndyaXRhYmxlKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDM6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyMgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYHZpcnQva3ZtL2t2bV9tYWluLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBmdW5jdGlvbi4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGNvbmRpdGlvbiB3aXRoaW4gdGhhdCBmdW5jdGlvbjogYHdyaXRlX2ZhdWx0ICZhbXA7JmFtcDsgIWFyZ3Mud3JpdGFibGVgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGhhbmRsaW5nIGEgcGFydGljdWxhciBmYXVsdCBzY2VuYXJpbyB3aXRoaW4gdGhlIHJlbWFwcGVkIFBGTiBsb29rdXAuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgY2FsbGluZyBgZm9sbG93X3Bmbm1hcF9lbmRgLCBgZml4dXBfdXNlcl9mYXVsdGAsIGFuZCBgZm9sbG93X3Bmbm1hcF9zdGFydGAsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IEtWTSBtYW5hZ2VzIG1lbW9yeS4KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjYWxsIGdyYXBoLiBMZXQmIzM5O3Mgc2VlIHdobyBjYWxscyBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAuIEl0JiMzOTtzIHVzZWQgYnkgYGh2YV90b19wZm5gLCB3aGljaCBpbiB0dXJuLCBpcyB1c2VkIGJ5IGBfX2dmbl90b19wZm5fbWVtc2xvdGAuIFJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVmaW5pdGVseSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIGNvcmUgdG8gS1ZNJiMzOTtzIG1lbW9yeSBoYW5kbGluZy4gVGhpcyByZWluZm9yY2VzIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBwYXRjaC4KCkkgc2hvdWxkIGFsc28gcXVpY2tseSB2ZXJpZnkgdGhlIEtWTSBjb25maWd1cmF0aW9uLiBKdXN0IHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBDT05GSUcgaXMgcmlnaHQsIGFuZCBpdCYjMzk7cyB0aGUgbWFpbiBDT05GSUdfS1ZNLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgd2hldGhlciBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaXMgc3RhdGljLiBBbHJpZ2h0LCBpdCBpcywgYW5kIHRoZSBjYWxsZXIgaXMgYGh2YV90b19wZm5gLiBNYWtlcyBzZW5zZS4gTm93LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIGBodmFfdG9fcGZuYCBmb3IgYW55IGltbWVkaWF0ZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtodmFfdG9fcGZuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTI4Mjc9c3RhdGljIGt2bV9wZm5fdCBrdm1fcmVzb2x2ZV9wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg1MC0gKi9cbnZpcnQva3ZtL2t2bV9tYWluLmM6Mjg1MTpzdGF0aWMgYm9vbCBodmFfdG9fcGZuX2Zhc3Qoc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcGZuKVxudmlydC9rdm0va3ZtX21haW4uYy0yODUyLXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4ODItICovXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4ODM6c3RhdGljIGludCBodmFfdG9fcGZuX3Nsb3coc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcGZuKVxudmlydC9rdm0va3ZtX21haW4uYy0yODg0LXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI5Mjg9c3RhdGljIGJvb2wgdm1hX2lzX3ZhbGlkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBib29sIHdyaXRlX2ZhdWx0KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjkzOC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjkzOTpzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI5NDAtXHRcdFx0ICAgICAgIHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBrdm1fcGZuX3QgKnBfcGZuKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwMy1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAwNDprdm1fcGZuX3QgaHZhX3RvX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwNS17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDE0LVxudmlydC9rdm0va3ZtX21haW4uYzozMDE1Olx0aWYgKGh2YV90b19wZm5fZmFzdChrZnAsIFx1MDAyNnBmbikpXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMTYtXHRcdHJldHVybiBwZm47XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMTctXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMTg6XHRucGFnZXMgPSBodmFfdG9fcGZuX3Nsb3coa2ZwLCBcdTAwMjZwZm4pO1xudmlydC9rdm0va3ZtX21haW4uYy0zMDE5LVx0aWYgKG5wYWdlcyA9PSAxKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAzMi1cdGVsc2UgaWYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX0lPIHwgVk1fUEZOTUFQKSkge1xudmlydC9rdm0va3ZtX21haW4uYzozMDMzOlx0XHRyID0gaHZhX3RvX3Bmbl9yZW1hcHBlZCh2bWEsIGtmcCwgXHUwMDI2cGZuKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAzNC1cdFx0aWYgKHIgPT0gLUVBR0FJTilcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTMwNDk9c3RhdGljIGt2bV9wZm5fdCBrdm1fZm9sbG93X3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNjQtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwNjU6XHRyZXR1cm4gaHZhX3RvX3BmbihrZnApO1xudmlydC9rdm0va3ZtX21haW4uYy0zMDY2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYGh2YV90b19wZm5gKioKCk9rYXksIHNvIGBodmFfdG9fcGZuYCBpc24mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQgbWVhbnMgaXQmIzM5O3MgcG90ZW50aWFsbHkgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgaXRzIGRlZmluaW5nIGZpbGUuIE5vdywgd2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSBkZWZpbmVkPyBSaWdodCwgaXQmIzM5O3MgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGUgcXVlc3Rpb24gbm93IGlzOiBpcyBpdCBleHBvcnRlZD8gSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGhlYWRlcnMgb3IgY29kZSB0byBjb25maXJtIGlmIGl0JiMzOTtzIGRlY2xhcmVkIHdpdGggYEVYUE9SVF9TWU1CT0xgIG9yIHNpbWlsYXIsIG1ha2luZyBpdCBwYXJ0IG9mIHRoZSBLVk0gQVBJLiBJZiBpdCAqaXMqIGV4cG9ydGVkLCB0aGVuIG15IGluaXRpYWwgYXNzdW1wdGlvbiBhYm91dCBpdHMgd2lkZXIgYXZhaWxhYmlsaXR5IGhvbGRzIHRydWUuIElmIG5vdCwgaXQmIzM5O3MgbGlrZWx5IGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugb25seSB3aXRoaW4gdGhhdCBLVk0gbW9kdWxlLiBUaW1lIHRvIGRpZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtodmFfdG9fcGZuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmM9MjgyNz1zdGF0aWMga3ZtX3Bmbl90IGt2bV9yZXNvbHZlX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yODUwLSAqL1xudmlydC9rdm0va3ZtX21haW4uYzoyODUxOnN0YXRpYyBib29sIGh2YV90b19wZm5fZmFzdChzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4NTIte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4Mi0gKi9cbnZpcnQva3ZtL2t2bV9tYWluLmM6Mjg4MzpzdGF0aWMgaW50IGh2YV90b19wZm5fc2xvdyhzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4ODQte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MjkyOD1zdGF0aWMgYm9vbCB2bWFfaXNfdmFsaWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIGJvb2wgd3JpdGVfZmF1bHQpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yOTM4LVxudmlydC9rdm0va3ZtX21haW4uYzoyOTM5OnN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjk0MC1cdFx0XHQgICAgICAgc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcF9wZm4pXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDAzLVxudmlydC9rdm0va3ZtX21haW4uYzozMDA0Omt2bV9wZm5fdCBodmFfdG9fcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwKVxudmlydC9rdm0va3ZtX21haW4uYy0zMDA1LXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMTQtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMTU6XHRpZiAoaHZhX3RvX3Bmbl9mYXN0KGtmcCwgXHUwMDI2cGZuKSlcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAxNi1cdFx0cmV0dXJuIHBmbjtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAxNy1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAxODpcdG5wYWdlcyA9IGh2YV90b19wZm5fc2xvdyhrZnAsIFx1MDAyNnBmbik7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMTktXHRpZiAobnBhZ2VzID09IDEpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDMyLVx0ZWxzZSBpZiAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiAoVk1fSU8gfCBWTV9QRk5NQVApKSB7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMzM6XHRcdHIgPSBodmFfdG9fcGZuX3JlbWFwcGVkKHZtYSwga2ZwLCBcdTAwMjZwZm4pO1xudmlydC9rdm0va3ZtX21haW4uYy0zMDM0LVx0XHRpZiAociA9PSAtRUFHQUlOKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MzA0OT1zdGF0aWMga3ZtX3Bmbl90IGt2bV9mb2xsb3dfcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA2NC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzA2NTpcdHJldHVybiBodmFfdG9fcGZuKGtmcCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNjYtfVxuLS1cbnZpcnQva3ZtL2t2bV9tbS5oPTI3PXN0cnVjdCBrdm1fZm9sbG93X3BmbiB7XG4tLVxudmlydC9rdm0va3ZtX21tLmgtNTgtXG52aXJ0L2t2bS9rdm1fbW0uaDo1OTprdm1fcGZuX3QgaHZhX3RvX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCk7XG52aXJ0L2t2bS9rdm1fbW0uaC02MC1cbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTEyNz1zdGF0aWMgaW5saW5lIGJvb2wgbW11X25vdGlmaWVyX3JldHJ5X2NhY2hlKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBtbXVfc2VxKVxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMTU0LVxudmlydC9rdm0vcGZuY2FjaGUuYzoxNTU6c3RhdGljIGt2bV9wZm5fdCBodmFfdG9fcGZuX3JldHJ5KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMpXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTE1Ni17XG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy0yMDgtXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjIwOTpcdFx0bmV3X3BmbiA9IGh2YV90b19wZm4oXHUwMDI2a2ZwKTtcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjEwLVx0XHRpZiAoaXNfZXJyb3Jfbm9zbG90X3BmbihuZXdfcGZuKSlcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTI1Nj1zdGF0aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyB1aHZhKVxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzIxLVxudmlydC9rdm0vcGZuY2FjaGUuYzozMjI6XHQvKiBOb3RlOiB0aGUgb2Zmc2V0IG11c3QgYmUgY29ycmVjdCBiZWZvcmUgY2FsbGluZyBodmFfdG9fcGZuX3JldHJ5KCkgKi9cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzIzLVx0Z3BjLVx1MDAzZXVodmEgJiM0Mzs9IHBhZ2Vfb2Zmc2V0O1xuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzI5LVx0aWYgKCFncGMtXHUwMDNldmFsaWQgfHwgaHZhX2NoYW5nZSkge1xudmlydC9rdm0vcGZuY2FjaGUuYzozMzA6XHRcdHJldCA9IGh2YV90b19wZm5fcmV0cnkoZ3BjKTtcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzMxLVx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njk3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYWdlIEZyYW1lIE51bWJlciAoUEZOKSBUcmFuc2xhdGlvbiBQYXRoKioKCk9rYXksIHNvIGBodmFfdG9fcGZuYCBpcyBhIGtleSBmdW5jdGlvbiBpbiB0aGlzIHZpcnR1YWwgbWVtb3J5IHRyYW5zbGF0aW9uIHByb2Nlc3MuIEkga25vdyB0aGF0IGBrdm1fZm9sbG93X3BmbmAgYW5kIGBodmFfdG9fcGZuX3JldHJ5YCBhcmUgY2FsbGluZyBpdCwgdGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kLiBMZXQmIzM5O3Mgc2VlIGhvdyBga3ZtX2ZvbGxvd19wZm5gIGlzIHV0aWxpemVkIC0gdW5kZXJzdGFuZGluZyB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSB3aWxsIHByb3ZpZGUgbW9yZSBjb250ZXh0LiBLbm93aW5nIGl0cyBjYWxsZXJzIHNob3VsZCBpbGx1bWluYXRlIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgaG93IHRoaXMgUEZOIHRyYW5zbGF0aW9uIHN5c3RlbSBpcyBiZWluZyB1c2VkLCBlc3BlY2lhbGx5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIG90aGVyIGZ1bmN0aW9uLCBhbmQgaG93IHRob3NlIHBhcnRzIGludGVyYWN0LiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9mb2xsb3dfcGZuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmM9MjgyNT1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3JlbGVhc2VfcGFnZV9kaXJ0eSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4MjYtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4Mjc6c3RhdGljIGt2bV9wZm5fdCBrdm1fcmVzb2x2ZV9wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIHN0cnVjdCBwYWdlICpwYWdlLFxudmlydC9rdm0va3ZtX21haW4uYy0yODI4LVx0XHRcdFx0IHN0cnVjdCBmb2xsb3dfcGZubWFwX2FyZ3MgKm1hcCwgYm9vbCB3cml0YWJsZSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4NTAtICovXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4NTE6c3RhdGljIGJvb2wgaHZhX3RvX3Bmbl9mYXN0KHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBrdm1fcGZuX3QgKnBmbilcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg1Mi17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yODgyLSAqL1xudmlydC9rdm0va3ZtX21haW4uYzoyODgzOnN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9zbG93KHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBrdm1fcGZuX3QgKnBmbilcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4NC17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYz0yOTM5PXN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbnZpcnQva3ZtL2t2bV9tYWluLmM6Mjk0MDpcdFx0XHQgICAgICAgc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcF9wZm4pXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI5NDEte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwMy1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAwNDprdm1fcGZuX3QgaHZhX3RvX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwNS17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDQ4LVxudmlydC9rdm0va3ZtX21haW4uYzozMDQ5OnN0YXRpYyBrdm1fcGZuX3Qga3ZtX2ZvbGxvd19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNTAte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MzA2OD1rdm1fcGZuX3QgX19rdm1fZmF1bHRpbl9wZm4oY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA3MS17XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwNzI6XHRzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ga2ZwID0ge1xudmlydC9rdm0va3ZtX21haW4uYy0zMDczLVx0XHQuc2xvdCA9IHNsb3QsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDg1LVxudmlydC9rdm0va3ZtX21haW4uYzozMDg2Olx0cmV0dXJuIGt2bV9mb2xsb3dfcGZuKFx1MDAyNmtmcCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwODctfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MzExND1zdHJ1Y3QgcGFnZSAqX19nZm5fdG9fcGFnZShzdHJ1Y3Qga3ZtICprdm0sIGdmbl90IGdmbiwgYm9vbCB3cml0ZSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxMTYtXHRzdHJ1Y3QgcGFnZSAqcmVmY291bnRlZF9wYWdlID0gTlVMTDtcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzExNzpcdHN0cnVjdCBrdm1fZm9sbG93X3BmbiBrZnAgPSB7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxMTgtXHRcdC5zbG90ID0gZ2ZuX3RvX21lbXNsb3Qoa3ZtLCBnZm4pLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzEyMy1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzEyNDpcdCh2b2lkKWt2bV9mb2xsb3dfcGZuKFx1MDAyNmtmcCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxMjUtXHRyZXR1cm4gcmVmY291bnRlZF9wYWdlO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MzEyOT1pbnQgX19rdm1fdmNwdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBnZm5fdCBnZm4sIHN0cnVjdCBrdm1faG9zdF9tYXAgKm1hcCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxMzEte1xudmlydC9rdm0va3ZtX21haW4uYzozMTMyOlx0c3RydWN0IGt2bV9mb2xsb3dfcGZuIGtmcCA9IHtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzEzMy1cdFx0LnNsb3QgPSBrdm1fdmNwdV9nZm5fdG9fbWVtc2xvdCh2Y3B1LCBnZm4pLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzE0NS1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzE0NjpcdG1hcC1cdTAwM2VwZm4gPSBrdm1fZm9sbG93X3BmbihcdTAwMjZrZnApO1xudmlydC9rdm0va3ZtX21haW4uYy0zMTQ3LVx0aWYgKGlzX2Vycm9yX25vc2xvdF9wZm4obWFwLVx1MDAzZXBmbikpXG4tLVxudmlydC9rdm0va3ZtX21tLmgtMjYtXG52aXJ0L2t2bS9rdm1fbW0uaDoyNzpzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ge1xudmlydC9rdm0va3ZtX21tLmgtMjgtXHRjb25zdCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90O1xuLS1cbnZpcnQva3ZtL2t2bV9tbS5oLTU4LVxudmlydC9rdm0va3ZtX21tLmg6NTk6a3ZtX3Bmbl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApO1xudmlydC9rdm0va3ZtX21tLmgtNjAtXG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYz0xNTU9c3RhdGljIGt2bV9wZm5fdCBodmFfdG9fcGZuX3JldHJ5KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMpXG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy0xNjMtXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjE2NDpcdHN0cnVjdCBrdm1fZm9sbG93X3BmbiBrZnAgPSB7XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTE2NS1cdFx0LnNsb3QgPSBncGMtXHUwMDNlbWVtc2xvdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDY0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkFuYWx5emluZyB0aGUgS1ZNIFBhZ2UgRmF1bHQgSGFuZGxpbmcqKgoKT2theSwgc28gYF9fa3ZtX2ZhdWx0aW5fcGZuYCBpcyB0aGUgY29yZSBvZiBLVk0mIzM5O3MgcGFnZSBmYXVsdCBoYW5kbGluZy4gVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYXQgYSBkZWVwIGxldmVsIHRvIHRyYWNlIHRoaXMgbWVtb3J5IGlzc3VlLiBNeSBuZXh0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gZGV0ZXJtaW5lIGFsbCB0aGUgcG90ZW50aWFsIGNhbGwgc2l0ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0cyBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgd29yayBiZWdpbnMgdG8gdHJhY2UgZG93biB0byB0aGUgcm9vdCBjYXVzZS4gSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBhdCB3aGVyZSBgX19rdm1fZmF1bHRpbl9wZm5gIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBGaW5kaW5nIHRob3NlIGNhbGwgc2l0ZXMgd2lsbCBnaXZlIG1lIGFuIHVuZGVyc3RhbmRpbmcgb2Ygd2hlbiBhbmQgd2h5IHRoZSBrZXJuZWwgaXMgdHJ5aW5nIHRvIGhhbmRsZSB0aGVzZSBwYWdlIGZhdWx0cy4gVGhlbiBJIGNhbiBzdGFydCB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgdG8gcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19rdm1fZmF1bHRpbl9wZm4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vbW11LmM9MTg0OD1zdGF0aWMgaW50IGt2bV9zMl9mYXVsdF9nZXRfdm1hX2luZm8oY29uc3Qgc3RydWN0IGt2bV9zMl9mYXVsdF9kZXNjICpzMmZkLFxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jLTE4NzgtXHQgKiBSZWFkIG1tdV9pbnZhbGlkYXRlX3NlcSBzbyB0aGF0IEtWTSBjYW4gZGV0ZWN0IGlmIHRoZSByZXN1bHRzIG9mXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoxODc5Olx0ICogdm1hX2xvb2t1cCgpIG9yIF9fa3ZtX2ZhdWx0aW5fcGZuKCkgYmVjb21lIHN0YWxlIHByaW9yIHRvXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xODgwLVx0ICogYWNxdWlyaW5nIGt2bS1cdTAwM2VtbXVfbG9jay5cbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYz0xOTAzPXN0YXRpYyBpbnQga3ZtX3MyX2ZhdWx0X3Bpbl9wZm4oY29uc3Qgc3RydWN0IGt2bV9zMl9mYXVsdF9kZXNjICpzMmZkLFxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jLTE5MTEtXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoxOTEyOlx0czJ2aS1cdTAwM2VwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihzMmZkLVx1MDAzZW1lbXNsb3QsIGdldF9jYW5vbmljYWxfZ2ZuKHMyZmQsIHMydmkpLFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTkxMy1cdFx0XHRcdCAgICAgIGt2bV9pc193cml0ZV9mYXVsdChzMmZkLVx1MDAzZXZjcHUpID8gRk9MTF9XUklURSA6IDAsXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTk0OS1cdFx0XHQgKiBsYXJnZXN0IHF1YW50aXR5IHdlIGNhbiBtYXAuICBJZiBpbnN0ZWFkIGl0IHdhcyBtYXBwZWRcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjE5NTA6XHRcdFx0ICogdmlhIF9fa3ZtX2ZhdWx0aW5fcGZuKCksIHZtYV9wYWdlc2l6ZSBpcyBzZXQgdG8gUEFHRV9TSVpFXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xOTUxLVx0XHRcdCAqIGFuZCBtdXN0IG5vdCBiZSB1cGdyYWRlZC5cbi0tXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYz0xMzU4PXN0YXRpYyBpbnQga3ZtX3RyYW5zbGF0ZV92bmNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCAqaXNfZ21lbSlcbi0tXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xNDExLVx0aWYgKCEqaXNfZ21lbSkge1xuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM6MTQxMjpcdFx0cGZuID0gX19rdm1fZmF1bHRpbl9wZm4obWVtc2xvdCwgZ2ZuLCB3cml0ZV9mYXVsdCA/IEZPTExfV1JJVEUgOiAwLFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTQxMy1cdFx0XHRcdFx0XHUwMDI2d3JpdGFibGUsIFx1MDAyNnBhZ2UpO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9odi5jPTUwNj1pbnQga3ZtcHBjX2Jvb2szc19odl9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfaHYuYy02MDUtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfaHYuYzo2MDY6XHRwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihtZW1zbG90LCBnZm4sIHdyaXRpbmcgPyBGT0xMX1dSSVRFIDogMCxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9odi5jLTYwNy1cdFx0XHRcdFx1MDAyNndyaXRlX29rLCBcdTAwMjZwYWdlKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfcmFkaXguYz04MjE9aW50IGt2bXBwY19ib29rM3NfaW5zdGFudGlhdGVfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRfbW11X3JhZGl4LmMtODQyLVx0aHZhID0gZ2ZuX3RvX2h2YV9tZW1zbG90KG1lbXNsb3QsIGdmbik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfcmFkaXguYzo4NDM6XHRwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihtZW1zbG90LCBnZm4sIHdyaXRpbmcgPyBGT0xMX1dSSVRFIDogMCxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9yYWRpeC5jLTg0NC1cdFx0XHRcdFx1MDAyNnVwZ3JhZGVfd3JpdGUsIFx1MDAyNnBhZ2UpO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vZTUwMF9tbXVfaG9zdC5jPTMyMD1zdGF0aWMgaW5saW5lIGludCBrdm1wcGNfZTUwMF9zaGFkb3dfbWFwKHN0cnVjdCBrdm1wcGNfdmNwdV9lNTAwICp2Y3B1X2U1MDAsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9lNTAwX21tdV9ob3N0LmMtMzU0LVxuYXJjaC9wb3dlcnBjL2t2bS9lNTAwX21tdV9ob3N0LmM6MzU1Olx0cGZuID0gX19rdm1fZmF1bHRpbl9wZm4oc2xvdCwgZ2ZuLCBGT0xMX1dSSVRFLCBcdTAwMjZ3cml0YWJsZSwgXHUwMDI2cGFnZSk7XG5hcmNoL3Bvd2VycGMva3ZtL2U1MDBfbW11X2hvc3QuYy0zNTYtXHRpZiAoaXNfZXJyb3Jfbm9zbG90X3BmbihwZm4pKSB7XG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmM9NTM2PWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTk5LVx0ICogUmVhZCBtbXVfaW52YWxpZGF0ZV9zZXEgc28gdGhhdCBLVk0gY2FuIGRldGVjdCBpZiB0aGUgcmVzdWx0cyBvZlxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NjAwOlx0ICogdm1hX2xvb2t1cCgpIG9yIF9fa3ZtX2ZhdWx0aW5fcGZuKCkgYmVjb21lIHN0YWxlIHByaW9yIHRvIGFjcXVpcmluZ1xuYXJjaC9yaXNjdi9rdm0vbW11LmMtNjAxLVx0ICoga3ZtLVx1MDAzZW1tdV9sb2NrLlxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTYxNS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjYxNjpcdGhmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKG1lbXNsb3QsIGdmbiwgaXNfd3JpdGUgPyBGT0xMX1dSSVRFIDogMCxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTYxNy1cdFx0XHRcdFx1MDAyNndyaXRhYmxlLCBcdTAwMjZwYWdlKTtcbi0tXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYz0zMz1pbnQga3ZtX3MzOTBfZmF1bHRpbl9nZm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBndWVzdF9mYXVsdCAqZilcbi0tXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy03My1cdFx0XHRzbG90ID0gZ2ZuX3RvX21lbXNsb3Qoa3ZtLCBmLVx1MDAzZWdmbik7XG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYzo3NDpcdFx0Zi1cdTAwM2VwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihzbG90LCBmLVx1MDAzZWdmbiwgZm9sbCwgXHUwMDI2Zi1cdTAwM2V3cml0YWJsZSwgXHUwMDI2Zi1cdTAwM2VwYWdlKTtcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTc1LVxuLS1cbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTg3LVx0XHRcdGZvbGwgXHUwMDI2PSB+Rk9MTF9OT1dBSVQ7XG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYzo4ODpcdFx0XHRmLVx1MDAzZXBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKHNsb3QsIGYtXHUwMDNlZ2ZuLCBmb2xsLCBcdTAwMjZmLVx1MDAzZXdyaXRhYmxlLCBcdTAwMjZmLVx1MDAzZXBhZ2UpO1xuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmMtODktXHRcdH1cbi0tXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYz0xMjk9aW50IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGd1ZXN0X2ZhdWx0ICpmLCBnZm5fdCBnZm4sIGJvb2wgdylcbi0tXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy0xMzUtXHRmLVx1MDAzZWdmbiA9IGdmbjtcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jOjEzNjpcdGYtXHUwMDNlcGZuID0gX19rdm1fZmF1bHRpbl9wZm4oc2xvdCwgZ2ZuLCBmb2xsLCBcdTAwMjZmLVx1MDAzZXdyaXRhYmxlLCBcdTAwMjZmLVx1MDAzZXBhZ2UpO1xuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmMtMTM3LVx0aWYgKGlzX25vc2xvdF9wZm4oZi1cdTAwM2VwZm4pKVxuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9NDY1Nj1zdGF0aWMgaW50IF9fa3ZtX21tdV9mYXVsdGluX3BmbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy00NjY0LVx0Zm9sbCB8PSBGT0xMX05PV0FJVDtcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NDY2NTpcdGZhdWx0LVx1MDAzZXBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKGZhdWx0LVx1MDAzZXNsb3QsIGZhdWx0LVx1MDAzZWdmbiwgZm9sbCxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNDY2Ni1cdFx0XHRcdCAgICAgICBcdTAwMjZmYXVsdC1cdTAwM2VtYXBfd3JpdGFibGUsIFx1MDAyNmZhdWx0LVx1MDAzZXJlZmNvdW50ZWRfcGFnZSk7XG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy00Njk0LVx0Zm9sbCBcdTAwMjY9IH5GT0xMX05PV0FJVDtcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NDY5NTpcdGZhdWx0LVx1MDAzZXBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKGZhdWx0LVx1MDAzZXNsb3QsIGZhdWx0LVx1MDAzZWdmbiwgZm9sbCxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNDY5Ni1cdFx0XHRcdCAgICAgICBcdTAwMjZmYXVsdC1cdTAwM2VtYXBfd3JpdGFibGUsIFx1MDAyNmZhdWx0LVx1MDAzZXJlZmNvdW50ZWRfcGFnZSk7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02OTQ2PXZvaWQgdm14X3NldF9hcGljX2FjY2Vzc19wYWdlX2FkZHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjk4Ny1cdCAqL1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2OTg4Olx0cGZuID0gX19rdm1fZmF1bHRpbl9wZm4oc2xvdCwgZ2ZuLCBGT0xMX1dSSVRFLCBcdTAwMjZ3cml0YWJsZSwgXHUwMDI2cmVmY291bnRlZF9wYWdlKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjk4OS1cdGlmIChpc19lcnJvcl9ub3Nsb3RfcGZuKHBmbikpXG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTEyODU9c3RhdGljIGlubGluZSB2b2lkIGt2bV9yZWxlYXNlX2ZhdWx0aW5fcGFnZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMzEwLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjEzMTE6a3ZtX3Bmbl90IF9fa3ZtX2ZhdWx0aW5fcGZuKGNvbnN0IHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsIGdmbl90IGdmbixcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMzEyLVx0XHRcdCAgICB1bnNpZ25lZCBpbnQgZm9sbCwgYm9vbCAqd3JpdGFibGUsXG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTEzMTU9c3RhdGljIGlubGluZSBrdm1fcGZuX3Qga3ZtX2ZhdWx0aW5fcGZuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ2ZuX3QgZ2ZuLFxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMzE4LXtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxMzE5Olx0cmV0dXJuIF9fa3ZtX2ZhdWx0aW5fcGZuKGt2bV92Y3B1X2dmbl90b19tZW1zbG90KHZjcHUsIGdmbiksIGdmbixcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMzIwLVx0XHRcdFx0IHdyaXRlID8gRk9MTF9XUklURSA6IDAsIHdyaXRhYmxlLCByZWZjb3VudGVkX3BhZ2UpO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MzA0OT1zdGF0aWMga3ZtX3Bmbl90IGt2bV9mb2xsb3dfcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA2Ny1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzA2ODprdm1fcGZuX3QgX19rdm1fZmF1bHRpbl9wZm4oY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLFxudmlydC9rdm0va3ZtX21haW4uYy0zMDY5LVx0XHRcdCAgICB1bnNpZ25lZCBpbnQgZm9sbCwgYm9vbCAqd3JpdGFibGUsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDg3LX1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzA4ODpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoX19rdm1fZmF1bHRpbl9wZm4pO1xudmlydC9rdm0va3ZtX21haW4uYy0zMDg5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDYzMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUGFnZSBGYXVsdCBIYW5kbGluZyBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgY2hhbmdlIHNwZWNpZmljYWxseSB3aXRoaW4gYGh2YV90b19wZm5fcmVtYXBwZWRgLiBUaGlzIGZ1bmN0aW9uIGtpY2tzIGluIHdoZW4gYSBgdm1hYCBoYXMgdGhlIGBWTV9JT2Agb3IgYFZNX1BGTk1BUGAgZmxhZyBzZXQsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBob3cgS1ZNIGhhbmRsZXMgcGFnZSBmYXVsdHMgaW4gdmlydHVhbCBtYWNoaW5lcyB1c2luZyBgVk1fUEZOTUFQYCBtYXBwaW5ncy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHNwZWNpZmljIHBpZWNlIG9mIHRoZSBLVk0gcGFnZSBmYXVsdCBwdXp6bGUuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgcmVhY2hhYmxlIHZpYSB0aGUgc3RhbmRhcmQgS1ZNIHBhZ2UgZmF1bHQgaGFuZGxpbmcgcHJvY2Vzcy4KClRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgaGFuZGxpbmcgYSB3cml0ZSBmYXVsdCBzY2VuYXJpbyBvbiBhIGBWTV9QRk5NQVBgIHZtYSwgcGFydGljdWxhcmx5IHdoZW4gdGhlIGBhcmdzLndyaXRhYmxlYCBmbGFnIGlzbiYjMzk7dCBzZXQuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBpdCB0cmlnZ2VycyBhICYjMzQ7d3JpdGUgdXBncmFkZSYjMzQ7IHRocm91Z2ggYGZpeHVwX3VzZXJfZmF1bHRgLgoKSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgZml4dXBfdXNlcl9mYXVsdGAgYW5kIGBmb2xsb3dfcGZubWFwX3N0YXJ0YCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IGJhc2VkIG9uIHRoaXMgcXVpY2sgb3ZlcnZpZXcsIHRoaXMgY2VydGFpbmx5IHNlZW1zIGZ1bmN0aW9uYWwgYW5kIHNvbWV0aGluZyBJJiMzOTtkIHdhbnQgdG8gc3ViamVjdCB0byBmdXp6aW5nLgoKTXkgZm9jdXMgc3ltYm9scyBhcmUgZ29pbmcgdG8gYmUgYGh2YV90b19wZm5gIGFuZCBgX19rdm1fZmF1bHRpbl9wZm5gLiBBbHRob3VnaCBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaXMgdGhlIGRpcmVjdCBjaGFuZ2UsIGl0JiMzOTtzIHN0YXRpYy4gYGh2YV90b19wZm5gLCB3aGlsZSBub3Qgc3RhdGljLCB3aWxsIGFsbG93IG1lIHRvIHRyYWNrIHVzYWdlIG9mIHRoaXMgZnVuY3Rpb25hbGl0eSBhY3Jvc3MgdGhlIGNvZGUuIEFuZCBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hlcmUgaXQgaXMgYmVpbmcgdXNlZC4gQW5kICBgX19rdm1fZmF1bHRpbl9wZm5gIGlzIGV4cG9ydGVkIGFuZCB1c2VkIHdoZW4gZmF1bHRpbmcgaW4gdGhlIHBhZ2UsIHNvIHRoYXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gdG8gZm9sbG93LiAKCkkmIzM5O3ZlIHZlcmlmaWVkIHRoYXQgYGh2YV90b19wZm5gIGlzIGRlY2xhcmVkIGluIGB2aXJ0L2t2bS9rdm1fbW0uaGAgYW5kIGlzIG5vbi1zdGF0aWMuIGBfX2t2bV9mYXVsdGluX3BmbmAgaXMgYWxzbyBleHBvcnRlZC4KClRoZSBjb25maWd1cmF0aW9uIHByZXJlcXVpc2l0ZSBpcyBgQ09ORklHX0tWTWAsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIGNoZWNrZWQsIGFuZCBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaXMgaW5kZWVkIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCB3aGVyZSBJIGV4cGVjdGVkIGl0IHRvIGJlLiBUaGlzIGZpbGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0tWTWAgaXMgZW5hYmxlZCwgd2hpY2ggZml0cyB0aGUgcGF0dGVybi4gU28sIG5vdGhpbmcgdW5leHBlY3RlZCBjb25maWd1cmF0aW9uLXdpc2UuIEkgdGhpbmsgSSBoYXZlIGVub3VnaCBoZXJlIHRvIHN0YXJ0IGRpZ2dpbmcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9tYWluLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0vTWFrZWZpbGUua3ZtPTY9S1ZNID89IC4uLy4uLy4uL3ZpcnQva3ZtXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm0tNy1cbnZpcnQva3ZtL01ha2VmaWxlLmt2bTo4Omt2bS15IDo9ICQoS1ZNKS9rdm1fbWFpbi5vICQoS1ZNKS9ldmVudGZkLm8gJChLVk0pL2JpbmFyeV9zdGF0cy5vXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm0tOS1rdm0tJChDT05GSUdfS1ZNX1ZGSU8pICYjNDM7PSAkKEtWTSkvdmZpby5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzI2CgkJCQkJCQlvdXRwdXQ6IDEzOAoJCQkJCQkJdGhvdWdodHM6IDQ2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgb25seSByZXF1aXJpbmcgYENPTkZJR19LVk1gIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSB1c2luZyB0aGUgcmlnaHQgZm9jdXMgc3ltYm9scyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMuIExldCYjMzk7cyBkb3VibGUtY2hlY2sgbXkgbGlzdC4gYF9fa3ZtX2ZhdWx0aW5fcGZuYCBpcyBhIHN0cm9uZyBjYW5kaWRhdGUsIGFzIGlzIGBodmFfdG9fcGZuYC4gSG9sZCBvbiwgYGh2YV90b19wZm5fcmVtYXBwZWRgIGlzIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgdXNlIGl0IGRpcmVjdGx5IGFzIGEgZm9jdXMgc3ltYm9sLCBldmVuIHRob3VnaCBpdCYjMzk7cyBsaWtlbHkgcmVsZXZhbnQuIEdvb2QgY2F0Y2guIExvb2tzIGxpa2UgSSB3aWxsIHVzZSBgaHZhX3RvX3BmbmAgaW5zdGVhZCwgYXMgaXQgaXMgbm9uLXN0YXRpYy4KCk5vdywgbGV0JiMzOTtzIHRyYWNlIHRoZSBjYWxsIGNoYWluIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGludGVyZXN0aW5nIGZ1bmN0aW9ucy4gQWxyaWdodCwgYGh2YV90b19wZm5fcmVtYXBwZWRgICppcyogY2FsbGVkIGZyb20gYGh2YV90b19wZm5gLCBzbyB0aGF0JiMzOTtzIGdvb2QgdG8ga2VlcCBpbiBtaW5kLiBgaHZhX3RvX3BmbmAgaXMsIGluIHR1cm4sIGNhbGxlZCBieSBga3ZtX2ZvbGxvd19wZm5gIGFuZCBgaHZhX3RvX3Bmbl9yZXRyeWAuIEhtbW0sIGBrdm1fZm9sbG93X3BmbmAgaXMgc3RhdGljLiBBbmQgc28gaXMgYGh2YV90b19wZm5fcmV0cnlgLiBJbnRlcmVzdGluZy4uLiBgX19rdm1fZmF1bHRpbl9wZm5gICphbHNvKiBjYWxscyBga3ZtX2ZvbGxvd19wZm5gLiBBbmQsIGl0IGxvb2tzIGxpa2UgYF9fZ2ZuX3RvX3BhZ2VgIGFsc28gY2FsbHMgYGt2bV9mb2xsb3dfcGZuYCwgYXMgZG9lcyBgX19rdm1fdmNwdV9tYXBgLgoKT2theSwgdGFraW5nIGFsbCB0aGF0IGludG8gYWNjb3VudCwgYGh2YV90b19wZm5gLCBgX19rdm1fZmF1bHRpbl9wZm5gLCBgX19nZm5fdG9fcGFnZWAsIGFuZCBgX19rdm1fdmNwdV9tYXBgIGFyZSB0aGUgbW9zdCByZWxldmFudCBjYW5kaWRhdGVzLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGBodmFfdG9fcGZuYCBhbmQgYF9fa3ZtX2ZhdWx0aW5fcGZuYCBmb3Igbm93LgoKVGhlIHBhdGNoJiMzOTtzIGltcGFjdCBpcyBzaWduaWZpY2FudC4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBodmFfdG9fcGZuX3JlbWFwcGVkYCB3aXRoaW4gS1ZNJiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50IHRvIGhhbmRsZSB3cml0ZSBmYXVsdHMgb24gVk1fUEZOTUFQIFZNQXMuIEVzc2VudGlhbGx5LCB0aGlzIGNoYW5nZSBmb3JjZXMgYSB3cml0ZSB1cGdyYWRlIHZpYSBgZml4dXBfdXNlcl9mYXVsdGAuIFRoaXMgaXMgYSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBLVk0gcGFnZSBmYXVsdCBoYW5kbGluZywgd2hpY2ggaW1wYWN0cyBndWVzdCBleGVjdXRpb24gZHVyaW5nIGFjY2VzcyB0byBtZW1vcnktbWFwcGVkIEkvTyBvciBQRk5NQVAgcmVnaW9ucy4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYW5kIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAzOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtodmFfdG9fcGZuJiMzNDssCiAgICAmIzM0O19fa3ZtX2ZhdWx0aW5fcGZuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBpbiBLVk0mIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQgdG8gcHJvcGVybHkgaGFuZGxlIHdyaXRlIGZhdWx0cyBvbiBWTV9QRk5NQVAgVk1BcyBieSB0cmlnZ2VyaW5nIGEgd3JpdGUgdXBncmFkZSB2aWEgYGZpeHVwX3VzZXJfZmF1bHRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gcGFnZSBmYXVsdCBoYW5kbGluZyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIGR1cmluZyBndWVzdCBleGVjdXRpb24gd2hlbiBhY2Nlc3NpbmcgbWVtb3J5LW1hcHBlZCBJL08gb3IgUEZOTUFQIHJlZ2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2h2YV90b19wZm4mIzM0OywKICAgICYjMzQ7X19rdm1fZmF1bHRpbl9wZm4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGh2YV90b19wZm5fcmVtYXBwZWRgIGluIEtWTSYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudCB0byBwcm9wZXJseSBoYW5kbGUgd3JpdGUgZmF1bHRzIG9uIFZNX1BGTk1BUCBWTUFzIGJ5IHRyaWdnZXJpbmcgYSB3cml0ZSB1cGdyYWRlIHZpYSBgZml4dXBfdXNlcl9mYXVsdGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBwYWdlIGZhdWx0IGhhbmRsaW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZHVyaW5nIGd1ZXN0IGV4ZWN1dGlvbiB3aGVuIGFjY2Vzc2luZyBtZW1vcnktbWFwcGVkIEkvTyBvciBQRk5NQVAgcmVnaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAzOjM1OjI5LjI4MTk0MjM4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNTI1NDQ0NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh2YV90b19wZm5cIixcbiAgICBcIl9fa3ZtX2ZhdWx0aW5fcGZuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGh2YV90b19wZm5fcmVtYXBwZWRgIGluIEtWTSdzIG1lbW9yeSBtYW5hZ2VtZW50IHRvIHByb3Blcmx5IGhhbmRsZSB3cml0ZSBmYXVsdHMgb24gVk1fUEZOTUFQIFZNQXMgYnkgdHJpZ2dlcmluZyBhIHdyaXRlIHVwZ3JhZGUgdmlhIGBmaXh1cF91c2VyX2ZhdWx0YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIHBhZ2UgZmF1bHQgaGFuZGxpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgZXhlY3V0aW9uIHdoZW4gYWNjZXNzaW5nIG1lbW9yeS1tYXBwZWQgSS9PIG9yIFBGTk1BUCByZWdpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMzozNToyOS4yODE5NDgxMzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNTI2ODgzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDk0MmE3NGM5N2EzMzdmZjQwZWMyOWJkMTZiNmQzMjk1YmZmMjM1NjFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMSAwMzozNToyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1fbWFpbi5jIGIvdmlydC9rdm0va3ZtX21haW4uY1xcbmluZGV4IDQ1ZTc4NDQ2MmVjNmUuLjgyYzVhNmI5NDI2N2YgMTAwNjQ0XFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xcbisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcXG5AQCAtMjk0MSw2ICsyOTQxLDcgQEAgc3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbiB7XFxuIFxcdHN0cnVjdCBmb2xsb3dfcGZubWFwX2FyZ3MgYXJncyA9IHsgLnZtYSA9IHZtYSwgLmFkZHJlc3MgPSBrZnAtXFx1MDAzZWh2YSB9O1xcbiBcXHRib29sIHdyaXRlX2ZhdWx0ID0ga2ZwLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZPTExfV1JJVEU7XFxuK1xcdGJvb2wgdW5sb2NrZWQgPSBmYWxzZTtcXG4gXFx0aW50IHI7XFxuIFxcbiBcXHQvKlxcbkBAIC0yOTU3LDcgKzI5NTgsNiBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdFxcdCAqIGdldF91c2VyX3BhZ2VzIGZhaWxzIGZvciBWTV9JTyBhbmQgVk1fUEZOTUFQIHZtYXMgYW5kIGRvZXNcXG4gXFx0XFx0ICogbm90IGNhbGwgdGhlIGZhdWx0IGhhbmRsZXIsIHNvIGRvIGl0IGhlcmUuXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRib29sIHVubG9ja2VkID0gZmFsc2U7XFxuIFxcdFxcdHIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXFx1MDAzZW1tLCBrZnAtXFx1MDAzZWh2YSxcXG4gXFx0XFx0XFx0XFx0ICAgICAod3JpdGVfZmF1bHQgPyBGQVVMVF9GTEFHX1dSSVRFIDogMCksXFxuIFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnVubG9ja2VkKTtcXG5AQCAtMjk3Miw4ICsyOTcyLDI3IEBAIHN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHdyaXRlX2ZhdWx0IFxcdTAwMjZcXHUwMDI2ICFhcmdzLndyaXRhYmxlKSB7XFxuLVxcdFxcdCpwX3BmbiA9IEtWTV9QRk5fRVJSX1JPX0ZBVUxUO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogVk1fUEZOTUFQIGZhdWx0IGhhbmRsZXJzIG1heSBpbnN0YWxsIHJlYWQtb25seSBQVEVzIHZpYVxcbitcXHRcXHQgKiB2bWZfaW5zZXJ0X3BmbigpLCBkZWZlcnJpbmcgdGhlIHdyaXRlIHVwZ3JhZGUgdG8gYSBzZWNvbmRcXG4rXFx0XFx0ICogZmF1bHQuIFRyaWdnZXIgdGhhdCB1cGdyYWRlIG5vdy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGZvbGxvd19wZm5tYXBfZW5kKFxcdTAwMjZhcmdzKTtcXG4rXFx0XFx0ciA9IGZpeHVwX3VzZXJfZmF1bHQoY3VycmVudC1cXHUwMDNlbW0sIGtmcC1cXHUwMDNlaHZhLCBGQVVMVF9GTEFHX1dSSVRFLFxcbitcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZ1bmxvY2tlZCk7XFxuK1xcdFxcdGlmICh1bmxvY2tlZClcXG4rXFx0XFx0XFx0cmV0dXJuIC1FQUdBSU47XFxuK1xcdFxcdGlmIChyKVxcbitcXHRcXHRcXHRyZXR1cm4gcjtcXG4rXFxuK1xcdFxcdHIgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFxcdTAwMjZhcmdzKTtcXG4rXFx0XFx0aWYgKHIpXFxuK1xcdFxcdFxcdHJldHVybiByO1xcbitcXG4rXFx0XFx0aWYgKCFhcmdzLndyaXRhYmxlKSB7XFxuK1xcdFxcdFxcdCpwX3BmbiA9IEtWTV9QRk5fRVJSX1JPX0ZBVUxUO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHQqcF9wZm4gPSBrdm1fcmVzb2x2ZV9wZm4oa2ZwLCBOVUxMLCBcXHUwMDI2YXJncywgYXJncy53cml0YWJsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAzOjM1OjI5LjY4ODAwNzQwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMxMTE5MzcxODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh2YV90b19wZm5cIixcbiAgICBcIl9fa3ZtX2ZhdWx0aW5fcGZuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGh2YV90b19wZm5fcmVtYXBwZWRgIGluIEtWTSdzIG1lbW9yeSBtYW5hZ2VtZW50IHRvIHByb3Blcmx5IGhhbmRsZSB3cml0ZSBmYXVsdHMgb24gVk1fUEZOTUFQIFZNQXMgYnkgdHJpZ2dlcmluZyBhIHdyaXRlIHVwZ3JhZGUgdmlhIGBmaXh1cF91c2VyX2ZhdWx0YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIHBhZ2UgZmF1bHQgaGFuZGxpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgZXhlY3V0aW9uIHdoZW4gYWNjZXNzaW5nIG1lbW9yeS1tYXBwZWQgSS9PIG9yIFBGTk1BUCByZWdpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5NDJhNzRjOTdhMzM3ZmY0MGVjMjliZDE2YjZkMzI5NWJmZjIzNTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwMzozNToyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5pbmRleCA0NWU3ODQ0NjJlYzZlLi44MmM1YTZiOTQyNjdmIDEwMDY0NFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xuKysrIGIvdmlydC9rdm0va3ZtX21haW4uY1xuQEAgLTI5NDEsNiArMjk0MSw3IEBAIHN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiB7XG4gXHRzdHJ1Y3QgZm9sbG93X3Bmbm1hcF9hcmdzIGFyZ3MgPSB7IC52bWEgPSB2bWEsIC5hZGRyZXNzID0ga2ZwLVx1MDAzZWh2YSB9O1xuIFx0Ym9vbCB3cml0ZV9mYXVsdCA9IGtmcC1cdTAwM2VmbGFncyBcdTAwMjYgRk9MTF9XUklURTtcbitcdGJvb2wgdW5sb2NrZWQgPSBmYWxzZTtcbiBcdGludCByO1xuIFxuIFx0LypcbkBAIC0yOTU3LDcgKzI5NTgsNiBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdCAqIGdldF91c2VyX3BhZ2VzIGZhaWxzIGZvciBWTV9JTyBhbmQgVk1fUEZOTUFQIHZtYXMgYW5kIGRvZXNcbiBcdFx0ICogbm90IGNhbGwgdGhlIGZhdWx0IGhhbmRsZXIsIHNvIGRvIGl0IGhlcmUuXG4gXHRcdCAqL1xuLVx0XHRib29sIHVubG9ja2VkID0gZmFsc2U7XG4gXHRcdHIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXHUwMDNlbW0sIGtmcC1cdTAwM2VodmEsXG4gXHRcdFx0XHQgICAgICh3cml0ZV9mYXVsdCA/IEZBVUxUX0ZMQUdfV1JJVEUgOiAwKSxcbiBcdFx0XHRcdCAgICAgXHUwMDI2dW5sb2NrZWQpO1xuQEAgLTI5NzIsOCArMjk3MiwyNyBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHR9XG4gXG4gXHRpZiAod3JpdGVfZmF1bHQgXHUwMDI2XHUwMDI2ICFhcmdzLndyaXRhYmxlKSB7XG4tXHRcdCpwX3BmbiA9IEtWTV9QRk5fRVJSX1JPX0ZBVUxUO1xuLVx0XHRnb3RvIG91dDtcbitcdFx0LypcbitcdFx0ICogVk1fUEZOTUFQIGZhdWx0IGhhbmRsZXJzIG1heSBpbnN0YWxsIHJlYWQtb25seSBQVEVzIHZpYVxuK1x0XHQgKiB2bWZfaW5zZXJ0X3BmbigpLCBkZWZlcnJpbmcgdGhlIHdyaXRlIHVwZ3JhZGUgdG8gYSBzZWNvbmRcbitcdFx0ICogZmF1bHQuIFRyaWdnZXIgdGhhdCB1cGdyYWRlIG5vdy5cbitcdFx0ICovXG4rXHRcdGZvbGxvd19wZm5tYXBfZW5kKFx1MDAyNmFyZ3MpO1xuK1x0XHRyID0gZml4dXBfdXNlcl9mYXVsdChjdXJyZW50LVx1MDAzZW1tLCBrZnAtXHUwMDNlaHZhLCBGQVVMVF9GTEFHX1dSSVRFLFxuK1x0XHRcdFx0ICAgICBcdTAwMjZ1bmxvY2tlZCk7XG4rXHRcdGlmICh1bmxvY2tlZClcbitcdFx0XHRyZXR1cm4gLUVBR0FJTjtcbitcdFx0aWYgKHIpXG4rXHRcdFx0cmV0dXJuIHI7XG4rXG4rXHRcdHIgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFx1MDAyNmFyZ3MpO1xuK1x0XHRpZiAocilcbitcdFx0XHRyZXR1cm4gcjtcbitcbitcdFx0aWYgKCFhcmdzLndyaXRhYmxlKSB7XG4rXHRcdFx0KnBfcGZuID0gS1ZNX1BGTl9FUlJfUk9fRkFVTFQ7XG4rXHRcdFx0Z290byBvdXQ7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdCpwX3BmbiA9IGt2bV9yZXNvbHZlX3BmbihrZnAsIE5VTEwsIFx1MDAyNmFyZ3MsIGFyZ3Mud3JpdGFibGUpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDM6MzU6MjkuNjg4MDA4NTIzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI3Njc1MTY2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgZnVuY3Rpb24uIFRoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25kaXRpb24gd2l0aGluIHRoYXQgZnVuY3Rpb246IGB3cml0ZV9mYXVsdCBcdTAwMjZcdTAwMjYgIWFyZ3Mud3JpdGFibGVgLiBJdCBsb29rcyBsaWtlIGl0J3MgaGFuZGxpbmcgYSBwYXJ0aWN1bGFyIGZhdWx0IHNjZW5hcmlvIHdpdGhpbiB0aGUgcmVtYXBwZWQgUEZOIGxvb2t1cC4gVGhlIGNoYW5nZSBpbnZvbHZlcyBjYWxsaW5nIGBmb2xsb3dfcGZubWFwX2VuZGAsIGBmaXh1cF91c2VyX2ZhdWx0YCwgYW5kIGBmb2xsb3dfcGZubWFwX3N0YXJ0YCwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgS1ZNIG1hbmFnZXMgbWVtb3J5LlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY2FsbCBncmFwaC4gTGV0J3Mgc2VlIHdobyBjYWxscyBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAuIEl0J3MgdXNlZCBieSBgaHZhX3RvX3BmbmAsIHdoaWNoIGluIHR1cm4sIGlzIHVzZWQgYnkgYF9fZ2ZuX3RvX3Bmbl9tZW1zbG90YC4gUmlnaHQsIHNvIHdlJ3JlIGRlZmluaXRlbHkgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBjb3JlIHRvIEtWTSdzIG1lbW9yeSBoYW5kbGluZy4gVGhpcyByZWluZm9yY2VzIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBwYXRjaC5cblxuSSBzaG91bGQgYWxzbyBxdWlja2x5IHZlcmlmeSB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24uIEp1c3Qgd2FudCB0byBtYWtlIHN1cmUgdGhlIENPTkZJRyBpcyByaWdodCwgYW5kIGl0J3MgdGhlIG1haW4gQ09ORklHX0tWTS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB3aGV0aGVyIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBpcyBzdGF0aWMuIEFscmlnaHQsIGl0IGlzLCBhbmQgdGhlIGNhbGxlciBpcyBgaHZhX3RvX3BmbmAuIE1ha2VzIHNlbnNlLiBOb3csIGxldCdzIGRvdWJsZS1jaGVjayBgaHZhX3RvX3BmbmAgZm9yIGFueSBpbW1lZGlhdGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMzozNTozNC45NjQ3NjI3NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5MzA3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHZhX3RvX3BmblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9MjgyNz1zdGF0aWMga3ZtX3Bmbl90IGt2bV9yZXNvbHZlX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4NTAtICovXFxudmlydC9rdm0va3ZtX21haW4uYzoyODUxOnN0YXRpYyBib29sIGh2YV90b19wZm5fZmFzdChzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pXFxudmlydC9rdm0va3ZtX21haW4uYy0yODUyLXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4Mi0gKi9cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4ODM6c3RhdGljIGludCBodmFfdG9fcGZuX3Nsb3coc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcGZuKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4NC17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI5Mjg9c3RhdGljIGJvb2wgdm1hX2lzX3ZhbGlkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBib29sIHdyaXRlX2ZhdWx0KVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yOTM4LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjkzOTpzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxudmlydC9rdm0va3ZtX21haW4uYy0yOTQwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwX3BmbilcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwMy1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMDQ6a3ZtX3Bmbl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDA1LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAxNC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMTU6XFx0aWYgKGh2YV90b19wZm5fZmFzdChrZnAsIFxcdTAwMjZwZm4pKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAxNi1cXHRcXHRyZXR1cm4gcGZuO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAxNy1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMTg6XFx0bnBhZ2VzID0gaHZhX3RvX3Bmbl9zbG93KGtmcCwgXFx1MDAyNnBmbik7XFxudmlydC9rdm0va3ZtX21haW4uYy0zMDE5LVxcdGlmIChucGFnZXMgPT0gMSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAzMi1cXHRlbHNlIGlmICh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgKFZNX0lPIHwgVk1fUEZOTUFQKSkge1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAzMzpcXHRcXHRyID0gaHZhX3RvX3Bmbl9yZW1hcHBlZCh2bWEsIGtmcCwgXFx1MDAyNnBmbik7XFxudmlydC9rdm0va3ZtX21haW4uYy0zMDM0LVxcdFxcdGlmIChyID09IC1FQUdBSU4pXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTMwNDk9c3RhdGljIGt2bV9wZm5fdCBrdm1fZm9sbG93X3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA2NC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwNjU6XFx0cmV0dXJuIGh2YV90b19wZm4oa2ZwKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNjYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMzozNTozNS4wMDk3MDEwODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDYwMDQ3ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBgaHZhX3RvX3BmbmAqKlxuXG5Pa2F5LCBzbyBgaHZhX3RvX3BmbmAgaXNuJ3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQgbWVhbnMgaXQncyBwb3RlbnRpYWxseSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgZGVmaW5pbmcgZmlsZS4gTm93LCB3aGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGRlZmluZWQ/IFJpZ2h0LCBpdCdzIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYC4gVGhlIHF1ZXN0aW9uIG5vdyBpczogaXMgaXQgZXhwb3J0ZWQ/IEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBoZWFkZXJzIG9yIGNvZGUgdG8gY29uZmlybSBpZiBpdCdzIGRlY2xhcmVkIHdpdGggYEVYUE9SVF9TWU1CT0xgIG9yIHNpbWlsYXIsIG1ha2luZyBpdCBwYXJ0IG9mIHRoZSBLVk0gQVBJLiBJZiBpdCAqaXMqIGV4cG9ydGVkLCB0aGVuIG15IGluaXRpYWwgYXNzdW1wdGlvbiBhYm91dCBpdHMgd2lkZXIgYXZhaWxhYmlsaXR5IGhvbGRzIHRydWUuIElmIG5vdCwgaXQncyBsaWtlbHkgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZSBvbmx5IHdpdGhpbiB0aGF0IEtWTSBtb2R1bGUuIFRpbWUgdG8gZGlnIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDM6MzU6MzguMDY5NzUxNzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2MjQxMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHZhX3RvX3BmblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0yODI3PXN0YXRpYyBrdm1fcGZuX3Qga3ZtX3Jlc29sdmVfcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg1MC0gKi9cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4NTE6c3RhdGljIGJvb2wgaHZhX3RvX3Bmbl9mYXN0KHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBrdm1fcGZuX3QgKnBmbilcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4NTIte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yODgyLSAqL1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6Mjg4MzpzdGF0aWMgaW50IGh2YV90b19wZm5fc2xvdyhzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pXFxudmlydC9rdm0va3ZtX21haW4uYy0yODg0LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MjkyOD1zdGF0aWMgYm9vbCB2bWFfaXNfdmFsaWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIGJvb2wgd3JpdGVfZmF1bHQpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI5MzgtXFxudmlydC9rdm0va3ZtX21haW4uYzoyOTM5OnN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI5NDAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBrdm1fcGZuX3QgKnBfcGZuKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDAzLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAwNDprdm1fcGZuX3QgaHZhX3RvX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMDUte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDE0LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAxNTpcXHRpZiAoaHZhX3RvX3Bmbl9mYXN0KGtmcCwgXFx1MDAyNnBmbikpXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDE2LVxcdFxcdHJldHVybiBwZm47XFxudmlydC9rdm0va3ZtX21haW4uYy0zMDE3LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAxODpcXHRucGFnZXMgPSBodmFfdG9fcGZuX3Nsb3coa2ZwLCBcXHUwMDI2cGZuKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMTktXFx0aWYgKG5wYWdlcyA9PSAxKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDMyLVxcdGVsc2UgaWYgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiAoVk1fSU8gfCBWTV9QRk5NQVApKSB7XFxudmlydC9rdm0va3ZtX21haW4uYzozMDMzOlxcdFxcdHIgPSBodmFfdG9fcGZuX3JlbWFwcGVkKHZtYSwga2ZwLCBcXHUwMDI2cGZuKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMzQtXFx0XFx0aWYgKHIgPT0gLUVBR0FJTilcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MzA0OT1zdGF0aWMga3ZtX3Bmbl90IGt2bV9mb2xsb3dfcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDY0LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzA2NTpcXHRyZXR1cm4gaHZhX3RvX3BmbihrZnApO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA2Ni19XFxuLS1cXG52aXJ0L2t2bS9rdm1fbW0uaD0yNz1zdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ge1xcbi0tXFxudmlydC9rdm0va3ZtX21tLmgtNTgtXFxudmlydC9rdm0va3ZtX21tLmg6NTk6a3ZtX3Bmbl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApO1xcbnZpcnQva3ZtL2t2bV9tbS5oLTYwLVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYz0xMjc9c3RhdGljIGlubGluZSBib29sIG1tdV9ub3RpZmllcl9yZXRyeV9jYWNoZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgbW11X3NlcSlcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMTU0LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6MTU1OnN0YXRpYyBrdm1fcGZuX3QgaHZhX3RvX3Bmbl9yZXRyeShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMTU2LXtcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjA4LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6MjA5OlxcdFxcdG5ld19wZm4gPSBodmFfdG9fcGZuKFxcdTAwMjZrZnApO1xcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjEwLVxcdFxcdGlmIChpc19lcnJvcl9ub3Nsb3RfcGZuKG5ld19wZm4pKVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYz0yNTY9c3RhdGljIGludCBfX2t2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgdWh2YSlcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzIxLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6MzIyOlxcdC8qIE5vdGU6IHRoZSBvZmZzZXQgbXVzdCBiZSBjb3JyZWN0IGJlZm9yZSBjYWxsaW5nIGh2YV90b19wZm5fcmV0cnkoKSAqL1xcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzIzLVxcdGdwYy1cXHUwMDNldWh2YSArPSBwYWdlX29mZnNldDtcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzI5LVxcdGlmICghZ3BjLVxcdTAwM2V2YWxpZCB8fCBodmFfY2hhbmdlKSB7XFxudmlydC9rdm0vcGZuY2FjaGUuYzozMzA6XFx0XFx0cmV0ID0gaHZhX3RvX3Bmbl9yZXRyeShncGMpO1xcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzMxLVxcdH0gZWxzZSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAzOjM1OjM4LjExMzM4MzU1N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDY3Mzc2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYWdlIEZyYW1lIE51bWJlciAoUEZOKSBUcmFuc2xhdGlvbiBQYXRoKipcblxuT2theSwgc28gYGh2YV90b19wZm5gIGlzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgdmlydHVhbCBtZW1vcnkgdHJhbnNsYXRpb24gcHJvY2Vzcy4gSSBrbm93IHRoYXQgYGt2bV9mb2xsb3dfcGZuYCBhbmQgYGh2YV90b19wZm5fcmV0cnlgIGFyZSBjYWxsaW5nIGl0LCB0aGF0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZC4gTGV0J3Mgc2VlIGhvdyBga3ZtX2ZvbGxvd19wZm5gIGlzIHV0aWxpemVkIC0gdW5kZXJzdGFuZGluZyB3aGVyZSBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHdpbGwgcHJvdmlkZSBtb3JlIGNvbnRleHQuIEtub3dpbmcgaXRzIGNhbGxlcnMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGJyb2FkZXIgcGljdHVyZSBvZiBob3cgdGhpcyBQRk4gdHJhbnNsYXRpb24gc3lzdGVtIGlzIGJlaW5nIHVzZWQsIGVzcGVjaWFsbHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgb3RoZXIgZnVuY3Rpb24sIGFuZCBob3cgdGhvc2UgcGFydHMgaW50ZXJhY3QuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2OTcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMzozNTo0MS4wMjAxMjQzNzZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA4ODQ2MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2ZvbGxvd19wZm5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9MjgyNT1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3JlbGVhc2VfcGFnZV9kaXJ0eSk7XFxudmlydC9rdm0va3ZtX21haW4uYy0yODI2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjgyNzpzdGF0aWMga3ZtX3Bmbl90IGt2bV9yZXNvbHZlX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxudmlydC9rdm0va3ZtX21haW4uYy0yODI4LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZm9sbG93X3Bmbm1hcF9hcmdzICptYXAsIGJvb2wgd3JpdGFibGUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4NTAtICovXFxudmlydC9rdm0va3ZtX21haW4uYzoyODUxOnN0YXRpYyBib29sIGh2YV90b19wZm5fZmFzdChzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pXFxudmlydC9rdm0va3ZtX21haW4uYy0yODUyLXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4Mi0gKi9cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4ODM6c3RhdGljIGludCBodmFfdG9fcGZuX3Nsb3coc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcGZuKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4NC17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI5Mzk9c3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbnZpcnQva3ZtL2t2bV9tYWluLmM6Mjk0MDpcXHRcXHRcXHQgICAgICAgc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcF9wZm4pXFxudmlydC9rdm0va3ZtX21haW4uYy0yOTQxLXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwMy1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMDQ6a3ZtX3Bmbl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDA1LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA0OC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwNDk6c3RhdGljIGt2bV9wZm5fdCBrdm1fZm9sbG93X3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNTAte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0zMDY4PWt2bV9wZm5fdCBfX2t2bV9mYXVsdGluX3Bmbihjb25zdCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90LCBnZm5fdCBnZm4sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNzEte1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzA3MjpcXHRzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ga2ZwID0ge1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA3My1cXHRcXHQuc2xvdCA9IHNsb3QsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwODUtXFxudmlydC9rdm0va3ZtX21haW4uYzozMDg2OlxcdHJldHVybiBrdm1fZm9sbG93X3BmbihcXHUwMDI2a2ZwKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwODctfVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0zMTE0PXN0cnVjdCBwYWdlICpfX2dmbl90b19wYWdlKHN0cnVjdCBrdm0gKmt2bSwgZ2ZuX3QgZ2ZuLCBib29sIHdyaXRlKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zMTE2LVxcdHN0cnVjdCBwYWdlICpyZWZjb3VudGVkX3BhZ2UgPSBOVUxMO1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzExNzpcXHRzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ga2ZwID0ge1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzExOC1cXHRcXHQuc2xvdCA9IGdmbl90b19tZW1zbG90KGt2bSwgZ2ZuKSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzEyMy1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMxMjQ6XFx0KHZvaWQpa3ZtX2ZvbGxvd19wZm4oXFx1MDAyNmtmcCk7XFxudmlydC9rdm0va3ZtX21haW4uYy0zMTI1LVxcdHJldHVybiByZWZjb3VudGVkX3BhZ2U7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTMxMjk9aW50IF9fa3ZtX3ZjcHVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ2ZuX3QgZ2ZuLCBzdHJ1Y3Qga3ZtX2hvc3RfbWFwICptYXAsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxMzEte1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzEzMjpcXHRzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ga2ZwID0ge1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzEzMy1cXHRcXHQuc2xvdCA9IGt2bV92Y3B1X2dmbl90b19tZW1zbG90KHZjcHUsIGdmbiksXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxNDUtXFxudmlydC9rdm0va3ZtX21haW4uYzozMTQ2OlxcdG1hcC1cXHUwMDNlcGZuID0ga3ZtX2ZvbGxvd19wZm4oXFx1MDAyNmtmcCk7XFxudmlydC9rdm0va3ZtX21haW4uYy0zMTQ3LVxcdGlmIChpc19lcnJvcl9ub3Nsb3RfcGZuKG1hcC1cXHUwMDNlcGZuKSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tbS5oLTI2LVxcbnZpcnQva3ZtL2t2bV9tbS5oOjI3OnN0cnVjdCBrdm1fZm9sbG93X3BmbiB7XFxudmlydC9rdm0va3ZtX21tLmgtMjgtXFx0Y29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdDtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tbS5oLTU4LVxcbnZpcnQva3ZtL2t2bV9tbS5oOjU5Omt2bV9wZm5fdCBodmFfdG9fcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwKTtcXG52aXJ0L2t2bS9rdm1fbW0uaC02MC1cXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM9MTU1PXN0YXRpYyBrdm1fcGZuX3QgaHZhX3RvX3Bmbl9yZXRyeShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYy0xNjMtXFxudmlydC9rdm0vcGZuY2FjaGUuYzoxNjQ6XFx0c3RydWN0IGt2bV9mb2xsb3dfcGZuIGtmcCA9IHtcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTE2NS1cXHRcXHQuc2xvdCA9IGdwYy1cXHUwMDNlbWVtc2xvdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDM6MzU6NDEuMDYxMDE0NTYzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5Njk3ODQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIFBhZ2UgRmF1bHQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBgX19rdm1fZmF1bHRpbl9wZm5gIGlzIHRoZSBjb3JlIG9mIEtWTSdzIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIFRoYXQncyB0aGUgZnVuY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYXQgYSBkZWVwIGxldmVsIHRvIHRyYWNlIHRoaXMgbWVtb3J5IGlzc3VlLiBNeSBuZXh0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gZGV0ZXJtaW5lIGFsbCB0aGUgcG90ZW50aWFsIGNhbGwgc2l0ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0cyBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgd29yayBiZWdpbnMgdG8gdHJhY2UgZG93biB0byB0aGUgcm9vdCBjYXVzZS4gSSdsbCBzdGFydCBieSBsb29raW5nIGF0IHdoZXJlIGBfX2t2bV9mYXVsdGluX3BmbmAgaXMgYWN0dWFsbHkgY2FsbGVkIHdpdGhpbiB0aGUgY29kZWJhc2UuIEZpbmRpbmcgdGhvc2UgY2FsbCBzaXRlcyB3aWxsIGdpdmUgbWUgYW4gdW5kZXJzdGFuZGluZyBvZiB3aGVuIGFuZCB3aHkgdGhlIGtlcm5lbCBpcyB0cnlpbmcgdG8gaGFuZGxlIHRoZXNlIHBhZ2UgZmF1bHRzLiBUaGVuIEkgY2FuIHN0YXJ0IHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGhvdyB0byBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDY0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDM6MzU6NDQuMTU3OTk1MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1OTY2NzUxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2t2bV9mYXVsdGluX3BmblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vbW11LmM9MTg0OD1zdGF0aWMgaW50IGt2bV9zMl9mYXVsdF9nZXRfdm1hX2luZm8oY29uc3Qgc3RydWN0IGt2bV9zMl9mYXVsdF9kZXNjICpzMmZkLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTg3OC1cXHQgKiBSZWFkIG1tdV9pbnZhbGlkYXRlX3NlcSBzbyB0aGF0IEtWTSBjYW4gZGV0ZWN0IGlmIHRoZSByZXN1bHRzIG9mXFxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTg3OTpcXHQgKiB2bWFfbG9va3VwKCkgb3IgX19rdm1fZmF1bHRpbl9wZm4oKSBiZWNvbWUgc3RhbGUgcHJpb3IgdG9cXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xODgwLVxcdCAqIGFjcXVpcmluZyBrdm0tXFx1MDAzZW1tdV9sb2NrLlxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9MTkwMz1zdGF0aWMgaW50IGt2bV9zMl9mYXVsdF9waW5fcGZuKGNvbnN0IHN0cnVjdCBrdm1fczJfZmF1bHRfZGVzYyAqczJmZCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTE5MTEtXFxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTkxMjpcXHRzMnZpLVxcdTAwM2VwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihzMmZkLVxcdTAwM2VtZW1zbG90LCBnZXRfY2Fub25pY2FsX2dmbihzMmZkLCBzMnZpKSxcXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xOTEzLVxcdFxcdFxcdFxcdCAgICAgIGt2bV9pc193cml0ZV9mYXVsdChzMmZkLVxcdTAwM2V2Y3B1KSA/IEZPTExfV1JJVEUgOiAwLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTk0OS1cXHRcXHRcXHQgKiBsYXJnZXN0IHF1YW50aXR5IHdlIGNhbiBtYXAuICBJZiBpbnN0ZWFkIGl0IHdhcyBtYXBwZWRcXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoxOTUwOlxcdFxcdFxcdCAqIHZpYSBfX2t2bV9mYXVsdGluX3BmbigpLCB2bWFfcGFnZXNpemUgaXMgc2V0IHRvIFBBR0VfU0laRVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTE5NTEtXFx0XFx0XFx0ICogYW5kIG11c3Qgbm90IGJlIHVwZ3JhZGVkLlxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM9MTM1OD1zdGF0aWMgaW50IGt2bV90cmFuc2xhdGVfdm5jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgKmlzX2dtZW0pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xNDExLVxcdGlmICghKmlzX2dtZW0pIHtcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxNDEyOlxcdFxcdHBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKG1lbXNsb3QsIGdmbiwgd3JpdGVfZmF1bHQgPyBGT0xMX1dSSVRFIDogMCxcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xNDEzLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ3cml0YWJsZSwgXFx1MDAyNnBhZ2UpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRfbW11X2h2LmM9NTA2PWludCBrdm1wcGNfYm9vazNzX2h2X3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRfbW11X2h2LmMtNjA1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9odi5jOjYwNjpcXHRwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihtZW1zbG90LCBnZm4sIHdyaXRpbmcgPyBGT0xMX1dSSVRFIDogMCxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfaHYuYy02MDctXFx0XFx0XFx0XFx0XFx1MDAyNndyaXRlX29rLCBcXHUwMDI2cGFnZSk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfcmFkaXguYz04MjE9aW50IGt2bXBwY19ib29rM3NfaW5zdGFudGlhdGVfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfcmFkaXguYy04NDItXFx0aHZhID0gZ2ZuX3RvX2h2YV9tZW1zbG90KG1lbXNsb3QsIGdmbik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRfbW11X3JhZGl4LmM6ODQzOlxcdHBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKG1lbXNsb3QsIGdmbiwgd3JpdGluZyA/IEZPTExfV1JJVEUgOiAwLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9yYWRpeC5jLTg0NC1cXHRcXHRcXHRcXHRcXHUwMDI2dXBncmFkZV93cml0ZSwgXFx1MDAyNnBhZ2UpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9lNTAwX21tdV9ob3N0LmM9MzIwPXN0YXRpYyBpbmxpbmUgaW50IGt2bXBwY19lNTAwX3NoYWRvd19tYXAoc3RydWN0IGt2bXBwY192Y3B1X2U1MDAgKnZjcHVfZTUwMCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vZTUwMF9tbXVfaG9zdC5jLTM1NC1cXG5hcmNoL3Bvd2VycGMva3ZtL2U1MDBfbW11X2hvc3QuYzozNTU6XFx0cGZuID0gX19rdm1fZmF1bHRpbl9wZm4oc2xvdCwgZ2ZuLCBGT0xMX1dSSVRFLCBcXHUwMDI2d3JpdGFibGUsIFxcdTAwMjZwYWdlKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2U1MDBfbW11X2hvc3QuYy0zNTYtXFx0aWYgKGlzX2Vycm9yX25vc2xvdF9wZm4ocGZuKSkge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM9NTM2PWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy01OTktXFx0ICogUmVhZCBtbXVfaW52YWxpZGF0ZV9zZXEgc28gdGhhdCBLVk0gY2FuIGRldGVjdCBpZiB0aGUgcmVzdWx0cyBvZlxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjYwMDpcXHQgKiB2bWFfbG9va3VwKCkgb3IgX19rdm1fZmF1bHRpbl9wZm4oKSBiZWNvbWUgc3RhbGUgcHJpb3IgdG8gYWNxdWlyaW5nXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNjAxLVxcdCAqIGt2bS1cXHUwMDNlbW11X2xvY2suXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy02MTUtXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NjE2OlxcdGhmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKG1lbXNsb3QsIGdmbiwgaXNfd3JpdGUgPyBGT0xMX1dSSVRFIDogMCxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy02MTctXFx0XFx0XFx0XFx0XFx1MDAyNndyaXRhYmxlLCBcXHUwMDI2cGFnZSk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYz0zMz1pbnQga3ZtX3MzOTBfZmF1bHRpbl9nZm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBndWVzdF9mYXVsdCAqZilcXG4tLVxcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTczLVxcdFxcdFxcdHNsb3QgPSBnZm5fdG9fbWVtc2xvdChrdm0sIGYtXFx1MDAzZWdmbik7XFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmM6NzQ6XFx0XFx0Zi1cXHUwMDNlcGZuID0gX19rdm1fZmF1bHRpbl9wZm4oc2xvdCwgZi1cXHUwMDNlZ2ZuLCBmb2xsLCBcXHUwMDI2Zi1cXHUwMDNld3JpdGFibGUsIFxcdTAwMjZmLVxcdTAwM2VwYWdlKTtcXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy03NS1cXG4tLVxcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTg3LVxcdFxcdFxcdGZvbGwgXFx1MDAyNj0gfkZPTExfTk9XQUlUO1xcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jOjg4OlxcdFxcdFxcdGYtXFx1MDAzZXBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKHNsb3QsIGYtXFx1MDAzZWdmbiwgZm9sbCwgXFx1MDAyNmYtXFx1MDAzZXdyaXRhYmxlLCBcXHUwMDI2Zi1cXHUwMDNlcGFnZSk7XFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmMtODktXFx0XFx0fVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmM9MTI5PWludCBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBndWVzdF9mYXVsdCAqZiwgZ2ZuX3QgZ2ZuLCBib29sIHcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy0xMzUtXFx0Zi1cXHUwMDNlZ2ZuID0gZ2ZuO1xcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jOjEzNjpcXHRmLVxcdTAwM2VwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihzbG90LCBnZm4sIGZvbGwsIFxcdTAwMjZmLVxcdTAwM2V3cml0YWJsZSwgXFx1MDAyNmYtXFx1MDAzZXBhZ2UpO1xcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTEzNy1cXHRpZiAoaXNfbm9zbG90X3BmbihmLVxcdTAwM2VwZm4pKVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYz00NjU2PXN0YXRpYyBpbnQgX19rdm1fbW11X2ZhdWx0aW5fcGZuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNDY2NC1cXHRmb2xsIHw9IEZPTExfTk9XQUlUO1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NDY2NTpcXHRmYXVsdC1cXHUwMDNlcGZuID0gX19rdm1fZmF1bHRpbl9wZm4oZmF1bHQtXFx1MDAzZXNsb3QsIGZhdWx0LVxcdTAwM2VnZm4sIGZvbGwsXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy00NjY2LVxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2ZmF1bHQtXFx1MDAzZW1hcF93cml0YWJsZSwgXFx1MDAyNmZhdWx0LVxcdTAwM2VyZWZjb3VudGVkX3BhZ2UpO1xcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy00Njk0LVxcdGZvbGwgXFx1MDAyNj0gfkZPTExfTk9XQUlUO1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NDY5NTpcXHRmYXVsdC1cXHUwMDNlcGZuID0gX19rdm1fZmF1bHRpbl9wZm4oZmF1bHQtXFx1MDAzZXNsb3QsIGZhdWx0LVxcdTAwM2VnZm4sIGZvbGwsXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy00Njk2LVxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2ZmF1bHQtXFx1MDAzZW1hcF93cml0YWJsZSwgXFx1MDAyNmZhdWx0LVxcdTAwM2VyZWZjb3VudGVkX3BhZ2UpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02OTQ2PXZvaWQgdm14X3NldF9hcGljX2FjY2Vzc19wYWdlX2FkZHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02OTg3LVxcdCAqL1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Njk4ODpcXHRwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihzbG90LCBnZm4sIEZPTExfV1JJVEUsIFxcdTAwMjZ3cml0YWJsZSwgXFx1MDAyNnJlZmNvdW50ZWRfcGFnZSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02OTg5LVxcdGlmIChpc19lcnJvcl9ub3Nsb3RfcGZuKHBmbikpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTI4NT1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTMxMC1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTMxMTprdm1fcGZuX3QgX19rdm1fZmF1bHRpbl9wZm4oY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLFxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMzEyLVxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgZm9sbCwgYm9vbCAqd3JpdGFibGUsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTMxNT1zdGF0aWMgaW5saW5lIGt2bV9wZm5fdCBrdm1fZmF1bHRpbl9wZm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBnZm5fdCBnZm4sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTMxOC17XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjEzMTk6XFx0cmV0dXJuIF9fa3ZtX2ZhdWx0aW5fcGZuKGt2bV92Y3B1X2dmbl90b19tZW1zbG90KHZjcHUsIGdmbiksIGdmbixcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTMyMC1cXHRcXHRcXHRcXHQgd3JpdGUgPyBGT0xMX1dSSVRFIDogMCwgd3JpdGFibGUsIHJlZmNvdW50ZWRfcGFnZSk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTMwNDk9c3RhdGljIGt2bV9wZm5fdCBrdm1fZm9sbG93X3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA2Ny1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwNjg6a3ZtX3Bmbl90IF9fa3ZtX2ZhdWx0aW5fcGZuKGNvbnN0IHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsIGdmbl90IGdmbixcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNjktXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBmb2xsLCBib29sICp3cml0YWJsZSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA4Ny19XFxudmlydC9rdm0va3ZtX21haW4uYzozMDg4OkVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChfX2t2bV9mYXVsdGluX3Bmbik7XFxudmlydC9rdm0va3ZtX21haW4uYy0zMDg5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMzozNTo0Ni4xMTc2Njc3ODdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE5MDg3NTYyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gUGFnZSBGYXVsdCBIYW5kbGluZyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGNoYW5nZSBzcGVjaWZpY2FsbHkgd2l0aGluIGBodmFfdG9fcGZuX3JlbWFwcGVkYC4gVGhpcyBmdW5jdGlvbiBraWNrcyBpbiB3aGVuIGEgYHZtYWAgaGFzIHRoZSBgVk1fSU9gIG9yIGBWTV9QRk5NQVBgIGZsYWcgc2V0LCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gaG93IEtWTSBoYW5kbGVzIHBhZ2UgZmF1bHRzIGluIHZpcnR1YWwgbWFjaGluZXMgdXNpbmcgYFZNX1BGTk1BUGAgbWFwcGluZ3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBzcGVjaWZpYyBwaWVjZSBvZiB0aGUgS1ZNIHBhZ2UgZmF1bHQgcHV6emxlLiBJdCBsb29rcyBsaWtlIGl0J3MgcmVhY2hhYmxlIHZpYSB0aGUgc3RhbmRhcmQgS1ZNIHBhZ2UgZmF1bHQgaGFuZGxpbmcgcHJvY2Vzcy5cblxuVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBoYW5kbGluZyBhIHdyaXRlIGZhdWx0IHNjZW5hcmlvIG9uIGEgYFZNX1BGTk1BUGAgdm1hLCBwYXJ0aWN1bGFybHkgd2hlbiB0aGUgYGFyZ3Mud3JpdGFibGVgIGZsYWcgaXNuJ3Qgc2V0LiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQgdHJpZ2dlcnMgYSBcIndyaXRlIHVwZ3JhZGVcIiB0aHJvdWdoIGBmaXh1cF91c2VyX2ZhdWx0YC5cblxuSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBmaXh1cF91c2VyX2ZhdWx0YCBhbmQgYGZvbGxvd19wZm5tYXBfc3RhcnRgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLCBidXQgYmFzZWQgb24gdGhpcyBxdWljayBvdmVydmlldywgdGhpcyBjZXJ0YWlubHkgc2VlbXMgZnVuY3Rpb25hbCBhbmQgc29tZXRoaW5nIEknZCB3YW50IHRvIHN1YmplY3QgdG8gZnV6emluZy5cblxuTXkgZm9jdXMgc3ltYm9scyBhcmUgZ29pbmcgdG8gYmUgYGh2YV90b19wZm5gIGFuZCBgX19rdm1fZmF1bHRpbl9wZm5gLiBBbHRob3VnaCBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaXMgdGhlIGRpcmVjdCBjaGFuZ2UsIGl0J3Mgc3RhdGljLiBgaHZhX3RvX3BmbmAsIHdoaWxlIG5vdCBzdGF0aWMsIHdpbGwgYWxsb3cgbWUgdG8gdHJhY2sgdXNhZ2Ugb2YgdGhpcyBmdW5jdGlvbmFsaXR5IGFjcm9zcyB0aGUgY29kZS4gQW5kIEknbGwgbmVlZCB0byBrbm93IHdoZXJlIGl0IGlzIGJlaW5nIHVzZWQuIEFuZCAgYF9fa3ZtX2ZhdWx0aW5fcGZuYCBpcyBleHBvcnRlZCBhbmQgdXNlZCB3aGVuIGZhdWx0aW5nIGluIHRoZSBwYWdlLCBzbyB0aGF0J3MgYSBrZXkgZnVuY3Rpb24gdG8gZm9sbG93LiBcblxuSSd2ZSB2ZXJpZmllZCB0aGF0IGBodmFfdG9fcGZuYCBpcyBkZWNsYXJlZCBpbiBgdmlydC9rdm0va3ZtX21tLmhgIGFuZCBpcyBub24tc3RhdGljLiBgX19rdm1fZmF1bHRpbl9wZm5gIGlzIGFsc28gZXhwb3J0ZWQuXG5cblRoZSBjb25maWd1cmF0aW9uIHByZXJlcXVpc2l0ZSBpcyBgQ09ORklHX0tWTWAsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIGNoZWNrZWQsIGFuZCBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaXMgaW5kZWVkIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCB3aGVyZSBJIGV4cGVjdGVkIGl0IHRvIGJlLiBUaGlzIGZpbGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0tWTWAgaXMgZW5hYmxlZCwgd2hpY2ggZml0cyB0aGUgcGF0dGVybi4gU28sIG5vdGhpbmcgdW5leHBlY3RlZCBjb25maWd1cmF0aW9uLXdpc2UuIEkgdGhpbmsgSSBoYXZlIGVub3VnaCBoZXJlIHRvIHN0YXJ0IGRpZ2dpbmcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjMzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAzOjM1OjUzLjMwODU0ODA3OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4OTA1NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX21haW4ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0vTWFrZWZpbGUua3ZtPTY9S1ZNID89IC4uLy4uLy4uL3ZpcnQva3ZtXFxudmlydC9rdm0vTWFrZWZpbGUua3ZtLTctXFxudmlydC9rdm0vTWFrZWZpbGUua3ZtOjg6a3ZtLXkgOj0gJChLVk0pL2t2bV9tYWluLm8gJChLVk0pL2V2ZW50ZmQubyAkKEtWTSkvYmluYXJ5X3N0YXRzLm9cXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm0tOS1rdm0tJChDT05GSUdfS1ZNX1ZGSU8pICs9ICQoS1ZNKS92ZmlvLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDM6MzU6NTMuMzU2NDUxMTI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNzM3MTUyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEtWTSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgb25seSByZXF1aXJpbmcgYENPTkZJR19LVk1gIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHVzaW5nIHRoZSByaWdodCBmb2N1cyBzeW1ib2xzIHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhpcy4gTGV0J3MgZG91YmxlLWNoZWNrIG15IGxpc3QuIGBfX2t2bV9mYXVsdGluX3BmbmAgaXMgYSBzdHJvbmcgY2FuZGlkYXRlLCBhcyBpcyBgaHZhX3RvX3BmbmAuIEhvbGQgb24sIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBpcyBzdGF0aWMsIHNvIEkgY2FuJ3QgdXNlIGl0IGRpcmVjdGx5IGFzIGEgZm9jdXMgc3ltYm9sLCBldmVuIHRob3VnaCBpdCdzIGxpa2VseSByZWxldmFudC4gR29vZCBjYXRjaC4gTG9va3MgbGlrZSBJIHdpbGwgdXNlIGBodmFfdG9fcGZuYCBpbnN0ZWFkLCBhcyBpdCBpcyBub24tc3RhdGljLlxuXG5Ob3csIGxldCdzIHRyYWNlIHRoZSBjYWxsIGNoYWluIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGludGVyZXN0aW5nIGZ1bmN0aW9ucy4gQWxyaWdodCwgYGh2YV90b19wZm5fcmVtYXBwZWRgICppcyogY2FsbGVkIGZyb20gYGh2YV90b19wZm5gLCBzbyB0aGF0J3MgZ29vZCB0byBrZWVwIGluIG1pbmQuIGBodmFfdG9fcGZuYCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGBrdm1fZm9sbG93X3BmbmAgYW5kIGBodmFfdG9fcGZuX3JldHJ5YC4gSG1tbSwgYGt2bV9mb2xsb3dfcGZuYCBpcyBzdGF0aWMuIEFuZCBzbyBpcyBgaHZhX3RvX3Bmbl9yZXRyeWAuIEludGVyZXN0aW5nLi4uIGBfX2t2bV9mYXVsdGluX3BmbmAgKmFsc28qIGNhbGxzIGBrdm1fZm9sbG93X3BmbmAuIEFuZCwgaXQgbG9va3MgbGlrZSBgX19nZm5fdG9fcGFnZWAgYWxzbyBjYWxscyBga3ZtX2ZvbGxvd19wZm5gLCBhcyBkb2VzIGBfX2t2bV92Y3B1X21hcGAuXG5cbk9rYXksIHRha2luZyBhbGwgdGhhdCBpbnRvIGFjY291bnQsIGBodmFfdG9fcGZuYCwgYF9fa3ZtX2ZhdWx0aW5fcGZuYCwgYF9fZ2ZuX3RvX3BhZ2VgLCBhbmQgYF9fa3ZtX3ZjcHVfbWFwYCBhcmUgdGhlIG1vc3QgcmVsZXZhbnQgY2FuZGlkYXRlcy4gSSdtIGdvaW5nIHRvIGZvY3VzIG9uIGBodmFfdG9fcGZuYCBhbmQgYF9fa3ZtX2ZhdWx0aW5fcGZuYCBmb3Igbm93LlxuXG5UaGUgcGF0Y2gncyBpbXBhY3QgaXMgc2lnbmlmaWNhbnQuIEl0J3MgbW9kaWZ5aW5nIGBodmFfdG9fcGZuX3JlbWFwcGVkYCB3aXRoaW4gS1ZNJ3MgbWVtb3J5IG1hbmFnZW1lbnQgdG8gaGFuZGxlIHdyaXRlIGZhdWx0cyBvbiBWTV9QRk5NQVAgVk1Bcy4gRXNzZW50aWFsbHksIHRoaXMgY2hhbmdlIGZvcmNlcyBhIHdyaXRlIHVwZ3JhZGUgdmlhIGBmaXh1cF91c2VyX2ZhdWx0YC4gVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIEtWTSBwYWdlIGZhdWx0IGhhbmRsaW5nLCB3aGljaCBpbXBhY3RzIGd1ZXN0IGV4ZWN1dGlvbiBkdXJpbmcgYWNjZXNzIHRvIG1lbW9yeS1tYXBwZWQgSS9PIG9yIFBGTk1BUCByZWdpb25zLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyBhbmQgd2lsbCBiZSBhZGRlZCB0byB0aGUgbGlzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3MjYsIk91dHB1dFRva2VucyI6MTM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAzOjM2OjAwLjczMDE2ODcxNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MjA3NTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJodmFfdG9fcGZuXCIsXG4gICAgXCJfX2t2bV9mYXVsdGluX3BmblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBpbiBLVk0ncyBtZW1vcnkgbWFuYWdlbWVudCB0byBwcm9wZXJseSBoYW5kbGUgd3JpdGUgZmF1bHRzIG9uIFZNX1BGTk1BUCBWTUFzIGJ5IHRyaWdnZXJpbmcgYSB3cml0ZSB1cGdyYWRlIHZpYSBgZml4dXBfdXNlcl9mYXVsdGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBwYWdlIGZhdWx0IGhhbmRsaW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZHVyaW5nIGd1ZXN0IGV4ZWN1dGlvbiB3aGVuIGFjY2Vzc2luZyBtZW1vcnktbWFwcGVkIEkvTyBvciBQRk5NQVAgcmVnaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJodmFfdG9fcGZuXCIsXG4gICAgXCJfX2t2bV9mYXVsdGluX3BmblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBpbiBLVk0ncyBtZW1vcnkgbWFuYWdlbWVudCB0byBwcm9wZXJseSBoYW5kbGUgd3JpdGUgZmF1bHRzIG9uIFZNX1BGTk1BUCBWTUFzIGJ5IHRyaWdnZXJpbmcgYSB3cml0ZSB1cGdyYWRlIHZpYSBgZml4dXBfdXNlcl9mYXVsdGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBwYWdlIGZhdWx0IGhhbmRsaW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZHVyaW5nIGd1ZXN0IGV4ZWN1dGlvbiB3aGVuIGFjY2Vzc2luZyBtZW1vcnktbWFwcGVkIEkvTyBvciBQRk5NQVAgcmVnaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowh77wm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 03:14:17 +0000 UTC FinishedAt: 2026-08-01 03:36:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "28b997c5-b016-4de4-a0fe-8e4094905298" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "hva_to_pfn", "__kvm_faultin_pfn" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAzOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2h2YV90b19wZm4mIzM0OywKICAgICYjMzQ7X19rdm1fZmF1bHRpbl9wZm4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGh2YV90b19wZm5fcmVtYXBwZWRgIGluIEtWTSYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudCB0byBwcm9wZXJseSBoYW5kbGUgd3JpdGUgZmF1bHRzIG9uIFZNX1BGTk1BUCBWTUFzIGJ5IHRyaWdnZXJpbmcgYSB3cml0ZSB1cGdyYWRlIHZpYSBgZml4dXBfdXNlcl9mYXVsdGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBwYWdlIGZhdWx0IGhhbmRsaW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZHVyaW5nIGd1ZXN0IGV4ZWN1dGlvbiB3aGVuIGFjY2Vzc2luZyBtZW1vcnktbWFwcGVkIEkvTyBvciBQRk5NQVAgcmVnaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDk0MmE3NGM5N2EzMzdmZjQwZWMyOWJkMTZiNmQzMjk1YmZmMjM1NjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDAzOjM1OjI4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5pbmRleCA0NWU3ODQ0NjJlYzZlLi44MmM1YTZiOTQyNjdmIDEwMDY0NFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdmlydC9rdm0va3ZtX21haW4uY1xuQEAgLTI5NDEsNiAmIzQzOzI5NDEsNyBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4ge1xuIFx0c3RydWN0IGZvbGxvd19wZm5tYXBfYXJncyBhcmdzID0geyAudm1hID0gdm1hLCAuYWRkcmVzcyA9IGtmcC1cdTAwM2VodmEgfTtcbiBcdGJvb2wgd3JpdGVfZmF1bHQgPSBrZnAtXHUwMDNlZmxhZ3MgXHUwMDI2IEZPTExfV1JJVEU7XG4mIzQzO1x0Ym9vbCB1bmxvY2tlZCA9IGZhbHNlO1xuIFx0aW50IHI7XG4gXG4gXHQvKlxuQEAgLTI5NTcsNyAmIzQzOzI5NTgsNiBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdCAqIGdldF91c2VyX3BhZ2VzIGZhaWxzIGZvciBWTV9JTyBhbmQgVk1fUEZOTUFQIHZtYXMgYW5kIGRvZXNcbiBcdFx0ICogbm90IGNhbGwgdGhlIGZhdWx0IGhhbmRsZXIsIHNvIGRvIGl0IGhlcmUuXG4gXHRcdCAqL1xuLVx0XHRib29sIHVubG9ja2VkID0gZmFsc2U7XG4gXHRcdHIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXHUwMDNlbW0sIGtmcC1cdTAwM2VodmEsXG4gXHRcdFx0XHQgICAgICh3cml0ZV9mYXVsdCA/IEZBVUxUX0ZMQUdfV1JJVEUgOiAwKSxcbiBcdFx0XHRcdCAgICAgXHUwMDI2dW5sb2NrZWQpO1xuQEAgLTI5NzIsOCAmIzQzOzI5NzIsMjcgQEAgc3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuIFx0fVxuIFxuIFx0aWYgKHdyaXRlX2ZhdWx0IFx1MDAyNlx1MDAyNiAhYXJncy53cml0YWJsZSkge1xuLVx0XHQqcF9wZm4gPSBLVk1fUEZOX0VSUl9ST19GQVVMVDtcbi1cdFx0Z290byBvdXQ7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogVk1fUEZOTUFQIGZhdWx0IGhhbmRsZXJzIG1heSBpbnN0YWxsIHJlYWQtb25seSBQVEVzIHZpYVxuJiM0MztcdFx0ICogdm1mX2luc2VydF9wZm4oKSwgZGVmZXJyaW5nIHRoZSB3cml0ZSB1cGdyYWRlIHRvIGEgc2Vjb25kXG4mIzQzO1x0XHQgKiBmYXVsdC4gVHJpZ2dlciB0aGF0IHVwZ3JhZGUgbm93LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRmb2xsb3dfcGZubWFwX2VuZChcdTAwMjZhcmdzKTtcbiYjNDM7XHRcdHIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXHUwMDNlbW0sIGtmcC1cdTAwM2VodmEsIEZBVUxUX0ZMQUdfV1JJVEUsXG4mIzQzO1x0XHRcdFx0ICAgICBcdTAwMjZ1bmxvY2tlZCk7XG4mIzQzO1x0XHRpZiAodW5sb2NrZWQpXG4mIzQzO1x0XHRcdHJldHVybiAtRUFHQUlOO1xuJiM0MztcdFx0aWYgKHIpXG4mIzQzO1x0XHRcdHJldHVybiByO1xuJiM0MztcbiYjNDM7XHRcdHIgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFx1MDAyNmFyZ3MpO1xuJiM0MztcdFx0aWYgKHIpXG4mIzQzO1x0XHRcdHJldHVybiByO1xuJiM0MztcbiYjNDM7XHRcdGlmICghYXJncy53cml0YWJsZSkge1xuJiM0MztcdFx0XHQqcF9wZm4gPSBLVk1fUEZOX0VSUl9ST19GQVVMVDtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHQqcF9wZm4gPSBrdm1fcmVzb2x2ZV9wZm4oa2ZwLCBOVUxMLCBcdTAwMjZhcmdzLCBhcmdzLndyaXRhYmxlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHZhX3RvX3BmbiYjMzQ7LAogICAgJiMzNDtfX2t2bV9mYXVsdGluX3BmbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaW4gS1ZNJiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50IHRvIHByb3Blcmx5IGhhbmRsZSB3cml0ZSBmYXVsdHMgb24gVk1fUEZOTUFQIFZNQXMgYnkgdHJpZ2dlcmluZyBhIHdyaXRlIHVwZ3JhZGUgdmlhIGBmaXh1cF91c2VyX2ZhdWx0YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIHBhZ2UgZmF1bHQgaGFuZGxpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgZXhlY3V0aW9uIHdoZW4gYWNjZXNzaW5nIG1lbW9yeS1tYXBwZWQgSS9PIG9yIFBGTk1BUCByZWdpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTQyYTc0Yzk3YTMzN2ZmNDBlYzI5YmQxNmI2ZDMyOTViZmYyMzU2MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMDM6MzU6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1fbWFpbi5jIGIvdmlydC9rdm0va3ZtX21haW4uYwppbmRleCA0NWU3ODQ0NjJlYzZlLi44MmM1YTZiOTQyNjdmIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKQEAgLTI5NDEsNiAmIzQzOzI5NDEsNyBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiB7CiAJc3RydWN0IGZvbGxvd19wZm5tYXBfYXJncyBhcmdzID0geyAudm1hID0gdm1hLCAuYWRkcmVzcyA9IGtmcC0mZ3Q7aHZhIH07CiAJYm9vbCB3cml0ZV9mYXVsdCA9IGtmcC0mZ3Q7ZmxhZ3MgJmFtcDsgRk9MTF9XUklURTsKJiM0MzsJYm9vbCB1bmxvY2tlZCA9IGZhbHNlOwogCWludCByOwogCiAJLyoKQEAgLTI5NTcsNyAmIzQzOzI5NTgsNiBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCSAqIGdldF91c2VyX3BhZ2VzIGZhaWxzIGZvciBWTV9JTyBhbmQgVk1fUEZOTUFQIHZtYXMgYW5kIGRvZXMKIAkJICogbm90IGNhbGwgdGhlIGZhdWx0IGhhbmRsZXIsIHNvIGRvIGl0IGhlcmUuCiAJCSAqLwotCQlib29sIHVubG9ja2VkID0gZmFsc2U7CiAJCXIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtJmd0O21tLCBrZnAtJmd0O2h2YSwKIAkJCQkgICAgICh3cml0ZV9mYXVsdCA/IEZBVUxUX0ZMQUdfV1JJVEUgOiAwKSwKIAkJCQkgICAgICZhbXA7dW5sb2NrZWQpOwpAQCAtMjk3Miw4ICYjNDM7Mjk3MiwyNyBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJfQogCiAJaWYgKHdyaXRlX2ZhdWx0ICZhbXA7JmFtcDsgIWFyZ3Mud3JpdGFibGUpIHsKLQkJKnBfcGZuID0gS1ZNX1BGTl9FUlJfUk9fRkFVTFQ7Ci0JCWdvdG8gb3V0OwomIzQzOwkJLyoKJiM0MzsJCSAqIFZNX1BGTk1BUCBmYXVsdCBoYW5kbGVycyBtYXkgaW5zdGFsbCByZWFkLW9ubHkgUFRFcyB2aWEKJiM0MzsJCSAqIHZtZl9pbnNlcnRfcGZuKCksIGRlZmVycmluZyB0aGUgd3JpdGUgdXBncmFkZSB0byBhIHNlY29uZAomIzQzOwkJICogZmF1bHQuIFRyaWdnZXIgdGhhdCB1cGdyYWRlIG5vdy4KJiM0MzsJCSAqLwomIzQzOwkJZm9sbG93X3Bmbm1hcF9lbmQoJmFtcDthcmdzKTsKJiM0MzsJCXIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtJmd0O21tLCBrZnAtJmd0O2h2YSwgRkFVTFRfRkxBR19XUklURSwKJiM0MzsJCQkJICAgICAmYW1wO3VubG9ja2VkKTsKJiM0MzsJCWlmICh1bmxvY2tlZCkKJiM0MzsJCQlyZXR1cm4gLUVBR0FJTjsKJiM0MzsJCWlmIChyKQomIzQzOwkJCXJldHVybiByOwomIzQzOwomIzQzOwkJciA9IGZvbGxvd19wZm5tYXBfc3RhcnQoJmFtcDthcmdzKTsKJiM0MzsJCWlmIChyKQomIzQzOwkJCXJldHVybiByOwomIzQzOwomIzQzOwkJaWYgKCFhcmdzLndyaXRhYmxlKSB7CiYjNDM7CQkJKnBfcGZuID0gS1ZNX1BGTl9FUlJfUk9fRkFVTFQ7CiYjNDM7CQkJZ290byBvdXQ7CiYjNDM7CQl9CiAJfQogCiAJKnBfcGZuID0ga3ZtX3Jlc29sdmVfcGZuKGtmcCwgTlVMTCwgJmFtcDthcmdzLCBhcmdzLndyaXRhYmxlKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDM6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyMgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYHZpcnQva3ZtL2t2bV9tYWluLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBmdW5jdGlvbi4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGNvbmRpdGlvbiB3aXRoaW4gdGhhdCBmdW5jdGlvbjogYHdyaXRlX2ZhdWx0ICZhbXA7JmFtcDsgIWFyZ3Mud3JpdGFibGVgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGhhbmRsaW5nIGEgcGFydGljdWxhciBmYXVsdCBzY2VuYXJpbyB3aXRoaW4gdGhlIHJlbWFwcGVkIFBGTiBsb29rdXAuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgY2FsbGluZyBgZm9sbG93X3Bmbm1hcF9lbmRgLCBgZml4dXBfdXNlcl9mYXVsdGAsIGFuZCBgZm9sbG93X3Bmbm1hcF9zdGFydGAsIHdoaWNoIHN0cm9uZ2x5IHN1Z2dlc3RzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IEtWTSBtYW5hZ2VzIG1lbW9yeS4KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjYWxsIGdyYXBoLiBMZXQmIzM5O3Mgc2VlIHdobyBjYWxscyBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAuIEl0JiMzOTtzIHVzZWQgYnkgYGh2YV90b19wZm5gLCB3aGljaCBpbiB0dXJuLCBpcyB1c2VkIGJ5IGBfX2dmbl90b19wZm5fbWVtc2xvdGAuIFJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVmaW5pdGVseSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIGNvcmUgdG8gS1ZNJiMzOTtzIG1lbW9yeSBoYW5kbGluZy4gVGhpcyByZWluZm9yY2VzIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBwYXRjaC4KCkkgc2hvdWxkIGFsc28gcXVpY2tseSB2ZXJpZnkgdGhlIEtWTSBjb25maWd1cmF0aW9uLiBKdXN0IHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBDT05GSUcgaXMgcmlnaHQsIGFuZCBpdCYjMzk7cyB0aGUgbWFpbiBDT05GSUdfS1ZNLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgd2hldGhlciBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaXMgc3RhdGljLiBBbHJpZ2h0LCBpdCBpcywgYW5kIHRoZSBjYWxsZXIgaXMgYGh2YV90b19wZm5gLiBNYWtlcyBzZW5zZS4gTm93LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIGBodmFfdG9fcGZuYCBmb3IgYW55IGltbWVkaWF0ZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtodmFfdG9fcGZuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTI4Mjc9c3RhdGljIGt2bV9wZm5fdCBrdm1fcmVzb2x2ZV9wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg1MC0gKi9cbnZpcnQva3ZtL2t2bV9tYWluLmM6Mjg1MTpzdGF0aWMgYm9vbCBodmFfdG9fcGZuX2Zhc3Qoc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcGZuKVxudmlydC9rdm0va3ZtX21haW4uYy0yODUyLXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4ODItICovXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4ODM6c3RhdGljIGludCBodmFfdG9fcGZuX3Nsb3coc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcGZuKVxudmlydC9rdm0va3ZtX21haW4uYy0yODg0LXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI5Mjg9c3RhdGljIGJvb2wgdm1hX2lzX3ZhbGlkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBib29sIHdyaXRlX2ZhdWx0KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjkzOC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjkzOTpzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI5NDAtXHRcdFx0ICAgICAgIHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBrdm1fcGZuX3QgKnBfcGZuKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwMy1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAwNDprdm1fcGZuX3QgaHZhX3RvX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwNS17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDE0LVxudmlydC9rdm0va3ZtX21haW4uYzozMDE1Olx0aWYgKGh2YV90b19wZm5fZmFzdChrZnAsIFx1MDAyNnBmbikpXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMTYtXHRcdHJldHVybiBwZm47XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMTctXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMTg6XHRucGFnZXMgPSBodmFfdG9fcGZuX3Nsb3coa2ZwLCBcdTAwMjZwZm4pO1xudmlydC9rdm0va3ZtX21haW4uYy0zMDE5LVx0aWYgKG5wYWdlcyA9PSAxKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAzMi1cdGVsc2UgaWYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX0lPIHwgVk1fUEZOTUFQKSkge1xudmlydC9rdm0va3ZtX21haW4uYzozMDMzOlx0XHRyID0gaHZhX3RvX3Bmbl9yZW1hcHBlZCh2bWEsIGtmcCwgXHUwMDI2cGZuKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAzNC1cdFx0aWYgKHIgPT0gLUVBR0FJTilcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTMwNDk9c3RhdGljIGt2bV9wZm5fdCBrdm1fZm9sbG93X3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNjQtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwNjU6XHRyZXR1cm4gaHZhX3RvX3BmbihrZnApO1xudmlydC9rdm0va3ZtX21haW4uYy0zMDY2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYGh2YV90b19wZm5gKioKCk9rYXksIHNvIGBodmFfdG9fcGZuYCBpc24mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQgbWVhbnMgaXQmIzM5O3MgcG90ZW50aWFsbHkgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgaXRzIGRlZmluaW5nIGZpbGUuIE5vdywgd2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSBkZWZpbmVkPyBSaWdodCwgaXQmIzM5O3MgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGUgcXVlc3Rpb24gbm93IGlzOiBpcyBpdCBleHBvcnRlZD8gSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGhlYWRlcnMgb3IgY29kZSB0byBjb25maXJtIGlmIGl0JiMzOTtzIGRlY2xhcmVkIHdpdGggYEVYUE9SVF9TWU1CT0xgIG9yIHNpbWlsYXIsIG1ha2luZyBpdCBwYXJ0IG9mIHRoZSBLVk0gQVBJLiBJZiBpdCAqaXMqIGV4cG9ydGVkLCB0aGVuIG15IGluaXRpYWwgYXNzdW1wdGlvbiBhYm91dCBpdHMgd2lkZXIgYXZhaWxhYmlsaXR5IGhvbGRzIHRydWUuIElmIG5vdCwgaXQmIzM5O3MgbGlrZWx5IGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugb25seSB3aXRoaW4gdGhhdCBLVk0gbW9kdWxlLiBUaW1lIHRvIGRpZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtodmFfdG9fcGZuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmM9MjgyNz1zdGF0aWMga3ZtX3Bmbl90IGt2bV9yZXNvbHZlX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yODUwLSAqL1xudmlydC9rdm0va3ZtX21haW4uYzoyODUxOnN0YXRpYyBib29sIGh2YV90b19wZm5fZmFzdChzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4NTIte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4Mi0gKi9cbnZpcnQva3ZtL2t2bV9tYWluLmM6Mjg4MzpzdGF0aWMgaW50IGh2YV90b19wZm5fc2xvdyhzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4ODQte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MjkyOD1zdGF0aWMgYm9vbCB2bWFfaXNfdmFsaWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIGJvb2wgd3JpdGVfZmF1bHQpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yOTM4LVxudmlydC9rdm0va3ZtX21haW4uYzoyOTM5OnN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjk0MC1cdFx0XHQgICAgICAgc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcF9wZm4pXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDAzLVxudmlydC9rdm0va3ZtX21haW4uYzozMDA0Omt2bV9wZm5fdCBodmFfdG9fcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwKVxudmlydC9rdm0va3ZtX21haW4uYy0zMDA1LXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMTQtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMTU6XHRpZiAoaHZhX3RvX3Bmbl9mYXN0KGtmcCwgXHUwMDI2cGZuKSlcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAxNi1cdFx0cmV0dXJuIHBmbjtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAxNy1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAxODpcdG5wYWdlcyA9IGh2YV90b19wZm5fc2xvdyhrZnAsIFx1MDAyNnBmbik7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMTktXHRpZiAobnBhZ2VzID09IDEpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDMyLVx0ZWxzZSBpZiAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiAoVk1fSU8gfCBWTV9QRk5NQVApKSB7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMzM6XHRcdHIgPSBodmFfdG9fcGZuX3JlbWFwcGVkKHZtYSwga2ZwLCBcdTAwMjZwZm4pO1xudmlydC9rdm0va3ZtX21haW4uYy0zMDM0LVx0XHRpZiAociA9PSAtRUFHQUlOKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MzA0OT1zdGF0aWMga3ZtX3Bmbl90IGt2bV9mb2xsb3dfcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA2NC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzA2NTpcdHJldHVybiBodmFfdG9fcGZuKGtmcCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNjYtfVxuLS1cbnZpcnQva3ZtL2t2bV9tbS5oPTI3PXN0cnVjdCBrdm1fZm9sbG93X3BmbiB7XG4tLVxudmlydC9rdm0va3ZtX21tLmgtNTgtXG52aXJ0L2t2bS9rdm1fbW0uaDo1OTprdm1fcGZuX3QgaHZhX3RvX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCk7XG52aXJ0L2t2bS9rdm1fbW0uaC02MC1cbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTEyNz1zdGF0aWMgaW5saW5lIGJvb2wgbW11X25vdGlmaWVyX3JldHJ5X2NhY2hlKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBtbXVfc2VxKVxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMTU0LVxudmlydC9rdm0vcGZuY2FjaGUuYzoxNTU6c3RhdGljIGt2bV9wZm5fdCBodmFfdG9fcGZuX3JldHJ5KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMpXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTE1Ni17XG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy0yMDgtXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjIwOTpcdFx0bmV3X3BmbiA9IGh2YV90b19wZm4oXHUwMDI2a2ZwKTtcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjEwLVx0XHRpZiAoaXNfZXJyb3Jfbm9zbG90X3BmbihuZXdfcGZuKSlcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTI1Nj1zdGF0aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyB1aHZhKVxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzIxLVxudmlydC9rdm0vcGZuY2FjaGUuYzozMjI6XHQvKiBOb3RlOiB0aGUgb2Zmc2V0IG11c3QgYmUgY29ycmVjdCBiZWZvcmUgY2FsbGluZyBodmFfdG9fcGZuX3JldHJ5KCkgKi9cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzIzLVx0Z3BjLVx1MDAzZXVodmEgJiM0Mzs9IHBhZ2Vfb2Zmc2V0O1xuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzI5LVx0aWYgKCFncGMtXHUwMDNldmFsaWQgfHwgaHZhX2NoYW5nZSkge1xudmlydC9rdm0vcGZuY2FjaGUuYzozMzA6XHRcdHJldCA9IGh2YV90b19wZm5fcmV0cnkoZ3BjKTtcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzMxLVx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njk3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYWdlIEZyYW1lIE51bWJlciAoUEZOKSBUcmFuc2xhdGlvbiBQYXRoKioKCk9rYXksIHNvIGBodmFfdG9fcGZuYCBpcyBhIGtleSBmdW5jdGlvbiBpbiB0aGlzIHZpcnR1YWwgbWVtb3J5IHRyYW5zbGF0aW9uIHByb2Nlc3MuIEkga25vdyB0aGF0IGBrdm1fZm9sbG93X3BmbmAgYW5kIGBodmFfdG9fcGZuX3JldHJ5YCBhcmUgY2FsbGluZyBpdCwgdGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kLiBMZXQmIzM5O3Mgc2VlIGhvdyBga3ZtX2ZvbGxvd19wZm5gIGlzIHV0aWxpemVkIC0gdW5kZXJzdGFuZGluZyB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSB3aWxsIHByb3ZpZGUgbW9yZSBjb250ZXh0LiBLbm93aW5nIGl0cyBjYWxsZXJzIHNob3VsZCBpbGx1bWluYXRlIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgaG93IHRoaXMgUEZOIHRyYW5zbGF0aW9uIHN5c3RlbSBpcyBiZWluZyB1c2VkLCBlc3BlY2lhbGx5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIG90aGVyIGZ1bmN0aW9uLCBhbmQgaG93IHRob3NlIHBhcnRzIGludGVyYWN0LiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9mb2xsb3dfcGZuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmM9MjgyNT1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3JlbGVhc2VfcGFnZV9kaXJ0eSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4MjYtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4Mjc6c3RhdGljIGt2bV9wZm5fdCBrdm1fcmVzb2x2ZV9wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIHN0cnVjdCBwYWdlICpwYWdlLFxudmlydC9rdm0va3ZtX21haW4uYy0yODI4LVx0XHRcdFx0IHN0cnVjdCBmb2xsb3dfcGZubWFwX2FyZ3MgKm1hcCwgYm9vbCB3cml0YWJsZSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4NTAtICovXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4NTE6c3RhdGljIGJvb2wgaHZhX3RvX3Bmbl9mYXN0KHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBrdm1fcGZuX3QgKnBmbilcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg1Mi17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yODgyLSAqL1xudmlydC9rdm0va3ZtX21haW4uYzoyODgzOnN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9zbG93KHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBrdm1fcGZuX3QgKnBmbilcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4NC17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYz0yOTM5PXN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbnZpcnQva3ZtL2t2bV9tYWluLmM6Mjk0MDpcdFx0XHQgICAgICAgc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcF9wZm4pXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI5NDEte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwMy1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAwNDprdm1fcGZuX3QgaHZhX3RvX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwNS17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDQ4LVxudmlydC9rdm0va3ZtX21haW4uYzozMDQ5OnN0YXRpYyBrdm1fcGZuX3Qga3ZtX2ZvbGxvd19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNTAte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MzA2OD1rdm1fcGZuX3QgX19rdm1fZmF1bHRpbl9wZm4oY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA3MS17XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwNzI6XHRzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ga2ZwID0ge1xudmlydC9rdm0va3ZtX21haW4uYy0zMDczLVx0XHQuc2xvdCA9IHNsb3QsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDg1LVxudmlydC9rdm0va3ZtX21haW4uYzozMDg2Olx0cmV0dXJuIGt2bV9mb2xsb3dfcGZuKFx1MDAyNmtmcCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwODctfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MzExND1zdHJ1Y3QgcGFnZSAqX19nZm5fdG9fcGFnZShzdHJ1Y3Qga3ZtICprdm0sIGdmbl90IGdmbiwgYm9vbCB3cml0ZSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxMTYtXHRzdHJ1Y3QgcGFnZSAqcmVmY291bnRlZF9wYWdlID0gTlVMTDtcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzExNzpcdHN0cnVjdCBrdm1fZm9sbG93X3BmbiBrZnAgPSB7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxMTgtXHRcdC5zbG90ID0gZ2ZuX3RvX21lbXNsb3Qoa3ZtLCBnZm4pLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzEyMy1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzEyNDpcdCh2b2lkKWt2bV9mb2xsb3dfcGZuKFx1MDAyNmtmcCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxMjUtXHRyZXR1cm4gcmVmY291bnRlZF9wYWdlO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MzEyOT1pbnQgX19rdm1fdmNwdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBnZm5fdCBnZm4sIHN0cnVjdCBrdm1faG9zdF9tYXAgKm1hcCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxMzEte1xudmlydC9rdm0va3ZtX21haW4uYzozMTMyOlx0c3RydWN0IGt2bV9mb2xsb3dfcGZuIGtmcCA9IHtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzEzMy1cdFx0LnNsb3QgPSBrdm1fdmNwdV9nZm5fdG9fbWVtc2xvdCh2Y3B1LCBnZm4pLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzE0NS1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzE0NjpcdG1hcC1cdTAwM2VwZm4gPSBrdm1fZm9sbG93X3BmbihcdTAwMjZrZnApO1xudmlydC9rdm0va3ZtX21haW4uYy0zMTQ3LVx0aWYgKGlzX2Vycm9yX25vc2xvdF9wZm4obWFwLVx1MDAzZXBmbikpXG4tLVxudmlydC9rdm0va3ZtX21tLmgtMjYtXG52aXJ0L2t2bS9rdm1fbW0uaDoyNzpzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ge1xudmlydC9rdm0va3ZtX21tLmgtMjgtXHRjb25zdCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90O1xuLS1cbnZpcnQva3ZtL2t2bV9tbS5oLTU4LVxudmlydC9rdm0va3ZtX21tLmg6NTk6a3ZtX3Bmbl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApO1xudmlydC9rdm0va3ZtX21tLmgtNjAtXG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYz0xNTU9c3RhdGljIGt2bV9wZm5fdCBodmFfdG9fcGZuX3JldHJ5KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMpXG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy0xNjMtXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjE2NDpcdHN0cnVjdCBrdm1fZm9sbG93X3BmbiBrZnAgPSB7XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTE2NS1cdFx0LnNsb3QgPSBncGMtXHUwMDNlbWVtc2xvdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDY0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkFuYWx5emluZyB0aGUgS1ZNIFBhZ2UgRmF1bHQgSGFuZGxpbmcqKgoKT2theSwgc28gYF9fa3ZtX2ZhdWx0aW5fcGZuYCBpcyB0aGUgY29yZSBvZiBLVk0mIzM5O3MgcGFnZSBmYXVsdCBoYW5kbGluZy4gVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYXQgYSBkZWVwIGxldmVsIHRvIHRyYWNlIHRoaXMgbWVtb3J5IGlzc3VlLiBNeSBuZXh0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gZGV0ZXJtaW5lIGFsbCB0aGUgcG90ZW50aWFsIGNhbGwgc2l0ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0cyBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgd29yayBiZWdpbnMgdG8gdHJhY2UgZG93biB0byB0aGUgcm9vdCBjYXVzZS4gSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBhdCB3aGVyZSBgX19rdm1fZmF1bHRpbl9wZm5gIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBGaW5kaW5nIHRob3NlIGNhbGwgc2l0ZXMgd2lsbCBnaXZlIG1lIGFuIHVuZGVyc3RhbmRpbmcgb2Ygd2hlbiBhbmQgd2h5IHRoZSBrZXJuZWwgaXMgdHJ5aW5nIHRvIGhhbmRsZSB0aGVzZSBwYWdlIGZhdWx0cy4gVGhlbiBJIGNhbiBzdGFydCB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgdG8gcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDM6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19rdm1fZmF1bHRpbl9wZm4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vbW11LmM9MTg0OD1zdGF0aWMgaW50IGt2bV9zMl9mYXVsdF9nZXRfdm1hX2luZm8oY29uc3Qgc3RydWN0IGt2bV9zMl9mYXVsdF9kZXNjICpzMmZkLFxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jLTE4NzgtXHQgKiBSZWFkIG1tdV9pbnZhbGlkYXRlX3NlcSBzbyB0aGF0IEtWTSBjYW4gZGV0ZWN0IGlmIHRoZSByZXN1bHRzIG9mXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoxODc5Olx0ICogdm1hX2xvb2t1cCgpIG9yIF9fa3ZtX2ZhdWx0aW5fcGZuKCkgYmVjb21lIHN0YWxlIHByaW9yIHRvXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xODgwLVx0ICogYWNxdWlyaW5nIGt2bS1cdTAwM2VtbXVfbG9jay5cbi0tXG5hcmNoL2FybTY0L2t2bS9tbXUuYz0xOTAzPXN0YXRpYyBpbnQga3ZtX3MyX2ZhdWx0X3Bpbl9wZm4oY29uc3Qgc3RydWN0IGt2bV9zMl9mYXVsdF9kZXNjICpzMmZkLFxuLS1cbmFyY2gvYXJtNjQva3ZtL21tdS5jLTE5MTEtXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoxOTEyOlx0czJ2aS1cdTAwM2VwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihzMmZkLVx1MDAzZW1lbXNsb3QsIGdldF9jYW5vbmljYWxfZ2ZuKHMyZmQsIHMydmkpLFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTkxMy1cdFx0XHRcdCAgICAgIGt2bV9pc193cml0ZV9mYXVsdChzMmZkLVx1MDAzZXZjcHUpID8gRk9MTF9XUklURSA6IDAsXG4tLVxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTk0OS1cdFx0XHQgKiBsYXJnZXN0IHF1YW50aXR5IHdlIGNhbiBtYXAuICBJZiBpbnN0ZWFkIGl0IHdhcyBtYXBwZWRcbmFyY2gvYXJtNjQva3ZtL21tdS5jOjE5NTA6XHRcdFx0ICogdmlhIF9fa3ZtX2ZhdWx0aW5fcGZuKCksIHZtYV9wYWdlc2l6ZSBpcyBzZXQgdG8gUEFHRV9TSVpFXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xOTUxLVx0XHRcdCAqIGFuZCBtdXN0IG5vdCBiZSB1cGdyYWRlZC5cbi0tXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYz0xMzU4PXN0YXRpYyBpbnQga3ZtX3RyYW5zbGF0ZV92bmNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCAqaXNfZ21lbSlcbi0tXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xNDExLVx0aWYgKCEqaXNfZ21lbSkge1xuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM6MTQxMjpcdFx0cGZuID0gX19rdm1fZmF1bHRpbl9wZm4obWVtc2xvdCwgZ2ZuLCB3cml0ZV9mYXVsdCA/IEZPTExfV1JJVEUgOiAwLFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmMtMTQxMy1cdFx0XHRcdFx0XHUwMDI2d3JpdGFibGUsIFx1MDAyNnBhZ2UpO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9odi5jPTUwNj1pbnQga3ZtcHBjX2Jvb2szc19odl9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfaHYuYy02MDUtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfaHYuYzo2MDY6XHRwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihtZW1zbG90LCBnZm4sIHdyaXRpbmcgPyBGT0xMX1dSSVRFIDogMCxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9odi5jLTYwNy1cdFx0XHRcdFx1MDAyNndyaXRlX29rLCBcdTAwMjZwYWdlKTtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfcmFkaXguYz04MjE9aW50IGt2bXBwY19ib29rM3NfaW5zdGFudGlhdGVfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRfbW11X3JhZGl4LmMtODQyLVx0aHZhID0gZ2ZuX3RvX2h2YV9tZW1zbG90KG1lbXNsb3QsIGdmbik7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfcmFkaXguYzo4NDM6XHRwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihtZW1zbG90LCBnZm4sIHdyaXRpbmcgPyBGT0xMX1dSSVRFIDogMCxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9yYWRpeC5jLTg0NC1cdFx0XHRcdFx1MDAyNnVwZ3JhZGVfd3JpdGUsIFx1MDAyNnBhZ2UpO1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vZTUwMF9tbXVfaG9zdC5jPTMyMD1zdGF0aWMgaW5saW5lIGludCBrdm1wcGNfZTUwMF9zaGFkb3dfbWFwKHN0cnVjdCBrdm1wcGNfdmNwdV9lNTAwICp2Y3B1X2U1MDAsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9lNTAwX21tdV9ob3N0LmMtMzU0LVxuYXJjaC9wb3dlcnBjL2t2bS9lNTAwX21tdV9ob3N0LmM6MzU1Olx0cGZuID0gX19rdm1fZmF1bHRpbl9wZm4oc2xvdCwgZ2ZuLCBGT0xMX1dSSVRFLCBcdTAwMjZ3cml0YWJsZSwgXHUwMDI2cGFnZSk7XG5hcmNoL3Bvd2VycGMva3ZtL2U1MDBfbW11X2hvc3QuYy0zNTYtXHRpZiAoaXNfZXJyb3Jfbm9zbG90X3BmbihwZm4pKSB7XG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmM9NTM2PWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTk5LVx0ICogUmVhZCBtbXVfaW52YWxpZGF0ZV9zZXEgc28gdGhhdCBLVk0gY2FuIGRldGVjdCBpZiB0aGUgcmVzdWx0cyBvZlxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NjAwOlx0ICogdm1hX2xvb2t1cCgpIG9yIF9fa3ZtX2ZhdWx0aW5fcGZuKCkgYmVjb21lIHN0YWxlIHByaW9yIHRvIGFjcXVpcmluZ1xuYXJjaC9yaXNjdi9rdm0vbW11LmMtNjAxLVx0ICoga3ZtLVx1MDAzZW1tdV9sb2NrLlxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTYxNS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjYxNjpcdGhmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKG1lbXNsb3QsIGdmbiwgaXNfd3JpdGUgPyBGT0xMX1dSSVRFIDogMCxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTYxNy1cdFx0XHRcdFx1MDAyNndyaXRhYmxlLCBcdTAwMjZwYWdlKTtcbi0tXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYz0zMz1pbnQga3ZtX3MzOTBfZmF1bHRpbl9nZm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBndWVzdF9mYXVsdCAqZilcbi0tXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy03My1cdFx0XHRzbG90ID0gZ2ZuX3RvX21lbXNsb3Qoa3ZtLCBmLVx1MDAzZWdmbik7XG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYzo3NDpcdFx0Zi1cdTAwM2VwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihzbG90LCBmLVx1MDAzZWdmbiwgZm9sbCwgXHUwMDI2Zi1cdTAwM2V3cml0YWJsZSwgXHUwMDI2Zi1cdTAwM2VwYWdlKTtcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTc1LVxuLS1cbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTg3LVx0XHRcdGZvbGwgXHUwMDI2PSB+Rk9MTF9OT1dBSVQ7XG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYzo4ODpcdFx0XHRmLVx1MDAzZXBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKHNsb3QsIGYtXHUwMDNlZ2ZuLCBmb2xsLCBcdTAwMjZmLVx1MDAzZXdyaXRhYmxlLCBcdTAwMjZmLVx1MDAzZXBhZ2UpO1xuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmMtODktXHRcdH1cbi0tXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYz0xMjk9aW50IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGd1ZXN0X2ZhdWx0ICpmLCBnZm5fdCBnZm4sIGJvb2wgdylcbi0tXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy0xMzUtXHRmLVx1MDAzZWdmbiA9IGdmbjtcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jOjEzNjpcdGYtXHUwMDNlcGZuID0gX19rdm1fZmF1bHRpbl9wZm4oc2xvdCwgZ2ZuLCBmb2xsLCBcdTAwMjZmLVx1MDAzZXdyaXRhYmxlLCBcdTAwMjZmLVx1MDAzZXBhZ2UpO1xuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmMtMTM3LVx0aWYgKGlzX25vc2xvdF9wZm4oZi1cdTAwM2VwZm4pKVxuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9NDY1Nj1zdGF0aWMgaW50IF9fa3ZtX21tdV9mYXVsdGluX3BmbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy00NjY0LVx0Zm9sbCB8PSBGT0xMX05PV0FJVDtcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NDY2NTpcdGZhdWx0LVx1MDAzZXBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKGZhdWx0LVx1MDAzZXNsb3QsIGZhdWx0LVx1MDAzZWdmbiwgZm9sbCxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNDY2Ni1cdFx0XHRcdCAgICAgICBcdTAwMjZmYXVsdC1cdTAwM2VtYXBfd3JpdGFibGUsIFx1MDAyNmZhdWx0LVx1MDAzZXJlZmNvdW50ZWRfcGFnZSk7XG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy00Njk0LVx0Zm9sbCBcdTAwMjY9IH5GT0xMX05PV0FJVDtcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NDY5NTpcdGZhdWx0LVx1MDAzZXBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKGZhdWx0LVx1MDAzZXNsb3QsIGZhdWx0LVx1MDAzZWdmbiwgZm9sbCxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNDY5Ni1cdFx0XHRcdCAgICAgICBcdTAwMjZmYXVsdC1cdTAwM2VtYXBfd3JpdGFibGUsIFx1MDAyNmZhdWx0LVx1MDAzZXJlZmNvdW50ZWRfcGFnZSk7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02OTQ2PXZvaWQgdm14X3NldF9hcGljX2FjY2Vzc19wYWdlX2FkZHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjk4Ny1cdCAqL1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo2OTg4Olx0cGZuID0gX19rdm1fZmF1bHRpbl9wZm4oc2xvdCwgZ2ZuLCBGT0xMX1dSSVRFLCBcdTAwMjZ3cml0YWJsZSwgXHUwMDI2cmVmY291bnRlZF9wYWdlKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNjk4OS1cdGlmIChpc19lcnJvcl9ub3Nsb3RfcGZuKHBmbikpXG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTEyODU9c3RhdGljIGlubGluZSB2b2lkIGt2bV9yZWxlYXNlX2ZhdWx0aW5fcGFnZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMzEwLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjEzMTE6a3ZtX3Bmbl90IF9fa3ZtX2ZhdWx0aW5fcGZuKGNvbnN0IHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsIGdmbl90IGdmbixcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMzEyLVx0XHRcdCAgICB1bnNpZ25lZCBpbnQgZm9sbCwgYm9vbCAqd3JpdGFibGUsXG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTEzMTU9c3RhdGljIGlubGluZSBrdm1fcGZuX3Qga3ZtX2ZhdWx0aW5fcGZuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ2ZuX3QgZ2ZuLFxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMzE4LXtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxMzE5Olx0cmV0dXJuIF9fa3ZtX2ZhdWx0aW5fcGZuKGt2bV92Y3B1X2dmbl90b19tZW1zbG90KHZjcHUsIGdmbiksIGdmbixcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMzIwLVx0XHRcdFx0IHdyaXRlID8gRk9MTF9XUklURSA6IDAsIHdyaXRhYmxlLCByZWZjb3VudGVkX3BhZ2UpO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MzA0OT1zdGF0aWMga3ZtX3Bmbl90IGt2bV9mb2xsb3dfcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA2Ny1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzA2ODprdm1fcGZuX3QgX19rdm1fZmF1bHRpbl9wZm4oY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLFxudmlydC9rdm0va3ZtX21haW4uYy0zMDY5LVx0XHRcdCAgICB1bnNpZ25lZCBpbnQgZm9sbCwgYm9vbCAqd3JpdGFibGUsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zMDg3LX1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MzA4ODpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoX19rdm1fZmF1bHRpbl9wZm4pO1xudmlydC9rdm0va3ZtX21haW4uYy0zMDg5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDYzMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUGFnZSBGYXVsdCBIYW5kbGluZyBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgY2hhbmdlIHNwZWNpZmljYWxseSB3aXRoaW4gYGh2YV90b19wZm5fcmVtYXBwZWRgLiBUaGlzIGZ1bmN0aW9uIGtpY2tzIGluIHdoZW4gYSBgdm1hYCBoYXMgdGhlIGBWTV9JT2Agb3IgYFZNX1BGTk1BUGAgZmxhZyBzZXQsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBob3cgS1ZNIGhhbmRsZXMgcGFnZSBmYXVsdHMgaW4gdmlydHVhbCBtYWNoaW5lcyB1c2luZyBgVk1fUEZOTUFQYCBtYXBwaW5ncy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHNwZWNpZmljIHBpZWNlIG9mIHRoZSBLVk0gcGFnZSBmYXVsdCBwdXp6bGUuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgcmVhY2hhYmxlIHZpYSB0aGUgc3RhbmRhcmQgS1ZNIHBhZ2UgZmF1bHQgaGFuZGxpbmcgcHJvY2Vzcy4KClRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgaGFuZGxpbmcgYSB3cml0ZSBmYXVsdCBzY2VuYXJpbyBvbiBhIGBWTV9QRk5NQVBgIHZtYSwgcGFydGljdWxhcmx5IHdoZW4gdGhlIGBhcmdzLndyaXRhYmxlYCBmbGFnIGlzbiYjMzk7dCBzZXQuIEZyb20gd2hhdCBJIGNhbiB0ZWxsLCBpdCB0cmlnZ2VycyBhICYjMzQ7d3JpdGUgdXBncmFkZSYjMzQ7IHRocm91Z2ggYGZpeHVwX3VzZXJfZmF1bHRgLgoKSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgZml4dXBfdXNlcl9mYXVsdGAgYW5kIGBmb2xsb3dfcGZubWFwX3N0YXJ0YCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IGJhc2VkIG9uIHRoaXMgcXVpY2sgb3ZlcnZpZXcsIHRoaXMgY2VydGFpbmx5IHNlZW1zIGZ1bmN0aW9uYWwgYW5kIHNvbWV0aGluZyBJJiMzOTtkIHdhbnQgdG8gc3ViamVjdCB0byBmdXp6aW5nLgoKTXkgZm9jdXMgc3ltYm9scyBhcmUgZ29pbmcgdG8gYmUgYGh2YV90b19wZm5gIGFuZCBgX19rdm1fZmF1bHRpbl9wZm5gLiBBbHRob3VnaCBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaXMgdGhlIGRpcmVjdCBjaGFuZ2UsIGl0JiMzOTtzIHN0YXRpYy4gYGh2YV90b19wZm5gLCB3aGlsZSBub3Qgc3RhdGljLCB3aWxsIGFsbG93IG1lIHRvIHRyYWNrIHVzYWdlIG9mIHRoaXMgZnVuY3Rpb25hbGl0eSBhY3Jvc3MgdGhlIGNvZGUuIEFuZCBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hlcmUgaXQgaXMgYmVpbmcgdXNlZC4gQW5kICBgX19rdm1fZmF1bHRpbl9wZm5gIGlzIGV4cG9ydGVkIGFuZCB1c2VkIHdoZW4gZmF1bHRpbmcgaW4gdGhlIHBhZ2UsIHNvIHRoYXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gdG8gZm9sbG93LiAKCkkmIzM5O3ZlIHZlcmlmaWVkIHRoYXQgYGh2YV90b19wZm5gIGlzIGRlY2xhcmVkIGluIGB2aXJ0L2t2bS9rdm1fbW0uaGAgYW5kIGlzIG5vbi1zdGF0aWMuIGBfX2t2bV9mYXVsdGluX3BmbmAgaXMgYWxzbyBleHBvcnRlZC4KClRoZSBjb25maWd1cmF0aW9uIHByZXJlcXVpc2l0ZSBpcyBgQ09ORklHX0tWTWAsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIGNoZWNrZWQsIGFuZCBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaXMgaW5kZWVkIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCB3aGVyZSBJIGV4cGVjdGVkIGl0IHRvIGJlLiBUaGlzIGZpbGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0tWTWAgaXMgZW5hYmxlZCwgd2hpY2ggZml0cyB0aGUgcGF0dGVybi4gU28sIG5vdGhpbmcgdW5leHBlY3RlZCBjb25maWd1cmF0aW9uLXdpc2UuIEkgdGhpbmsgSSBoYXZlIGVub3VnaCBoZXJlIHRvIHN0YXJ0IGRpZ2dpbmcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAzOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9tYWluLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0vTWFrZWZpbGUua3ZtPTY9S1ZNID89IC4uLy4uLy4uL3ZpcnQva3ZtXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm0tNy1cbnZpcnQva3ZtL01ha2VmaWxlLmt2bTo4Omt2bS15IDo9ICQoS1ZNKS9rdm1fbWFpbi5vICQoS1ZNKS9ldmVudGZkLm8gJChLVk0pL2JpbmFyeV9zdGF0cy5vXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm0tOS1rdm0tJChDT05GSUdfS1ZNX1ZGSU8pICYjNDM7PSAkKEtWTSkvdmZpby5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAzOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzI2CgkJCQkJCQlvdXRwdXQ6IDEzOAoJCQkJCQkJdGhvdWdodHM6IDQ2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIE1lbW9yeSBNYW5hZ2VtZW50IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgb25seSByZXF1aXJpbmcgYENPTkZJR19LVk1gIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSB1c2luZyB0aGUgcmlnaHQgZm9jdXMgc3ltYm9scyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMuIExldCYjMzk7cyBkb3VibGUtY2hlY2sgbXkgbGlzdC4gYF9fa3ZtX2ZhdWx0aW5fcGZuYCBpcyBhIHN0cm9uZyBjYW5kaWRhdGUsIGFzIGlzIGBodmFfdG9fcGZuYC4gSG9sZCBvbiwgYGh2YV90b19wZm5fcmVtYXBwZWRgIGlzIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgdXNlIGl0IGRpcmVjdGx5IGFzIGEgZm9jdXMgc3ltYm9sLCBldmVuIHRob3VnaCBpdCYjMzk7cyBsaWtlbHkgcmVsZXZhbnQuIEdvb2QgY2F0Y2guIExvb2tzIGxpa2UgSSB3aWxsIHVzZSBgaHZhX3RvX3BmbmAgaW5zdGVhZCwgYXMgaXQgaXMgbm9uLXN0YXRpYy4KCk5vdywgbGV0JiMzOTtzIHRyYWNlIHRoZSBjYWxsIGNoYWluIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGludGVyZXN0aW5nIGZ1bmN0aW9ucy4gQWxyaWdodCwgYGh2YV90b19wZm5fcmVtYXBwZWRgICppcyogY2FsbGVkIGZyb20gYGh2YV90b19wZm5gLCBzbyB0aGF0JiMzOTtzIGdvb2QgdG8ga2VlcCBpbiBtaW5kLiBgaHZhX3RvX3BmbmAgaXMsIGluIHR1cm4sIGNhbGxlZCBieSBga3ZtX2ZvbGxvd19wZm5gIGFuZCBgaHZhX3RvX3Bmbl9yZXRyeWAuIEhtbW0sIGBrdm1fZm9sbG93X3BmbmAgaXMgc3RhdGljLiBBbmQgc28gaXMgYGh2YV90b19wZm5fcmV0cnlgLiBJbnRlcmVzdGluZy4uLiBgX19rdm1fZmF1bHRpbl9wZm5gICphbHNvKiBjYWxscyBga3ZtX2ZvbGxvd19wZm5gLiBBbmQsIGl0IGxvb2tzIGxpa2UgYF9fZ2ZuX3RvX3BhZ2VgIGFsc28gY2FsbHMgYGt2bV9mb2xsb3dfcGZuYCwgYXMgZG9lcyBgX19rdm1fdmNwdV9tYXBgLgoKT2theSwgdGFraW5nIGFsbCB0aGF0IGludG8gYWNjb3VudCwgYGh2YV90b19wZm5gLCBgX19rdm1fZmF1bHRpbl9wZm5gLCBgX19nZm5fdG9fcGFnZWAsIGFuZCBgX19rdm1fdmNwdV9tYXBgIGFyZSB0aGUgbW9zdCByZWxldmFudCBjYW5kaWRhdGVzLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGBodmFfdG9fcGZuYCBhbmQgYF9fa3ZtX2ZhdWx0aW5fcGZuYCBmb3Igbm93LgoKVGhlIHBhdGNoJiMzOTtzIGltcGFjdCBpcyBzaWduaWZpY2FudC4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBodmFfdG9fcGZuX3JlbWFwcGVkYCB3aXRoaW4gS1ZNJiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50IHRvIGhhbmRsZSB3cml0ZSBmYXVsdHMgb24gVk1fUEZOTUFQIFZNQXMuIEVzc2VudGlhbGx5LCB0aGlzIGNoYW5nZSBmb3JjZXMgYSB3cml0ZSB1cGdyYWRlIHZpYSBgZml4dXBfdXNlcl9mYXVsdGAuIFRoaXMgaXMgYSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBLVk0gcGFnZSBmYXVsdCBoYW5kbGluZywgd2hpY2ggaW1wYWN0cyBndWVzdCBleGVjdXRpb24gZHVyaW5nIGFjY2VzcyB0byBtZW1vcnktbWFwcGVkIEkvTyBvciBQRk5NQVAgcmVnaW9ucy4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYW5kIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAzOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtodmFfdG9fcGZuJiMzNDssCiAgICAmIzM0O19fa3ZtX2ZhdWx0aW5fcGZuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBpbiBLVk0mIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQgdG8gcHJvcGVybHkgaGFuZGxlIHdyaXRlIGZhdWx0cyBvbiBWTV9QRk5NQVAgVk1BcyBieSB0cmlnZ2VyaW5nIGEgd3JpdGUgdXBncmFkZSB2aWEgYGZpeHVwX3VzZXJfZmF1bHRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gcGFnZSBmYXVsdCBoYW5kbGluZyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIGR1cmluZyBndWVzdCBleGVjdXRpb24gd2hlbiBhY2Nlc3NpbmcgbWVtb3J5LW1hcHBlZCBJL08gb3IgUEZOTUFQIHJlZ2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2h2YV90b19wZm4mIzM0OywKICAgICYjMzQ7X19rdm1fZmF1bHRpbl9wZm4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGh2YV90b19wZm5fcmVtYXBwZWRgIGluIEtWTSYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudCB0byBwcm9wZXJseSBoYW5kbGUgd3JpdGUgZmF1bHRzIG9uIFZNX1BGTk1BUCBWTUFzIGJ5IHRyaWdnZXJpbmcgYSB3cml0ZSB1cGdyYWRlIHZpYSBgZml4dXBfdXNlcl9mYXVsdGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBwYWdlIGZhdWx0IGhhbmRsaW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZHVyaW5nIGd1ZXN0IGV4ZWN1dGlvbiB3aGVuIGFjY2Vzc2luZyBtZW1vcnktbWFwcGVkIEkvTyBvciBQRk5NQVAgcmVnaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAzOjM1OjI5LjI4MTk0MjM4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNTI1NDQ0NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh2YV90b19wZm5cIixcbiAgICBcIl9fa3ZtX2ZhdWx0aW5fcGZuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGh2YV90b19wZm5fcmVtYXBwZWRgIGluIEtWTSdzIG1lbW9yeSBtYW5hZ2VtZW50IHRvIHByb3Blcmx5IGhhbmRsZSB3cml0ZSBmYXVsdHMgb24gVk1fUEZOTUFQIFZNQXMgYnkgdHJpZ2dlcmluZyBhIHdyaXRlIHVwZ3JhZGUgdmlhIGBmaXh1cF91c2VyX2ZhdWx0YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIHBhZ2UgZmF1bHQgaGFuZGxpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgZXhlY3V0aW9uIHdoZW4gYWNjZXNzaW5nIG1lbW9yeS1tYXBwZWQgSS9PIG9yIFBGTk1BUCByZWdpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMzozNToyOS4yODE5NDgxMzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwNTI2ODgzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDk0MmE3NGM5N2EzMzdmZjQwZWMyOWJkMTZiNmQzMjk1YmZmMjM1NjFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMSAwMzozNToyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1fbWFpbi5jIGIvdmlydC9rdm0va3ZtX21haW4uY1xcbmluZGV4IDQ1ZTc4NDQ2MmVjNmUuLjgyYzVhNmI5NDI2N2YgMTAwNjQ0XFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xcbisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcXG5AQCAtMjk0MSw2ICsyOTQxLDcgQEAgc3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbiB7XFxuIFxcdHN0cnVjdCBmb2xsb3dfcGZubWFwX2FyZ3MgYXJncyA9IHsgLnZtYSA9IHZtYSwgLmFkZHJlc3MgPSBrZnAtXFx1MDAzZWh2YSB9O1xcbiBcXHRib29sIHdyaXRlX2ZhdWx0ID0ga2ZwLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZPTExfV1JJVEU7XFxuK1xcdGJvb2wgdW5sb2NrZWQgPSBmYWxzZTtcXG4gXFx0aW50IHI7XFxuIFxcbiBcXHQvKlxcbkBAIC0yOTU3LDcgKzI5NTgsNiBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuIFxcdFxcdCAqIGdldF91c2VyX3BhZ2VzIGZhaWxzIGZvciBWTV9JTyBhbmQgVk1fUEZOTUFQIHZtYXMgYW5kIGRvZXNcXG4gXFx0XFx0ICogbm90IGNhbGwgdGhlIGZhdWx0IGhhbmRsZXIsIHNvIGRvIGl0IGhlcmUuXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRib29sIHVubG9ja2VkID0gZmFsc2U7XFxuIFxcdFxcdHIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXFx1MDAzZW1tLCBrZnAtXFx1MDAzZWh2YSxcXG4gXFx0XFx0XFx0XFx0ICAgICAod3JpdGVfZmF1bHQgPyBGQVVMVF9GTEFHX1dSSVRFIDogMCksXFxuIFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnVubG9ja2VkKTtcXG5AQCAtMjk3Miw4ICsyOTcyLDI3IEBAIHN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHdyaXRlX2ZhdWx0IFxcdTAwMjZcXHUwMDI2ICFhcmdzLndyaXRhYmxlKSB7XFxuLVxcdFxcdCpwX3BmbiA9IEtWTV9QRk5fRVJSX1JPX0ZBVUxUO1xcbi1cXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogVk1fUEZOTUFQIGZhdWx0IGhhbmRsZXJzIG1heSBpbnN0YWxsIHJlYWQtb25seSBQVEVzIHZpYVxcbitcXHRcXHQgKiB2bWZfaW5zZXJ0X3BmbigpLCBkZWZlcnJpbmcgdGhlIHdyaXRlIHVwZ3JhZGUgdG8gYSBzZWNvbmRcXG4rXFx0XFx0ICogZmF1bHQuIFRyaWdnZXIgdGhhdCB1cGdyYWRlIG5vdy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGZvbGxvd19wZm5tYXBfZW5kKFxcdTAwMjZhcmdzKTtcXG4rXFx0XFx0ciA9IGZpeHVwX3VzZXJfZmF1bHQoY3VycmVudC1cXHUwMDNlbW0sIGtmcC1cXHUwMDNlaHZhLCBGQVVMVF9GTEFHX1dSSVRFLFxcbitcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZ1bmxvY2tlZCk7XFxuK1xcdFxcdGlmICh1bmxvY2tlZClcXG4rXFx0XFx0XFx0cmV0dXJuIC1FQUdBSU47XFxuK1xcdFxcdGlmIChyKVxcbitcXHRcXHRcXHRyZXR1cm4gcjtcXG4rXFxuK1xcdFxcdHIgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFxcdTAwMjZhcmdzKTtcXG4rXFx0XFx0aWYgKHIpXFxuK1xcdFxcdFxcdHJldHVybiByO1xcbitcXG4rXFx0XFx0aWYgKCFhcmdzLndyaXRhYmxlKSB7XFxuK1xcdFxcdFxcdCpwX3BmbiA9IEtWTV9QRk5fRVJSX1JPX0ZBVUxUO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHQqcF9wZm4gPSBrdm1fcmVzb2x2ZV9wZm4oa2ZwLCBOVUxMLCBcXHUwMDI2YXJncywgYXJncy53cml0YWJsZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAzOjM1OjI5LjY4ODAwNzQwM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMxMTE5MzcxODQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh2YV90b19wZm5cIixcbiAgICBcIl9fa3ZtX2ZhdWx0aW5fcGZuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGh2YV90b19wZm5fcmVtYXBwZWRgIGluIEtWTSdzIG1lbW9yeSBtYW5hZ2VtZW50IHRvIHByb3Blcmx5IGhhbmRsZSB3cml0ZSBmYXVsdHMgb24gVk1fUEZOTUFQIFZNQXMgYnkgdHJpZ2dlcmluZyBhIHdyaXRlIHVwZ3JhZGUgdmlhIGBmaXh1cF91c2VyX2ZhdWx0YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIHBhZ2UgZmF1bHQgaGFuZGxpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBkdXJpbmcgZ3Vlc3QgZXhlY3V0aW9uIHdoZW4gYWNjZXNzaW5nIG1lbW9yeS1tYXBwZWQgSS9PIG9yIFBGTk1BUCByZWdpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5NDJhNzRjOTdhMzM3ZmY0MGVjMjliZDE2YjZkMzI5NWJmZjIzNTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwMzozNToyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5pbmRleCA0NWU3ODQ0NjJlYzZlLi44MmM1YTZiOTQyNjdmIDEwMDY0NFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xuKysrIGIvdmlydC9rdm0va3ZtX21haW4uY1xuQEAgLTI5NDEsNiArMjk0MSw3IEBAIHN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiB7XG4gXHRzdHJ1Y3QgZm9sbG93X3Bmbm1hcF9hcmdzIGFyZ3MgPSB7IC52bWEgPSB2bWEsIC5hZGRyZXNzID0ga2ZwLVx1MDAzZWh2YSB9O1xuIFx0Ym9vbCB3cml0ZV9mYXVsdCA9IGtmcC1cdTAwM2VmbGFncyBcdTAwMjYgRk9MTF9XUklURTtcbitcdGJvb2wgdW5sb2NrZWQgPSBmYWxzZTtcbiBcdGludCByO1xuIFxuIFx0LypcbkBAIC0yOTU3LDcgKzI5NTgsNiBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHRcdCAqIGdldF91c2VyX3BhZ2VzIGZhaWxzIGZvciBWTV9JTyBhbmQgVk1fUEZOTUFQIHZtYXMgYW5kIGRvZXNcbiBcdFx0ICogbm90IGNhbGwgdGhlIGZhdWx0IGhhbmRsZXIsIHNvIGRvIGl0IGhlcmUuXG4gXHRcdCAqL1xuLVx0XHRib29sIHVubG9ja2VkID0gZmFsc2U7XG4gXHRcdHIgPSBmaXh1cF91c2VyX2ZhdWx0KGN1cnJlbnQtXHUwMDNlbW0sIGtmcC1cdTAwM2VodmEsXG4gXHRcdFx0XHQgICAgICh3cml0ZV9mYXVsdCA/IEZBVUxUX0ZMQUdfV1JJVEUgOiAwKSxcbiBcdFx0XHRcdCAgICAgXHUwMDI2dW5sb2NrZWQpO1xuQEAgLTI5NzIsOCArMjk3MiwyNyBAQCBzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4gXHR9XG4gXG4gXHRpZiAod3JpdGVfZmF1bHQgXHUwMDI2XHUwMDI2ICFhcmdzLndyaXRhYmxlKSB7XG4tXHRcdCpwX3BmbiA9IEtWTV9QRk5fRVJSX1JPX0ZBVUxUO1xuLVx0XHRnb3RvIG91dDtcbitcdFx0LypcbitcdFx0ICogVk1fUEZOTUFQIGZhdWx0IGhhbmRsZXJzIG1heSBpbnN0YWxsIHJlYWQtb25seSBQVEVzIHZpYVxuK1x0XHQgKiB2bWZfaW5zZXJ0X3BmbigpLCBkZWZlcnJpbmcgdGhlIHdyaXRlIHVwZ3JhZGUgdG8gYSBzZWNvbmRcbitcdFx0ICogZmF1bHQuIFRyaWdnZXIgdGhhdCB1cGdyYWRlIG5vdy5cbitcdFx0ICovXG4rXHRcdGZvbGxvd19wZm5tYXBfZW5kKFx1MDAyNmFyZ3MpO1xuK1x0XHRyID0gZml4dXBfdXNlcl9mYXVsdChjdXJyZW50LVx1MDAzZW1tLCBrZnAtXHUwMDNlaHZhLCBGQVVMVF9GTEFHX1dSSVRFLFxuK1x0XHRcdFx0ICAgICBcdTAwMjZ1bmxvY2tlZCk7XG4rXHRcdGlmICh1bmxvY2tlZClcbitcdFx0XHRyZXR1cm4gLUVBR0FJTjtcbitcdFx0aWYgKHIpXG4rXHRcdFx0cmV0dXJuIHI7XG4rXG4rXHRcdHIgPSBmb2xsb3dfcGZubWFwX3N0YXJ0KFx1MDAyNmFyZ3MpO1xuK1x0XHRpZiAocilcbitcdFx0XHRyZXR1cm4gcjtcbitcbitcdFx0aWYgKCFhcmdzLndyaXRhYmxlKSB7XG4rXHRcdFx0KnBfcGZuID0gS1ZNX1BGTl9FUlJfUk9fRkFVTFQ7XG4rXHRcdFx0Z290byBvdXQ7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdCpwX3BmbiA9IGt2bV9yZXNvbHZlX3BmbihrZnAsIE5VTEwsIFx1MDAyNmFyZ3MsIGFyZ3Mud3JpdGFibGUpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDM6MzU6MjkuNjg4MDA4NTIzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI3Njc1MTY2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gTWVtb3J5IE1hbmFnZW1lbnQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgZnVuY3Rpb24uIFRoZSBwYXRjaCBhZGRyZXNzZXMgYSBjb25kaXRpb24gd2l0aGluIHRoYXQgZnVuY3Rpb246IGB3cml0ZV9mYXVsdCBcdTAwMjZcdTAwMjYgIWFyZ3Mud3JpdGFibGVgLiBJdCBsb29rcyBsaWtlIGl0J3MgaGFuZGxpbmcgYSBwYXJ0aWN1bGFyIGZhdWx0IHNjZW5hcmlvIHdpdGhpbiB0aGUgcmVtYXBwZWQgUEZOIGxvb2t1cC4gVGhlIGNoYW5nZSBpbnZvbHZlcyBjYWxsaW5nIGBmb2xsb3dfcGZubWFwX2VuZGAsIGBmaXh1cF91c2VyX2ZhdWx0YCwgYW5kIGBmb2xsb3dfcGZubWFwX3N0YXJ0YCwgd2hpY2ggc3Ryb25nbHkgc3VnZ2VzdHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgS1ZNIG1hbmFnZXMgbWVtb3J5LlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY2FsbCBncmFwaC4gTGV0J3Mgc2VlIHdobyBjYWxscyBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAuIEl0J3MgdXNlZCBieSBgaHZhX3RvX3BmbmAsIHdoaWNoIGluIHR1cm4sIGlzIHVzZWQgYnkgYF9fZ2ZuX3RvX3Bmbl9tZW1zbG90YC4gUmlnaHQsIHNvIHdlJ3JlIGRlZmluaXRlbHkgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBjb3JlIHRvIEtWTSdzIG1lbW9yeSBoYW5kbGluZy4gVGhpcyByZWluZm9yY2VzIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBwYXRjaC5cblxuSSBzaG91bGQgYWxzbyBxdWlja2x5IHZlcmlmeSB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24uIEp1c3Qgd2FudCB0byBtYWtlIHN1cmUgdGhlIENPTkZJRyBpcyByaWdodCwgYW5kIGl0J3MgdGhlIG1haW4gQ09ORklHX0tWTS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB3aGV0aGVyIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBpcyBzdGF0aWMuIEFscmlnaHQsIGl0IGlzLCBhbmQgdGhlIGNhbGxlciBpcyBgaHZhX3RvX3BmbmAuIE1ha2VzIHNlbnNlLiBOb3csIGxldCdzIGRvdWJsZS1jaGVjayBgaHZhX3RvX3BmbmAgZm9yIGFueSBpbW1lZGlhdGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MjIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMzozNTozNC45NjQ3NjI3NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5MzA3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHZhX3RvX3BmblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9MjgyNz1zdGF0aWMga3ZtX3Bmbl90IGt2bV9yZXNvbHZlX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4NTAtICovXFxudmlydC9rdm0va3ZtX21haW4uYzoyODUxOnN0YXRpYyBib29sIGh2YV90b19wZm5fZmFzdChzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pXFxudmlydC9rdm0va3ZtX21haW4uYy0yODUyLXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4Mi0gKi9cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4ODM6c3RhdGljIGludCBodmFfdG9fcGZuX3Nsb3coc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcGZuKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4NC17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI5Mjg9c3RhdGljIGJvb2wgdm1hX2lzX3ZhbGlkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBib29sIHdyaXRlX2ZhdWx0KVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yOTM4LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjkzOTpzdGF0aWMgaW50IGh2YV90b19wZm5fcmVtYXBwZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxudmlydC9rdm0va3ZtX21haW4uYy0yOTQwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwX3BmbilcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwMy1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMDQ6a3ZtX3Bmbl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDA1LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAxNC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMTU6XFx0aWYgKGh2YV90b19wZm5fZmFzdChrZnAsIFxcdTAwMjZwZm4pKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAxNi1cXHRcXHRyZXR1cm4gcGZuO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAxNy1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMTg6XFx0bnBhZ2VzID0gaHZhX3RvX3Bmbl9zbG93KGtmcCwgXFx1MDAyNnBmbik7XFxudmlydC9rdm0va3ZtX21haW4uYy0zMDE5LVxcdGlmIChucGFnZXMgPT0gMSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAzMi1cXHRlbHNlIGlmICh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgKFZNX0lPIHwgVk1fUEZOTUFQKSkge1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAzMzpcXHRcXHRyID0gaHZhX3RvX3Bmbl9yZW1hcHBlZCh2bWEsIGtmcCwgXFx1MDAyNnBmbik7XFxudmlydC9rdm0va3ZtX21haW4uYy0zMDM0LVxcdFxcdGlmIChyID09IC1FQUdBSU4pXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTMwNDk9c3RhdGljIGt2bV9wZm5fdCBrdm1fZm9sbG93X3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA2NC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwNjU6XFx0cmV0dXJuIGh2YV90b19wZm4oa2ZwKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNjYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMzozNTozNS4wMDk3MDEwODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDYwMDQ3ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBgaHZhX3RvX3BmbmAqKlxuXG5Pa2F5LCBzbyBgaHZhX3RvX3BmbmAgaXNuJ3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQgbWVhbnMgaXQncyBwb3RlbnRpYWxseSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgZGVmaW5pbmcgZmlsZS4gTm93LCB3aGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGRlZmluZWQ/IFJpZ2h0LCBpdCdzIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYC4gVGhlIHF1ZXN0aW9uIG5vdyBpczogaXMgaXQgZXhwb3J0ZWQ/IEkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBoZWFkZXJzIG9yIGNvZGUgdG8gY29uZmlybSBpZiBpdCdzIGRlY2xhcmVkIHdpdGggYEVYUE9SVF9TWU1CT0xgIG9yIHNpbWlsYXIsIG1ha2luZyBpdCBwYXJ0IG9mIHRoZSBLVk0gQVBJLiBJZiBpdCAqaXMqIGV4cG9ydGVkLCB0aGVuIG15IGluaXRpYWwgYXNzdW1wdGlvbiBhYm91dCBpdHMgd2lkZXIgYXZhaWxhYmlsaXR5IGhvbGRzIHRydWUuIElmIG5vdCwgaXQncyBsaWtlbHkgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZSBvbmx5IHdpdGhpbiB0aGF0IEtWTSBtb2R1bGUuIFRpbWUgdG8gZGlnIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDM6MzU6MzguMDY5NzUxNzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2MjQxMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHZhX3RvX3BmblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0yODI3PXN0YXRpYyBrdm1fcGZuX3Qga3ZtX3Jlc29sdmVfcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg1MC0gKi9cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4NTE6c3RhdGljIGJvb2wgaHZhX3RvX3Bmbl9mYXN0KHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBrdm1fcGZuX3QgKnBmbilcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4NTIte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yODgyLSAqL1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6Mjg4MzpzdGF0aWMgaW50IGh2YV90b19wZm5fc2xvdyhzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pXFxudmlydC9rdm0va3ZtX21haW4uYy0yODg0LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MjkyOD1zdGF0aWMgYm9vbCB2bWFfaXNfdmFsaWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIGJvb2wgd3JpdGVfZmF1bHQpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI5MzgtXFxudmlydC9rdm0va3ZtX21haW4uYzoyOTM5OnN0YXRpYyBpbnQgaHZhX3RvX3Bmbl9yZW1hcHBlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI5NDAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwLCBrdm1fcGZuX3QgKnBfcGZuKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDAzLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAwNDprdm1fcGZuX3QgaHZhX3RvX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMDUte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDE0LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAxNTpcXHRpZiAoaHZhX3RvX3Bmbl9mYXN0KGtmcCwgXFx1MDAyNnBmbikpXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDE2LVxcdFxcdHJldHVybiBwZm47XFxudmlydC9rdm0va3ZtX21haW4uYy0zMDE3LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzAxODpcXHRucGFnZXMgPSBodmFfdG9fcGZuX3Nsb3coa2ZwLCBcXHUwMDI2cGZuKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMTktXFx0aWYgKG5wYWdlcyA9PSAxKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDMyLVxcdGVsc2UgaWYgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiAoVk1fSU8gfCBWTV9QRk5NQVApKSB7XFxudmlydC9rdm0va3ZtX21haW4uYzozMDMzOlxcdFxcdHIgPSBodmFfdG9fcGZuX3JlbWFwcGVkKHZtYSwga2ZwLCBcXHUwMDI2cGZuKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwMzQtXFx0XFx0aWYgKHIgPT0gLUVBR0FJTilcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MzA0OT1zdGF0aWMga3ZtX3Bmbl90IGt2bV9mb2xsb3dfcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDY0LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzA2NTpcXHRyZXR1cm4gaHZhX3RvX3BmbihrZnApO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA2Ni19XFxuLS1cXG52aXJ0L2t2bS9rdm1fbW0uaD0yNz1zdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ge1xcbi0tXFxudmlydC9rdm0va3ZtX21tLmgtNTgtXFxudmlydC9rdm0va3ZtX21tLmg6NTk6a3ZtX3Bmbl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApO1xcbnZpcnQva3ZtL2t2bV9tbS5oLTYwLVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYz0xMjc9c3RhdGljIGlubGluZSBib29sIG1tdV9ub3RpZmllcl9yZXRyeV9jYWNoZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgbW11X3NlcSlcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMTU0LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6MTU1OnN0YXRpYyBrdm1fcGZuX3QgaHZhX3RvX3Bmbl9yZXRyeShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMTU2LXtcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjA4LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6MjA5OlxcdFxcdG5ld19wZm4gPSBodmFfdG9fcGZuKFxcdTAwMjZrZnApO1xcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjEwLVxcdFxcdGlmIChpc19lcnJvcl9ub3Nsb3RfcGZuKG5ld19wZm4pKVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYz0yNTY9c3RhdGljIGludCBfX2t2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgdWh2YSlcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzIxLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6MzIyOlxcdC8qIE5vdGU6IHRoZSBvZmZzZXQgbXVzdCBiZSBjb3JyZWN0IGJlZm9yZSBjYWxsaW5nIGh2YV90b19wZm5fcmV0cnkoKSAqL1xcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzIzLVxcdGdwYy1cXHUwMDNldWh2YSArPSBwYWdlX29mZnNldDtcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzI5LVxcdGlmICghZ3BjLVxcdTAwM2V2YWxpZCB8fCBodmFfY2hhbmdlKSB7XFxudmlydC9rdm0vcGZuY2FjaGUuYzozMzA6XFx0XFx0cmV0ID0gaHZhX3RvX3Bmbl9yZXRyeShncGMpO1xcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzMxLVxcdH0gZWxzZSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAzOjM1OjM4LjExMzM4MzU1N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDY3Mzc2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYWdlIEZyYW1lIE51bWJlciAoUEZOKSBUcmFuc2xhdGlvbiBQYXRoKipcblxuT2theSwgc28gYGh2YV90b19wZm5gIGlzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgdmlydHVhbCBtZW1vcnkgdHJhbnNsYXRpb24gcHJvY2Vzcy4gSSBrbm93IHRoYXQgYGt2bV9mb2xsb3dfcGZuYCBhbmQgYGh2YV90b19wZm5fcmV0cnlgIGFyZSBjYWxsaW5nIGl0LCB0aGF0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZC4gTGV0J3Mgc2VlIGhvdyBga3ZtX2ZvbGxvd19wZm5gIGlzIHV0aWxpemVkIC0gdW5kZXJzdGFuZGluZyB3aGVyZSBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHdpbGwgcHJvdmlkZSBtb3JlIGNvbnRleHQuIEtub3dpbmcgaXRzIGNhbGxlcnMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGJyb2FkZXIgcGljdHVyZSBvZiBob3cgdGhpcyBQRk4gdHJhbnNsYXRpb24gc3lzdGVtIGlzIGJlaW5nIHVzZWQsIGVzcGVjaWFsbHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgb3RoZXIgZnVuY3Rpb24sIGFuZCBob3cgdGhvc2UgcGFydHMgaW50ZXJhY3QuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2OTcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMzozNTo0MS4wMjAxMjQzNzZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA4ODQ2MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2ZvbGxvd19wZm5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9MjgyNT1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3JlbGVhc2VfcGFnZV9kaXJ0eSk7XFxudmlydC9rdm0va3ZtX21haW4uYy0yODI2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjgyNzpzdGF0aWMga3ZtX3Bmbl90IGt2bV9yZXNvbHZlX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxudmlydC9rdm0va3ZtX21haW4uYy0yODI4LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZm9sbG93X3Bmbm1hcF9hcmdzICptYXAsIGJvb2wgd3JpdGFibGUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI4NTAtICovXFxudmlydC9rdm0va3ZtX21haW4uYzoyODUxOnN0YXRpYyBib29sIGh2YV90b19wZm5fZmFzdChzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCwga3ZtX3Bmbl90ICpwZm4pXFxudmlydC9rdm0va3ZtX21haW4uYy0yODUyLXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4Mi0gKi9cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI4ODM6c3RhdGljIGludCBodmFfdG9fcGZuX3Nsb3coc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcGZuKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjg4NC17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI5Mzk9c3RhdGljIGludCBodmFfdG9fcGZuX3JlbWFwcGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbnZpcnQva3ZtL2t2bV9tYWluLmM6Mjk0MDpcXHRcXHRcXHQgICAgICAgc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnAsIGt2bV9wZm5fdCAqcF9wZm4pXFxudmlydC9rdm0va3ZtX21haW4uYy0yOTQxLXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzAwMy1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwMDQ6a3ZtX3Bmbl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApXFxudmlydC9rdm0va3ZtX21haW4uYy0zMDA1LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA0OC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwNDk6c3RhdGljIGt2bV9wZm5fdCBrdm1fZm9sbG93X3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNTAte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0zMDY4PWt2bV9wZm5fdCBfX2t2bV9mYXVsdGluX3Bmbihjb25zdCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90LCBnZm5fdCBnZm4sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNzEte1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzA3MjpcXHRzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ga2ZwID0ge1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA3My1cXHRcXHQuc2xvdCA9IHNsb3QsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwODUtXFxudmlydC9rdm0va3ZtX21haW4uYzozMDg2OlxcdHJldHVybiBrdm1fZm9sbG93X3BmbihcXHUwMDI2a2ZwKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwODctfVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0zMTE0PXN0cnVjdCBwYWdlICpfX2dmbl90b19wYWdlKHN0cnVjdCBrdm0gKmt2bSwgZ2ZuX3QgZ2ZuLCBib29sIHdyaXRlKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zMTE2LVxcdHN0cnVjdCBwYWdlICpyZWZjb3VudGVkX3BhZ2UgPSBOVUxMO1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzExNzpcXHRzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ga2ZwID0ge1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzExOC1cXHRcXHQuc2xvdCA9IGdmbl90b19tZW1zbG90KGt2bSwgZ2ZuKSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzEyMy1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMxMjQ6XFx0KHZvaWQpa3ZtX2ZvbGxvd19wZm4oXFx1MDAyNmtmcCk7XFxudmlydC9rdm0va3ZtX21haW4uYy0zMTI1LVxcdHJldHVybiByZWZjb3VudGVkX3BhZ2U7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTMxMjk9aW50IF9fa3ZtX3ZjcHVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ2ZuX3QgZ2ZuLCBzdHJ1Y3Qga3ZtX2hvc3RfbWFwICptYXAsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxMzEte1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MzEzMjpcXHRzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4ga2ZwID0ge1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzEzMy1cXHRcXHQuc2xvdCA9IGt2bV92Y3B1X2dmbl90b19tZW1zbG90KHZjcHUsIGdmbiksXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMxNDUtXFxudmlydC9rdm0va3ZtX21haW4uYzozMTQ2OlxcdG1hcC1cXHUwMDNlcGZuID0ga3ZtX2ZvbGxvd19wZm4oXFx1MDAyNmtmcCk7XFxudmlydC9rdm0va3ZtX21haW4uYy0zMTQ3LVxcdGlmIChpc19lcnJvcl9ub3Nsb3RfcGZuKG1hcC1cXHUwMDNlcGZuKSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tbS5oLTI2LVxcbnZpcnQva3ZtL2t2bV9tbS5oOjI3OnN0cnVjdCBrdm1fZm9sbG93X3BmbiB7XFxudmlydC9rdm0va3ZtX21tLmgtMjgtXFx0Y29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdDtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tbS5oLTU4LVxcbnZpcnQva3ZtL2t2bV9tbS5oOjU5Omt2bV9wZm5fdCBodmFfdG9fcGZuKHN0cnVjdCBrdm1fZm9sbG93X3BmbiAqa2ZwKTtcXG52aXJ0L2t2bS9rdm1fbW0uaC02MC1cXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM9MTU1PXN0YXRpYyBrdm1fcGZuX3QgaHZhX3RvX3Bmbl9yZXRyeShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYy0xNjMtXFxudmlydC9rdm0vcGZuY2FjaGUuYzoxNjQ6XFx0c3RydWN0IGt2bV9mb2xsb3dfcGZuIGtmcCA9IHtcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTE2NS1cXHRcXHQuc2xvdCA9IGdwYy1cXHUwMDNlbWVtc2xvdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDM6MzU6NDEuMDYxMDE0NTYzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5Njk3ODQ4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIFBhZ2UgRmF1bHQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBgX19rdm1fZmF1bHRpbl9wZm5gIGlzIHRoZSBjb3JlIG9mIEtWTSdzIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIFRoYXQncyB0aGUgZnVuY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYXQgYSBkZWVwIGxldmVsIHRvIHRyYWNlIHRoaXMgbWVtb3J5IGlzc3VlLiBNeSBuZXh0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gZGV0ZXJtaW5lIGFsbCB0aGUgcG90ZW50aWFsIGNhbGwgc2l0ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0cyBpbiB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgd29yayBiZWdpbnMgdG8gdHJhY2UgZG93biB0byB0aGUgcm9vdCBjYXVzZS4gSSdsbCBzdGFydCBieSBsb29raW5nIGF0IHdoZXJlIGBfX2t2bV9mYXVsdGluX3BmbmAgaXMgYWN0dWFsbHkgY2FsbGVkIHdpdGhpbiB0aGUgY29kZWJhc2UuIEZpbmRpbmcgdGhvc2UgY2FsbCBzaXRlcyB3aWxsIGdpdmUgbWUgYW4gdW5kZXJzdGFuZGluZyBvZiB3aGVuIGFuZCB3aHkgdGhlIGtlcm5lbCBpcyB0cnlpbmcgdG8gaGFuZGxlIHRoZXNlIHBhZ2UgZmF1bHRzLiBUaGVuIEkgY2FuIHN0YXJ0IHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGhvdyB0byBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDY0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDM6MzU6NDQuMTU3OTk1MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1OTY2NzUxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2t2bV9mYXVsdGluX3BmblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vbW11LmM9MTg0OD1zdGF0aWMgaW50IGt2bV9zMl9mYXVsdF9nZXRfdm1hX2luZm8oY29uc3Qgc3RydWN0IGt2bV9zMl9mYXVsdF9kZXNjICpzMmZkLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTg3OC1cXHQgKiBSZWFkIG1tdV9pbnZhbGlkYXRlX3NlcSBzbyB0aGF0IEtWTSBjYW4gZGV0ZWN0IGlmIHRoZSByZXN1bHRzIG9mXFxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTg3OTpcXHQgKiB2bWFfbG9va3VwKCkgb3IgX19rdm1fZmF1bHRpbl9wZm4oKSBiZWNvbWUgc3RhbGUgcHJpb3IgdG9cXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xODgwLVxcdCAqIGFjcXVpcmluZyBrdm0tXFx1MDAzZW1tdV9sb2NrLlxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmM9MTkwMz1zdGF0aWMgaW50IGt2bV9zMl9mYXVsdF9waW5fcGZuKGNvbnN0IHN0cnVjdCBrdm1fczJfZmF1bHRfZGVzYyAqczJmZCxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTE5MTEtXFxuYXJjaC9hcm02NC9rdm0vbW11LmM6MTkxMjpcXHRzMnZpLVxcdTAwM2VwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihzMmZkLVxcdTAwM2VtZW1zbG90LCBnZXRfY2Fub25pY2FsX2dmbihzMmZkLCBzMnZpKSxcXG5hcmNoL2FybTY0L2t2bS9tbXUuYy0xOTEzLVxcdFxcdFxcdFxcdCAgICAgIGt2bV9pc193cml0ZV9mYXVsdChzMmZkLVxcdTAwM2V2Y3B1KSA/IEZPTExfV1JJVEUgOiAwLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbW11LmMtMTk0OS1cXHRcXHRcXHQgKiBsYXJnZXN0IHF1YW50aXR5IHdlIGNhbiBtYXAuICBJZiBpbnN0ZWFkIGl0IHdhcyBtYXBwZWRcXG5hcmNoL2FybTY0L2t2bS9tbXUuYzoxOTUwOlxcdFxcdFxcdCAqIHZpYSBfX2t2bV9mYXVsdGluX3BmbigpLCB2bWFfcGFnZXNpemUgaXMgc2V0IHRvIFBBR0VfU0laRVxcbmFyY2gvYXJtNjQva3ZtL21tdS5jLTE5NTEtXFx0XFx0XFx0ICogYW5kIG11c3Qgbm90IGJlIHVwZ3JhZGVkLlxcbi0tXFxuYXJjaC9hcm02NC9rdm0vbmVzdGVkLmM9MTM1OD1zdGF0aWMgaW50IGt2bV90cmFuc2xhdGVfdm5jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgKmlzX2dtZW0pXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xNDExLVxcdGlmICghKmlzX2dtZW0pIHtcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYzoxNDEyOlxcdFxcdHBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKG1lbXNsb3QsIGdmbiwgd3JpdGVfZmF1bHQgPyBGT0xMX1dSSVRFIDogMCxcXG5hcmNoL2FybTY0L2t2bS9uZXN0ZWQuYy0xNDEzLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZ3cml0YWJsZSwgXFx1MDAyNnBhZ2UpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRfbW11X2h2LmM9NTA2PWludCBrdm1wcGNfYm9vazNzX2h2X3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRfbW11X2h2LmMtNjA1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9odi5jOjYwNjpcXHRwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihtZW1zbG90LCBnZm4sIHdyaXRpbmcgPyBGT0xMX1dSSVRFIDogMCxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfaHYuYy02MDctXFx0XFx0XFx0XFx0XFx1MDAyNndyaXRlX29rLCBcXHUwMDI2cGFnZSk7XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfcmFkaXguYz04MjE9aW50IGt2bXBwY19ib29rM3NfaW5zdGFudGlhdGVfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc182NF9tbXVfcmFkaXguYy04NDItXFx0aHZhID0gZ2ZuX3RvX2h2YV9tZW1zbG90KG1lbXNsb3QsIGdmbik7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRfbW11X3JhZGl4LmM6ODQzOlxcdHBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKG1lbXNsb3QsIGdmbiwgd3JpdGluZyA/IEZPTExfV1JJVEUgOiAwLFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9yYWRpeC5jLTg0NC1cXHRcXHRcXHRcXHRcXHUwMDI2dXBncmFkZV93cml0ZSwgXFx1MDAyNnBhZ2UpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9lNTAwX21tdV9ob3N0LmM9MzIwPXN0YXRpYyBpbmxpbmUgaW50IGt2bXBwY19lNTAwX3NoYWRvd19tYXAoc3RydWN0IGt2bXBwY192Y3B1X2U1MDAgKnZjcHVfZTUwMCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vZTUwMF9tbXVfaG9zdC5jLTM1NC1cXG5hcmNoL3Bvd2VycGMva3ZtL2U1MDBfbW11X2hvc3QuYzozNTU6XFx0cGZuID0gX19rdm1fZmF1bHRpbl9wZm4oc2xvdCwgZ2ZuLCBGT0xMX1dSSVRFLCBcXHUwMDI2d3JpdGFibGUsIFxcdTAwMjZwYWdlKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2U1MDBfbW11X2hvc3QuYy0zNTYtXFx0aWYgKGlzX2Vycm9yX25vc2xvdF9wZm4ocGZuKSkge1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM9NTM2PWludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy01OTktXFx0ICogUmVhZCBtbXVfaW52YWxpZGF0ZV9zZXEgc28gdGhhdCBLVk0gY2FuIGRldGVjdCBpZiB0aGUgcmVzdWx0cyBvZlxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjYwMDpcXHQgKiB2bWFfbG9va3VwKCkgb3IgX19rdm1fZmF1bHRpbl9wZm4oKSBiZWNvbWUgc3RhbGUgcHJpb3IgdG8gYWNxdWlyaW5nXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNjAxLVxcdCAqIGt2bS1cXHUwMDNlbW11X2xvY2suXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy02MTUtXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NjE2OlxcdGhmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKG1lbXNsb3QsIGdmbiwgaXNfd3JpdGUgPyBGT0xMX1dSSVRFIDogMCxcXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy02MTctXFx0XFx0XFx0XFx0XFx1MDAyNndyaXRhYmxlLCBcXHUwMDI2cGFnZSk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYz0zMz1pbnQga3ZtX3MzOTBfZmF1bHRpbl9nZm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBndWVzdF9mYXVsdCAqZilcXG4tLVxcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTczLVxcdFxcdFxcdHNsb3QgPSBnZm5fdG9fbWVtc2xvdChrdm0sIGYtXFx1MDAzZWdmbik7XFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmM6NzQ6XFx0XFx0Zi1cXHUwMDNlcGZuID0gX19rdm1fZmF1bHRpbl9wZm4oc2xvdCwgZi1cXHUwMDNlZ2ZuLCBmb2xsLCBcXHUwMDI2Zi1cXHUwMDNld3JpdGFibGUsIFxcdTAwMjZmLVxcdTAwM2VwYWdlKTtcXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy03NS1cXG4tLVxcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTg3LVxcdFxcdFxcdGZvbGwgXFx1MDAyNj0gfkZPTExfTk9XQUlUO1xcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jOjg4OlxcdFxcdFxcdGYtXFx1MDAzZXBmbiA9IF9fa3ZtX2ZhdWx0aW5fcGZuKHNsb3QsIGYtXFx1MDAzZWdmbiwgZm9sbCwgXFx1MDAyNmYtXFx1MDAzZXdyaXRhYmxlLCBcXHUwMDI2Zi1cXHUwMDNlcGFnZSk7XFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmMtODktXFx0XFx0fVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmM9MTI5PWludCBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBndWVzdF9mYXVsdCAqZiwgZ2ZuX3QgZ2ZuLCBib29sIHcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uYy0xMzUtXFx0Zi1cXHUwMDNlZ2ZuID0gZ2ZuO1xcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jOjEzNjpcXHRmLVxcdTAwM2VwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihzbG90LCBnZm4sIGZvbGwsIFxcdTAwMjZmLVxcdTAwM2V3cml0YWJsZSwgXFx1MDAyNmYtXFx1MDAzZXBhZ2UpO1xcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5jLTEzNy1cXHRpZiAoaXNfbm9zbG90X3BmbihmLVxcdTAwM2VwZm4pKVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYz00NjU2PXN0YXRpYyBpbnQgX19rdm1fbW11X2ZhdWx0aW5fcGZuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNDY2NC1cXHRmb2xsIHw9IEZPTExfTk9XQUlUO1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NDY2NTpcXHRmYXVsdC1cXHUwMDNlcGZuID0gX19rdm1fZmF1bHRpbl9wZm4oZmF1bHQtXFx1MDAzZXNsb3QsIGZhdWx0LVxcdTAwM2VnZm4sIGZvbGwsXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy00NjY2LVxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2ZmF1bHQtXFx1MDAzZW1hcF93cml0YWJsZSwgXFx1MDAyNmZhdWx0LVxcdTAwM2VyZWZjb3VudGVkX3BhZ2UpO1xcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy00Njk0LVxcdGZvbGwgXFx1MDAyNj0gfkZPTExfTk9XQUlUO1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NDY5NTpcXHRmYXVsdC1cXHUwMDNlcGZuID0gX19rdm1fZmF1bHRpbl9wZm4oZmF1bHQtXFx1MDAzZXNsb3QsIGZhdWx0LVxcdTAwM2VnZm4sIGZvbGwsXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy00Njk2LVxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2ZmF1bHQtXFx1MDAzZW1hcF93cml0YWJsZSwgXFx1MDAyNmZhdWx0LVxcdTAwM2VyZWZjb3VudGVkX3BhZ2UpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz02OTQ2PXZvaWQgdm14X3NldF9hcGljX2FjY2Vzc19wYWdlX2FkZHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02OTg3LVxcdCAqL1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6Njk4ODpcXHRwZm4gPSBfX2t2bV9mYXVsdGluX3BmbihzbG90LCBnZm4sIEZPTExfV1JJVEUsIFxcdTAwMjZ3cml0YWJsZSwgXFx1MDAyNnJlZmNvdW50ZWRfcGFnZSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy02OTg5LVxcdGlmIChpc19lcnJvcl9ub3Nsb3RfcGZuKHBmbikpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTI4NT1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTMxMC1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTMxMTprdm1fcGZuX3QgX19rdm1fZmF1bHRpbl9wZm4oY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLFxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xMzEyLVxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgZm9sbCwgYm9vbCAqd3JpdGFibGUsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTMxNT1zdGF0aWMgaW5saW5lIGt2bV9wZm5fdCBrdm1fZmF1bHRpbl9wZm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBnZm5fdCBnZm4sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTMxOC17XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjEzMTk6XFx0cmV0dXJuIF9fa3ZtX2ZhdWx0aW5fcGZuKGt2bV92Y3B1X2dmbl90b19tZW1zbG90KHZjcHUsIGdmbiksIGdmbixcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTMyMC1cXHRcXHRcXHRcXHQgd3JpdGUgPyBGT0xMX1dSSVRFIDogMCwgd3JpdGFibGUsIHJlZmNvdW50ZWRfcGFnZSk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTMwNDk9c3RhdGljIGt2bV9wZm5fdCBrdm1fZm9sbG93X3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA2Ny1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjMwNjg6a3ZtX3Bmbl90IF9fa3ZtX2ZhdWx0aW5fcGZuKGNvbnN0IHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsIGdmbl90IGdmbixcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTMwNjktXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBmb2xsLCBib29sICp3cml0YWJsZSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzA4Ny19XFxudmlydC9rdm0va3ZtX21haW4uYzozMDg4OkVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChfX2t2bV9mYXVsdGluX3Bmbik7XFxudmlydC9rdm0va3ZtX21haW4uYy0zMDg5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMzozNTo0Ni4xMTc2Njc3ODdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE5MDg3NTYyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gUGFnZSBGYXVsdCBIYW5kbGluZyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGNoYW5nZSBzcGVjaWZpY2FsbHkgd2l0aGluIGBodmFfdG9fcGZuX3JlbWFwcGVkYC4gVGhpcyBmdW5jdGlvbiBraWNrcyBpbiB3aGVuIGEgYHZtYWAgaGFzIHRoZSBgVk1fSU9gIG9yIGBWTV9QRk5NQVBgIGZsYWcgc2V0LCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gaG93IEtWTSBoYW5kbGVzIHBhZ2UgZmF1bHRzIGluIHZpcnR1YWwgbWFjaGluZXMgdXNpbmcgYFZNX1BGTk1BUGAgbWFwcGluZ3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBzcGVjaWZpYyBwaWVjZSBvZiB0aGUgS1ZNIHBhZ2UgZmF1bHQgcHV6emxlLiBJdCBsb29rcyBsaWtlIGl0J3MgcmVhY2hhYmxlIHZpYSB0aGUgc3RhbmRhcmQgS1ZNIHBhZ2UgZmF1bHQgaGFuZGxpbmcgcHJvY2Vzcy5cblxuVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBoYW5kbGluZyBhIHdyaXRlIGZhdWx0IHNjZW5hcmlvIG9uIGEgYFZNX1BGTk1BUGAgdm1hLCBwYXJ0aWN1bGFybHkgd2hlbiB0aGUgYGFyZ3Mud3JpdGFibGVgIGZsYWcgaXNuJ3Qgc2V0LiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQgdHJpZ2dlcnMgYSBcIndyaXRlIHVwZ3JhZGVcIiB0aHJvdWdoIGBmaXh1cF91c2VyX2ZhdWx0YC5cblxuSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBmaXh1cF91c2VyX2ZhdWx0YCBhbmQgYGZvbGxvd19wZm5tYXBfc3RhcnRgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLCBidXQgYmFzZWQgb24gdGhpcyBxdWljayBvdmVydmlldywgdGhpcyBjZXJ0YWlubHkgc2VlbXMgZnVuY3Rpb25hbCBhbmQgc29tZXRoaW5nIEknZCB3YW50IHRvIHN1YmplY3QgdG8gZnV6emluZy5cblxuTXkgZm9jdXMgc3ltYm9scyBhcmUgZ29pbmcgdG8gYmUgYGh2YV90b19wZm5gIGFuZCBgX19rdm1fZmF1bHRpbl9wZm5gLiBBbHRob3VnaCBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaXMgdGhlIGRpcmVjdCBjaGFuZ2UsIGl0J3Mgc3RhdGljLiBgaHZhX3RvX3BmbmAsIHdoaWxlIG5vdCBzdGF0aWMsIHdpbGwgYWxsb3cgbWUgdG8gdHJhY2sgdXNhZ2Ugb2YgdGhpcyBmdW5jdGlvbmFsaXR5IGFjcm9zcyB0aGUgY29kZS4gQW5kIEknbGwgbmVlZCB0byBrbm93IHdoZXJlIGl0IGlzIGJlaW5nIHVzZWQuIEFuZCAgYF9fa3ZtX2ZhdWx0aW5fcGZuYCBpcyBleHBvcnRlZCBhbmQgdXNlZCB3aGVuIGZhdWx0aW5nIGluIHRoZSBwYWdlLCBzbyB0aGF0J3MgYSBrZXkgZnVuY3Rpb24gdG8gZm9sbG93LiBcblxuSSd2ZSB2ZXJpZmllZCB0aGF0IGBodmFfdG9fcGZuYCBpcyBkZWNsYXJlZCBpbiBgdmlydC9rdm0va3ZtX21tLmhgIGFuZCBpcyBub24tc3RhdGljLiBgX19rdm1fZmF1bHRpbl9wZm5gIGlzIGFsc28gZXhwb3J0ZWQuXG5cblRoZSBjb25maWd1cmF0aW9uIHByZXJlcXVpc2l0ZSBpcyBgQ09ORklHX0tWTWAsIHdoaWNoIGlzIGV4cGVjdGVkLiBJIGNoZWNrZWQsIGFuZCBgaHZhX3RvX3Bmbl9yZW1hcHBlZGAgaXMgaW5kZWVkIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCB3aGVyZSBJIGV4cGVjdGVkIGl0IHRvIGJlLiBUaGlzIGZpbGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0tWTWAgaXMgZW5hYmxlZCwgd2hpY2ggZml0cyB0aGUgcGF0dGVybi4gU28sIG5vdGhpbmcgdW5leHBlY3RlZCBjb25maWd1cmF0aW9uLXdpc2UuIEkgdGhpbmsgSSBoYXZlIGVub3VnaCBoZXJlIHRvIHN0YXJ0IGRpZ2dpbmcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjMzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAzOjM1OjUzLjMwODU0ODA3OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4OTA1NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX21haW4ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0vTWFrZWZpbGUua3ZtPTY9S1ZNID89IC4uLy4uLy4uL3ZpcnQva3ZtXFxudmlydC9rdm0vTWFrZWZpbGUua3ZtLTctXFxudmlydC9rdm0vTWFrZWZpbGUua3ZtOjg6a3ZtLXkgOj0gJChLVk0pL2t2bV9tYWluLm8gJChLVk0pL2V2ZW50ZmQubyAkKEtWTSkvYmluYXJ5X3N0YXRzLm9cXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm0tOS1rdm0tJChDT05GSUdfS1ZNX1ZGSU8pICs9ICQoS1ZNKS92ZmlvLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDM6MzU6NTMuMzU2NDUxMTI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNzM3MTUyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEtWTSBNZW1vcnkgTWFuYWdlbWVudCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgb25seSByZXF1aXJpbmcgYENPTkZJR19LVk1gIHRvIGJlIGVuYWJsZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHVzaW5nIHRoZSByaWdodCBmb2N1cyBzeW1ib2xzIHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhpcy4gTGV0J3MgZG91YmxlLWNoZWNrIG15IGxpc3QuIGBfX2t2bV9mYXVsdGluX3BmbmAgaXMgYSBzdHJvbmcgY2FuZGlkYXRlLCBhcyBpcyBgaHZhX3RvX3BmbmAuIEhvbGQgb24sIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBpcyBzdGF0aWMsIHNvIEkgY2FuJ3QgdXNlIGl0IGRpcmVjdGx5IGFzIGEgZm9jdXMgc3ltYm9sLCBldmVuIHRob3VnaCBpdCdzIGxpa2VseSByZWxldmFudC4gR29vZCBjYXRjaC4gTG9va3MgbGlrZSBJIHdpbGwgdXNlIGBodmFfdG9fcGZuYCBpbnN0ZWFkLCBhcyBpdCBpcyBub24tc3RhdGljLlxuXG5Ob3csIGxldCdzIHRyYWNlIHRoZSBjYWxsIGNoYWluIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGludGVyZXN0aW5nIGZ1bmN0aW9ucy4gQWxyaWdodCwgYGh2YV90b19wZm5fcmVtYXBwZWRgICppcyogY2FsbGVkIGZyb20gYGh2YV90b19wZm5gLCBzbyB0aGF0J3MgZ29vZCB0byBrZWVwIGluIG1pbmQuIGBodmFfdG9fcGZuYCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGBrdm1fZm9sbG93X3BmbmAgYW5kIGBodmFfdG9fcGZuX3JldHJ5YC4gSG1tbSwgYGt2bV9mb2xsb3dfcGZuYCBpcyBzdGF0aWMuIEFuZCBzbyBpcyBgaHZhX3RvX3Bmbl9yZXRyeWAuIEludGVyZXN0aW5nLi4uIGBfX2t2bV9mYXVsdGluX3BmbmAgKmFsc28qIGNhbGxzIGBrdm1fZm9sbG93X3BmbmAuIEFuZCwgaXQgbG9va3MgbGlrZSBgX19nZm5fdG9fcGFnZWAgYWxzbyBjYWxscyBga3ZtX2ZvbGxvd19wZm5gLCBhcyBkb2VzIGBfX2t2bV92Y3B1X21hcGAuXG5cbk9rYXksIHRha2luZyBhbGwgdGhhdCBpbnRvIGFjY291bnQsIGBodmFfdG9fcGZuYCwgYF9fa3ZtX2ZhdWx0aW5fcGZuYCwgYF9fZ2ZuX3RvX3BhZ2VgLCBhbmQgYF9fa3ZtX3ZjcHVfbWFwYCBhcmUgdGhlIG1vc3QgcmVsZXZhbnQgY2FuZGlkYXRlcy4gSSdtIGdvaW5nIHRvIGZvY3VzIG9uIGBodmFfdG9fcGZuYCBhbmQgYF9fa3ZtX2ZhdWx0aW5fcGZuYCBmb3Igbm93LlxuXG5UaGUgcGF0Y2gncyBpbXBhY3QgaXMgc2lnbmlmaWNhbnQuIEl0J3MgbW9kaWZ5aW5nIGBodmFfdG9fcGZuX3JlbWFwcGVkYCB3aXRoaW4gS1ZNJ3MgbWVtb3J5IG1hbmFnZW1lbnQgdG8gaGFuZGxlIHdyaXRlIGZhdWx0cyBvbiBWTV9QRk5NQVAgVk1Bcy4gRXNzZW50aWFsbHksIHRoaXMgY2hhbmdlIGZvcmNlcyBhIHdyaXRlIHVwZ3JhZGUgdmlhIGBmaXh1cF91c2VyX2ZhdWx0YC4gVGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIEtWTSBwYWdlIGZhdWx0IGhhbmRsaW5nLCB3aGljaCBpbXBhY3RzIGd1ZXN0IGV4ZWN1dGlvbiBkdXJpbmcgYWNjZXNzIHRvIG1lbW9yeS1tYXBwZWQgSS9PIG9yIFBGTk1BUCByZWdpb25zLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZyBhbmQgd2lsbCBiZSBhZGRlZCB0byB0aGUgbGlzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3MjYsIk91dHB1dFRva2VucyI6MTM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAzOjM2OjAwLjczMDE2ODcxNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MjA3NTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJodmFfdG9fcGZuXCIsXG4gICAgXCJfX2t2bV9mYXVsdGluX3BmblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBpbiBLVk0ncyBtZW1vcnkgbWFuYWdlbWVudCB0byBwcm9wZXJseSBoYW5kbGUgd3JpdGUgZmF1bHRzIG9uIFZNX1BGTk1BUCBWTUFzIGJ5IHRyaWdnZXJpbmcgYSB3cml0ZSB1cGdyYWRlIHZpYSBgZml4dXBfdXNlcl9mYXVsdGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBwYWdlIGZhdWx0IGhhbmRsaW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZHVyaW5nIGd1ZXN0IGV4ZWN1dGlvbiB3aGVuIGFjY2Vzc2luZyBtZW1vcnktbWFwcGVkIEkvTyBvciBQRk5NQVAgcmVnaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJodmFfdG9fcGZuXCIsXG4gICAgXCJfX2t2bV9mYXVsdGluX3BmblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBodmFfdG9fcGZuX3JlbWFwcGVkYCBpbiBLVk0ncyBtZW1vcnkgbWFuYWdlbWVudCB0byBwcm9wZXJseSBoYW5kbGUgd3JpdGUgZmF1bHRzIG9uIFZNX1BGTk1BUCBWTUFzIGJ5IHRyaWdnZXJpbmcgYSB3cml0ZSB1cGdyYWRlIHZpYSBgZml4dXBfdXNlcl9mYXVsdGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBwYWdlIGZhdWx0IGhhbmRsaW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgZHVyaW5nIGd1ZXN0IGV4ZWN1dGlvbiB3aGVuIGFjY2Vzc2luZyBtZW1vcnktbWFwcGVkIEkvTyBvciBQRk5NQVAgcmVnaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowh77wm[1] Phase: Succeeded StartedAt: 2026-08-01 03:37:08 +0000 UTC FinishedAt: 2026-08-01 03:37:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 03:37:08 +0000 UTC FinishedAt: 2026-08-01 03:37:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2] Phase: Succeeded StartedAt: 2026-08-01 03:37:08 +0000 UTC FinishedAt: 2026-08-01 07:15:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 03:37:08 +0000 UTC FinishedAt: 2026-08-01 07:15:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 03:37:08 +0000 UTC FinishedAt: 2026-08-01 03:37:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 03:37:08 +0000 UTC FinishedAt: 2026-08-01 03:37:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowh77wm/series-workflowh77wm-convert-artifact-3792577416/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 03:37:31 +0000 UTC FinishedAt: 2026-08-01 03:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 03:37:31 +0000 UTC FinishedAt: 2026-08-01 03:53:10 +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:*f6aa5cac-24dd-4779-b11d-6b2b903e0f54,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-workflowh77wm/series-workflowh77wm-convert-artifact-3792577416/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": "4398e71a-78ad-4166-93ed-be7879eb1fec", "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-workflowh77wm/series-workflowh77wm-build-action-2256010750/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 03:37:31 +0000 UTC FinishedAt: 2026-08-01 03:53:00 +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:*f6aa5cac-24dd-4779-b11d-6b2b903e0f54,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-workflowh77wm/series-workflowh77wm-convert-artifact-3792577416/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": "4398e71a-78ad-4166-93ed-be7879eb1fec", "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-workflowh77wm/series-workflowh77wm-build-action-2256010750/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 03:53:10 +0000 UTC FinishedAt: 2026-08-01 03:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 03:53:10 +0000 UTC FinishedAt: 2026-08-01 03:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 03:53:10 +0000 UTC FinishedAt: 2026-08-01 03:53:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 03:53:10 +0000 UTC FinishedAt: 2026-08-01 03:53:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowh77wm/series-workflowh77wm-convert-artifact-3714718575/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 03:53:20 +0000 UTC FinishedAt: 2026-08-01 03:55:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 03:53:20 +0000 UTC FinishedAt: 2026-08-01 03:54:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4398e71a-78ad-4166-93ed-be7879eb1fec,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-workflowh77wm/series-workflowh77wm-build-action-2256010750/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-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 03:55:09 +0000 UTC FinishedAt: 2026-08-01 03:55:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 03:55:09 +0000 UTC FinishedAt: 2026-08-01 03:55:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 03:55:09 +0000 UTC FinishedAt: 2026-08-01 04:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 03:55:09 +0000 UTC FinishedAt: 2026-08-01 04:10:59 +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:*f6aa5cac-24dd-4779-b11d-6b2b903e0f54,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-workflowh77wm/series-workflowh77wm-convert-artifact-3714718575/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": "0c8dddbb-a727-4204-9eac-8804b4ccd8a5", "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-workflowh77wm/series-workflowh77wm-build-action-713658115/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 03:55:09 +0000 UTC FinishedAt: 2026-08-01 04:10:49 +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:*f6aa5cac-24dd-4779-b11d-6b2b903e0f54,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-workflowh77wm/series-workflowh77wm-convert-artifact-3714718575/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": "0c8dddbb-a727-4204-9eac-8804b4ccd8a5", "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-workflowh77wm/series-workflowh77wm-build-action-713658115/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 04:10:59 +0000 UTC FinishedAt: 2026-08-01 04:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 04:10:59 +0000 UTC FinishedAt: 2026-08-01 04:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 04:10:59 +0000 UTC FinishedAt: 2026-08-01 04:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 04:10:59 +0000 UTC FinishedAt: 2026-08-01 04:12:37 +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:*0c8dddbb-a727-4204-9eac-8804b4ccd8a5,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-workflowh77wm/series-workflowh77wm-build-action-713658115/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-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 04:12:47 +0000 UTC FinishedAt: 2026-08-01 07:15:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 04:12:47 +0000 UTC FinishedAt: 2026-08-01 07:15:28 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"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:*4398e71a-78ad-4166-93ed-be7879eb1fec,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0c8dddbb-a727-4204-9eac-8804b4ccd8a5,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-workflowh77wm/series-workflowh77wm-build-action-2256010750/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-workflowh77wm/series-workflowh77wm-build-action-713658115/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 04:12:47 +0000 UTC FinishedAt: 2026-08-01 04:13:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 04:12:47 +0000 UTC FinishedAt: 2026-08-01 04:12:57 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"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-workflowh77wm/series-workflowh77wm-convert-artifact-1512148520/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 04:12:47 +0000 UTC FinishedAt: 2026-08-01 04:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 04:12:47 +0000 UTC FinishedAt: 2026-08-01 04:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 04:12:47 +0000 UTC FinishedAt: 2026-08-01 04:12:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 04:13:08 +0000 UTC FinishedAt: 2026-08-01 07:15:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh77wm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["hva_to_pfn","__kvm_faultin_pfn"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"28b997c5-b016-4de4-a0fe-8e4094905298","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 04:13:08 +0000 UTC FinishedAt: 2026-08-01 07:15:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4398e71a-78ad-4166-93ed-be7879eb1fec,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0c8dddbb-a727-4204-9eac-8804b4ccd8a5,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-workflowh77wm/series-workflowh77wm-build-action-2256010750/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-workflowh77wm/series-workflowh77wm-build-action-713658115/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-workflowh77wm/series-workflowh77wm-convert-artifact-1512148520/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,}