Name: series-workflowtjgl5 Phase: Succeeded StartedAt: 2026-08-07 06:12:47 +0000 UTC FinishedAt: 2026-08-07 10:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[0] Phase: Succeeded StartedAt: 2026-08-07 06:12:47 +0000 UTC FinishedAt: 2026-08-07 06:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 06:12:47 +0000 UTC FinishedAt: 2026-08-07 06:38:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1fb556c523f6c18b43b1f52fb366f61c9963ce06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COREDUMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1fb556c523f6c18b43b1f52fb366f61c9963ce06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COREDUMP" ], "series_id": "2915562b-e07e-4864-82d9-649a3906be18" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "vfs_coredump" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPUkVEVU1QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZzX2NvcmVkdW1wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGR1bXAgbG9naWMgdG8gYWxsb3cgcmVsZWFzaW5nIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUgaWYgYE1NRl9EVU1QX0ZEX0xJU1RgIGlzIG5vdCBzZXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAuIEl0IGFsc28gY2hhbmdlcyBgX19mcHV0X2RlZmVycmVkYCB0byBhdm9pZCB1c2luZyBgdGFza193b3JrYCB3aGVuIGBQRl9EVU1QQ09SRWAgaXMgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgKGNvcmVkdW1wIGFuZCBmaWxlIHJlZmVyZW5jZSBtYW5hZ2VtZW50KSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDRmMWYyOGRlN2ZkNmI5MmZmOGFkYmViMzQ1YmQ3MTRhMDIyNjY1ZWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDA2OjM3OjIwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XG5pbmRleCAyNzE4OWY2ZTAwNGVlLi5iZGFlZjY0YTgxZmJhIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuQEAgLTE5MjksNyAmIzQzOzE5MjksNyBAQCB3aWxsIGJlIGR1bXBlZCB3aGVuIHRoZSBcdTAwM2NwaWRcdTAwM2UgcHJvY2VzcyBpcyBkdW1wZWQuIGNvcmVkdW1wX2ZpbHRlciBpcyBhIGJpdG1hc2tcbiBvZiBtZW1vcnkgdHlwZXMuIElmIGEgYml0IG9mIHRoZSBiaXRtYXNrIGlzIHNldCwgbWVtb3J5IHNlZ21lbnRzIG9mIHRoZVxuIGNvcnJlc3BvbmRpbmcgbWVtb3J5IHR5cGUgYXJlIGR1bXBlZCwgb3RoZXJ3aXNlIHRoZXkgYXJlIG5vdCBkdW1wZWQuXG4gXG4tVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuJiM0MztUaGUgZm9sbG93aW5nIDEwIG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuIFxuICAgLSAoYml0IDApIGFub255bW91cyBwcml2YXRlIG1lbW9yeVxuICAgLSAoYml0IDEpIGFub255bW91cyBzaGFyZWQgbWVtb3J5XG5AQCAtMTk0MSw2ICYjNDM7MTk0MSw3IEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiAgIC0gKGJpdCA2KSBodWdldGxiIHNoYXJlZCBtZW1vcnlcbiAgIC0gKGJpdCA3KSBEQVggcHJpdmF0ZSBtZW1vcnlcbiAgIC0gKGJpdCA4KSBEQVggc2hhcmVkIG1lbW9yeVxuJiM0MzsgIC0gKGJpdCA5KSBmZCBsaXN0XG4gXG4gICBOb3RlIHRoYXQgTU1JTyBwYWdlcyBzdWNoIGFzIGZyYW1lIGJ1ZmZlciBhcmUgbmV2ZXIgZHVtcGVkIGFuZCB2RFNPIHBhZ2VzXG4gICBhcmUgYWx3YXlzIGR1bXBlZCByZWdhcmRsZXNzIG9mIHRoZSBiaXRtYXNrIHN0YXR1cy5cbkBAIC0xOTQ4LDEzICYjNDM7MTk0OSwyMiBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4gICBOb3RlIHRoYXQgYml0cyAwLTQgZG9uJiMzOTt0IGFmZmVjdCBodWdldGxiIG9yIERBWCBtZW1vcnkuIGh1Z2V0bGIgbWVtb3J5IGlzXG4gICBvbmx5IGFmZmVjdGVkIGJ5IGJpdCA1LTYsIGFuZCBEQVggaXMgb25seSBhZmZlY3RlZCBieSBiaXRzIDctOC5cbiBcbiYjNDM7ICBOb3RlIHRoYXQgYml0IDkgaXMgc2V0IGJ5IGRlZmF1bHQgYmVjYXVzZSB0b29scyBsaWtlIHN5c3RlbWQtY29yZWR1bXAgZ29cbiYjNDM7ICB0aHJvdWdoIHRoZSBmZHMuIElmIHlvdSBkbyBub3Qgc2V0IGJpdCA5LCBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieVxuJiM0MzsgIGFueSBWTUEgYXJlIHJlbGVhc2VkIGJlZm9yZSBkdW1waW5nIGNvcmUuIFNvbWUgZmlsZSByZWxlYXNlIGxvZ2ljLCBzdWNoIGFzXG4mIzQzOyAgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWQgYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoXG4mIzQzOyAgZWFybGllci5cbiYjNDM7XG4mIzQzO1RoZSBkZWZhdWx0IHZhbHVlIG9mIGNvcmVkdW1wX2ZpbHRlciBpcyAweDIzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxuJiM0MztzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcywgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhbmQgZmQgbGlzdCBhcmUgZHVtcGVkLlxuJiM0MztcbiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxuIHNlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzIGFuZCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFyZSBkdW1wZWQuXG4gXG4gSWYgeW91IGRvbiYjMzk7dCB3YW50IHRvIGR1bXAgYWxsIHNoYXJlZCBtZW1vcnkgc2VnbWVudHMgYXR0YWNoZWQgdG8gcGlkIDEyMzQsXG4td3JpdGUgMHgzMSB0byB0aGUgcHJvY2VzcyYjMzk7cyBwcm9jIGZpbGU6OlxuJiM0Mzt3cml0ZSAweDIzMSB0byB0aGUgcHJvY2VzcyYjMzk7cyBwcm9jIGZpbGU6OlxuIFxuLSAgJCBlY2hvIDB4MzEgXHUwMDNlIC9wcm9jLzEyMzQvY29yZWR1bXBfZmlsdGVyXG4mIzQzOyAgJCBlY2hvIDB4MjMxIFx1MDAzZSAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlclxuIFxuIFdoZW4gYSBuZXcgcHJvY2VzcyBpcyBjcmVhdGVkLCB0aGUgcHJvY2VzcyBpbmhlcml0cyB0aGUgYml0bWFzayBzdGF0dXMgZnJvbSBpdHNcbiBwYXJlbnQuIEl0IGlzIHVzZWZ1bCB0byBzZXQgdXAgY29yZWR1bXBfZmlsdGVyIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLlxuZGlmZiAtLWdpdCBhL2ZzL2NvcmVkdW1wLmMgYi9mcy9jb3JlZHVtcC5jXG5pbmRleCBlNjhhNzZmZjkyYTM4Li5kMzc4ZTY5YzYzNmUyIDEwMDY0NFxuLS0tIGEvZnMvY29yZWR1bXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvY29yZWR1bXAuY1xuQEAgLTUyMCw2ICYjNDM7NTIwLDI1IEBAIHN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXG4gXHRyZXR1cm4gbnI7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBJZiBkbyBub3QgZHVtcCBmZCBsaXN0LCBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieSBhbnkgVk1BXG4mIzQzOyAqIGNhbiBiZSByZWxlYXNlZCBiZWZvcmUgZHVtcGluZyBjb3JlLiBUaGVyZWZvcmUsIHNvbWUgZmlsZSByZWxlYXNlXG4mIzQzOyAqIGxvZ2ljLCBzdWNoIGFzIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkXG4mIzQzOyAqIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaCBlYXJsaWVyLiBOb3RlIHRoYXQgZG9fY29yZWR1bXAoKSBvZnRlblxuJiM0MzsgKiB0YWtlcyBzZXZlcmFsIHNlY29uZHMgb3IgZXZlbiBsb25nZXIgdG8gZXhlY3V0ZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIGNvcmVkdW1wX3ByZV9leGl0KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQsICp0O1xuJiM0MztcbiYjNDM7XHRpZiAobW1fZmxhZ3NfdGVzdChNTUZfRFVNUF9GRF9MSVNULCB0c2stXHUwMDNlbW0pKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7XG4mIzQzO1x0XHRleGl0X2ZpbGVzKHQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGNvcmVkdW1wX3dhaXQoaW50IGV4aXRfY29kZSwgc3RydWN0IGNvcmVfc3RhdGUgKmNvcmVfc3RhdGUpXG4ge1xuIFx0c3RydWN0IHRhc2tfc3RydWN0ICp0c2sgPSBjdXJyZW50O1xuQEAgLTExMjMsNiAmIzQzOzExNDIsOCBAQCBzdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSxcbiBcdGlmIChjbi1cdTAwM2VtYXNrIFx1MDAyNiBDT1JFRFVNUF9SRUpFQ1QpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRjb3JlZHVtcF9wcmVfZXhpdCgpO1xuJiM0MztcbiBcdC8qIGdldCB1cyBhbiB1bnNoYXJlZCBkZXNjcmlwdG9yIHRhYmxlOyBhbG1vc3QgYWx3YXlzIGEgbm8tb3AgKi9cbiBcdC8qIFRoZSBjZWxsIHNwdWZzIGNvcmVkdW1wIGNvZGUgcmVhZHMgdGhlIGZpbGUgZGVzY3JpcHRvciB0YWJsZXMgKi9cbiBcdGlmICh1bnNoYXJlX2ZpbGVzKCkpXG5kaWZmIC0tZ2l0IGEvZnMvZmlsZV90YWJsZS5jIGIvZnMvZmlsZV90YWJsZS5jXG5pbmRleCBjNjhiOGMwYTQwOTdhLi4wMmVlNGU4YjFjZmU4IDEwMDY0NFxuLS0tIGEvZnMvZmlsZV90YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9maWxlX3RhYmxlLmNcbkBAIC01NjgsNyAmIzQzOzU2OCwxMiBAQCBzdGF0aWMgdm9pZCBfX2ZwdXRfZGVmZXJyZWQoc3RydWN0IGZpbGUgKmZpbGUpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdGlmIChsaWtlbHkoIWluX2ludGVycnVwdCgpIFx1MDAyNlx1MDAyNiAhKHRhc2stXHUwMDNlZmxhZ3MgXHUwMDI2IFBGX0tUSFJFQUQpKSkge1xuJiM0MztcdC8qXG4mIzQzO1x0ICogY29yZWR1bXBfcHJlX2V4aXQoKSBtYXkgcmVsZWFzZSBmaWxlcyBiZWZvcmUgZHVtcGluZyBjb3JlLlxuJiM0MztcdCAqIENhbm5vdCB1c2UgdGFza193b3JrIGluIHRoZSBjYXNlLCBuZWVkcyB0byByZWxlYXNlIGZpbGVzXG4mIzQzO1x0ICogZWFybGllci5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSBcdTAwMjZcdTAwMjYgISh0YXNrLVx1MDAzZWZsYWdzIFx1MDAyNiAoUEZfS1RIUkVBRCB8IFBGX0RVTVBDT1JFKSkpKSB7XG4gXHRcdGluaXRfdGFza193b3JrKFx1MDAyNmZpbGUtXHUwMDNlZl90YXNrX3dvcmssIF9fX19mcHV0KTtcbiBcdFx0aWYgKCF0YXNrX3dvcmtfYWRkKHRhc2ssIFx1MDAyNmZpbGUtXHUwMDNlZl90YXNrX3dvcmssIFRXQV9SRVNVTUUpKVxuIFx0XHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcbmluZGV4IGI1ZDRjZDNiMDY3YmYuLmEyN2ZmODhhOWFkOGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaFxuQEAgLTE5NDcsMTQgJiM0MzsxOTQ3LDE2IEBAIGVudW0ge1xuICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDhcbiAjZGVmaW5lIE1NRl9EVU1QX0RBWF9QUklWQVRFXHQ5XG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVEXHQxMFxuJiM0MzsjZGVmaW5lIE1NRl9EVU1QX0ZEX0xJU1RcdDExXG4gXG4gI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfU0hJRlRcdE1NRl9EVU1QQUJMRV9CSVRTXG4tI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1x0OVxuJiM0MzsjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTXHQxMFxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX01BU0sgXFxcbiBcdCgoQklUKE1NRl9EVU1QX0ZJTFRFUl9CSVRTKSAtIDEpIFx1MDAzY1x1MDAzYyBNTUZfRFVNUF9GSUxURVJfU0hJRlQpXG4gI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfREVGQVVMVCBcXFxuIFx0KEJJVChNTUZfRFVNUF9BTk9OX1BSSVZBVEUpIHwgQklUKE1NRl9EVU1QX0FOT05fU0hBUkVEKSB8IFxcXG4tXHQgQklUKE1NRl9EVU1QX0hVR0VUTEJfUFJJVkFURSkgfCBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGKVxuJiM0MztcdCAoMSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYgfFxcXG4mIzQzO1x0ICgxIFx1MDAzY1x1MDAzYyBNTUZfRFVNUF9GRF9MSVNUKSlcbiBcbiAjaWZkZWYgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTXG4gIyBkZWZpbmUgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRlx0QklUKE1NRl9EVU1QX0VMRl9IRUFERVJTKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDT1JFRFVNUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zmc19jb3JlZHVtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBkdW1wIGxvZ2ljIHRvIGFsbG93IHJlbGVhc2luZyBmaWxlcyBiZWZvcmUgZHVtcGluZyBjb3JlIGlmIGBNTUZfRFVNUF9GRF9MSVNUYCBpcyBub3Qgc2V0IGluIGBjb3JlZHVtcF9maWx0ZXJgLiBJdCBhbHNvIGNoYW5nZXMgYF9fZnB1dF9kZWZlcnJlZGAgdG8gYXZvaWQgdXNpbmcgYHRhc2tfd29ya2Agd2hlbiBgUEZfRFVNUENPUkVgIGlzIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIChjb3JlZHVtcCBhbmQgZmlsZSByZWZlcmVuY2UgbWFuYWdlbWVudCkgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0ZjFmMjhkZTdmZDZiOTJmZjhhZGJlYjM0NWJkNzE0YTAyMjY2NWVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAwNjozNzoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0CmluZGV4IDI3MTg5ZjZlMDA0ZWUuLmJkYWVmNjRhODFmYmEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdApAQCAtMTkyOSw3ICYjNDM7MTkyOSw3IEBAIHdpbGwgYmUgZHVtcGVkIHdoZW4gdGhlICZsdDtwaWQmZ3Q7IHByb2Nlc3MgaXMgZHVtcGVkLiBjb3JlZHVtcF9maWx0ZXIgaXMgYSBiaXRtYXNrCiBvZiBtZW1vcnkgdHlwZXMuIElmIGEgYml0IG9mIHRoZSBiaXRtYXNrIGlzIHNldCwgbWVtb3J5IHNlZ21lbnRzIG9mIHRoZQogY29ycmVzcG9uZGluZyBtZW1vcnkgdHlwZSBhcmUgZHVtcGVkLCBvdGhlcndpc2UgdGhleSBhcmUgbm90IGR1bXBlZC4KIAotVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOgomIzQzO1RoZSBmb2xsb3dpbmcgMTAgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6CiAKICAgLSAoYml0IDApIGFub255bW91cyBwcml2YXRlIG1lbW9yeQogICAtIChiaXQgMSkgYW5vbnltb3VzIHNoYXJlZCBtZW1vcnkKQEAgLTE5NDEsNiAmIzQzOzE5NDEsNyBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6CiAgIC0gKGJpdCA2KSBodWdldGxiIHNoYXJlZCBtZW1vcnkKICAgLSAoYml0IDcpIERBWCBwcml2YXRlIG1lbW9yeQogICAtIChiaXQgOCkgREFYIHNoYXJlZCBtZW1vcnkKJiM0MzsgIC0gKGJpdCA5KSBmZCBsaXN0CiAKICAgTm90ZSB0aGF0IE1NSU8gcGFnZXMgc3VjaCBhcyBmcmFtZSBidWZmZXIgYXJlIG5ldmVyIGR1bXBlZCBhbmQgdkRTTyBwYWdlcwogICBhcmUgYWx3YXlzIGR1bXBlZCByZWdhcmRsZXNzIG9mIHRoZSBiaXRtYXNrIHN0YXR1cy4KQEAgLTE5NDgsMTMgJiM0MzsxOTQ5LDIyIEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDoKICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbiYjMzk7dCBhZmZlY3QgaHVnZXRsYiBvciBEQVggbWVtb3J5LiBodWdldGxiIG1lbW9yeSBpcwogICBvbmx5IGFmZmVjdGVkIGJ5IGJpdCA1LTYsIGFuZCBEQVggaXMgb25seSBhZmZlY3RlZCBieSBiaXRzIDctOC4KIAomIzQzOyAgTm90ZSB0aGF0IGJpdCA5IGlzIHNldCBieSBkZWZhdWx0IGJlY2F1c2UgdG9vbHMgbGlrZSBzeXN0ZW1kLWNvcmVkdW1wIGdvCiYjNDM7ICB0aHJvdWdoIHRoZSBmZHMuIElmIHlvdSBkbyBub3Qgc2V0IGJpdCA5LCBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieQomIzQzOyAgYW55IFZNQSBhcmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gU29tZSBmaWxlIHJlbGVhc2UgbG9naWMsIHN1Y2ggYXMKJiM0MzsgIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaAomIzQzOyAgZWFybGllci4KJiM0MzsKJiM0MztUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgyMzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnkKJiM0MztzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcywgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhbmQgZmQgbGlzdCBhcmUgZHVtcGVkLgomIzQzOwogVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnkKIHNlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzIGFuZCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFyZSBkdW1wZWQuCiAKIElmIHlvdSBkb24mIzM5O3Qgd2FudCB0byBkdW1wIGFsbCBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzIGF0dGFjaGVkIHRvIHBpZCAxMjM0LAotd3JpdGUgMHgzMSB0byB0aGUgcHJvY2VzcyYjMzk7cyBwcm9jIGZpbGU6OgomIzQzO3dyaXRlIDB4MjMxIHRvIHRoZSBwcm9jZXNzJiMzOTtzIHByb2MgZmlsZTo6CiAKLSAgJCBlY2hvIDB4MzEgJmd0OyAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlcgomIzQzOyAgJCBlY2hvIDB4MjMxICZndDsgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXIKIAogV2hlbiBhIG5ldyBwcm9jZXNzIGlzIGNyZWF0ZWQsIHRoZSBwcm9jZXNzIGluaGVyaXRzIHRoZSBiaXRtYXNrIHN0YXR1cyBmcm9tIGl0cwogcGFyZW50LiBJdCBpcyB1c2VmdWwgdG8gc2V0IHVwIGNvcmVkdW1wX2ZpbHRlciBiZWZvcmUgdGhlIHByb2dyYW0gcnVucy4KZGlmZiAtLWdpdCBhL2ZzL2NvcmVkdW1wLmMgYi9mcy9jb3JlZHVtcC5jCmluZGV4IGU2OGE3NmZmOTJhMzguLmQzNzhlNjljNjM2ZTIgMTAwNjQ0Ci0tLSBhL2ZzL2NvcmVkdW1wLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvY29yZWR1bXAuYwpAQCAtNTIwLDYgJiM0Mzs1MjAsMjUgQEAgc3RhdGljIGludCB6YXBfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKIAlyZXR1cm4gbnI7CiB9CiAKJiM0MzsvKgomIzQzOyAqIElmIGRvIG5vdCBkdW1wIGZkIGxpc3QsIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUEKJiM0MzsgKiBjYW4gYmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gVGhlcmVmb3JlLCBzb21lIGZpbGUgcmVsZWFzZQomIzQzOyAqIGxvZ2ljLCBzdWNoIGFzIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkCiYjNDM7ICogYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoIGVhcmxpZXIuIE5vdGUgdGhhdCBkb19jb3JlZHVtcCgpIG9mdGVuCiYjNDM7ICogdGFrZXMgc2V2ZXJhbCBzZWNvbmRzIG9yIGV2ZW4gbG9uZ2VyIHRvIGV4ZWN1dGUuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudCwgKnQ7CiYjNDM7CiYjNDM7CWlmIChtbV9mbGFnc190ZXN0KE1NRl9EVU1QX0ZEX0xJU1QsIHRzay0mZ3Q7bW0pKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7CiYjNDM7CQlleGl0X2ZpbGVzKHQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBjb3JlZHVtcF93YWl0KGludCBleGl0X2NvZGUsIHN0cnVjdCBjb3JlX3N0YXRlICpjb3JlX3N0YXRlKQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudDsKQEAgLTExMjMsNiAmIzQzOzExNDIsOCBAQCBzdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSwKIAlpZiAoY24tJmd0O21hc2sgJmFtcDsgQ09SRURVTVBfUkVKRUNUKQogCQlyZXR1cm47CiAKJiM0MzsJY29yZWR1bXBfcHJlX2V4aXQoKTsKJiM0MzsKIAkvKiBnZXQgdXMgYW4gdW5zaGFyZWQgZGVzY3JpcHRvciB0YWJsZTsgYWxtb3N0IGFsd2F5cyBhIG5vLW9wICovCiAJLyogVGhlIGNlbGwgc3B1ZnMgY29yZWR1bXAgY29kZSByZWFkcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRhYmxlcyAqLwogCWlmICh1bnNoYXJlX2ZpbGVzKCkpCmRpZmYgLS1naXQgYS9mcy9maWxlX3RhYmxlLmMgYi9mcy9maWxlX3RhYmxlLmMKaW5kZXggYzY4YjhjMGE0MDk3YS4uMDJlZTRlOGIxY2ZlOCAxMDA2NDQKLS0tIGEvZnMvZmlsZV90YWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2ZpbGVfdGFibGUuYwpAQCAtNTY4LDcgJiM0Mzs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKQogCQlyZXR1cm47CiAJfQogCi0JaWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgJmFtcDsmYW1wOyAhKHRhc2stJmd0O2ZsYWdzICZhbXA7IFBGX0tUSFJFQUQpKSkgewomIzQzOwkvKgomIzQzOwkgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuCiYjNDM7CSAqIENhbm5vdCB1c2UgdGFza193b3JrIGluIHRoZSBjYXNlLCBuZWVkcyB0byByZWxlYXNlIGZpbGVzCiYjNDM7CSAqIGVhcmxpZXIuCiYjNDM7CSAqLwomIzQzOwlpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSAmYW1wOyZhbXA7ICEodGFzay0mZ3Q7ZmxhZ3MgJmFtcDsgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkgewogCQlpbml0X3Rhc2tfd29yaygmYW1wO2ZpbGUtJmd0O2ZfdGFza193b3JrLCBfX19fZnB1dCk7CiAJCWlmICghdGFza193b3JrX2FkZCh0YXNrLCAmYW1wO2ZpbGUtJmd0O2ZfdGFza193b3JrLCBUV0FfUkVTVU1FKSkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaAppbmRleCBiNWQ0Y2QzYjA2N2JmLi5hMjdmZjg4YTlhZDhhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oCkBAIC0xOTQ3LDE0ICYjNDM7MTk0NywxNiBAQCBlbnVtIHsKICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDgKICNkZWZpbmUgTU1GX0RVTVBfREFYX1BSSVZBVEUJOQogI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVECTEwCiYjNDM7I2RlZmluZSBNTUZfRFVNUF9GRF9MSVNUCTExCiAKICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX1NISUZUCU1NRl9EVU1QQUJMRV9CSVRTCi0jZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTCTkKJiM0MzsjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTCTEwCiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9NQVNLIFwKIAkoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSAmbHQ7Jmx0OyBNTUZfRFVNUF9GSUxURVJfU0hJRlQpCiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9ERUZBVUxUIFwKIAkoQklUKE1NRl9EVU1QX0FOT05fUFJJVkFURSkgfCBCSVQoTU1GX0RVTVBfQU5PTl9TSEFSRUQpIHwgXAotCSBCSVQoTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYpCiYjNDM7CSAoMSAmbHQ7Jmx0OyBNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRiB8XAomIzQzOwkgKDEgJmx0OyZsdDsgTU1GX0RVTVBfRkRfTElTVCkpCiAKICNpZmRlZiBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMKICMgZGVmaW5lIE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYJQklUKE1NRl9EVU1QX0VMRl9IRUFERVJTKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjk4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBDb3JlZHVtcCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgY29yZWR1bXAgcHJvY2VzcyBpbiB0aGUgTGludXgga2VybmVsLiBTZWVtcyBsaWtlIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgY2hhbmdlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBhIG5ldyBiaXQsIGJpdCA5LCBgTU1GX0RVTVBfRkRfTElTVGAsIHRvIHRoZSBgY29yZWR1bXBfZmlsdGVyYC4gIFRoZSBjb3JlIGlkZWEgaXMsIGlmIHRoaXMgYml0IGlzbiYjMzk7dCBzZXQsIHRoZSBgY29yZWR1bXBfcHJlX2V4aXQoKWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgd2l0aGluIGBkb19jb3JlZHVtcCgpYCB0byBtYWtlIHN1cmUgZmlsZSBkZXNjcmlwdG9ycyBhcmUgY2xlYW5lZCB1cCAqYmVmb3JlKiB0aGUgY29yZWR1bXAgYWN0dWFsbHkgaGFwcGVucy4KCkNydWNpYWxseSwgdGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgX19mcHV0X2RlZmVycmVkYCBpbiBgZnMvZmlsZV90YWJsZS5jYC4gIFRoZSBtb2RpZmljYXRpb24gdGhlcmUgaW52b2x2ZXMgY2hlY2tpbmcgdGhlIGBQRl9EVU1QQ09SRWAgZmxhZy4gSWYgdGhpcyBmbGFnIGlzIHNldCwgaXQgbWVhbnMgd2UmIzM5O3JlIGluIHRoZSBtaWRkbGUgb2YgYSBjb3JlZHVtcCwgYW5kIGl0JiMzOTtzIGJ5cGFzc2luZyB0aGUgYHRhc2tfd29ya2AgbWVjaGFuaXNtLCBlbnN1cmluZyBmaWxlcyBhcmUgcmVsZWFzZWQgZXZlbiBlYXJsaWVyLiBUaGlzIGlzIGRlZmluaXRlbHkgYWJvdXQgb3B0aW1pemluZyB0aGUgY2xlYW51cCBwaGFzZSBwcmlvciB0byB0aGUgZHVtcC4KCk5vdywgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmU6IGBkb19jb3JlZHVtcGAgaXMgY2FsbGluZyBgY29yZWR1bXBfcHJlX2V4aXQoKWAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYGV4aXRfZmlsZXModClgIG9uIGVhY2ggdGhyZWFkIGluIHRoZSB0aHJlYWQgZ3JvdXAuICBUaGF0JiMzOTtzIHRoZSBmaWxlIGNsZWFudXAgc2VxdWVuY2UuIEFuZCB0aGVuLCB0aGUgbW9kaWZpY2F0aW9uIHRvIGBfX2ZwdXRfZGVmZXJyZWRgIGlzIHRoZSBrZXkg4oCTIGl0JiMzOTtzIG1ha2luZyB0aGUgZmlsZSByZWxlYXNlIGhhcHBlbiBtb3JlIGVhZ2VybHkgdW5kZXIgY29yZWR1bXAgY29uZGl0aW9ucy4KClRoaXMgaXMgY29yZSBrZXJuZWwgbG9naWMg4oCTIGl0JiMzOTtzIGNoYW5naW5nIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgZmlsZSBkZXNjcmlwdG9ycyBkdXJpbmcgY3JpdGljYWwgY3Jhc2ggZHVtcCBzY2VuYXJpb3MuIERlZmluaXRlbHksIHRoaXMgd2FycmFudHMgZnV6emluZzsgaXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIGV4cG9zZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIG90aGVyIHN1YnRsZSBpc3N1ZXMuIFNvLCBiYXNlZCBvbiB0aGlzIHVuZGVyc3RhbmRpbmcsIEkmIzM5O2QgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3csIGZvciBwb3RlbnRpYWwgZm9jdXMgc3ltYm9scyB0byB0YXJnZXQgaW4gZnV6emluZywgYGRvX2NvcmVkdW1wYCBpcyBkZWZpbml0ZWx5IGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QuIGBjb3JlZHVtcF9wcmVfZXhpdCgpYCBpcyBhbHNvIHJlbGV2YW50LCBidXQgaXQmIzM5O3MgbWFya2VkIGFzIGBzdGF0aWNgLCBzbyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoYXQgbWlnaHQgYWZmZWN0IGRpcmVjdCBjb3ZlcmFnZS4gSSBtYXkgYWxzbyB3YW50IHRvIGZvY3VzIG9uIHZhcmlhbnRzIG9mIGBfX2ZwdXRfZGVmZXJyZWRgLiBQZXJoYXBzLCBgZnB1dGAsIGBfX2ZwdXRgLCBvciBgZnB1dF9tYW55YCBhcyB0aGUgc3RhdGljIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIHRob3NlLgoKSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgZnMvY29yZWR1bXAuY2AgYW5kIGBmcy9maWxlX3RhYmxlLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGZpbmVyIGRldGFpbHMgb2YgdGhlc2UgY2hhbmdlcyBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoaW4gdGhlIGNvZGUgYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb3JlZHVtcF9wcmVfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2NvcmVkdW1wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY29yZWR1bXAuYz01MDQ9c3RhdGljIGludCB6YXBfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayxcbi0tXG5mcy9jb3JlZHVtcC5jLTUyOS0gKi9cbmZzL2NvcmVkdW1wLmM6NTMwOnN0YXRpYyB2b2lkIGNvcmVkdW1wX3ByZV9leGl0KHZvaWQpXG5mcy9jb3JlZHVtcC5jLTUzMS17XG4tLVxuZnMvY29yZWR1bXAuYz0xMTExPXN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxuLS1cbmZzL2NvcmVkdW1wLmMtMTE0NC1cbmZzL2NvcmVkdW1wLmM6MTE0NTpcdGNvcmVkdW1wX3ByZV9leGl0KCk7XG5mcy9jb3JlZHVtcC5jLTExNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc1MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqU3RhdGljIEZ1bmN0aW9ucyBpbiBDb3JlIER1bXAgSGFuZGxpbmcqKgoKT2theSwgc28gYGNvcmVkdW1wX3ByZV9leGl0YCBpcyBkZWZpbml0ZWx5IHN0YXRpYy4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcHMgaXQgc2NvcGVkIGFwcHJvcHJpYXRlbHkuIE5vdywgSSYjMzk7bSBwcmV0dHkgc3VyZSBgZG9fY29yZWR1bXBgIGlzIGFsc28gc3RhdGljLCBidXQgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQuIEl0JiMzOTtzIGltcG9ydGFudCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhlIHNjb3BlIGFuZCBsaW5rYWdlIGluIHRoZXNlIGNyaXRpY2FsIGZ1bmN0aW9ucywgZXNwZWNpYWxseSB3aXRoaW4gdGhlIGNvcmUgZHVtcCBoYW5kbGluZyBjb250ZXh0LiBXZSBjYW4mIzM5O3QgYWZmb3JkIGFueSBhY2NpZGVudGFsIGV4dGVybmFsIGFjY2VzcyBvciBuYW1lIGNvbGxpc2lvbnMgaGVyZS4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBgZG9fY29yZWR1bXBgIGlzIGRlY2xhcmVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19jb3JlZHVtcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2NvcmVkdW1wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY29yZWR1bXAuYz01MDQ9c3RhdGljIGludCB6YXBfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayxcbi0tXG5mcy9jb3JlZHVtcC5jLTUyNi0gKiBsb2dpYywgc3VjaCBhcyBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZFxuZnMvY29yZWR1bXAuYzo1Mjc6ICogYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoIGVhcmxpZXIuIE5vdGUgdGhhdCBkb19jb3JlZHVtcCgpIG9mdGVuXG5mcy9jb3JlZHVtcC5jLTUyOC0gKiB0YWtlcyBzZXZlcmFsIHNlY29uZHMgb3IgZXZlbiBsb25nZXIgdG8gZXhlY3V0ZS5cbi0tXG5mcy9jb3JlZHVtcC5jPTEwOTk9c3RhdGljIGlubGluZSBib29sIGNvcmVkdW1wX3NraXAoY29uc3Qgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSxcbi0tXG5mcy9jb3JlZHVtcC5jLTExMTAtXG5mcy9jb3JlZHVtcC5jOjExMTE6c3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG5mcy9jb3JlZHVtcC5jLTExMTItXHRcdFx0c2l6ZV90ICoqYXJndiwgaW50ICphcmdjLCBjb25zdCBzdHJ1Y3QgbGludXhfYmluZm10ICpiaW5mbXQpXG4tLVxuZnMvY29yZWR1bXAuYz0xMTgyPXZvaWQgdmZzX2NvcmVkdW1wKGNvbnN0IGtlcm5lbF9zaWdpbmZvX3QgKnNpZ2luZm8pXG4tLVxuZnMvY29yZWR1bXAuYy0xMjIwLVx0c2NvcGVkX3dpdGhfY3JlZHMoY3JlZClcbmZzL2NvcmVkdW1wLmM6MTIyMTpcdFx0ZG9fY29yZWR1bXAoXHUwMDI2Y24sIFx1MDAyNmNwcm0sIFx1MDAyNmFyZ3YsIFx1MDAyNmFyZ2MsIGJpbmZtdCk7XG5mcy9jb3JlZHVtcC5jLTEyMjItXHRjb3JlZHVtcF9jbGVhbnVwKFx1MDAyNmNuLCBcdTAwMjZjcHJtKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvcmUgRHVtcCBFbnRyeSBQb2ludCoqCgpSaWdodCwgc28gYHZmc19jb3JlZHVtcGAgaXMgdGhlIGV4dGVybmFsbHkgdmlzaWJsZSwgbm9uLXN0YXRpYyBlbnRyeSBwb2ludCBmb3IgY29yZSBkdW1wcy4gR29vZC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBmcm9tIHRoZXJlLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGxvb2sgZm9yIHJlbGF0ZWQgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gZmlsZSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdoZXJlIGZpbGVzIGFyZSBjbG9zZWQsIHBvdGVudGlhbGx5IGRlZmVycmVkLiBPa2F5LCBteSBodW5jaCBpcyB0byBjaGVjayBgZnMvZmlsZV90YWJsZS5jYCwgYW5kIEkmIzM5O20gemVyb2luZyBpbiBvbiBgX19mcHV0X2RlZmVycmVkYC4gVGhhdCYjMzk7cyBsaWtlbHkgd2hlcmUgc29tZSBjcml0aWNhbCBvcGVyYXRpb25zIGR1cmluZyBmaWxlIGNsb3N1cmUgYXJlIGhhcHBlbmluZywgYW5kIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gaG93IGNvcmUgZHVtcCBpbmZvcm1hdGlvbiBpcyBhY3R1YWxseSBoYW5kbGVkIGJlZm9yZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGZ1bGx5IHJlbGVhc2VkLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIG5leHQgc3RlcCBpbiB0cmFjaW5nIHRoZSBjYWxsIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19mcHV0X2RlZmVycmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZmlsZV90YWJsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2ZpbGVfdGFibGUuYz01NjA9RVhQT1JUX1NZTUJPTF9HUEwoZmx1c2hfZGVsYXllZF9mcHV0KTtcbmZzL2ZpbGVfdGFibGUuYy01NjEtXG5mcy9maWxlX3RhYmxlLmM6NTYyOnN0YXRpYyB2b2lkIF9fZnB1dF9kZWZlcnJlZChzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2ZpbGVfdGFibGUuYy01NjMte1xuLS1cbmZzL2ZpbGVfdGFibGUuYz01OTE9dm9pZCBmcHV0KHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2ZpbGVfdGFibGUuYy01OTMtXHRpZiAodW5saWtlbHkoZmlsZV9yZWZfcHV0KFx1MDAyNmZpbGUtXHUwMDNlZl9yZWYpKSlcbmZzL2ZpbGVfdGFibGUuYzo1OTQ6XHRcdF9fZnB1dF9kZWZlcnJlZChmaWxlKTtcbmZzL2ZpbGVfdGFibGUuYy01OTUtfVxuLS1cbmZzL2ZpbGVfdGFibGUuYz02MzE9dm9pZCBmcHV0X2Nsb3NlKHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2ZpbGVfdGFibGUuYy02MzMtXHRpZiAoZmlsZV9yZWZfcHV0X2Nsb3NlKFx1MDAyNmZpbGUtXHUwMDNlZl9yZWYpKVxuZnMvZmlsZV90YWJsZS5jOjYzNDpcdFx0X19mcHV0X2RlZmVycmVkKGZpbGUpO1xuZnMvZmlsZV90YWJsZS5jLTYzNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgxNgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIENvcmUgRHVtcCBFbnRyeSBQb2ludHMgYW5kIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgZW50cnkgcG9pbnRzIGZvciBjb3JlIGR1bXAgZnVuY3Rpb25hbGl0eSBoZXJlLiBJIHNlZSB0aGF0IGBmcHV0YCBhbmQgYGZwdXRfY2xvc2VgIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW52b2x2ZWQsIGFuZCBhbHNvIGB2ZnNfY29yZWR1bXBgIGlzIHJlbGV2YW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoYXQgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCB0byBtYWtlIGFsbCB0aGlzIHdvcms/IEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBMZXQgbWUgc2VlLi4uIGFoYSwgbG9va3MgbGlrZSBgQ09ORklHX0NPUkVEVU1QYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYGZzL2NvcmVkdW1wLmNgLiBHb3QgaXQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ09SRURVTVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQ9MTQ1PWNvbmZpZyBCSU5GTVRfTUlTQ1xuLS1cbmZzL0tjb25maWcuYmluZm10LTE3MC1cbmZzL0tjb25maWcuYmluZm10OjE3MTpjb25maWcgQ09SRURVTVBcbmZzL0tjb25maWcuYmluZm10LTE3Mi1cdGJvb2wgXCYjMzQ7RW5hYmxlIGNvcmUgZHVtcCBzdXBwb3J0XCYjMzQ7IGlmIEVYUEVSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTIxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBDb3JlIER1bXAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBrZXl3b3JkIHRoYXQganVtcHMgb3V0IGltbWVkaWF0ZWx5IGlzIGBDT1JFRFVNUGAuIFJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSB1c3VhbCBzdXNwZWN0cyAtIEkgbmVlZCB0byBzdGFydCBjaGVja2luZyBgZnMvZmlsZV90YWJsZS5jYCwgYmVjYXVzZSBpdCYjMzk7cyBhbHdheXMgY29tcGlsZWQgaW4uIE9rYXksIEkmIzM5O3ZlIGdvdCBpdCwgYml0IDExLCBgTU1GX0RVTVBfRkRfTElTVGAuIEludGVyZXN0aW5nLgoKTm93LCB0aGUgcGF0Y2ggdG91Y2hlcyBgZG9fY29yZWR1bXBgIGFuZCBgX19mcHV0X2RlZmVycmVkYC4gVGhlIGNvcmUgaWRlYSBpcyB0byBjaGFuZ2UgaG93IHdlIHJlbGVhc2UgZmlsZXMgKmJlZm9yZSogYSBjb3JlIGR1bXAsIGlmIGBNTUZfRFVNUF9GRF9MSVNUYCBpcyAqbm90KiBzZXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIG9wdGltaXphdGlvbi4gVGhlIHNlY29uZCBjaGFuZ2UgYXZvaWRzIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQsIGFsc28gbG9naWNhbC4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYyDigJMgc3BlY2lmaWNhbGx5LCBob3cgY29yZSBkdW1wcyBhbmQgZmlsZSByZWZlcmVuY2VzIGFyZSBtYW5hZ2VkLiBCZWNhdXNlIGl0JiMzOTtzIGZ1bmN0aW9uYWwsIGZ1enppbmcgaXMgZGVmaW5pdGVseSBpbiBvcmRlci4KCkxldCYjMzk7cyBxdWlja2x5IGlkZW50aWZ5IHRoZSBwcmltYXJ5IGZvY3VzIHBvaW50cy4gSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIGB2ZnNfY29yZWR1bXBgLCBgZnB1dGAsIGFuZCBgZnB1dF9jbG9zZWAuIFRoZSBjb25maWd1cmF0aW9uIG5lZWRlZCBpcyBzaW1wbHkgYENPUkVEVU1QYC4gQWxyaWdodCwgSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgdG8gdmVyaWZ5IHRoYXQgYHZmc19jb3JlZHVtcGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZnNfY29yZWR1bXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9jb3JlZHVtcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NvcmVkdW1wLmM9MTExMT1zdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSxcbi0tXG5mcy9jb3JlZHVtcC5jLTExODEtXG5mcy9jb3JlZHVtcC5jOjExODI6dm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbylcbmZzL2NvcmVkdW1wLmMtMTE4My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NzQKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZGlzdGlsbGluZyB0aGVtIGludG8gYSBjb25jaXNlIHN1bW1hcnkgYXMgYSBzZWFzb25lZCBwcm9mZXNzaW9uYWwgd291bGQ6CgoqKkNvcmVkdW1wIEVudHJ5IFBvaW50IEFuYWx5c2lzKioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgYHZmc19jb3JlZHVtcGAgKmlzKiB0aGUga2V5IGVudHJ5IHBvaW50LiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgaG90IHNwb3RzLCBidXQgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgc3lzdGVtLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgd2hldGhlciBgZnB1dGAgaXMgdG9vIGJ1c3kuIERhbW4sIHllYWgsIGBmcHV0YCBpcyBnZXR0aW5nIGhhbW1lcmVkLCBhbmQgc28gaXMgYGZwdXRfY2xvc2VgLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBleHBsaWNpdDogYXZvaWQgc2tld2luZyB0aGUgZGF0YSB3aXRoIGNvbW1vbiBob3QtcGF0aCBmdW5jdGlvbnMsIGFuZCB0aGVzZSBhcmUgdGV4dGJvb2sgZXhhbXBsZXMgb2Ygc3VjaCBmdW5jdGlvbnMuIFRoZXkmIzM5O3JlIGdvaW5nIHRvIGRvbWluYXRlIGFueSBkaXN0cmlidXRpb24sIG1ha2luZyB0aGUgc3BlY2lmaWMgYW5hbHlzaXMgb2YgYHZmc19jb3JlZHVtcGAgbGVzcyBhY2N1cmF0ZS4gU28sIHRoZSBiZXN0IHBhdGggZm9yd2FyZCwgYXMgdGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5LCBpcyB0byBleGNsdWRlIHRob3NlIGdlbmVyaWMgZnVuY3Rpb25zIGFuZCBmb2N1cyBleGNsdXNpdmVseSBvbiBgdmZzX2NvcmVkdW1wYC4gVGltZSB0byBjb25maXJtIHRoZSBjYWxsZXJzIG9mIGB2ZnNfY29yZWR1bXBgIGFuZCBwcm9jZWVkIHdpdGggdGhlIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zmc19jb3JlZHVtcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdD01NTU9ZGlmZmVyZW50IHNldCBvZiBjcmVkZW50aWFscy4gIFRoaXMgaXMgZG9uZSBpbiB0aGUgZm9sbG93aW5nIHBsYWNlczpcbi0tXG5Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdC01NTctICogYGBzeXNfZmFjY2Vzc2F0KClgYC5cbkRvY3VtZW50YXRpb24vc2VjdXJpdHkvY3JlZGVudGlhbHMucnN0OjU1ODogKiBgYHZmc19jb3JlZHVtcCgpYGAuXG5Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdC01NTktICogbmZzNHJlY292ZXIuYy5cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3Q9MjU0PWNvbnN05oyH6ZKI5LiK5pON5L2c77yM5Zug5q2k5LiN6ZyA6KaB6L+b6KGM57G75Z6L6L2s5o2i77yM5L2G6ZyA6KaB5Li05pe25pS+5byDY29uc3TpmZDlrprvvIzku6Xkvr/og73lpJ/kv67mlLlcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3QtNDc3LSAqIGBgc3lzX2ZhY2Nlc3NhdCgpYGAuXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3Q6NDc4OiAqIGBgdmZzX2NvcmVkdW1wKClgYC5cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdC00NzktICogbmZzNHJlY292ZXIuYy5cbi0tXG5mcy9jb3JlZHVtcC5jPTExMTE9c3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4tLVxuZnMvY29yZWR1bXAuYy0xMTgxLVxuZnMvY29yZWR1bXAuYzoxMTgyOnZvaWQgdmZzX2NvcmVkdW1wKGNvbnN0IGtlcm5lbF9zaWdpbmZvX3QgKnNpZ2luZm8pXG5mcy9jb3JlZHVtcC5jLTExODMte1xuLS1cbmluY2x1ZGUvbGludXgvY29yZWR1bXAuaD00OD1pbnQgZHVtcF91c2VyX3JhbmdlKHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG5pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmgtNDktXHRcdCAgICB1bnNpZ25lZCBsb25nIGxlbik7XG5pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmg6NTA6ZXh0ZXJuIHZvaWQgdmZzX2NvcmVkdW1wKGNvbnN0IGtlcm5lbF9zaWdpbmZvX3QgKnNpZ2luZm8pO1xuaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oLTUxLVxuLS1cbmluY2x1ZGUvbGludXgvY29yZWR1bXAuaC02OS0jZWxzZVxuaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oOjcwOnN0YXRpYyBpbmxpbmUgdm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbykge31cbmluY2x1ZGUvbGludXgvY29yZWR1bXAuaC03MS1cbi0tXG5rZXJuZWwvc2lnbmFsLmM9MjgxMD1ib29sIGdldF9zaWduYWwoc3RydWN0IGtzaWduYWwgKmtzaWcpXG4tLVxua2VybmVsL3NpZ25hbC5jLTMwMzAtXHRcdFx0ICovXG5rZXJuZWwvc2lnbmFsLmM6MzAzMTpcdFx0XHR2ZnNfY29yZWR1bXAoXHUwMDI2a3NpZy1cdTAwM2VpbmZvKTtcbmtlcm5lbC9zaWduYWwuYy0zMDMyLVx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MjAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDcmFzaCBEdW1wIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIGtlcm5lbCYjMzk7cyBjcmFzaCBkdW1wIG1lY2hhbmlzbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHZmc19jb3JlZHVtcGAgaXMgYSBwcmV0dHkgZ29vZCBwbGFjZSB0byBzdGFydCwgYXMgSSBjYW4gc2VlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBnZXRfc2lnbmFsYCB3aGVuIGEgcHJvY2VzcyBnb2VzIGJlbGx5LXVwLiBUaGF0IG1ha2VzIGl0IGEgbmF0dXJhbCBmb2NhbCBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBmbG93LgoKTGV0IG1lIHRha2UgYSBsb29rIGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMsIGFuZCBjb25maXJtIHRoYXQgYHZmc19jb3JlZHVtcGAgaXMgaW5kZWVkIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBIbW0sIGBjb3JlZHVtcF9wcmVfZXhpdGAgYW5kIGBkb19jb3JlZHVtcGAgYXJlIHN0YXRpYywgYW5kIHRoZW4gdGhlcmUmIzM5O3MgYWxzbyBgX19mcHV0X2RlZmVycmVkYCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gVGhlc2UgbWlnaHQgYmUgdXNlZnVsLCBidXQgYHZmc19jb3JlZHVtcGAgc2VlbXMgdG8gYmUgdGhlIG1vc3QgYWNjZXNzaWJsZSBhbmQgY2VudHJhbCBlbnRyeSBwb2ludCBmb3IgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4KClNvLCBub3cgdGhhdCBJJiMzOTt2ZSBpZGVudGlmaWVkIGB2ZnNfY29yZWR1bXBgLCBpdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHdoYXQgYENPUkVEVU1QYCBkZXBlbmRzIG9uLCBhbmQgc2VlIGhvdyBtdWNoIHRoZSBjb3JlIGR1bXAgcHJvY2VzcyBpcyBhZmZlY3RlZCBieSBvdGhlciBzdWJzeXN0ZW1zLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQgaW4gd2hpY2ggYENPUkVEVU1QYCBpcyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ09SRURVTVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdD0xNDU9Y29uZmlnIEJJTkZNVF9NSVNDXG4tLVxuZnMvS2NvbmZpZy5iaW5mbXQtMTcwLVxuZnMvS2NvbmZpZy5iaW5mbXQ6MTcxOmNvbmZpZyBDT1JFRFVNUFxuZnMvS2NvbmZpZy5iaW5mbXQtMTcyLVx0Ym9vbCBcJiMzNDtFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcJiMzNDsgaWYgRVhQRVJUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxODIKCQkJCQkJCW91dHB1dDogMTMyCgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvcmUgRHVtcCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBDT1JFRFVNUGAgY29uZmlnIG9wdGlvbiBhbmQgaXQgZGVmYXVsdHMgdG8gJiMzNDt5LCYjMzQ7IHdoaWNoLCBnaXZlbiBteSBleHBlcmllbmNlLCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGUgaGVscCB0ZXh0IGV2ZW4gZXhwbGljaXRseSBzdGF0ZXMgdGhhdCBlbmFibGluZyBpdCBpcyBwcmFjdGljYWxseSBhIG5lY2Vzc2l0eSB1bmxlc3Mgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzeXN0ZW1zIHRoYXQgYXJlIGVpdGhlciBpbmhlcmVudGx5IGRlYnVnLWZyZWUgb3IgcnVuIG5vdGhpbmcgYnV0IGZsYXdsZXNzbHkgd3JpdHRlbiBjb2RlIOKAkyBhbmQgbGV0JiMzOTtzIGJlIGhvbmVzdCwgdGhvc2UgYXJlIHJhcmUuIFRoaXMgbWVhbnMgSSYjMzk7bSBwcmV0dHkgbXVjaCBhZ3JlZWluZyB3aXRoIHRoZSBkZWZhdWx0LiBJdCYjMzk7cyBzYWZlLCBhbmQgbW9zdCBzYW5lIGtlcm5lbCBzZXR1cHMgd2lsbCB3YW50IGNvcmUgZHVtcHMgZW5hYmxlZC4gSSBjYW4gY29uZmlkZW50bHkgY2hlY2sgYENPUkVEVU1QYC4KClRoZSBwYXRjaCBpdHNlbGYgaW52b2x2ZXMgc29tZSBjcnVjaWFsIGNvcmUga2VybmVsIGNoYW5nZXMsIHNwZWNpZmljYWxseSBhcm91bmQgaG93IGNvcmUgZHVtcHMgYXJlIGhhbmRsZWQgd2hlbiBmaWxlIGRlc2NyaXB0b3JzIGFyZSBpbnZvbHZlZC4gVGhlIGxvZ2ljIGFwcGVhcnMgdG8gYmUgZGVhbGluZyB3aXRoIHRoZSByZWxlYXNlIG9mIGZpbGVzIGJlZm9yZSB0aGUgYWN0dWFsIGNvcmUgZHVtcCBoYXBwZW5zLCBjb250aW5nZW50IG9uIHRoZSBgTU1GX0RVTVBfRkRfTElTVGAgc2V0dGluZyB3aXRoaW4gdGhlIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGVyZSYjMzk7cyBhbHNvIHNvbWUgcmVmYWN0b3JpbmcgZ29pbmcgb24gd2l0aCBgX19mcHV0X2RlZmVycmVkYCB0byBieXBhc3MgYHRhc2tfd29ya2Agd2hlbiBgUEZfRFVNUENPUkVgIGlzIGFjdGl2ZS4gVGhpcyBzaWduYWxzIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgdG91Y2hpbmcgY3JpdGljYWwgcGllY2VzIG9mIGNvcmUgZHVtcCBhbmQgZmlsZSByZWZlcmVuY2UgbWFuYWdlbWVudC4gQ29uc2lkZXJpbmcgaXQmIzM5O3MgY29yZSBrZXJuZWwgY29kZSwgcGFydGljdWxhcmx5IHRoZSBjb3JlIGR1bXAgZmxvdywgSSYjMzk7bSBjb25maWRlbnQgd2UgbmVlZCB0byBsb29rIGNsb3NlciBhbmQgcG90ZW50aWFsbHkgZnV6eiB0aGlzIHBhdGNoLgoKTXkgYXR0ZW50aW9uIGlzIGRlZmluaXRlbHkgZHJhd24gdG8gYHZmc19jb3JlZHVtcGAsIGFzIGl0IHdpbGwgbGlrZWx5IGJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IG9yIGludm9sdmVkIGluIHNvbWUgY3JpdGljYWwgcGFydCBvZiB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5LCBzbyB0aGF0IGZ1bmN0aW9uIHdpbGwgYmUgdGhlIGZvY2FsIHBvaW50IG9mIGFueSBkZWVwIGRpdmUgb3IgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPUkVEVU1QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZzX2NvcmVkdW1wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGR1bXAgbG9naWMgdG8gYWxsb3cgcmVsZWFzaW5nIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUgaWYgYE1NRl9EVU1QX0ZEX0xJU1RgIGlzIG5vdCBzZXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAuIEl0IGFsc28gY2hhbmdlcyBgX19mcHV0X2RlZmVycmVkYCB0byBhdm9pZCB1c2luZyBgdGFza193b3JrYCB3aGVuIGBQRl9EVU1QQ09SRWAgaXMgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgKGNvcmVkdW1wIGFuZCBmaWxlIHJlZmVyZW5jZSBtYW5hZ2VtZW50KSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q09SRURVTVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZnNfY29yZWR1bXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyByZWxlYXNpbmcgZmlsZXMgYmVmb3JlIGR1bXBpbmcgY29yZSBpZiBgTU1GX0RVTVBfRkRfTElTVGAgaXMgbm90IHNldCBpbiBgY29yZWR1bXBfZmlsdGVyYC4gSXQgYWxzbyBjaGFuZ2VzIGBfX2ZwdXRfZGVmZXJyZWRgIHRvIGF2b2lkIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyAoY29yZWR1bXAgYW5kIGZpbGUgcmVmZXJlbmNlIG1hbmFnZW1lbnQpIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MjEuODA3NTQzNzI4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2ODQ1OTE3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09SRURVTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZnNfY29yZWR1bXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBkdW1wIGxvZ2ljIHRvIGFsbG93IHJlbGVhc2luZyBmaWxlcyBiZWZvcmUgZHVtcGluZyBjb3JlIGlmIGBNTUZfRFVNUF9GRF9MSVNUYCBpcyBub3Qgc2V0IGluIGBjb3JlZHVtcF9maWx0ZXJgLiBJdCBhbHNvIGNoYW5nZXMgYF9fZnB1dF9kZWZlcnJlZGAgdG8gYXZvaWQgdXNpbmcgYHRhc2tfd29ya2Agd2hlbiBgUEZfRFVNUENPUkVgIGlzIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIChjb3JlZHVtcCBhbmQgZmlsZSByZWZlcmVuY2UgbWFuYWdlbWVudCkgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjIxLjgwNzU1MTI2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMwMzI3NTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGYxZjI4ZGU3ZmQ2YjkyZmY4YWRiZWIzNDViZDcxNGEwMjI2NjVlZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyA3IDA2OjM3OjIwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XFxuaW5kZXggMjcxODlmNmUwMDRlZS4uYmRhZWY2NGE4MWZiYSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxcbkBAIC0xOTI5LDcgKzE5MjksNyBAQCB3aWxsIGJlIGR1bXBlZCB3aGVuIHRoZSBcXHUwMDNjcGlkXFx1MDAzZSBwcm9jZXNzIGlzIGR1bXBlZC4gY29yZWR1bXBfZmlsdGVyIGlzIGEgYml0bWFza1xcbiBvZiBtZW1vcnkgdHlwZXMuIElmIGEgYml0IG9mIHRoZSBiaXRtYXNrIGlzIHNldCwgbWVtb3J5IHNlZ21lbnRzIG9mIHRoZVxcbiBjb3JyZXNwb25kaW5nIG1lbW9yeSB0eXBlIGFyZSBkdW1wZWQsIG90aGVyd2lzZSB0aGV5IGFyZSBub3QgZHVtcGVkLlxcbiBcXG4tVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxcbitUaGUgZm9sbG93aW5nIDEwIG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxcbiBcXG4gICAtIChiaXQgMCkgYW5vbnltb3VzIHByaXZhdGUgbWVtb3J5XFxuICAgLSAoYml0IDEpIGFub255bW91cyBzaGFyZWQgbWVtb3J5XFxuQEAgLTE5NDEsNiArMTk0MSw3IEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDpcXG4gICAtIChiaXQgNikgaHVnZXRsYiBzaGFyZWQgbWVtb3J5XFxuICAgLSAoYml0IDcpIERBWCBwcml2YXRlIG1lbW9yeVxcbiAgIC0gKGJpdCA4KSBEQVggc2hhcmVkIG1lbW9yeVxcbisgIC0gKGJpdCA5KSBmZCBsaXN0XFxuIFxcbiAgIE5vdGUgdGhhdCBNTUlPIHBhZ2VzIHN1Y2ggYXMgZnJhbWUgYnVmZmVyIGFyZSBuZXZlciBkdW1wZWQgYW5kIHZEU08gcGFnZXNcXG4gICBhcmUgYWx3YXlzIGR1bXBlZCByZWdhcmRsZXNzIG9mIHRoZSBiaXRtYXNrIHN0YXR1cy5cXG5AQCAtMTk0OCwxMyArMTk0OSwyMiBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XFxuICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbid0IGFmZmVjdCBodWdldGxiIG9yIERBWCBtZW1vcnkuIGh1Z2V0bGIgbWVtb3J5IGlzXFxuICAgb25seSBhZmZlY3RlZCBieSBiaXQgNS02LCBhbmQgREFYIGlzIG9ubHkgYWZmZWN0ZWQgYnkgYml0cyA3LTguXFxuIFxcbisgIE5vdGUgdGhhdCBiaXQgOSBpcyBzZXQgYnkgZGVmYXVsdCBiZWNhdXNlIHRvb2xzIGxpa2Ugc3lzdGVtZC1jb3JlZHVtcCBnb1xcbisgIHRocm91Z2ggdGhlIGZkcy4gSWYgeW91IGRvIG5vdCBzZXQgYml0IDksIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5XFxuKyAgYW55IFZNQSBhcmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gU29tZSBmaWxlIHJlbGVhc2UgbG9naWMsIHN1Y2ggYXNcXG4rICBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZCBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2hcXG4rICBlYXJsaWVyLlxcbitcXG4rVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MjMzOyB0aGlzIG1lYW5zIGFsbCBhbm9ueW1vdXMgbWVtb3J5XFxuK3NlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzLCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFuZCBmZCBsaXN0IGFyZSBkdW1wZWQuXFxuK1xcbiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxcbiBzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcyBhbmQgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhcmUgZHVtcGVkLlxcbiBcXG4gSWYgeW91IGRvbid0IHdhbnQgdG8gZHVtcCBhbGwgc2hhcmVkIG1lbW9yeSBzZWdtZW50cyBhdHRhY2hlZCB0byBwaWQgMTIzNCxcXG4td3JpdGUgMHgzMSB0byB0aGUgcHJvY2VzcydzIHByb2MgZmlsZTo6XFxuK3dyaXRlIDB4MjMxIHRvIHRoZSBwcm9jZXNzJ3MgcHJvYyBmaWxlOjpcXG4gXFxuLSAgJCBlY2hvIDB4MzEgXFx1MDAzZSAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlclxcbisgICQgZWNobyAweDIzMSBcXHUwMDNlIC9wcm9jLzEyMzQvY29yZWR1bXBfZmlsdGVyXFxuIFxcbiBXaGVuIGEgbmV3IHByb2Nlc3MgaXMgY3JlYXRlZCwgdGhlIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGJpdG1hc2sgc3RhdHVzIGZyb20gaXRzXFxuIHBhcmVudC4gSXQgaXMgdXNlZnVsIHRvIHNldCB1cCBjb3JlZHVtcF9maWx0ZXIgYmVmb3JlIHRoZSBwcm9ncmFtIHJ1bnMuXFxuZGlmZiAtLWdpdCBhL2ZzL2NvcmVkdW1wLmMgYi9mcy9jb3JlZHVtcC5jXFxuaW5kZXggZTY4YTc2ZmY5MmEzOC4uZDM3OGU2OWM2MzZlMiAxMDA2NDRcXG4tLS0gYS9mcy9jb3JlZHVtcC5jXFxuKysrIGIvZnMvY29yZWR1bXAuY1xcbkBAIC01MjAsNiArNTIwLDI1IEBAIHN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXFxuIFxcdHJldHVybiBucjtcXG4gfVxcbiBcXG4rLypcXG4rICogSWYgZG8gbm90IGR1bXAgZmQgbGlzdCwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQVxcbisgKiBjYW4gYmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gVGhlcmVmb3JlLCBzb21lIGZpbGUgcmVsZWFzZVxcbisgKiBsb2dpYywgc3VjaCBhcyBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZFxcbisgKiBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2ggZWFybGllci4gTm90ZSB0aGF0IGRvX2NvcmVkdW1wKCkgb2Z0ZW5cXG4rICogdGFrZXMgc2V2ZXJhbCBzZWNvbmRzIG9yIGV2ZW4gbG9uZ2VyIHRvIGV4ZWN1dGUuXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBjb3JlZHVtcF9wcmVfZXhpdCh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudCwgKnQ7XFxuK1xcbitcXHRpZiAobW1fZmxhZ3NfdGVzdChNTUZfRFVNUF9GRF9MSVNULCB0c2stXFx1MDAzZW1tKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0Zm9yX2VhY2hfdGhyZWFkKHRzaywgdCkge1xcbitcXHRcXHRleGl0X2ZpbGVzKHQpO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgY29yZWR1bXBfd2FpdChpbnQgZXhpdF9jb2RlLCBzdHJ1Y3QgY29yZV9zdGF0ZSAqY29yZV9zdGF0ZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQ7XFxuQEAgLTExMjMsNiArMTE0Miw4IEBAIHN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxcbiBcXHRpZiAoY24tXFx1MDAzZW1hc2sgXFx1MDAyNiBDT1JFRFVNUF9SRUpFQ1QpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdGNvcmVkdW1wX3ByZV9leGl0KCk7XFxuK1xcbiBcXHQvKiBnZXQgdXMgYW4gdW5zaGFyZWQgZGVzY3JpcHRvciB0YWJsZTsgYWxtb3N0IGFsd2F5cyBhIG5vLW9wICovXFxuIFxcdC8qIFRoZSBjZWxsIHNwdWZzIGNvcmVkdW1wIGNvZGUgcmVhZHMgdGhlIGZpbGUgZGVzY3JpcHRvciB0YWJsZXMgKi9cXG4gXFx0aWYgKHVuc2hhcmVfZmlsZXMoKSlcXG5kaWZmIC0tZ2l0IGEvZnMvZmlsZV90YWJsZS5jIGIvZnMvZmlsZV90YWJsZS5jXFxuaW5kZXggYzY4YjhjMGE0MDk3YS4uMDJlZTRlOGIxY2ZlOCAxMDA2NDRcXG4tLS0gYS9mcy9maWxlX3RhYmxlLmNcXG4rKysgYi9mcy9maWxlX3RhYmxlLmNcXG5AQCAtNTY4LDcgKzU2OCwxMiBAQCBzdGF0aWMgdm9pZCBfX2ZwdXRfZGVmZXJyZWQoc3RydWN0IGZpbGUgKmZpbGUpXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgXFx1MDAyNlxcdTAwMjYgISh0YXNrLVxcdTAwM2VmbGFncyBcXHUwMDI2IFBGX0tUSFJFQUQpKSkge1xcbitcXHQvKlxcbitcXHQgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuXFxuK1xcdCAqIENhbm5vdCB1c2UgdGFza193b3JrIGluIHRoZSBjYXNlLCBuZWVkcyB0byByZWxlYXNlIGZpbGVzXFxuK1xcdCAqIGVhcmxpZXIuXFxuK1xcdCAqL1xcbitcXHRpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSBcXHUwMDI2XFx1MDAyNiAhKHRhc2stXFx1MDAzZWZsYWdzIFxcdTAwMjYgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkge1xcbiBcXHRcXHRpbml0X3Rhc2tfd29yayhcXHUwMDI2ZmlsZS1cXHUwMDNlZl90YXNrX3dvcmssIF9fX19mcHV0KTtcXG4gXFx0XFx0aWYgKCF0YXNrX3dvcmtfYWRkKHRhc2ssIFxcdTAwMjZmaWxlLVxcdTAwM2VmX3Rhc2tfd29yaywgVFdBX1JFU1VNRSkpXFxuIFxcdFxcdFxcdHJldHVybjtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXFxuaW5kZXggYjVkNGNkM2IwNjdiZi4uYTI3ZmY4OGE5YWQ4YSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcXG5AQCAtMTk0NywxNCArMTk0NywxNiBAQCBlbnVtIHtcXG4gI2RlZmluZSBNTUZfRFVNUF9IVUdFVExCX1NIQVJFRCAgOFxcbiAjZGVmaW5lIE1NRl9EVU1QX0RBWF9QUklWQVRFXFx0OVxcbiAjZGVmaW5lIE1NRl9EVU1QX0RBWF9TSEFSRURcXHQxMFxcbisjZGVmaW5lIE1NRl9EVU1QX0ZEX0xJU1RcXHQxMVxcbiBcXG4gI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfU0hJRlRcXHRNTUZfRFVNUEFCTEVfQklUU1xcbi0jZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTXFx0OVxcbisjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTXFx0MTBcXG4gI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfTUFTSyBcXFxcXFxuIFxcdCgoQklUKE1NRl9EVU1QX0ZJTFRFUl9CSVRTKSAtIDEpIFxcdTAwM2NcXHUwMDNjIE1NRl9EVU1QX0ZJTFRFUl9TSElGVClcXG4gI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfREVGQVVMVCBcXFxcXFxuIFxcdChCSVQoTU1GX0RVTVBfQU5PTl9QUklWQVRFKSB8IEJJVChNTUZfRFVNUF9BTk9OX1NIQVJFRCkgfCBcXFxcXFxuLVxcdCBCSVQoTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYpXFxuK1xcdCAoMSBcXHUwMDNjXFx1MDAzYyBNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRiB8XFxcXFxcbitcXHQgKDEgXFx1MDAzY1xcdTAwM2MgTU1GX0RVTVBfRkRfTElTVCkpXFxuIFxcbiAjaWZkZWYgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTXFxuICMgZGVmaW5lIE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEZcXHRCSVQoTU1GX0RVTVBfRUxGX0hFQURFUlMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjIyLjMzODg2MTQ5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU2MTUzMjY1MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPUkVEVU1QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZzX2NvcmVkdW1wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyByZWxlYXNpbmcgZmlsZXMgYmVmb3JlIGR1bXBpbmcgY29yZSBpZiBgTU1GX0RVTVBfRkRfTElTVGAgaXMgbm90IHNldCBpbiBgY29yZWR1bXBfZmlsdGVyYC4gSXQgYWxzbyBjaGFuZ2VzIGBfX2ZwdXRfZGVmZXJyZWRgIHRvIGF2b2lkIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyAoY29yZWR1bXAgYW5kIGZpbGUgcmVmZXJlbmNlIG1hbmFnZW1lbnQpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0ZjFmMjhkZTdmZDZiOTJmZjhhZGJlYjM0NWJkNzE0YTAyMjY2NWVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwNjozNzoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XG5pbmRleCAyNzE4OWY2ZTAwNGVlLi5iZGFlZjY0YTgxZmJhIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuQEAgLTE5MjksNyArMTkyOSw3IEBAIHdpbGwgYmUgZHVtcGVkIHdoZW4gdGhlIFx1MDAzY3BpZFx1MDAzZSBwcm9jZXNzIGlzIGR1bXBlZC4gY29yZWR1bXBfZmlsdGVyIGlzIGEgYml0bWFza1xuIG9mIG1lbW9yeSB0eXBlcy4gSWYgYSBiaXQgb2YgdGhlIGJpdG1hc2sgaXMgc2V0LCBtZW1vcnkgc2VnbWVudHMgb2YgdGhlXG4gY29ycmVzcG9uZGluZyBtZW1vcnkgdHlwZSBhcmUgZHVtcGVkLCBvdGhlcndpc2UgdGhleSBhcmUgbm90IGR1bXBlZC5cbiBcbi1UaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4rVGhlIGZvbGxvd2luZyAxMCBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiBcbiAgIC0gKGJpdCAwKSBhbm9ueW1vdXMgcHJpdmF0ZSBtZW1vcnlcbiAgIC0gKGJpdCAxKSBhbm9ueW1vdXMgc2hhcmVkIG1lbW9yeVxuQEAgLTE5NDEsNiArMTk0MSw3IEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiAgIC0gKGJpdCA2KSBodWdldGxiIHNoYXJlZCBtZW1vcnlcbiAgIC0gKGJpdCA3KSBEQVggcHJpdmF0ZSBtZW1vcnlcbiAgIC0gKGJpdCA4KSBEQVggc2hhcmVkIG1lbW9yeVxuKyAgLSAoYml0IDkpIGZkIGxpc3RcbiBcbiAgIE5vdGUgdGhhdCBNTUlPIHBhZ2VzIHN1Y2ggYXMgZnJhbWUgYnVmZmVyIGFyZSBuZXZlciBkdW1wZWQgYW5kIHZEU08gcGFnZXNcbiAgIGFyZSBhbHdheXMgZHVtcGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGJpdG1hc2sgc3RhdHVzLlxuQEAgLTE5NDgsMTMgKzE5NDksMjIgQEAgVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbid0IGFmZmVjdCBodWdldGxiIG9yIERBWCBtZW1vcnkuIGh1Z2V0bGIgbWVtb3J5IGlzXG4gICBvbmx5IGFmZmVjdGVkIGJ5IGJpdCA1LTYsIGFuZCBEQVggaXMgb25seSBhZmZlY3RlZCBieSBiaXRzIDctOC5cbiBcbisgIE5vdGUgdGhhdCBiaXQgOSBpcyBzZXQgYnkgZGVmYXVsdCBiZWNhdXNlIHRvb2xzIGxpa2Ugc3lzdGVtZC1jb3JlZHVtcCBnb1xuKyAgdGhyb3VnaCB0aGUgZmRzLiBJZiB5b3UgZG8gbm90IHNldCBiaXQgOSwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnlcbisgIGFueSBWTUEgYXJlIHJlbGVhc2VkIGJlZm9yZSBkdW1waW5nIGNvcmUuIFNvbWUgZmlsZSByZWxlYXNlIGxvZ2ljLCBzdWNoIGFzXG4rICBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZCBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2hcbisgIGVhcmxpZXIuXG4rXG4rVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MjMzOyB0aGlzIG1lYW5zIGFsbCBhbm9ueW1vdXMgbWVtb3J5XG4rc2VnbWVudHMsIEVMRiBoZWFkZXIgcGFnZXMsIGh1Z2V0bGIgcHJpdmF0ZSBtZW1vcnkgYW5kIGZkIGxpc3QgYXJlIGR1bXBlZC5cbitcbiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxuIHNlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzIGFuZCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFyZSBkdW1wZWQuXG4gXG4gSWYgeW91IGRvbid0IHdhbnQgdG8gZHVtcCBhbGwgc2hhcmVkIG1lbW9yeSBzZWdtZW50cyBhdHRhY2hlZCB0byBwaWQgMTIzNCxcbi13cml0ZSAweDMxIHRvIHRoZSBwcm9jZXNzJ3MgcHJvYyBmaWxlOjpcbit3cml0ZSAweDIzMSB0byB0aGUgcHJvY2VzcydzIHByb2MgZmlsZTo6XG4gXG4tICAkIGVjaG8gMHgzMSBcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcbisgICQgZWNobyAweDIzMSBcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcbiBcbiBXaGVuIGEgbmV3IHByb2Nlc3MgaXMgY3JlYXRlZCwgdGhlIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGJpdG1hc2sgc3RhdHVzIGZyb20gaXRzXG4gcGFyZW50LiBJdCBpcyB1c2VmdWwgdG8gc2V0IHVwIGNvcmVkdW1wX2ZpbHRlciBiZWZvcmUgdGhlIHByb2dyYW0gcnVucy5cbmRpZmYgLS1naXQgYS9mcy9jb3JlZHVtcC5jIGIvZnMvY29yZWR1bXAuY1xuaW5kZXggZTY4YTc2ZmY5MmEzOC4uZDM3OGU2OWM2MzZlMiAxMDA2NDRcbi0tLSBhL2ZzL2NvcmVkdW1wLmNcbisrKyBiL2ZzL2NvcmVkdW1wLmNcbkBAIC01MjAsNiArNTIwLDI1IEBAIHN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXG4gXHRyZXR1cm4gbnI7XG4gfVxuIFxuKy8qXG4rICogSWYgZG8gbm90IGR1bXAgZmQgbGlzdCwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQVxuKyAqIGNhbiBiZSByZWxlYXNlZCBiZWZvcmUgZHVtcGluZyBjb3JlLiBUaGVyZWZvcmUsIHNvbWUgZmlsZSByZWxlYXNlXG4rICogbG9naWMsIHN1Y2ggYXMgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWRcbisgKiBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2ggZWFybGllci4gTm90ZSB0aGF0IGRvX2NvcmVkdW1wKCkgb2Z0ZW5cbisgKiB0YWtlcyBzZXZlcmFsIHNlY29uZHMgb3IgZXZlbiBsb25nZXIgdG8gZXhlY3V0ZS5cbisgKi9cbitzdGF0aWMgdm9pZCBjb3JlZHVtcF9wcmVfZXhpdCh2b2lkKVxuK3tcbitcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudCwgKnQ7XG4rXG4rXHRpZiAobW1fZmxhZ3NfdGVzdChNTUZfRFVNUF9GRF9MSVNULCB0c2stXHUwMDNlbW0pKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7XG4rXHRcdGV4aXRfZmlsZXModCk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBpbnQgY29yZWR1bXBfd2FpdChpbnQgZXhpdF9jb2RlLCBzdHJ1Y3QgY29yZV9zdGF0ZSAqY29yZV9zdGF0ZSlcbiB7XG4gXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQ7XG5AQCAtMTEyMyw2ICsxMTQyLDggQEAgc3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4gXHRpZiAoY24tXHUwMDNlbWFzayBcdTAwMjYgQ09SRURVTVBfUkVKRUNUKVxuIFx0XHRyZXR1cm47XG4gXG4rXHRjb3JlZHVtcF9wcmVfZXhpdCgpO1xuK1xuIFx0LyogZ2V0IHVzIGFuIHVuc2hhcmVkIGRlc2NyaXB0b3IgdGFibGU7IGFsbW9zdCBhbHdheXMgYSBuby1vcCAqL1xuIFx0LyogVGhlIGNlbGwgc3B1ZnMgY29yZWR1bXAgY29kZSByZWFkcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRhYmxlcyAqL1xuIFx0aWYgKHVuc2hhcmVfZmlsZXMoKSlcbmRpZmYgLS1naXQgYS9mcy9maWxlX3RhYmxlLmMgYi9mcy9maWxlX3RhYmxlLmNcbmluZGV4IGM2OGI4YzBhNDA5N2EuLjAyZWU0ZThiMWNmZTggMTAwNjQ0XG4tLS0gYS9mcy9maWxlX3RhYmxlLmNcbisrKyBiL2ZzL2ZpbGVfdGFibGUuY1xuQEAgLTU2OCw3ICs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSBcdTAwMjZcdTAwMjYgISh0YXNrLVx1MDAzZWZsYWdzIFx1MDAyNiBQRl9LVEhSRUFEKSkpIHtcbitcdC8qXG4rXHQgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuXG4rXHQgKiBDYW5ub3QgdXNlIHRhc2tfd29yayBpbiB0aGUgY2FzZSwgbmVlZHMgdG8gcmVsZWFzZSBmaWxlc1xuK1x0ICogZWFybGllci5cbitcdCAqL1xuK1x0aWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgXHUwMDI2XHUwMDI2ICEodGFzay1cdTAwM2VmbGFncyBcdTAwMjYgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkge1xuIFx0XHRpbml0X3Rhc2tfd29yayhcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBfX19fZnB1dCk7XG4gXHRcdGlmICghdGFza193b3JrX2FkZCh0YXNrLCBcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBUV0FfUkVTVU1FKSlcbiBcdFx0XHRyZXR1cm47XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG5pbmRleCBiNWQ0Y2QzYjA2N2JmLi5hMjdmZjg4YTlhZDhhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcbkBAIC0xOTQ3LDE0ICsxOTQ3LDE2IEBAIGVudW0ge1xuICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDhcbiAjZGVmaW5lIE1NRl9EVU1QX0RBWF9QUklWQVRFXHQ5XG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVEXHQxMFxuKyNkZWZpbmUgTU1GX0RVTVBfRkRfTElTVFx0MTFcbiBcbiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9TSElGVFx0TU1GX0RVTVBBQkxFX0JJVFNcbi0jZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTXHQ5XG4rI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1x0MTBcbiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9NQVNLIFxcXG4gXHQoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfRklMVEVSX1NISUZUKVxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX0RFRkFVTFQgXFxcbiBcdChCSVQoTU1GX0RVTVBfQU5PTl9QUklWQVRFKSB8IEJJVChNTUZfRFVNUF9BTk9OX1NIQVJFRCkgfCBcXFxuLVx0IEJJVChNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRilcbitcdCAoMSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYgfFxcXG4rXHQgKDEgXHUwMDNjXHUwMDNjIE1NRl9EVU1QX0ZEX0xJU1QpKVxuIFxuICNpZmRlZiBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlNcbiAjIGRlZmluZSBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGXHRCSVQoTU1GX0RVTVBfRUxGX0hFQURFUlMpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzoyMi4zMzg4NjM0NzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjg4MDY5MDYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQ29yZWR1bXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBjb3JlZHVtcCBwcm9jZXNzIGluIHRoZSBMaW51eCBrZXJuZWwuIFNlZW1zIGxpa2UgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2UuIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgYSBuZXcgYml0LCBiaXQgOSwgYE1NRl9EVU1QX0ZEX0xJU1RgLCB0byB0aGUgYGNvcmVkdW1wX2ZpbHRlcmAuICBUaGUgY29yZSBpZGVhIGlzLCBpZiB0aGlzIGJpdCBpc24ndCBzZXQsIHRoZSBgY29yZWR1bXBfcHJlX2V4aXQoKWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgd2l0aGluIGBkb19jb3JlZHVtcCgpYCB0byBtYWtlIHN1cmUgZmlsZSBkZXNjcmlwdG9ycyBhcmUgY2xlYW5lZCB1cCAqYmVmb3JlKiB0aGUgY29yZWR1bXAgYWN0dWFsbHkgaGFwcGVucy5cblxuQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBfX2ZwdXRfZGVmZXJyZWRgIGluIGBmcy9maWxlX3RhYmxlLmNgLiAgVGhlIG1vZGlmaWNhdGlvbiB0aGVyZSBpbnZvbHZlcyBjaGVja2luZyB0aGUgYFBGX0RVTVBDT1JFYCBmbGFnLiBJZiB0aGlzIGZsYWcgaXMgc2V0LCBpdCBtZWFucyB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY29yZWR1bXAsIGFuZCBpdCdzIGJ5cGFzc2luZyB0aGUgYHRhc2tfd29ya2AgbWVjaGFuaXNtLCBlbnN1cmluZyBmaWxlcyBhcmUgcmVsZWFzZWQgZXZlbiBlYXJsaWVyLiBUaGlzIGlzIGRlZmluaXRlbHkgYWJvdXQgb3B0aW1pemluZyB0aGUgY2xlYW51cCBwaGFzZSBwcmlvciB0byB0aGUgZHVtcC5cblxuTm93LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZTogYGRvX2NvcmVkdW1wYCBpcyBjYWxsaW5nIGBjb3JlZHVtcF9wcmVfZXhpdCgpYCwgd2hpY2ggaW4gdHVybiBjYWxscyBgZXhpdF9maWxlcyh0KWAgb24gZWFjaCB0aHJlYWQgaW4gdGhlIHRocmVhZCBncm91cC4gIFRoYXQncyB0aGUgZmlsZSBjbGVhbnVwIHNlcXVlbmNlLiBBbmQgdGhlbiwgdGhlIG1vZGlmaWNhdGlvbiB0byBgX19mcHV0X2RlZmVycmVkYCBpcyB0aGUga2V5IOKAkyBpdCdzIG1ha2luZyB0aGUgZmlsZSByZWxlYXNlIGhhcHBlbiBtb3JlIGVhZ2VybHkgdW5kZXIgY29yZWR1bXAgY29uZGl0aW9ucy5cblxuVGhpcyBpcyBjb3JlIGtlcm5lbCBsb2dpYyDigJMgaXQncyBjaGFuZ2luZyBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGZpbGUgZGVzY3JpcHRvcnMgZHVyaW5nIGNyaXRpY2FsIGNyYXNoIGR1bXAgc2NlbmFyaW9zLiBEZWZpbml0ZWx5LCB0aGlzIHdhcnJhbnRzIGZ1enppbmc7IGl0J3MgYSBnb29kIHBsYWNlIHRvIGV4cG9zZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIG90aGVyIHN1YnRsZSBpc3N1ZXMuIFNvLCBiYXNlZCBvbiB0aGlzIHVuZGVyc3RhbmRpbmcsIEknZCByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC5cblxuTm93LCBmb3IgcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMgdG8gdGFyZ2V0IGluIGZ1enppbmcsIGBkb19jb3JlZHVtcGAgaXMgZGVmaW5pdGVseSBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0LiBgY29yZWR1bXBfcHJlX2V4aXQoKWAgaXMgYWxzbyByZWxldmFudCwgYnV0IGl0J3MgbWFya2VkIGFzIGBzdGF0aWNgLCBzbyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoYXQgbWlnaHQgYWZmZWN0IGRpcmVjdCBjb3ZlcmFnZS4gSSBtYXkgYWxzbyB3YW50IHRvIGZvY3VzIG9uIHZhcmlhbnRzIG9mIGBfX2ZwdXRfZGVmZXJyZWRgLiBQZXJoYXBzLCBgZnB1dGAsIGBfX2ZwdXRgLCBvciBgZnB1dF9tYW55YCBhcyB0aGUgc3RhdGljIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIHRob3NlLlxuXG5JJ2xsIG5lZWQgdG8gZGlnIGludG8gYGZzL2NvcmVkdW1wLmNgIGFuZCBgZnMvZmlsZV90YWJsZS5jYCB0byB1bmRlcnN0YW5kIHRoZSBmaW5lciBkZXRhaWxzIG9mIHRoZXNlIGNoYW5nZXMgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aGluIHRoZSBjb2RlIGJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2OTgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzozNS4yMTk1NTY1MzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA3Mzk5MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcmVkdW1wX3ByZV9leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2NvcmVkdW1wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvY29yZWR1bXAuYz01MDQ9c3RhdGljIGludCB6YXBfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayxcXG4tLVxcbmZzL2NvcmVkdW1wLmMtNTI5LSAqL1xcbmZzL2NvcmVkdW1wLmM6NTMwOnN0YXRpYyB2b2lkIGNvcmVkdW1wX3ByZV9leGl0KHZvaWQpXFxuZnMvY29yZWR1bXAuYy01MzEte1xcbi0tXFxuZnMvY29yZWR1bXAuYz0xMTExPXN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxcbi0tXFxuZnMvY29yZWR1bXAuYy0xMTQ0LVxcbmZzL2NvcmVkdW1wLmM6MTE0NTpcXHRjb3JlZHVtcF9wcmVfZXhpdCgpO1xcbmZzL2NvcmVkdW1wLmMtMTE0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MzUuNTI2OTkwODM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5MzM0MjE4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipTdGF0aWMgRnVuY3Rpb25zIGluIENvcmUgRHVtcCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIGBjb3JlZHVtcF9wcmVfZXhpdGAgaXMgZGVmaW5pdGVseSBzdGF0aWMuIFRoYXQgbWFrZXMgc2Vuc2UsIGtlZXBzIGl0IHNjb3BlZCBhcHByb3ByaWF0ZWx5LiBOb3csIEknbSBwcmV0dHkgc3VyZSBgZG9fY29yZWR1bXBgIGlzIGFsc28gc3RhdGljLCBidXQgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQuIEl0J3MgaW1wb3J0YW50IHRvIGJlIGFic29sdXRlbHkgc3VyZSBhYm91dCB0aGUgc2NvcGUgYW5kIGxpbmthZ2UgaW4gdGhlc2UgY3JpdGljYWwgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgY29yZSBkdW1wIGhhbmRsaW5nIGNvbnRleHQuIFdlIGNhbid0IGFmZm9yZCBhbnkgYWNjaWRlbnRhbCBleHRlcm5hbCBhY2Nlc3Mgb3IgbmFtZSBjb2xsaXNpb25zIGhlcmUuIExldCdzIGNvbmZpcm0gdGhhdCBgZG9fY29yZWR1bXBgIGlzIGRlY2xhcmVkIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc1MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjM4LjUyMDMzNTMzNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjE1MzYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkb19jb3JlZHVtcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9jb3JlZHVtcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NvcmVkdW1wLmM9NTA0PXN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTUyNi0gKiBsb2dpYywgc3VjaCBhcyBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZFxcbmZzL2NvcmVkdW1wLmM6NTI3OiAqIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaCBlYXJsaWVyLiBOb3RlIHRoYXQgZG9fY29yZWR1bXAoKSBvZnRlblxcbmZzL2NvcmVkdW1wLmMtNTI4LSAqIHRha2VzIHNldmVyYWwgc2Vjb25kcyBvciBldmVuIGxvbmdlciB0byBleGVjdXRlLlxcbi0tXFxuZnMvY29yZWR1bXAuYz0xMDk5PXN0YXRpYyBpbmxpbmUgYm9vbCBjb3JlZHVtcF9za2lwKGNvbnN0IHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTExMTAtXFxuZnMvY29yZWR1bXAuYzoxMTExOnN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxcbmZzL2NvcmVkdW1wLmMtMTExMi1cXHRcXHRcXHRzaXplX3QgKiphcmd2LCBpbnQgKmFyZ2MsIGNvbnN0IHN0cnVjdCBsaW51eF9iaW5mbXQgKmJpbmZtdClcXG4tLVxcbmZzL2NvcmVkdW1wLmM9MTE4Mj12b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKVxcbi0tXFxuZnMvY29yZWR1bXAuYy0xMjIwLVxcdHNjb3BlZF93aXRoX2NyZWRzKGNyZWQpXFxuZnMvY29yZWR1bXAuYzoxMjIxOlxcdFxcdGRvX2NvcmVkdW1wKFxcdTAwMjZjbiwgXFx1MDAyNmNwcm0sIFxcdTAwMjZhcmd2LCBcXHUwMDI2YXJnYywgYmluZm10KTtcXG5mcy9jb3JlZHVtcC5jLTEyMjItXFx0Y29yZWR1bXBfY2xlYW51cChcXHUwMDI2Y24sIFxcdTAwMjZjcHJtKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MzguNTg2NDk3NDE0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0OTQwMzM3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29yZSBEdW1wIEVudHJ5IFBvaW50KipcblxuUmlnaHQsIHNvIGB2ZnNfY29yZWR1bXBgIGlzIHRoZSBleHRlcm5hbGx5IHZpc2libGUsIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQgZm9yIGNvcmUgZHVtcHMuIEdvb2QuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgZnJvbSB0aGVyZS4gTGV0J3Mgc2VlLi4uIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGxvb2sgZm9yIHJlbGF0ZWQgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gZmlsZSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdoZXJlIGZpbGVzIGFyZSBjbG9zZWQsIHBvdGVudGlhbGx5IGRlZmVycmVkLiBPa2F5LCBteSBodW5jaCBpcyB0byBjaGVjayBgZnMvZmlsZV90YWJsZS5jYCwgYW5kIEknbSB6ZXJvaW5nIGluIG9uIGBfX2ZwdXRfZGVmZXJyZWRgLiBUaGF0J3MgbGlrZWx5IHdoZXJlIHNvbWUgY3JpdGljYWwgb3BlcmF0aW9ucyBkdXJpbmcgZmlsZSBjbG9zdXJlIGFyZSBoYXBwZW5pbmcsIGFuZCBwb3RlbnRpYWxseSByZWxhdGVkIHRvIGhvdyBjb3JlIGR1bXAgaW5mb3JtYXRpb24gaXMgYWN0dWFsbHkgaGFuZGxlZCBiZWZvcmUgdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBmdWxseSByZWxlYXNlZC4gVGhhdCBzZWVtcyBsaWtlIGEgbG9naWNhbCBuZXh0IHN0ZXAgaW4gdHJhY2luZyB0aGUgY2FsbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mjk0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6NDIuNzM1OTAzNTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg4MzMxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19mcHV0X2RlZmVycmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2ZpbGVfdGFibGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9maWxlX3RhYmxlLmM9NTYwPUVYUE9SVF9TWU1CT0xfR1BMKGZsdXNoX2RlbGF5ZWRfZnB1dCk7XFxuZnMvZmlsZV90YWJsZS5jLTU2MS1cXG5mcy9maWxlX3RhYmxlLmM6NTYyOnN0YXRpYyB2b2lkIF9fZnB1dF9kZWZlcnJlZChzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9maWxlX3RhYmxlLmMtNTYzLXtcXG4tLVxcbmZzL2ZpbGVfdGFibGUuYz01OTE9dm9pZCBmcHV0KHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZmlsZV90YWJsZS5jLTU5My1cXHRpZiAodW5saWtlbHkoZmlsZV9yZWZfcHV0KFxcdTAwMjZmaWxlLVxcdTAwM2VmX3JlZikpKVxcbmZzL2ZpbGVfdGFibGUuYzo1OTQ6XFx0XFx0X19mcHV0X2RlZmVycmVkKGZpbGUpO1xcbmZzL2ZpbGVfdGFibGUuYy01OTUtfVxcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTYzMT12b2lkIGZwdXRfY2xvc2Uoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNjMzLVxcdGlmIChmaWxlX3JlZl9wdXRfY2xvc2UoXFx1MDAyNmZpbGUtXFx1MDAzZWZfcmVmKSlcXG5mcy9maWxlX3RhYmxlLmM6NjM0OlxcdFxcdF9fZnB1dF9kZWZlcnJlZChmaWxlKTtcXG5mcy9maWxlX3RhYmxlLmMtNjM1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6NDIuNzk0NzQxODE4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEzMTUwMzIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgQ29yZSBEdW1wIEVudHJ5IFBvaW50cyBhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgZW50cnkgcG9pbnRzIGZvciBjb3JlIGR1bXAgZnVuY3Rpb25hbGl0eSBoZXJlLiBJIHNlZSB0aGF0IGBmcHV0YCBhbmQgYGZwdXRfY2xvc2VgIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW52b2x2ZWQsIGFuZCBhbHNvIGB2ZnNfY29yZWR1bXBgIGlzIHJlbGV2YW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoYXQgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCB0byBtYWtlIGFsbCB0aGlzIHdvcms/IEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBMZXQgbWUgc2VlLi4uIGFoYSwgbG9va3MgbGlrZSBgQ09ORklHX0NPUkVEVU1QYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYGZzL2NvcmVkdW1wLmNgLiBHb3QgaXQuIFRoYXQncyBnb29kIHRvIGtub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MTYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzo0OC45MjYyNDg1ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzQ0MDE2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENPUkVEVU1QXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnLmJpbmZtdD0xNDU9Y29uZmlnIEJJTkZNVF9NSVNDXFxuLS1cXG5mcy9LY29uZmlnLmJpbmZtdC0xNzAtXFxuZnMvS2NvbmZpZy5iaW5mbXQ6MTcxOmNvbmZpZyBDT1JFRFVNUFxcbmZzL0tjb25maWcuYmluZm10LTE3Mi1cXHRib29sIFxcXCJFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzo1MS4zMDA2NTg2NjJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODUzOTA2MDQwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQ29yZSBEdW1wIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGtleXdvcmQgdGhhdCBqdW1wcyBvdXQgaW1tZWRpYXRlbHkgaXMgYENPUkVEVU1QYC4gUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgdXN1YWwgc3VzcGVjdHMgLSBJIG5lZWQgdG8gc3RhcnQgY2hlY2tpbmcgYGZzL2ZpbGVfdGFibGUuY2AsIGJlY2F1c2UgaXQncyBhbHdheXMgY29tcGlsZWQgaW4uIE9rYXksIEkndmUgZ290IGl0LCBiaXQgMTEsIGBNTUZfRFVNUF9GRF9MSVNUYC4gSW50ZXJlc3RpbmcuXG5cbk5vdywgdGhlIHBhdGNoIHRvdWNoZXMgYGRvX2NvcmVkdW1wYCBhbmQgYF9fZnB1dF9kZWZlcnJlZGAuIFRoZSBjb3JlIGlkZWEgaXMgdG8gY2hhbmdlIGhvdyB3ZSByZWxlYXNlIGZpbGVzICpiZWZvcmUqIGEgY29yZSBkdW1wLCBpZiBgTU1GX0RVTVBfRkRfTElTVGAgaXMgKm5vdCogc2V0IGluIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIG9wdGltaXphdGlvbi4gVGhlIHNlY29uZCBjaGFuZ2UgYXZvaWRzIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQsIGFsc28gbG9naWNhbC4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIGNvcmUga2VybmVsIGxvZ2ljIOKAkyBzcGVjaWZpY2FsbHksIGhvdyBjb3JlIGR1bXBzIGFuZCBmaWxlIHJlZmVyZW5jZXMgYXJlIG1hbmFnZWQuIEJlY2F1c2UgaXQncyBmdW5jdGlvbmFsLCBmdXp6aW5nIGlzIGRlZmluaXRlbHkgaW4gb3JkZXIuXG5cbkxldCdzIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHByaW1hcnkgZm9jdXMgcG9pbnRzLiBJIG5lZWQgdG8ga2VlcCBhbiBleWUgb24gYHZmc19jb3JlZHVtcGAsIGBmcHV0YCwgYW5kIGBmcHV0X2Nsb3NlYC4gVGhlIGNvbmZpZ3VyYXRpb24gbmVlZGVkIGlzIHNpbXBseSBgQ09SRURVTVBgLiBBbHJpZ2h0LCBJJ2xsIHRha2UgYSBxdWljayBsb29rIHRvIHZlcmlmeSB0aGF0IGB2ZnNfY29yZWR1bXBgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBlbnRyeSBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEyMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzo1OS44Mzk3MjMyMDVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMzAxODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmc19jb3JlZHVtcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9jb3JlZHVtcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NvcmVkdW1wLmM9MTExMT1zdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSxcXG4tLVxcbmZzL2NvcmVkdW1wLmMtMTE4MS1cXG5mcy9jb3JlZHVtcC5jOjExODI6dm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbylcXG5mcy9jb3JlZHVtcC5jLTExODMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzo1OS45MDIwMjk1MTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE1Nzk5NTg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGRpc3RpbGxpbmcgdGhlbSBpbnRvIGEgY29uY2lzZSBzdW1tYXJ5IGFzIGEgc2Vhc29uZWQgcHJvZmVzc2lvbmFsIHdvdWxkOlxuXG4qKkNvcmVkdW1wIEVudHJ5IFBvaW50IEFuYWx5c2lzKipcblxuQWxyaWdodCwgaXQgbG9va3MgbGlrZSBgdmZzX2NvcmVkdW1wYCAqaXMqIHRoZSBrZXkgZW50cnkgcG9pbnQuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIGhvdCBzcG90cywgYnV0IGJlZm9yZSBJIGdldCB0b28gZGVlcCwgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIHN5c3RlbS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgd2hldGhlciBgZnB1dGAgaXMgdG9vIGJ1c3kuIERhbW4sIHllYWgsIGBmcHV0YCBpcyBnZXR0aW5nIGhhbW1lcmVkLCBhbmQgc28gaXMgYGZwdXRfY2xvc2VgLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBleHBsaWNpdDogYXZvaWQgc2tld2luZyB0aGUgZGF0YSB3aXRoIGNvbW1vbiBob3QtcGF0aCBmdW5jdGlvbnMsIGFuZCB0aGVzZSBhcmUgdGV4dGJvb2sgZXhhbXBsZXMgb2Ygc3VjaCBmdW5jdGlvbnMuIFRoZXkncmUgZ29pbmcgdG8gZG9taW5hdGUgYW55IGRpc3RyaWJ1dGlvbiwgbWFraW5nIHRoZSBzcGVjaWZpYyBhbmFseXNpcyBvZiBgdmZzX2NvcmVkdW1wYCBsZXNzIGFjY3VyYXRlLiBTbywgdGhlIGJlc3QgcGF0aCBmb3J3YXJkLCBhcyB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnksIGlzIHRvIGV4Y2x1ZGUgdGhvc2UgZ2VuZXJpYyBmdW5jdGlvbnMgYW5kIGZvY3VzIGV4Y2x1c2l2ZWx5IG9uIGB2ZnNfY29yZWR1bXBgLiBUaW1lIHRvIGNvbmZpcm0gdGhlIGNhbGxlcnMgb2YgYHZmc19jb3JlZHVtcGAgYW5kIHByb2NlZWQgd2l0aCB0aGUgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc3NCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozODowNS4wNjAwMjk1OTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjA5MTMzMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZzX2NvcmVkdW1wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdD01NTU9ZGlmZmVyZW50IHNldCBvZiBjcmVkZW50aWFscy4gIFRoaXMgaXMgZG9uZSBpbiB0aGUgZm9sbG93aW5nIHBsYWNlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vc2VjdXJpdHkvY3JlZGVudGlhbHMucnN0LTU1Ny0gKiBgYHN5c19mYWNjZXNzYXQoKWBgLlxcbkRvY3VtZW50YXRpb24vc2VjdXJpdHkvY3JlZGVudGlhbHMucnN0OjU1ODogKiBgYHZmc19jb3JlZHVtcCgpYGAuXFxuRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3QtNTU5LSAqIG5mczRyZWNvdmVyLmMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3Q9MjU0PWNvbnN05oyH6ZKI5LiK5pON5L2c77yM5Zug5q2k5LiN6ZyA6KaB6L+b6KGM57G75Z6L6L2s5o2i77yM5L2G6ZyA6KaB5Li05pe25pS+5byDY29uc3TpmZDlrprvvIzku6Xkvr/og73lpJ/kv67mlLlcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdC00NzctICogYGBzeXNfZmFjY2Vzc2F0KClgYC5cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3Q6NDc4OiAqIGBgdmZzX2NvcmVkdW1wKClgYC5cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3QtNDc5LSAqIG5mczRyZWNvdmVyLmMuXFxuLS1cXG5mcy9jb3JlZHVtcC5jPTExMTE9c3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTExODEtXFxuZnMvY29yZWR1bXAuYzoxMTgyOnZvaWQgdmZzX2NvcmVkdW1wKGNvbnN0IGtlcm5lbF9zaWdpbmZvX3QgKnNpZ2luZm8pXFxuZnMvY29yZWR1bXAuYy0xMTgzLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvY29yZWR1bXAuaD00OD1pbnQgZHVtcF91c2VyX3JhbmdlKHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oLTQ5LVxcdFxcdCAgICB1bnNpZ25lZCBsb25nIGxlbik7XFxuaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oOjUwOmV4dGVybiB2b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKTtcXG5pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmgtNTEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmgtNjktI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmg6NzA6c3RhdGljIGlubGluZSB2b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKSB7fVxcbmluY2x1ZGUvbGludXgvY29yZWR1bXAuaC03MS1cXG4tLVxcbmtlcm5lbC9zaWduYWwuYz0yODEwPWJvb2wgZ2V0X3NpZ25hbChzdHJ1Y3Qga3NpZ25hbCAqa3NpZylcXG4tLVxcbmtlcm5lbC9zaWduYWwuYy0zMDMwLVxcdFxcdFxcdCAqL1xcbmtlcm5lbC9zaWduYWwuYzozMDMxOlxcdFxcdFxcdHZmc19jb3JlZHVtcChcXHUwMDI2a3NpZy1cXHUwMDNlaW5mbyk7XFxua2VybmVsL3NpZ25hbC5jLTMwMzItXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozODowNy4zMjA5NDkwOTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4NTc3ODY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENyYXNoIER1bXAgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIGtlcm5lbCdzIGNyYXNoIGR1bXAgbWVjaGFuaXNtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgdmZzX2NvcmVkdW1wYCBpcyBhIHByZXR0eSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBhcyBJIGNhbiBzZWUgaXQncyBjYWxsZWQgZnJvbSBgZ2V0X3NpZ25hbGAgd2hlbiBhIHByb2Nlc3MgZ29lcyBiZWxseS11cC4gVGhhdCBtYWtlcyBpdCBhIG5hdHVyYWwgZm9jYWwgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgZmxvdy5cblxuTGV0IG1lIHRha2UgYSBsb29rIGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMsIGFuZCBjb25maXJtIHRoYXQgYHZmc19jb3JlZHVtcGAgaXMgaW5kZWVkIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBIbW0sIGBjb3JlZHVtcF9wcmVfZXhpdGAgYW5kIGBkb19jb3JlZHVtcGAgYXJlIHN0YXRpYywgYW5kIHRoZW4gdGhlcmUncyBhbHNvIGBfX2ZwdXRfZGVmZXJyZWRgIHdoaWNoIGlzIGFsc28gc3RhdGljLiBUaGVzZSBtaWdodCBiZSB1c2VmdWwsIGJ1dCBgdmZzX2NvcmVkdW1wYCBzZWVtcyB0byBiZSB0aGUgbW9zdCBhY2Nlc3NpYmxlIGFuZCBjZW50cmFsIGVudHJ5IHBvaW50IGZvciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LlxuXG5Tbywgbm93IHRoYXQgSSd2ZSBpZGVudGlmaWVkIGB2ZnNfY29yZWR1bXBgLCBpdCdzIHRpbWUgdG8gY2hlY2sgd2hhdCBgQ09SRURVTVBgIGRlcGVuZHMgb24sIGFuZCBzZWUgaG93IG11Y2ggdGhlIGNvcmUgZHVtcCBwcm9jZXNzIGlzIGFmZmVjdGVkIGJ5IG90aGVyIHN1YnN5c3RlbXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IGluIHdoaWNoIGBDT1JFRFVNUGAgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozODoxMS45MDY3MzA0MjRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNTM1NTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDT1JFRFVNUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9LY29uZmlnLmJpbmZtdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnLmJpbmZtdD0xNDU9Y29uZmlnIEJJTkZNVF9NSVNDXFxuLS1cXG5mcy9LY29uZmlnLmJpbmZtdC0xNzAtXFxuZnMvS2NvbmZpZy5iaW5mbXQ6MTcxOmNvbmZpZyBDT1JFRFVNUFxcbmZzL0tjb25maWcuYmluZm10LTE3Mi1cXHRib29sIFxcXCJFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozODoxMS45ODcyNzA4NDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4Mjg3NDgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb3JlIER1bXAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYENPUkVEVU1QYCBjb25maWcgb3B0aW9uIGFuZCBpdCBkZWZhdWx0cyB0byBcInksXCIgd2hpY2gsIGdpdmVuIG15IGV4cGVyaWVuY2UsIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoZSBoZWxwIHRleHQgZXZlbiBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IGVuYWJsaW5nIGl0IGlzIHByYWN0aWNhbGx5IGEgbmVjZXNzaXR5IHVubGVzcyB3ZSdyZSBkZWFsaW5nIHdpdGggc3lzdGVtcyB0aGF0IGFyZSBlaXRoZXIgaW5oZXJlbnRseSBkZWJ1Zy1mcmVlIG9yIHJ1biBub3RoaW5nIGJ1dCBmbGF3bGVzc2x5IHdyaXR0ZW4gY29kZSDigJMgYW5kIGxldCdzIGJlIGhvbmVzdCwgdGhvc2UgYXJlIHJhcmUuIFRoaXMgbWVhbnMgSSdtIHByZXR0eSBtdWNoIGFncmVlaW5nIHdpdGggdGhlIGRlZmF1bHQuIEl0J3Mgc2FmZSwgYW5kIG1vc3Qgc2FuZSBrZXJuZWwgc2V0dXBzIHdpbGwgd2FudCBjb3JlIGR1bXBzIGVuYWJsZWQuIEkgY2FuIGNvbmZpZGVudGx5IGNoZWNrIGBDT1JFRFVNUGAuXG5cblRoZSBwYXRjaCBpdHNlbGYgaW52b2x2ZXMgc29tZSBjcnVjaWFsIGNvcmUga2VybmVsIGNoYW5nZXMsIHNwZWNpZmljYWxseSBhcm91bmQgaG93IGNvcmUgZHVtcHMgYXJlIGhhbmRsZWQgd2hlbiBmaWxlIGRlc2NyaXB0b3JzIGFyZSBpbnZvbHZlZC4gVGhlIGxvZ2ljIGFwcGVhcnMgdG8gYmUgZGVhbGluZyB3aXRoIHRoZSByZWxlYXNlIG9mIGZpbGVzIGJlZm9yZSB0aGUgYWN0dWFsIGNvcmUgZHVtcCBoYXBwZW5zLCBjb250aW5nZW50IG9uIHRoZSBgTU1GX0RVTVBfRkRfTElTVGAgc2V0dGluZyB3aXRoaW4gdGhlIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGVyZSdzIGFsc28gc29tZSByZWZhY3RvcmluZyBnb2luZyBvbiB3aXRoIGBfX2ZwdXRfZGVmZXJyZWRgIHRvIGJ5cGFzcyBgdGFza193b3JrYCB3aGVuIGBQRl9EVU1QQ09SRWAgaXMgYWN0aXZlLiBUaGlzIHNpZ25hbHMgdGhhdCB0aGVzZSBjaGFuZ2VzIGFyZSB0b3VjaGluZyBjcml0aWNhbCBwaWVjZXMgb2YgY29yZSBkdW1wIGFuZCBmaWxlIHJlZmVyZW5jZSBtYW5hZ2VtZW50LiBDb25zaWRlcmluZyBpdCdzIGNvcmUga2VybmVsIGNvZGUsIHBhcnRpY3VsYXJseSB0aGUgY29yZSBkdW1wIGZsb3csIEknbSBjb25maWRlbnQgd2UgbmVlZCB0byBsb29rIGNsb3NlciBhbmQgcG90ZW50aWFsbHkgZnV6eiB0aGlzIHBhdGNoLlxuXG5NeSBhdHRlbnRpb24gaXMgZGVmaW5pdGVseSBkcmF3biB0byBgdmZzX2NvcmVkdW1wYCwgYXMgaXQgd2lsbCBsaWtlbHkgYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgb3IgaW52b2x2ZWQgaW4gc29tZSBjcml0aWNhbCBwYXJ0IG9mIHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHksIHNvIHRoYXQgZnVuY3Rpb24gd2lsbCBiZSB0aGUgZm9jYWwgcG9pbnQgb2YgYW55IGRlZXAgZGl2ZSBvciB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTgyLCJPdXRwdXRUb2tlbnMiOjEzMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozODoxOC4zNzAxNDg0OTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE5NzQ3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPUkVEVU1QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZzX2NvcmVkdW1wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyByZWxlYXNpbmcgZmlsZXMgYmVmb3JlIGR1bXBpbmcgY29yZSBpZiBgTU1GX0RVTVBfRkRfTElTVGAgaXMgbm90IHNldCBpbiBgY29yZWR1bXBfZmlsdGVyYC4gSXQgYWxzbyBjaGFuZ2VzIGBfX2ZwdXRfZGVmZXJyZWRgIHRvIGF2b2lkIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyAoY29yZWR1bXAgYW5kIGZpbGUgcmVmZXJlbmNlIG1hbmFnZW1lbnQpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPUkVEVU1QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZzX2NvcmVkdW1wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyByZWxlYXNpbmcgZmlsZXMgYmVmb3JlIGR1bXBpbmcgY29yZSBpZiBgTU1GX0RVTVBfRkRfTElTVGAgaXMgbm90IHNldCBpbiBgY29yZWR1bXBfZmlsdGVyYC4gSXQgYWxzbyBjaGFuZ2VzIGBfX2ZwdXRfZGVmZXJyZWRgIHRvIGF2b2lkIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyAoY29yZWR1bXAgYW5kIGZpbGUgcmVmZXJlbmNlIG1hbmFnZW1lbnQpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjgl5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 06:12:47 +0000 UTC FinishedAt: 2026-08-07 06:38:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1fb556c523f6c18b43b1f52fb366f61c9963ce06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COREDUMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "1fb556c523f6c18b43b1f52fb366f61c9963ce06", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COREDUMP" ], "series_id": "2915562b-e07e-4864-82d9-649a3906be18" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "vfs_coredump" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPUkVEVU1QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZzX2NvcmVkdW1wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGR1bXAgbG9naWMgdG8gYWxsb3cgcmVsZWFzaW5nIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUgaWYgYE1NRl9EVU1QX0ZEX0xJU1RgIGlzIG5vdCBzZXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAuIEl0IGFsc28gY2hhbmdlcyBgX19mcHV0X2RlZmVycmVkYCB0byBhdm9pZCB1c2luZyBgdGFza193b3JrYCB3aGVuIGBQRl9EVU1QQ09SRWAgaXMgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgKGNvcmVkdW1wIGFuZCBmaWxlIHJlZmVyZW5jZSBtYW5hZ2VtZW50KSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDRmMWYyOGRlN2ZkNmI5MmZmOGFkYmViMzQ1YmQ3MTRhMDIyNjY1ZWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDA2OjM3OjIwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XG5pbmRleCAyNzE4OWY2ZTAwNGVlLi5iZGFlZjY0YTgxZmJhIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuQEAgLTE5MjksNyAmIzQzOzE5MjksNyBAQCB3aWxsIGJlIGR1bXBlZCB3aGVuIHRoZSBcdTAwM2NwaWRcdTAwM2UgcHJvY2VzcyBpcyBkdW1wZWQuIGNvcmVkdW1wX2ZpbHRlciBpcyBhIGJpdG1hc2tcbiBvZiBtZW1vcnkgdHlwZXMuIElmIGEgYml0IG9mIHRoZSBiaXRtYXNrIGlzIHNldCwgbWVtb3J5IHNlZ21lbnRzIG9mIHRoZVxuIGNvcnJlc3BvbmRpbmcgbWVtb3J5IHR5cGUgYXJlIGR1bXBlZCwgb3RoZXJ3aXNlIHRoZXkgYXJlIG5vdCBkdW1wZWQuXG4gXG4tVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuJiM0MztUaGUgZm9sbG93aW5nIDEwIG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuIFxuICAgLSAoYml0IDApIGFub255bW91cyBwcml2YXRlIG1lbW9yeVxuICAgLSAoYml0IDEpIGFub255bW91cyBzaGFyZWQgbWVtb3J5XG5AQCAtMTk0MSw2ICYjNDM7MTk0MSw3IEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiAgIC0gKGJpdCA2KSBodWdldGxiIHNoYXJlZCBtZW1vcnlcbiAgIC0gKGJpdCA3KSBEQVggcHJpdmF0ZSBtZW1vcnlcbiAgIC0gKGJpdCA4KSBEQVggc2hhcmVkIG1lbW9yeVxuJiM0MzsgIC0gKGJpdCA5KSBmZCBsaXN0XG4gXG4gICBOb3RlIHRoYXQgTU1JTyBwYWdlcyBzdWNoIGFzIGZyYW1lIGJ1ZmZlciBhcmUgbmV2ZXIgZHVtcGVkIGFuZCB2RFNPIHBhZ2VzXG4gICBhcmUgYWx3YXlzIGR1bXBlZCByZWdhcmRsZXNzIG9mIHRoZSBiaXRtYXNrIHN0YXR1cy5cbkBAIC0xOTQ4LDEzICYjNDM7MTk0OSwyMiBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4gICBOb3RlIHRoYXQgYml0cyAwLTQgZG9uJiMzOTt0IGFmZmVjdCBodWdldGxiIG9yIERBWCBtZW1vcnkuIGh1Z2V0bGIgbWVtb3J5IGlzXG4gICBvbmx5IGFmZmVjdGVkIGJ5IGJpdCA1LTYsIGFuZCBEQVggaXMgb25seSBhZmZlY3RlZCBieSBiaXRzIDctOC5cbiBcbiYjNDM7ICBOb3RlIHRoYXQgYml0IDkgaXMgc2V0IGJ5IGRlZmF1bHQgYmVjYXVzZSB0b29scyBsaWtlIHN5c3RlbWQtY29yZWR1bXAgZ29cbiYjNDM7ICB0aHJvdWdoIHRoZSBmZHMuIElmIHlvdSBkbyBub3Qgc2V0IGJpdCA5LCBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieVxuJiM0MzsgIGFueSBWTUEgYXJlIHJlbGVhc2VkIGJlZm9yZSBkdW1waW5nIGNvcmUuIFNvbWUgZmlsZSByZWxlYXNlIGxvZ2ljLCBzdWNoIGFzXG4mIzQzOyAgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWQgYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoXG4mIzQzOyAgZWFybGllci5cbiYjNDM7XG4mIzQzO1RoZSBkZWZhdWx0IHZhbHVlIG9mIGNvcmVkdW1wX2ZpbHRlciBpcyAweDIzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxuJiM0MztzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcywgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhbmQgZmQgbGlzdCBhcmUgZHVtcGVkLlxuJiM0MztcbiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxuIHNlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzIGFuZCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFyZSBkdW1wZWQuXG4gXG4gSWYgeW91IGRvbiYjMzk7dCB3YW50IHRvIGR1bXAgYWxsIHNoYXJlZCBtZW1vcnkgc2VnbWVudHMgYXR0YWNoZWQgdG8gcGlkIDEyMzQsXG4td3JpdGUgMHgzMSB0byB0aGUgcHJvY2VzcyYjMzk7cyBwcm9jIGZpbGU6OlxuJiM0Mzt3cml0ZSAweDIzMSB0byB0aGUgcHJvY2VzcyYjMzk7cyBwcm9jIGZpbGU6OlxuIFxuLSAgJCBlY2hvIDB4MzEgXHUwMDNlIC9wcm9jLzEyMzQvY29yZWR1bXBfZmlsdGVyXG4mIzQzOyAgJCBlY2hvIDB4MjMxIFx1MDAzZSAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlclxuIFxuIFdoZW4gYSBuZXcgcHJvY2VzcyBpcyBjcmVhdGVkLCB0aGUgcHJvY2VzcyBpbmhlcml0cyB0aGUgYml0bWFzayBzdGF0dXMgZnJvbSBpdHNcbiBwYXJlbnQuIEl0IGlzIHVzZWZ1bCB0byBzZXQgdXAgY29yZWR1bXBfZmlsdGVyIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLlxuZGlmZiAtLWdpdCBhL2ZzL2NvcmVkdW1wLmMgYi9mcy9jb3JlZHVtcC5jXG5pbmRleCBlNjhhNzZmZjkyYTM4Li5kMzc4ZTY5YzYzNmUyIDEwMDY0NFxuLS0tIGEvZnMvY29yZWR1bXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvY29yZWR1bXAuY1xuQEAgLTUyMCw2ICYjNDM7NTIwLDI1IEBAIHN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXG4gXHRyZXR1cm4gbnI7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBJZiBkbyBub3QgZHVtcCBmZCBsaXN0LCBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieSBhbnkgVk1BXG4mIzQzOyAqIGNhbiBiZSByZWxlYXNlZCBiZWZvcmUgZHVtcGluZyBjb3JlLiBUaGVyZWZvcmUsIHNvbWUgZmlsZSByZWxlYXNlXG4mIzQzOyAqIGxvZ2ljLCBzdWNoIGFzIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkXG4mIzQzOyAqIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaCBlYXJsaWVyLiBOb3RlIHRoYXQgZG9fY29yZWR1bXAoKSBvZnRlblxuJiM0MzsgKiB0YWtlcyBzZXZlcmFsIHNlY29uZHMgb3IgZXZlbiBsb25nZXIgdG8gZXhlY3V0ZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIGNvcmVkdW1wX3ByZV9leGl0KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQsICp0O1xuJiM0MztcbiYjNDM7XHRpZiAobW1fZmxhZ3NfdGVzdChNTUZfRFVNUF9GRF9MSVNULCB0c2stXHUwMDNlbW0pKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7XG4mIzQzO1x0XHRleGl0X2ZpbGVzKHQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGNvcmVkdW1wX3dhaXQoaW50IGV4aXRfY29kZSwgc3RydWN0IGNvcmVfc3RhdGUgKmNvcmVfc3RhdGUpXG4ge1xuIFx0c3RydWN0IHRhc2tfc3RydWN0ICp0c2sgPSBjdXJyZW50O1xuQEAgLTExMjMsNiAmIzQzOzExNDIsOCBAQCBzdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSxcbiBcdGlmIChjbi1cdTAwM2VtYXNrIFx1MDAyNiBDT1JFRFVNUF9SRUpFQ1QpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRjb3JlZHVtcF9wcmVfZXhpdCgpO1xuJiM0MztcbiBcdC8qIGdldCB1cyBhbiB1bnNoYXJlZCBkZXNjcmlwdG9yIHRhYmxlOyBhbG1vc3QgYWx3YXlzIGEgbm8tb3AgKi9cbiBcdC8qIFRoZSBjZWxsIHNwdWZzIGNvcmVkdW1wIGNvZGUgcmVhZHMgdGhlIGZpbGUgZGVzY3JpcHRvciB0YWJsZXMgKi9cbiBcdGlmICh1bnNoYXJlX2ZpbGVzKCkpXG5kaWZmIC0tZ2l0IGEvZnMvZmlsZV90YWJsZS5jIGIvZnMvZmlsZV90YWJsZS5jXG5pbmRleCBjNjhiOGMwYTQwOTdhLi4wMmVlNGU4YjFjZmU4IDEwMDY0NFxuLS0tIGEvZnMvZmlsZV90YWJsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9maWxlX3RhYmxlLmNcbkBAIC01NjgsNyAmIzQzOzU2OCwxMiBAQCBzdGF0aWMgdm9pZCBfX2ZwdXRfZGVmZXJyZWQoc3RydWN0IGZpbGUgKmZpbGUpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdGlmIChsaWtlbHkoIWluX2ludGVycnVwdCgpIFx1MDAyNlx1MDAyNiAhKHRhc2stXHUwMDNlZmxhZ3MgXHUwMDI2IFBGX0tUSFJFQUQpKSkge1xuJiM0MztcdC8qXG4mIzQzO1x0ICogY29yZWR1bXBfcHJlX2V4aXQoKSBtYXkgcmVsZWFzZSBmaWxlcyBiZWZvcmUgZHVtcGluZyBjb3JlLlxuJiM0MztcdCAqIENhbm5vdCB1c2UgdGFza193b3JrIGluIHRoZSBjYXNlLCBuZWVkcyB0byByZWxlYXNlIGZpbGVzXG4mIzQzO1x0ICogZWFybGllci5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSBcdTAwMjZcdTAwMjYgISh0YXNrLVx1MDAzZWZsYWdzIFx1MDAyNiAoUEZfS1RIUkVBRCB8IFBGX0RVTVBDT1JFKSkpKSB7XG4gXHRcdGluaXRfdGFza193b3JrKFx1MDAyNmZpbGUtXHUwMDNlZl90YXNrX3dvcmssIF9fX19mcHV0KTtcbiBcdFx0aWYgKCF0YXNrX3dvcmtfYWRkKHRhc2ssIFx1MDAyNmZpbGUtXHUwMDNlZl90YXNrX3dvcmssIFRXQV9SRVNVTUUpKVxuIFx0XHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcbmluZGV4IGI1ZDRjZDNiMDY3YmYuLmEyN2ZmODhhOWFkOGEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaFxuQEAgLTE5NDcsMTQgJiM0MzsxOTQ3LDE2IEBAIGVudW0ge1xuICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDhcbiAjZGVmaW5lIE1NRl9EVU1QX0RBWF9QUklWQVRFXHQ5XG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVEXHQxMFxuJiM0MzsjZGVmaW5lIE1NRl9EVU1QX0ZEX0xJU1RcdDExXG4gXG4gI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfU0hJRlRcdE1NRl9EVU1QQUJMRV9CSVRTXG4tI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1x0OVxuJiM0MzsjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTXHQxMFxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX01BU0sgXFxcbiBcdCgoQklUKE1NRl9EVU1QX0ZJTFRFUl9CSVRTKSAtIDEpIFx1MDAzY1x1MDAzYyBNTUZfRFVNUF9GSUxURVJfU0hJRlQpXG4gI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfREVGQVVMVCBcXFxuIFx0KEJJVChNTUZfRFVNUF9BTk9OX1BSSVZBVEUpIHwgQklUKE1NRl9EVU1QX0FOT05fU0hBUkVEKSB8IFxcXG4tXHQgQklUKE1NRl9EVU1QX0hVR0VUTEJfUFJJVkFURSkgfCBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGKVxuJiM0MztcdCAoMSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYgfFxcXG4mIzQzO1x0ICgxIFx1MDAzY1x1MDAzYyBNTUZfRFVNUF9GRF9MSVNUKSlcbiBcbiAjaWZkZWYgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTXG4gIyBkZWZpbmUgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRlx0QklUKE1NRl9EVU1QX0VMRl9IRUFERVJTKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDT1JFRFVNUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zmc19jb3JlZHVtcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBkdW1wIGxvZ2ljIHRvIGFsbG93IHJlbGVhc2luZyBmaWxlcyBiZWZvcmUgZHVtcGluZyBjb3JlIGlmIGBNTUZfRFVNUF9GRF9MSVNUYCBpcyBub3Qgc2V0IGluIGBjb3JlZHVtcF9maWx0ZXJgLiBJdCBhbHNvIGNoYW5nZXMgYF9fZnB1dF9kZWZlcnJlZGAgdG8gYXZvaWQgdXNpbmcgYHRhc2tfd29ya2Agd2hlbiBgUEZfRFVNUENPUkVgIGlzIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIChjb3JlZHVtcCBhbmQgZmlsZSByZWZlcmVuY2UgbWFuYWdlbWVudCkgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0ZjFmMjhkZTdmZDZiOTJmZjhhZGJlYjM0NWJkNzE0YTAyMjY2NWVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAwNjozNzoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0CmluZGV4IDI3MTg5ZjZlMDA0ZWUuLmJkYWVmNjRhODFmYmEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdApAQCAtMTkyOSw3ICYjNDM7MTkyOSw3IEBAIHdpbGwgYmUgZHVtcGVkIHdoZW4gdGhlICZsdDtwaWQmZ3Q7IHByb2Nlc3MgaXMgZHVtcGVkLiBjb3JlZHVtcF9maWx0ZXIgaXMgYSBiaXRtYXNrCiBvZiBtZW1vcnkgdHlwZXMuIElmIGEgYml0IG9mIHRoZSBiaXRtYXNrIGlzIHNldCwgbWVtb3J5IHNlZ21lbnRzIG9mIHRoZQogY29ycmVzcG9uZGluZyBtZW1vcnkgdHlwZSBhcmUgZHVtcGVkLCBvdGhlcndpc2UgdGhleSBhcmUgbm90IGR1bXBlZC4KIAotVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOgomIzQzO1RoZSBmb2xsb3dpbmcgMTAgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6CiAKICAgLSAoYml0IDApIGFub255bW91cyBwcml2YXRlIG1lbW9yeQogICAtIChiaXQgMSkgYW5vbnltb3VzIHNoYXJlZCBtZW1vcnkKQEAgLTE5NDEsNiAmIzQzOzE5NDEsNyBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6CiAgIC0gKGJpdCA2KSBodWdldGxiIHNoYXJlZCBtZW1vcnkKICAgLSAoYml0IDcpIERBWCBwcml2YXRlIG1lbW9yeQogICAtIChiaXQgOCkgREFYIHNoYXJlZCBtZW1vcnkKJiM0MzsgIC0gKGJpdCA5KSBmZCBsaXN0CiAKICAgTm90ZSB0aGF0IE1NSU8gcGFnZXMgc3VjaCBhcyBmcmFtZSBidWZmZXIgYXJlIG5ldmVyIGR1bXBlZCBhbmQgdkRTTyBwYWdlcwogICBhcmUgYWx3YXlzIGR1bXBlZCByZWdhcmRsZXNzIG9mIHRoZSBiaXRtYXNrIHN0YXR1cy4KQEAgLTE5NDgsMTMgJiM0MzsxOTQ5LDIyIEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDoKICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbiYjMzk7dCBhZmZlY3QgaHVnZXRsYiBvciBEQVggbWVtb3J5LiBodWdldGxiIG1lbW9yeSBpcwogICBvbmx5IGFmZmVjdGVkIGJ5IGJpdCA1LTYsIGFuZCBEQVggaXMgb25seSBhZmZlY3RlZCBieSBiaXRzIDctOC4KIAomIzQzOyAgTm90ZSB0aGF0IGJpdCA5IGlzIHNldCBieSBkZWZhdWx0IGJlY2F1c2UgdG9vbHMgbGlrZSBzeXN0ZW1kLWNvcmVkdW1wIGdvCiYjNDM7ICB0aHJvdWdoIHRoZSBmZHMuIElmIHlvdSBkbyBub3Qgc2V0IGJpdCA5LCBmaWxlcyB0aGF0IGFyZSBub3QgcmVmZXJlbmNlZCBieQomIzQzOyAgYW55IFZNQSBhcmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gU29tZSBmaWxlIHJlbGVhc2UgbG9naWMsIHN1Y2ggYXMKJiM0MzsgIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaAomIzQzOyAgZWFybGllci4KJiM0MzsKJiM0MztUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgyMzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnkKJiM0MztzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcywgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhbmQgZmQgbGlzdCBhcmUgZHVtcGVkLgomIzQzOwogVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MzM7IHRoaXMgbWVhbnMgYWxsIGFub255bW91cyBtZW1vcnkKIHNlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzIGFuZCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFyZSBkdW1wZWQuCiAKIElmIHlvdSBkb24mIzM5O3Qgd2FudCB0byBkdW1wIGFsbCBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzIGF0dGFjaGVkIHRvIHBpZCAxMjM0LAotd3JpdGUgMHgzMSB0byB0aGUgcHJvY2VzcyYjMzk7cyBwcm9jIGZpbGU6OgomIzQzO3dyaXRlIDB4MjMxIHRvIHRoZSBwcm9jZXNzJiMzOTtzIHByb2MgZmlsZTo6CiAKLSAgJCBlY2hvIDB4MzEgJmd0OyAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlcgomIzQzOyAgJCBlY2hvIDB4MjMxICZndDsgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXIKIAogV2hlbiBhIG5ldyBwcm9jZXNzIGlzIGNyZWF0ZWQsIHRoZSBwcm9jZXNzIGluaGVyaXRzIHRoZSBiaXRtYXNrIHN0YXR1cyBmcm9tIGl0cwogcGFyZW50LiBJdCBpcyB1c2VmdWwgdG8gc2V0IHVwIGNvcmVkdW1wX2ZpbHRlciBiZWZvcmUgdGhlIHByb2dyYW0gcnVucy4KZGlmZiAtLWdpdCBhL2ZzL2NvcmVkdW1wLmMgYi9mcy9jb3JlZHVtcC5jCmluZGV4IGU2OGE3NmZmOTJhMzguLmQzNzhlNjljNjM2ZTIgMTAwNjQ0Ci0tLSBhL2ZzL2NvcmVkdW1wLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvY29yZWR1bXAuYwpAQCAtNTIwLDYgJiM0Mzs1MjAsMjUgQEAgc3RhdGljIGludCB6YXBfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKIAlyZXR1cm4gbnI7CiB9CiAKJiM0MzsvKgomIzQzOyAqIElmIGRvIG5vdCBkdW1wIGZkIGxpc3QsIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5IGFueSBWTUEKJiM0MzsgKiBjYW4gYmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gVGhlcmVmb3JlLCBzb21lIGZpbGUgcmVsZWFzZQomIzQzOyAqIGxvZ2ljLCBzdWNoIGFzIGV4aXRpbmcgZmxvY2sgb3IgcmVsZWFzaW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkCiYjNDM7ICogYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoIGVhcmxpZXIuIE5vdGUgdGhhdCBkb19jb3JlZHVtcCgpIG9mdGVuCiYjNDM7ICogdGFrZXMgc2V2ZXJhbCBzZWNvbmRzIG9yIGV2ZW4gbG9uZ2VyIHRvIGV4ZWN1dGUuCiYjNDM7ICovCiYjNDM7c3RhdGljIHZvaWQgY29yZWR1bXBfcHJlX2V4aXQodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudCwgKnQ7CiYjNDM7CiYjNDM7CWlmIChtbV9mbGFnc190ZXN0KE1NRl9EVU1QX0ZEX0xJU1QsIHRzay0mZ3Q7bW0pKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7CiYjNDM7CQlleGl0X2ZpbGVzKHQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBjb3JlZHVtcF93YWl0KGludCBleGl0X2NvZGUsIHN0cnVjdCBjb3JlX3N0YXRlICpjb3JlX3N0YXRlKQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudDsKQEAgLTExMjMsNiAmIzQzOzExNDIsOCBAQCBzdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSwKIAlpZiAoY24tJmd0O21hc2sgJmFtcDsgQ09SRURVTVBfUkVKRUNUKQogCQlyZXR1cm47CiAKJiM0MzsJY29yZWR1bXBfcHJlX2V4aXQoKTsKJiM0MzsKIAkvKiBnZXQgdXMgYW4gdW5zaGFyZWQgZGVzY3JpcHRvciB0YWJsZTsgYWxtb3N0IGFsd2F5cyBhIG5vLW9wICovCiAJLyogVGhlIGNlbGwgc3B1ZnMgY29yZWR1bXAgY29kZSByZWFkcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRhYmxlcyAqLwogCWlmICh1bnNoYXJlX2ZpbGVzKCkpCmRpZmYgLS1naXQgYS9mcy9maWxlX3RhYmxlLmMgYi9mcy9maWxlX3RhYmxlLmMKaW5kZXggYzY4YjhjMGE0MDk3YS4uMDJlZTRlOGIxY2ZlOCAxMDA2NDQKLS0tIGEvZnMvZmlsZV90YWJsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2ZpbGVfdGFibGUuYwpAQCAtNTY4LDcgJiM0Mzs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKQogCQlyZXR1cm47CiAJfQogCi0JaWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgJmFtcDsmYW1wOyAhKHRhc2stJmd0O2ZsYWdzICZhbXA7IFBGX0tUSFJFQUQpKSkgewomIzQzOwkvKgomIzQzOwkgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuCiYjNDM7CSAqIENhbm5vdCB1c2UgdGFza193b3JrIGluIHRoZSBjYXNlLCBuZWVkcyB0byByZWxlYXNlIGZpbGVzCiYjNDM7CSAqIGVhcmxpZXIuCiYjNDM7CSAqLwomIzQzOwlpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSAmYW1wOyZhbXA7ICEodGFzay0mZ3Q7ZmxhZ3MgJmFtcDsgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkgewogCQlpbml0X3Rhc2tfd29yaygmYW1wO2ZpbGUtJmd0O2ZfdGFza193b3JrLCBfX19fZnB1dCk7CiAJCWlmICghdGFza193b3JrX2FkZCh0YXNrLCAmYW1wO2ZpbGUtJmd0O2ZfdGFza193b3JrLCBUV0FfUkVTVU1FKSkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaAppbmRleCBiNWQ0Y2QzYjA2N2JmLi5hMjdmZjg4YTlhZDhhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oCkBAIC0xOTQ3LDE0ICYjNDM7MTk0NywxNiBAQCBlbnVtIHsKICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDgKICNkZWZpbmUgTU1GX0RVTVBfREFYX1BSSVZBVEUJOQogI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVECTEwCiYjNDM7I2RlZmluZSBNTUZfRFVNUF9GRF9MSVNUCTExCiAKICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX1NISUZUCU1NRl9EVU1QQUJMRV9CSVRTCi0jZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTCTkKJiM0MzsjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTCTEwCiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9NQVNLIFwKIAkoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSAmbHQ7Jmx0OyBNTUZfRFVNUF9GSUxURVJfU0hJRlQpCiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9ERUZBVUxUIFwKIAkoQklUKE1NRl9EVU1QX0FOT05fUFJJVkFURSkgfCBCSVQoTU1GX0RVTVBfQU5PTl9TSEFSRUQpIHwgXAotCSBCSVQoTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYpCiYjNDM7CSAoMSAmbHQ7Jmx0OyBNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRiB8XAomIzQzOwkgKDEgJmx0OyZsdDsgTU1GX0RVTVBfRkRfTElTVCkpCiAKICNpZmRlZiBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlMKICMgZGVmaW5lIE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYJQklUKE1NRl9EVU1QX0VMRl9IRUFERVJTKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjk4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBDb3JlZHVtcCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgY29yZWR1bXAgcHJvY2VzcyBpbiB0aGUgTGludXgga2VybmVsLiBTZWVtcyBsaWtlIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgY2hhbmdlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBhIG5ldyBiaXQsIGJpdCA5LCBgTU1GX0RVTVBfRkRfTElTVGAsIHRvIHRoZSBgY29yZWR1bXBfZmlsdGVyYC4gIFRoZSBjb3JlIGlkZWEgaXMsIGlmIHRoaXMgYml0IGlzbiYjMzk7dCBzZXQsIHRoZSBgY29yZWR1bXBfcHJlX2V4aXQoKWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgd2l0aGluIGBkb19jb3JlZHVtcCgpYCB0byBtYWtlIHN1cmUgZmlsZSBkZXNjcmlwdG9ycyBhcmUgY2xlYW5lZCB1cCAqYmVmb3JlKiB0aGUgY29yZWR1bXAgYWN0dWFsbHkgaGFwcGVucy4KCkNydWNpYWxseSwgdGhlIHBhdGNoIGFsc28gdG91Y2hlcyBgX19mcHV0X2RlZmVycmVkYCBpbiBgZnMvZmlsZV90YWJsZS5jYC4gIFRoZSBtb2RpZmljYXRpb24gdGhlcmUgaW52b2x2ZXMgY2hlY2tpbmcgdGhlIGBQRl9EVU1QQ09SRWAgZmxhZy4gSWYgdGhpcyBmbGFnIGlzIHNldCwgaXQgbWVhbnMgd2UmIzM5O3JlIGluIHRoZSBtaWRkbGUgb2YgYSBjb3JlZHVtcCwgYW5kIGl0JiMzOTtzIGJ5cGFzc2luZyB0aGUgYHRhc2tfd29ya2AgbWVjaGFuaXNtLCBlbnN1cmluZyBmaWxlcyBhcmUgcmVsZWFzZWQgZXZlbiBlYXJsaWVyLiBUaGlzIGlzIGRlZmluaXRlbHkgYWJvdXQgb3B0aW1pemluZyB0aGUgY2xlYW51cCBwaGFzZSBwcmlvciB0byB0aGUgZHVtcC4KCk5vdywgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmU6IGBkb19jb3JlZHVtcGAgaXMgY2FsbGluZyBgY29yZWR1bXBfcHJlX2V4aXQoKWAsIHdoaWNoIGluIHR1cm4gY2FsbHMgYGV4aXRfZmlsZXModClgIG9uIGVhY2ggdGhyZWFkIGluIHRoZSB0aHJlYWQgZ3JvdXAuICBUaGF0JiMzOTtzIHRoZSBmaWxlIGNsZWFudXAgc2VxdWVuY2UuIEFuZCB0aGVuLCB0aGUgbW9kaWZpY2F0aW9uIHRvIGBfX2ZwdXRfZGVmZXJyZWRgIGlzIHRoZSBrZXkg4oCTIGl0JiMzOTtzIG1ha2luZyB0aGUgZmlsZSByZWxlYXNlIGhhcHBlbiBtb3JlIGVhZ2VybHkgdW5kZXIgY29yZWR1bXAgY29uZGl0aW9ucy4KClRoaXMgaXMgY29yZSBrZXJuZWwgbG9naWMg4oCTIGl0JiMzOTtzIGNoYW5naW5nIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgZmlsZSBkZXNjcmlwdG9ycyBkdXJpbmcgY3JpdGljYWwgY3Jhc2ggZHVtcCBzY2VuYXJpb3MuIERlZmluaXRlbHksIHRoaXMgd2FycmFudHMgZnV6emluZzsgaXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIGV4cG9zZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIG90aGVyIHN1YnRsZSBpc3N1ZXMuIFNvLCBiYXNlZCBvbiB0aGlzIHVuZGVyc3RhbmRpbmcsIEkmIzM5O2QgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3csIGZvciBwb3RlbnRpYWwgZm9jdXMgc3ltYm9scyB0byB0YXJnZXQgaW4gZnV6emluZywgYGRvX2NvcmVkdW1wYCBpcyBkZWZpbml0ZWx5IGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QuIGBjb3JlZHVtcF9wcmVfZXhpdCgpYCBpcyBhbHNvIHJlbGV2YW50LCBidXQgaXQmIzM5O3MgbWFya2VkIGFzIGBzdGF0aWNgLCBzbyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoYXQgbWlnaHQgYWZmZWN0IGRpcmVjdCBjb3ZlcmFnZS4gSSBtYXkgYWxzbyB3YW50IHRvIGZvY3VzIG9uIHZhcmlhbnRzIG9mIGBfX2ZwdXRfZGVmZXJyZWRgLiBQZXJoYXBzLCBgZnB1dGAsIGBfX2ZwdXRgLCBvciBgZnB1dF9tYW55YCBhcyB0aGUgc3RhdGljIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIHRob3NlLgoKSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgZnMvY29yZWR1bXAuY2AgYW5kIGBmcy9maWxlX3RhYmxlLmNgIHRvIHVuZGVyc3RhbmQgdGhlIGZpbmVyIGRldGFpbHMgb2YgdGhlc2UgY2hhbmdlcyBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoaW4gdGhlIGNvZGUgYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb3JlZHVtcF9wcmVfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2NvcmVkdW1wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY29yZWR1bXAuYz01MDQ9c3RhdGljIGludCB6YXBfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayxcbi0tXG5mcy9jb3JlZHVtcC5jLTUyOS0gKi9cbmZzL2NvcmVkdW1wLmM6NTMwOnN0YXRpYyB2b2lkIGNvcmVkdW1wX3ByZV9leGl0KHZvaWQpXG5mcy9jb3JlZHVtcC5jLTUzMS17XG4tLVxuZnMvY29yZWR1bXAuYz0xMTExPXN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxuLS1cbmZzL2NvcmVkdW1wLmMtMTE0NC1cbmZzL2NvcmVkdW1wLmM6MTE0NTpcdGNvcmVkdW1wX3ByZV9leGl0KCk7XG5mcy9jb3JlZHVtcC5jLTExNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc1MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqU3RhdGljIEZ1bmN0aW9ucyBpbiBDb3JlIER1bXAgSGFuZGxpbmcqKgoKT2theSwgc28gYGNvcmVkdW1wX3ByZV9leGl0YCBpcyBkZWZpbml0ZWx5IHN0YXRpYy4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcHMgaXQgc2NvcGVkIGFwcHJvcHJpYXRlbHkuIE5vdywgSSYjMzk7bSBwcmV0dHkgc3VyZSBgZG9fY29yZWR1bXBgIGlzIGFsc28gc3RhdGljLCBidXQgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQuIEl0JiMzOTtzIGltcG9ydGFudCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhlIHNjb3BlIGFuZCBsaW5rYWdlIGluIHRoZXNlIGNyaXRpY2FsIGZ1bmN0aW9ucywgZXNwZWNpYWxseSB3aXRoaW4gdGhlIGNvcmUgZHVtcCBoYW5kbGluZyBjb250ZXh0LiBXZSBjYW4mIzM5O3QgYWZmb3JkIGFueSBhY2NpZGVudGFsIGV4dGVybmFsIGFjY2VzcyBvciBuYW1lIGNvbGxpc2lvbnMgaGVyZS4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBgZG9fY29yZWR1bXBgIGlzIGRlY2xhcmVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb19jb3JlZHVtcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2NvcmVkdW1wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvY29yZWR1bXAuYz01MDQ9c3RhdGljIGludCB6YXBfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayxcbi0tXG5mcy9jb3JlZHVtcC5jLTUyNi0gKiBsb2dpYywgc3VjaCBhcyBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZFxuZnMvY29yZWR1bXAuYzo1Mjc6ICogYnVmZmVycyBpcyBleGVjdXRlZCBtdWNoIGVhcmxpZXIuIE5vdGUgdGhhdCBkb19jb3JlZHVtcCgpIG9mdGVuXG5mcy9jb3JlZHVtcC5jLTUyOC0gKiB0YWtlcyBzZXZlcmFsIHNlY29uZHMgb3IgZXZlbiBsb25nZXIgdG8gZXhlY3V0ZS5cbi0tXG5mcy9jb3JlZHVtcC5jPTEwOTk9c3RhdGljIGlubGluZSBib29sIGNvcmVkdW1wX3NraXAoY29uc3Qgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSxcbi0tXG5mcy9jb3JlZHVtcC5jLTExMTAtXG5mcy9jb3JlZHVtcC5jOjExMTE6c3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG5mcy9jb3JlZHVtcC5jLTExMTItXHRcdFx0c2l6ZV90ICoqYXJndiwgaW50ICphcmdjLCBjb25zdCBzdHJ1Y3QgbGludXhfYmluZm10ICpiaW5mbXQpXG4tLVxuZnMvY29yZWR1bXAuYz0xMTgyPXZvaWQgdmZzX2NvcmVkdW1wKGNvbnN0IGtlcm5lbF9zaWdpbmZvX3QgKnNpZ2luZm8pXG4tLVxuZnMvY29yZWR1bXAuYy0xMjIwLVx0c2NvcGVkX3dpdGhfY3JlZHMoY3JlZClcbmZzL2NvcmVkdW1wLmM6MTIyMTpcdFx0ZG9fY29yZWR1bXAoXHUwMDI2Y24sIFx1MDAyNmNwcm0sIFx1MDAyNmFyZ3YsIFx1MDAyNmFyZ2MsIGJpbmZtdCk7XG5mcy9jb3JlZHVtcC5jLTEyMjItXHRjb3JlZHVtcF9jbGVhbnVwKFx1MDAyNmNuLCBcdTAwMjZjcHJtKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIENvcmUgRHVtcCBFbnRyeSBQb2ludCoqCgpSaWdodCwgc28gYHZmc19jb3JlZHVtcGAgaXMgdGhlIGV4dGVybmFsbHkgdmlzaWJsZSwgbm9uLXN0YXRpYyBlbnRyeSBwb2ludCBmb3IgY29yZSBkdW1wcy4gR29vZC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdyBmcm9tIHRoZXJlLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGxvb2sgZm9yIHJlbGF0ZWQgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gZmlsZSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdoZXJlIGZpbGVzIGFyZSBjbG9zZWQsIHBvdGVudGlhbGx5IGRlZmVycmVkLiBPa2F5LCBteSBodW5jaCBpcyB0byBjaGVjayBgZnMvZmlsZV90YWJsZS5jYCwgYW5kIEkmIzM5O20gemVyb2luZyBpbiBvbiBgX19mcHV0X2RlZmVycmVkYC4gVGhhdCYjMzk7cyBsaWtlbHkgd2hlcmUgc29tZSBjcml0aWNhbCBvcGVyYXRpb25zIGR1cmluZyBmaWxlIGNsb3N1cmUgYXJlIGhhcHBlbmluZywgYW5kIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gaG93IGNvcmUgZHVtcCBpbmZvcm1hdGlvbiBpcyBhY3R1YWxseSBoYW5kbGVkIGJlZm9yZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGZ1bGx5IHJlbGVhc2VkLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIG5leHQgc3RlcCBpbiB0cmFjaW5nIHRoZSBjYWxsIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19mcHV0X2RlZmVycmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZmlsZV90YWJsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2ZpbGVfdGFibGUuYz01NjA9RVhQT1JUX1NZTUJPTF9HUEwoZmx1c2hfZGVsYXllZF9mcHV0KTtcbmZzL2ZpbGVfdGFibGUuYy01NjEtXG5mcy9maWxlX3RhYmxlLmM6NTYyOnN0YXRpYyB2b2lkIF9fZnB1dF9kZWZlcnJlZChzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2ZpbGVfdGFibGUuYy01NjMte1xuLS1cbmZzL2ZpbGVfdGFibGUuYz01OTE9dm9pZCBmcHV0KHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2ZpbGVfdGFibGUuYy01OTMtXHRpZiAodW5saWtlbHkoZmlsZV9yZWZfcHV0KFx1MDAyNmZpbGUtXHUwMDNlZl9yZWYpKSlcbmZzL2ZpbGVfdGFibGUuYzo1OTQ6XHRcdF9fZnB1dF9kZWZlcnJlZChmaWxlKTtcbmZzL2ZpbGVfdGFibGUuYy01OTUtfVxuLS1cbmZzL2ZpbGVfdGFibGUuYz02MzE9dm9pZCBmcHV0X2Nsb3NlKHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2ZpbGVfdGFibGUuYy02MzMtXHRpZiAoZmlsZV9yZWZfcHV0X2Nsb3NlKFx1MDAyNmZpbGUtXHUwMDNlZl9yZWYpKVxuZnMvZmlsZV90YWJsZS5jOjYzNDpcdFx0X19mcHV0X2RlZmVycmVkKGZpbGUpO1xuZnMvZmlsZV90YWJsZS5jLTYzNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgxNgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIENvcmUgRHVtcCBFbnRyeSBQb2ludHMgYW5kIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgZW50cnkgcG9pbnRzIGZvciBjb3JlIGR1bXAgZnVuY3Rpb25hbGl0eSBoZXJlLiBJIHNlZSB0aGF0IGBmcHV0YCBhbmQgYGZwdXRfY2xvc2VgIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW52b2x2ZWQsIGFuZCBhbHNvIGB2ZnNfY29yZWR1bXBgIGlzIHJlbGV2YW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoYXQgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCB0byBtYWtlIGFsbCB0aGlzIHdvcms/IEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBMZXQgbWUgc2VlLi4uIGFoYSwgbG9va3MgbGlrZSBgQ09ORklHX0NPUkVEVU1QYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYGZzL2NvcmVkdW1wLmNgLiBHb3QgaXQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ09SRURVTVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQ9MTQ1PWNvbmZpZyBCSU5GTVRfTUlTQ1xuLS1cbmZzL0tjb25maWcuYmluZm10LTE3MC1cbmZzL0tjb25maWcuYmluZm10OjE3MTpjb25maWcgQ09SRURVTVBcbmZzL0tjb25maWcuYmluZm10LTE3Mi1cdGJvb2wgXCYjMzQ7RW5hYmxlIGNvcmUgZHVtcCBzdXBwb3J0XCYjMzQ7IGlmIEVYUEVSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTIxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBDb3JlIER1bXAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBrZXl3b3JkIHRoYXQganVtcHMgb3V0IGltbWVkaWF0ZWx5IGlzIGBDT1JFRFVNUGAuIFJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSB1c3VhbCBzdXNwZWN0cyAtIEkgbmVlZCB0byBzdGFydCBjaGVja2luZyBgZnMvZmlsZV90YWJsZS5jYCwgYmVjYXVzZSBpdCYjMzk7cyBhbHdheXMgY29tcGlsZWQgaW4uIE9rYXksIEkmIzM5O3ZlIGdvdCBpdCwgYml0IDExLCBgTU1GX0RVTVBfRkRfTElTVGAuIEludGVyZXN0aW5nLgoKTm93LCB0aGUgcGF0Y2ggdG91Y2hlcyBgZG9fY29yZWR1bXBgIGFuZCBgX19mcHV0X2RlZmVycmVkYC4gVGhlIGNvcmUgaWRlYSBpcyB0byBjaGFuZ2UgaG93IHdlIHJlbGVhc2UgZmlsZXMgKmJlZm9yZSogYSBjb3JlIGR1bXAsIGlmIGBNTUZfRFVNUF9GRF9MSVNUYCBpcyAqbm90KiBzZXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIG9wdGltaXphdGlvbi4gVGhlIHNlY29uZCBjaGFuZ2UgYXZvaWRzIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQsIGFsc28gbG9naWNhbC4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYyDigJMgc3BlY2lmaWNhbGx5LCBob3cgY29yZSBkdW1wcyBhbmQgZmlsZSByZWZlcmVuY2VzIGFyZSBtYW5hZ2VkLiBCZWNhdXNlIGl0JiMzOTtzIGZ1bmN0aW9uYWwsIGZ1enppbmcgaXMgZGVmaW5pdGVseSBpbiBvcmRlci4KCkxldCYjMzk7cyBxdWlja2x5IGlkZW50aWZ5IHRoZSBwcmltYXJ5IGZvY3VzIHBvaW50cy4gSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIGB2ZnNfY29yZWR1bXBgLCBgZnB1dGAsIGFuZCBgZnB1dF9jbG9zZWAuIFRoZSBjb25maWd1cmF0aW9uIG5lZWRlZCBpcyBzaW1wbHkgYENPUkVEVU1QYC4gQWxyaWdodCwgSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgdG8gdmVyaWZ5IHRoYXQgYHZmc19jb3JlZHVtcGAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2ZnNfY29yZWR1bXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9jb3JlZHVtcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2NvcmVkdW1wLmM9MTExMT1zdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSxcbi0tXG5mcy9jb3JlZHVtcC5jLTExODEtXG5mcy9jb3JlZHVtcC5jOjExODI6dm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbylcbmZzL2NvcmVkdW1wLmMtMTE4My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3NzQKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZGlzdGlsbGluZyB0aGVtIGludG8gYSBjb25jaXNlIHN1bW1hcnkgYXMgYSBzZWFzb25lZCBwcm9mZXNzaW9uYWwgd291bGQ6CgoqKkNvcmVkdW1wIEVudHJ5IFBvaW50IEFuYWx5c2lzKioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgYHZmc19jb3JlZHVtcGAgKmlzKiB0aGUga2V5IGVudHJ5IHBvaW50LiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgaG90IHNwb3RzLCBidXQgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgc3lzdGVtLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgd2hldGhlciBgZnB1dGAgaXMgdG9vIGJ1c3kuIERhbW4sIHllYWgsIGBmcHV0YCBpcyBnZXR0aW5nIGhhbW1lcmVkLCBhbmQgc28gaXMgYGZwdXRfY2xvc2VgLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBleHBsaWNpdDogYXZvaWQgc2tld2luZyB0aGUgZGF0YSB3aXRoIGNvbW1vbiBob3QtcGF0aCBmdW5jdGlvbnMsIGFuZCB0aGVzZSBhcmUgdGV4dGJvb2sgZXhhbXBsZXMgb2Ygc3VjaCBmdW5jdGlvbnMuIFRoZXkmIzM5O3JlIGdvaW5nIHRvIGRvbWluYXRlIGFueSBkaXN0cmlidXRpb24sIG1ha2luZyB0aGUgc3BlY2lmaWMgYW5hbHlzaXMgb2YgYHZmc19jb3JlZHVtcGAgbGVzcyBhY2N1cmF0ZS4gU28sIHRoZSBiZXN0IHBhdGggZm9yd2FyZCwgYXMgdGhlIGluc3RydWN0aW9ucyBzcGVjaWZ5LCBpcyB0byBleGNsdWRlIHRob3NlIGdlbmVyaWMgZnVuY3Rpb25zIGFuZCBmb2N1cyBleGNsdXNpdmVseSBvbiBgdmZzX2NvcmVkdW1wYC4gVGltZSB0byBjb25maXJtIHRoZSBjYWxsZXJzIG9mIGB2ZnNfY29yZWR1bXBgIGFuZCBwcm9jZWVkIHdpdGggdGhlIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zmc19jb3JlZHVtcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdD01NTU9ZGlmZmVyZW50IHNldCBvZiBjcmVkZW50aWFscy4gIFRoaXMgaXMgZG9uZSBpbiB0aGUgZm9sbG93aW5nIHBsYWNlczpcbi0tXG5Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdC01NTctICogYGBzeXNfZmFjY2Vzc2F0KClgYC5cbkRvY3VtZW50YXRpb24vc2VjdXJpdHkvY3JlZGVudGlhbHMucnN0OjU1ODogKiBgYHZmc19jb3JlZHVtcCgpYGAuXG5Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdC01NTktICogbmZzNHJlY292ZXIuYy5cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3Q9MjU0PWNvbnN05oyH6ZKI5LiK5pON5L2c77yM5Zug5q2k5LiN6ZyA6KaB6L+b6KGM57G75Z6L6L2s5o2i77yM5L2G6ZyA6KaB5Li05pe25pS+5byDY29uc3TpmZDlrprvvIzku6Xkvr/og73lpJ/kv67mlLlcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3QtNDc3LSAqIGBgc3lzX2ZhY2Nlc3NhdCgpYGAuXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3Q6NDc4OiAqIGBgdmZzX2NvcmVkdW1wKClgYC5cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdC00NzktICogbmZzNHJlY292ZXIuYy5cbi0tXG5mcy9jb3JlZHVtcC5jPTExMTE9c3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4tLVxuZnMvY29yZWR1bXAuYy0xMTgxLVxuZnMvY29yZWR1bXAuYzoxMTgyOnZvaWQgdmZzX2NvcmVkdW1wKGNvbnN0IGtlcm5lbF9zaWdpbmZvX3QgKnNpZ2luZm8pXG5mcy9jb3JlZHVtcC5jLTExODMte1xuLS1cbmluY2x1ZGUvbGludXgvY29yZWR1bXAuaD00OD1pbnQgZHVtcF91c2VyX3JhbmdlKHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXG5pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmgtNDktXHRcdCAgICB1bnNpZ25lZCBsb25nIGxlbik7XG5pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmg6NTA6ZXh0ZXJuIHZvaWQgdmZzX2NvcmVkdW1wKGNvbnN0IGtlcm5lbF9zaWdpbmZvX3QgKnNpZ2luZm8pO1xuaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oLTUxLVxuLS1cbmluY2x1ZGUvbGludXgvY29yZWR1bXAuaC02OS0jZWxzZVxuaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oOjcwOnN0YXRpYyBpbmxpbmUgdm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbykge31cbmluY2x1ZGUvbGludXgvY29yZWR1bXAuaC03MS1cbi0tXG5rZXJuZWwvc2lnbmFsLmM9MjgxMD1ib29sIGdldF9zaWduYWwoc3RydWN0IGtzaWduYWwgKmtzaWcpXG4tLVxua2VybmVsL3NpZ25hbC5jLTMwMzAtXHRcdFx0ICovXG5rZXJuZWwvc2lnbmFsLmM6MzAzMTpcdFx0XHR2ZnNfY29yZWR1bXAoXHUwMDI2a3NpZy1cdTAwM2VpbmZvKTtcbmtlcm5lbC9zaWduYWwuYy0zMDMyLVx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MjAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDcmFzaCBEdW1wIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIGtlcm5lbCYjMzk7cyBjcmFzaCBkdW1wIG1lY2hhbmlzbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHZmc19jb3JlZHVtcGAgaXMgYSBwcmV0dHkgZ29vZCBwbGFjZSB0byBzdGFydCwgYXMgSSBjYW4gc2VlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBnZXRfc2lnbmFsYCB3aGVuIGEgcHJvY2VzcyBnb2VzIGJlbGx5LXVwLiBUaGF0IG1ha2VzIGl0IGEgbmF0dXJhbCBmb2NhbCBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBmbG93LgoKTGV0IG1lIHRha2UgYSBsb29rIGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMsIGFuZCBjb25maXJtIHRoYXQgYHZmc19jb3JlZHVtcGAgaXMgaW5kZWVkIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBIbW0sIGBjb3JlZHVtcF9wcmVfZXhpdGAgYW5kIGBkb19jb3JlZHVtcGAgYXJlIHN0YXRpYywgYW5kIHRoZW4gdGhlcmUmIzM5O3MgYWxzbyBgX19mcHV0X2RlZmVycmVkYCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gVGhlc2UgbWlnaHQgYmUgdXNlZnVsLCBidXQgYHZmc19jb3JlZHVtcGAgc2VlbXMgdG8gYmUgdGhlIG1vc3QgYWNjZXNzaWJsZSBhbmQgY2VudHJhbCBlbnRyeSBwb2ludCBmb3IgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4KClNvLCBub3cgdGhhdCBJJiMzOTt2ZSBpZGVudGlmaWVkIGB2ZnNfY29yZWR1bXBgLCBpdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHdoYXQgYENPUkVEVU1QYCBkZXBlbmRzIG9uLCBhbmQgc2VlIGhvdyBtdWNoIHRoZSBjb3JlIGR1bXAgcHJvY2VzcyBpcyBhZmZlY3RlZCBieSBvdGhlciBzdWJzeXN0ZW1zLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQgaW4gd2hpY2ggYENPUkVEVU1QYCBpcyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ09SRURVTVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdD0xNDU9Y29uZmlnIEJJTkZNVF9NSVNDXG4tLVxuZnMvS2NvbmZpZy5iaW5mbXQtMTcwLVxuZnMvS2NvbmZpZy5iaW5mbXQ6MTcxOmNvbmZpZyBDT1JFRFVNUFxuZnMvS2NvbmZpZy5iaW5mbXQtMTcyLVx0Ym9vbCBcJiMzNDtFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcJiMzNDsgaWYgRVhQRVJUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxODIKCQkJCQkJCW91dHB1dDogMTMyCgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvcmUgRHVtcCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBDT1JFRFVNUGAgY29uZmlnIG9wdGlvbiBhbmQgaXQgZGVmYXVsdHMgdG8gJiMzNDt5LCYjMzQ7IHdoaWNoLCBnaXZlbiBteSBleHBlcmllbmNlLCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGUgaGVscCB0ZXh0IGV2ZW4gZXhwbGljaXRseSBzdGF0ZXMgdGhhdCBlbmFibGluZyBpdCBpcyBwcmFjdGljYWxseSBhIG5lY2Vzc2l0eSB1bmxlc3Mgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzeXN0ZW1zIHRoYXQgYXJlIGVpdGhlciBpbmhlcmVudGx5IGRlYnVnLWZyZWUgb3IgcnVuIG5vdGhpbmcgYnV0IGZsYXdsZXNzbHkgd3JpdHRlbiBjb2RlIOKAkyBhbmQgbGV0JiMzOTtzIGJlIGhvbmVzdCwgdGhvc2UgYXJlIHJhcmUuIFRoaXMgbWVhbnMgSSYjMzk7bSBwcmV0dHkgbXVjaCBhZ3JlZWluZyB3aXRoIHRoZSBkZWZhdWx0LiBJdCYjMzk7cyBzYWZlLCBhbmQgbW9zdCBzYW5lIGtlcm5lbCBzZXR1cHMgd2lsbCB3YW50IGNvcmUgZHVtcHMgZW5hYmxlZC4gSSBjYW4gY29uZmlkZW50bHkgY2hlY2sgYENPUkVEVU1QYC4KClRoZSBwYXRjaCBpdHNlbGYgaW52b2x2ZXMgc29tZSBjcnVjaWFsIGNvcmUga2VybmVsIGNoYW5nZXMsIHNwZWNpZmljYWxseSBhcm91bmQgaG93IGNvcmUgZHVtcHMgYXJlIGhhbmRsZWQgd2hlbiBmaWxlIGRlc2NyaXB0b3JzIGFyZSBpbnZvbHZlZC4gVGhlIGxvZ2ljIGFwcGVhcnMgdG8gYmUgZGVhbGluZyB3aXRoIHRoZSByZWxlYXNlIG9mIGZpbGVzIGJlZm9yZSB0aGUgYWN0dWFsIGNvcmUgZHVtcCBoYXBwZW5zLCBjb250aW5nZW50IG9uIHRoZSBgTU1GX0RVTVBfRkRfTElTVGAgc2V0dGluZyB3aXRoaW4gdGhlIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGVyZSYjMzk7cyBhbHNvIHNvbWUgcmVmYWN0b3JpbmcgZ29pbmcgb24gd2l0aCBgX19mcHV0X2RlZmVycmVkYCB0byBieXBhc3MgYHRhc2tfd29ya2Agd2hlbiBgUEZfRFVNUENPUkVgIGlzIGFjdGl2ZS4gVGhpcyBzaWduYWxzIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgdG91Y2hpbmcgY3JpdGljYWwgcGllY2VzIG9mIGNvcmUgZHVtcCBhbmQgZmlsZSByZWZlcmVuY2UgbWFuYWdlbWVudC4gQ29uc2lkZXJpbmcgaXQmIzM5O3MgY29yZSBrZXJuZWwgY29kZSwgcGFydGljdWxhcmx5IHRoZSBjb3JlIGR1bXAgZmxvdywgSSYjMzk7bSBjb25maWRlbnQgd2UgbmVlZCB0byBsb29rIGNsb3NlciBhbmQgcG90ZW50aWFsbHkgZnV6eiB0aGlzIHBhdGNoLgoKTXkgYXR0ZW50aW9uIGlzIGRlZmluaXRlbHkgZHJhd24gdG8gYHZmc19jb3JlZHVtcGAsIGFzIGl0IHdpbGwgbGlrZWx5IGJlIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IG9yIGludm9sdmVkIGluIHNvbWUgY3JpdGljYWwgcGFydCBvZiB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5LCBzbyB0aGF0IGZ1bmN0aW9uIHdpbGwgYmUgdGhlIGZvY2FsIHBvaW50IG9mIGFueSBkZWVwIGRpdmUgb3IgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPUkVEVU1QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZzX2NvcmVkdW1wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGR1bXAgbG9naWMgdG8gYWxsb3cgcmVsZWFzaW5nIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUgaWYgYE1NRl9EVU1QX0ZEX0xJU1RgIGlzIG5vdCBzZXQgaW4gYGNvcmVkdW1wX2ZpbHRlcmAuIEl0IGFsc28gY2hhbmdlcyBgX19mcHV0X2RlZmVycmVkYCB0byBhdm9pZCB1c2luZyBgdGFza193b3JrYCB3aGVuIGBQRl9EVU1QQ09SRWAgaXMgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgKGNvcmVkdW1wIGFuZCBmaWxlIHJlZmVyZW5jZSBtYW5hZ2VtZW50KSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q09SRURVTVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZnNfY29yZWR1bXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyByZWxlYXNpbmcgZmlsZXMgYmVmb3JlIGR1bXBpbmcgY29yZSBpZiBgTU1GX0RVTVBfRkRfTElTVGAgaXMgbm90IHNldCBpbiBgY29yZWR1bXBfZmlsdGVyYC4gSXQgYWxzbyBjaGFuZ2VzIGBfX2ZwdXRfZGVmZXJyZWRgIHRvIGF2b2lkIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyAoY29yZWR1bXAgYW5kIGZpbGUgcmVmZXJlbmNlIG1hbmFnZW1lbnQpIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MjEuODA3NTQzNzI4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2ODQ1OTE3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09SRURVTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZnNfY29yZWR1bXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBkdW1wIGxvZ2ljIHRvIGFsbG93IHJlbGVhc2luZyBmaWxlcyBiZWZvcmUgZHVtcGluZyBjb3JlIGlmIGBNTUZfRFVNUF9GRF9MSVNUYCBpcyBub3Qgc2V0IGluIGBjb3JlZHVtcF9maWx0ZXJgLiBJdCBhbHNvIGNoYW5nZXMgYF9fZnB1dF9kZWZlcnJlZGAgdG8gYXZvaWQgdXNpbmcgYHRhc2tfd29ya2Agd2hlbiBgUEZfRFVNUENPUkVgIGlzIHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIChjb3JlZHVtcCBhbmQgZmlsZSByZWZlcmVuY2UgbWFuYWdlbWVudCkgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjIxLjgwNzU1MTI2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMwMzI3NTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGYxZjI4ZGU3ZmQ2YjkyZmY4YWRiZWIzNDViZDcxNGEwMjI2NjVlZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyA3IDA2OjM3OjIwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XFxuaW5kZXggMjcxODlmNmUwMDRlZS4uYmRhZWY2NGE4MWZiYSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxcbkBAIC0xOTI5LDcgKzE5MjksNyBAQCB3aWxsIGJlIGR1bXBlZCB3aGVuIHRoZSBcXHUwMDNjcGlkXFx1MDAzZSBwcm9jZXNzIGlzIGR1bXBlZC4gY29yZWR1bXBfZmlsdGVyIGlzIGEgYml0bWFza1xcbiBvZiBtZW1vcnkgdHlwZXMuIElmIGEgYml0IG9mIHRoZSBiaXRtYXNrIGlzIHNldCwgbWVtb3J5IHNlZ21lbnRzIG9mIHRoZVxcbiBjb3JyZXNwb25kaW5nIG1lbW9yeSB0eXBlIGFyZSBkdW1wZWQsIG90aGVyd2lzZSB0aGV5IGFyZSBub3QgZHVtcGVkLlxcbiBcXG4tVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxcbitUaGUgZm9sbG93aW5nIDEwIG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxcbiBcXG4gICAtIChiaXQgMCkgYW5vbnltb3VzIHByaXZhdGUgbWVtb3J5XFxuICAgLSAoYml0IDEpIGFub255bW91cyBzaGFyZWQgbWVtb3J5XFxuQEAgLTE5NDEsNiArMTk0MSw3IEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDpcXG4gICAtIChiaXQgNikgaHVnZXRsYiBzaGFyZWQgbWVtb3J5XFxuICAgLSAoYml0IDcpIERBWCBwcml2YXRlIG1lbW9yeVxcbiAgIC0gKGJpdCA4KSBEQVggc2hhcmVkIG1lbW9yeVxcbisgIC0gKGJpdCA5KSBmZCBsaXN0XFxuIFxcbiAgIE5vdGUgdGhhdCBNTUlPIHBhZ2VzIHN1Y2ggYXMgZnJhbWUgYnVmZmVyIGFyZSBuZXZlciBkdW1wZWQgYW5kIHZEU08gcGFnZXNcXG4gICBhcmUgYWx3YXlzIGR1bXBlZCByZWdhcmRsZXNzIG9mIHRoZSBiaXRtYXNrIHN0YXR1cy5cXG5AQCAtMTk0OCwxMyArMTk0OSwyMiBAQCBUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XFxuICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbid0IGFmZmVjdCBodWdldGxiIG9yIERBWCBtZW1vcnkuIGh1Z2V0bGIgbWVtb3J5IGlzXFxuICAgb25seSBhZmZlY3RlZCBieSBiaXQgNS02LCBhbmQgREFYIGlzIG9ubHkgYWZmZWN0ZWQgYnkgYml0cyA3LTguXFxuIFxcbisgIE5vdGUgdGhhdCBiaXQgOSBpcyBzZXQgYnkgZGVmYXVsdCBiZWNhdXNlIHRvb2xzIGxpa2Ugc3lzdGVtZC1jb3JlZHVtcCBnb1xcbisgIHRocm91Z2ggdGhlIGZkcy4gSWYgeW91IGRvIG5vdCBzZXQgYml0IDksIGZpbGVzIHRoYXQgYXJlIG5vdCByZWZlcmVuY2VkIGJ5XFxuKyAgYW55IFZNQSBhcmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gU29tZSBmaWxlIHJlbGVhc2UgbG9naWMsIHN1Y2ggYXNcXG4rICBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZCBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2hcXG4rICBlYXJsaWVyLlxcbitcXG4rVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MjMzOyB0aGlzIG1lYW5zIGFsbCBhbm9ueW1vdXMgbWVtb3J5XFxuK3NlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzLCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFuZCBmZCBsaXN0IGFyZSBkdW1wZWQuXFxuK1xcbiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxcbiBzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcyBhbmQgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhcmUgZHVtcGVkLlxcbiBcXG4gSWYgeW91IGRvbid0IHdhbnQgdG8gZHVtcCBhbGwgc2hhcmVkIG1lbW9yeSBzZWdtZW50cyBhdHRhY2hlZCB0byBwaWQgMTIzNCxcXG4td3JpdGUgMHgzMSB0byB0aGUgcHJvY2VzcydzIHByb2MgZmlsZTo6XFxuK3dyaXRlIDB4MjMxIHRvIHRoZSBwcm9jZXNzJ3MgcHJvYyBmaWxlOjpcXG4gXFxuLSAgJCBlY2hvIDB4MzEgXFx1MDAzZSAvcHJvYy8xMjM0L2NvcmVkdW1wX2ZpbHRlclxcbisgICQgZWNobyAweDIzMSBcXHUwMDNlIC9wcm9jLzEyMzQvY29yZWR1bXBfZmlsdGVyXFxuIFxcbiBXaGVuIGEgbmV3IHByb2Nlc3MgaXMgY3JlYXRlZCwgdGhlIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGJpdG1hc2sgc3RhdHVzIGZyb20gaXRzXFxuIHBhcmVudC4gSXQgaXMgdXNlZnVsIHRvIHNldCB1cCBjb3JlZHVtcF9maWx0ZXIgYmVmb3JlIHRoZSBwcm9ncmFtIHJ1bnMuXFxuZGlmZiAtLWdpdCBhL2ZzL2NvcmVkdW1wLmMgYi9mcy9jb3JlZHVtcC5jXFxuaW5kZXggZTY4YTc2ZmY5MmEzOC4uZDM3OGU2OWM2MzZlMiAxMDA2NDRcXG4tLS0gYS9mcy9jb3JlZHVtcC5jXFxuKysrIGIvZnMvY29yZWR1bXAuY1xcbkBAIC01MjAsNiArNTIwLDI1IEBAIHN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXFxuIFxcdHJldHVybiBucjtcXG4gfVxcbiBcXG4rLypcXG4rICogSWYgZG8gbm90IGR1bXAgZmQgbGlzdCwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQVxcbisgKiBjYW4gYmUgcmVsZWFzZWQgYmVmb3JlIGR1bXBpbmcgY29yZS4gVGhlcmVmb3JlLCBzb21lIGZpbGUgcmVsZWFzZVxcbisgKiBsb2dpYywgc3VjaCBhcyBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZFxcbisgKiBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2ggZWFybGllci4gTm90ZSB0aGF0IGRvX2NvcmVkdW1wKCkgb2Z0ZW5cXG4rICogdGFrZXMgc2V2ZXJhbCBzZWNvbmRzIG9yIGV2ZW4gbG9uZ2VyIHRvIGV4ZWN1dGUuXFxuKyAqL1xcbitzdGF0aWMgdm9pZCBjb3JlZHVtcF9wcmVfZXhpdCh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudCwgKnQ7XFxuK1xcbitcXHRpZiAobW1fZmxhZ3NfdGVzdChNTUZfRFVNUF9GRF9MSVNULCB0c2stXFx1MDAzZW1tKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0Zm9yX2VhY2hfdGhyZWFkKHRzaywgdCkge1xcbitcXHRcXHRleGl0X2ZpbGVzKHQpO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgY29yZWR1bXBfd2FpdChpbnQgZXhpdF9jb2RlLCBzdHJ1Y3QgY29yZV9zdGF0ZSAqY29yZV9zdGF0ZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQ7XFxuQEAgLTExMjMsNiArMTE0Miw4IEBAIHN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxcbiBcXHRpZiAoY24tXFx1MDAzZW1hc2sgXFx1MDAyNiBDT1JFRFVNUF9SRUpFQ1QpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdGNvcmVkdW1wX3ByZV9leGl0KCk7XFxuK1xcbiBcXHQvKiBnZXQgdXMgYW4gdW5zaGFyZWQgZGVzY3JpcHRvciB0YWJsZTsgYWxtb3N0IGFsd2F5cyBhIG5vLW9wICovXFxuIFxcdC8qIFRoZSBjZWxsIHNwdWZzIGNvcmVkdW1wIGNvZGUgcmVhZHMgdGhlIGZpbGUgZGVzY3JpcHRvciB0YWJsZXMgKi9cXG4gXFx0aWYgKHVuc2hhcmVfZmlsZXMoKSlcXG5kaWZmIC0tZ2l0IGEvZnMvZmlsZV90YWJsZS5jIGIvZnMvZmlsZV90YWJsZS5jXFxuaW5kZXggYzY4YjhjMGE0MDk3YS4uMDJlZTRlOGIxY2ZlOCAxMDA2NDRcXG4tLS0gYS9mcy9maWxlX3RhYmxlLmNcXG4rKysgYi9mcy9maWxlX3RhYmxlLmNcXG5AQCAtNTY4LDcgKzU2OCwxMiBAQCBzdGF0aWMgdm9pZCBfX2ZwdXRfZGVmZXJyZWQoc3RydWN0IGZpbGUgKmZpbGUpXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgXFx1MDAyNlxcdTAwMjYgISh0YXNrLVxcdTAwM2VmbGFncyBcXHUwMDI2IFBGX0tUSFJFQUQpKSkge1xcbitcXHQvKlxcbitcXHQgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuXFxuK1xcdCAqIENhbm5vdCB1c2UgdGFza193b3JrIGluIHRoZSBjYXNlLCBuZWVkcyB0byByZWxlYXNlIGZpbGVzXFxuK1xcdCAqIGVhcmxpZXIuXFxuK1xcdCAqL1xcbitcXHRpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSBcXHUwMDI2XFx1MDAyNiAhKHRhc2stXFx1MDAzZWZsYWdzIFxcdTAwMjYgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkge1xcbiBcXHRcXHRpbml0X3Rhc2tfd29yayhcXHUwMDI2ZmlsZS1cXHUwMDNlZl90YXNrX3dvcmssIF9fX19mcHV0KTtcXG4gXFx0XFx0aWYgKCF0YXNrX3dvcmtfYWRkKHRhc2ssIFxcdTAwMjZmaWxlLVxcdTAwM2VmX3Rhc2tfd29yaywgVFdBX1JFU1VNRSkpXFxuIFxcdFxcdFxcdHJldHVybjtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXFxuaW5kZXggYjVkNGNkM2IwNjdiZi4uYTI3ZmY4OGE5YWQ4YSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcXG5AQCAtMTk0NywxNCArMTk0NywxNiBAQCBlbnVtIHtcXG4gI2RlZmluZSBNTUZfRFVNUF9IVUdFVExCX1NIQVJFRCAgOFxcbiAjZGVmaW5lIE1NRl9EVU1QX0RBWF9QUklWQVRFXFx0OVxcbiAjZGVmaW5lIE1NRl9EVU1QX0RBWF9TSEFSRURcXHQxMFxcbisjZGVmaW5lIE1NRl9EVU1QX0ZEX0xJU1RcXHQxMVxcbiBcXG4gI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfU0hJRlRcXHRNTUZfRFVNUEFCTEVfQklUU1xcbi0jZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTXFx0OVxcbisjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTXFx0MTBcXG4gI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfTUFTSyBcXFxcXFxuIFxcdCgoQklUKE1NRl9EVU1QX0ZJTFRFUl9CSVRTKSAtIDEpIFxcdTAwM2NcXHUwMDNjIE1NRl9EVU1QX0ZJTFRFUl9TSElGVClcXG4gI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfREVGQVVMVCBcXFxcXFxuIFxcdChCSVQoTU1GX0RVTVBfQU5PTl9QUklWQVRFKSB8IEJJVChNTUZfRFVNUF9BTk9OX1NIQVJFRCkgfCBcXFxcXFxuLVxcdCBCSVQoTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYpXFxuK1xcdCAoMSBcXHUwMDNjXFx1MDAzYyBNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRiB8XFxcXFxcbitcXHQgKDEgXFx1MDAzY1xcdTAwM2MgTU1GX0RVTVBfRkRfTElTVCkpXFxuIFxcbiAjaWZkZWYgQ09ORklHX0NPUkVfRFVNUF9ERUZBVUxUX0VMRl9IRUFERVJTXFxuICMgZGVmaW5lIE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEZcXHRCSVQoTU1GX0RVTVBfRUxGX0hFQURFUlMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjIyLjMzODg2MTQ5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU2MTUzMjY1MTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPUkVEVU1QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZzX2NvcmVkdW1wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyByZWxlYXNpbmcgZmlsZXMgYmVmb3JlIGR1bXBpbmcgY29yZSBpZiBgTU1GX0RVTVBfRkRfTElTVGAgaXMgbm90IHNldCBpbiBgY29yZWR1bXBfZmlsdGVyYC4gSXQgYWxzbyBjaGFuZ2VzIGBfX2ZwdXRfZGVmZXJyZWRgIHRvIGF2b2lkIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyAoY29yZWR1bXAgYW5kIGZpbGUgcmVmZXJlbmNlIG1hbmFnZW1lbnQpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0ZjFmMjhkZTdmZDZiOTJmZjhhZGJlYjM0NWJkNzE0YTAyMjY2NWVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwNjozNzoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy5yc3QgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MucnN0XG5pbmRleCAyNzE4OWY2ZTAwNGVlLi5iZGFlZjY0YTgxZmJhIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnJzdFxuQEAgLTE5MjksNyArMTkyOSw3IEBAIHdpbGwgYmUgZHVtcGVkIHdoZW4gdGhlIFx1MDAzY3BpZFx1MDAzZSBwcm9jZXNzIGlzIGR1bXBlZC4gY29yZWR1bXBfZmlsdGVyIGlzIGEgYml0bWFza1xuIG9mIG1lbW9yeSB0eXBlcy4gSWYgYSBiaXQgb2YgdGhlIGJpdG1hc2sgaXMgc2V0LCBtZW1vcnkgc2VnbWVudHMgb2YgdGhlXG4gY29ycmVzcG9uZGluZyBtZW1vcnkgdHlwZSBhcmUgZHVtcGVkLCBvdGhlcndpc2UgdGhleSBhcmUgbm90IGR1bXBlZC5cbiBcbi1UaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6XG4rVGhlIGZvbGxvd2luZyAxMCBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiBcbiAgIC0gKGJpdCAwKSBhbm9ueW1vdXMgcHJpdmF0ZSBtZW1vcnlcbiAgIC0gKGJpdCAxKSBhbm9ueW1vdXMgc2hhcmVkIG1lbW9yeVxuQEAgLTE5NDEsNiArMTk0MSw3IEBAIFRoZSBmb2xsb3dpbmcgOSBtZW1vcnkgdHlwZXMgYXJlIHN1cHBvcnRlZDpcbiAgIC0gKGJpdCA2KSBodWdldGxiIHNoYXJlZCBtZW1vcnlcbiAgIC0gKGJpdCA3KSBEQVggcHJpdmF0ZSBtZW1vcnlcbiAgIC0gKGJpdCA4KSBEQVggc2hhcmVkIG1lbW9yeVxuKyAgLSAoYml0IDkpIGZkIGxpc3RcbiBcbiAgIE5vdGUgdGhhdCBNTUlPIHBhZ2VzIHN1Y2ggYXMgZnJhbWUgYnVmZmVyIGFyZSBuZXZlciBkdW1wZWQgYW5kIHZEU08gcGFnZXNcbiAgIGFyZSBhbHdheXMgZHVtcGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGJpdG1hc2sgc3RhdHVzLlxuQEAgLTE5NDgsMTMgKzE5NDksMjIgQEAgVGhlIGZvbGxvd2luZyA5IG1lbW9yeSB0eXBlcyBhcmUgc3VwcG9ydGVkOlxuICAgTm90ZSB0aGF0IGJpdHMgMC00IGRvbid0IGFmZmVjdCBodWdldGxiIG9yIERBWCBtZW1vcnkuIGh1Z2V0bGIgbWVtb3J5IGlzXG4gICBvbmx5IGFmZmVjdGVkIGJ5IGJpdCA1LTYsIGFuZCBEQVggaXMgb25seSBhZmZlY3RlZCBieSBiaXRzIDctOC5cbiBcbisgIE5vdGUgdGhhdCBiaXQgOSBpcyBzZXQgYnkgZGVmYXVsdCBiZWNhdXNlIHRvb2xzIGxpa2Ugc3lzdGVtZC1jb3JlZHVtcCBnb1xuKyAgdGhyb3VnaCB0aGUgZmRzLiBJZiB5b3UgZG8gbm90IHNldCBiaXQgOSwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnlcbisgIGFueSBWTUEgYXJlIHJlbGVhc2VkIGJlZm9yZSBkdW1waW5nIGNvcmUuIFNvbWUgZmlsZSByZWxlYXNlIGxvZ2ljLCBzdWNoIGFzXG4rICBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZCBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2hcbisgIGVhcmxpZXIuXG4rXG4rVGhlIGRlZmF1bHQgdmFsdWUgb2YgY29yZWR1bXBfZmlsdGVyIGlzIDB4MjMzOyB0aGlzIG1lYW5zIGFsbCBhbm9ueW1vdXMgbWVtb3J5XG4rc2VnbWVudHMsIEVMRiBoZWFkZXIgcGFnZXMsIGh1Z2V0bGIgcHJpdmF0ZSBtZW1vcnkgYW5kIGZkIGxpc3QgYXJlIGR1bXBlZC5cbitcbiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBjb3JlZHVtcF9maWx0ZXIgaXMgMHgzMzsgdGhpcyBtZWFucyBhbGwgYW5vbnltb3VzIG1lbW9yeVxuIHNlZ21lbnRzLCBFTEYgaGVhZGVyIHBhZ2VzIGFuZCBodWdldGxiIHByaXZhdGUgbWVtb3J5IGFyZSBkdW1wZWQuXG4gXG4gSWYgeW91IGRvbid0IHdhbnQgdG8gZHVtcCBhbGwgc2hhcmVkIG1lbW9yeSBzZWdtZW50cyBhdHRhY2hlZCB0byBwaWQgMTIzNCxcbi13cml0ZSAweDMxIHRvIHRoZSBwcm9jZXNzJ3MgcHJvYyBmaWxlOjpcbit3cml0ZSAweDIzMSB0byB0aGUgcHJvY2VzcydzIHByb2MgZmlsZTo6XG4gXG4tICAkIGVjaG8gMHgzMSBcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcbisgICQgZWNobyAweDIzMSBcdTAwM2UgL3Byb2MvMTIzNC9jb3JlZHVtcF9maWx0ZXJcbiBcbiBXaGVuIGEgbmV3IHByb2Nlc3MgaXMgY3JlYXRlZCwgdGhlIHByb2Nlc3MgaW5oZXJpdHMgdGhlIGJpdG1hc2sgc3RhdHVzIGZyb20gaXRzXG4gcGFyZW50LiBJdCBpcyB1c2VmdWwgdG8gc2V0IHVwIGNvcmVkdW1wX2ZpbHRlciBiZWZvcmUgdGhlIHByb2dyYW0gcnVucy5cbmRpZmYgLS1naXQgYS9mcy9jb3JlZHVtcC5jIGIvZnMvY29yZWR1bXAuY1xuaW5kZXggZTY4YTc2ZmY5MmEzOC4uZDM3OGU2OWM2MzZlMiAxMDA2NDRcbi0tLSBhL2ZzL2NvcmVkdW1wLmNcbisrKyBiL2ZzL2NvcmVkdW1wLmNcbkBAIC01MjAsNiArNTIwLDI1IEBAIHN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXG4gXHRyZXR1cm4gbnI7XG4gfVxuIFxuKy8qXG4rICogSWYgZG8gbm90IGR1bXAgZmQgbGlzdCwgZmlsZXMgdGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgYW55IFZNQVxuKyAqIGNhbiBiZSByZWxlYXNlZCBiZWZvcmUgZHVtcGluZyBjb3JlLiBUaGVyZWZvcmUsIHNvbWUgZmlsZSByZWxlYXNlXG4rICogbG9naWMsIHN1Y2ggYXMgZXhpdGluZyBmbG9jayBvciByZWxlYXNpbmcgcmVmZXJlbmNlcyB0byBzaGFyZWRcbisgKiBidWZmZXJzIGlzIGV4ZWN1dGVkIG11Y2ggZWFybGllci4gTm90ZSB0aGF0IGRvX2NvcmVkdW1wKCkgb2Z0ZW5cbisgKiB0YWtlcyBzZXZlcmFsIHNlY29uZHMgb3IgZXZlbiBsb25nZXIgdG8gZXhlY3V0ZS5cbisgKi9cbitzdGF0aWMgdm9pZCBjb3JlZHVtcF9wcmVfZXhpdCh2b2lkKVxuK3tcbitcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gY3VycmVudCwgKnQ7XG4rXG4rXHRpZiAobW1fZmxhZ3NfdGVzdChNTUZfRFVNUF9GRF9MSVNULCB0c2stXHUwMDNlbW0pKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRmb3JfZWFjaF90aHJlYWQodHNrLCB0KSB7XG4rXHRcdGV4aXRfZmlsZXModCk7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyBpbnQgY29yZWR1bXBfd2FpdChpbnQgZXhpdF9jb2RlLCBzdHJ1Y3QgY29yZV9zdGF0ZSAqY29yZV9zdGF0ZSlcbiB7XG4gXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGN1cnJlbnQ7XG5AQCAtMTEyMyw2ICsxMTQyLDggQEAgc3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXG4gXHRpZiAoY24tXHUwMDNlbWFzayBcdTAwMjYgQ09SRURVTVBfUkVKRUNUKVxuIFx0XHRyZXR1cm47XG4gXG4rXHRjb3JlZHVtcF9wcmVfZXhpdCgpO1xuK1xuIFx0LyogZ2V0IHVzIGFuIHVuc2hhcmVkIGRlc2NyaXB0b3IgdGFibGU7IGFsbW9zdCBhbHdheXMgYSBuby1vcCAqL1xuIFx0LyogVGhlIGNlbGwgc3B1ZnMgY29yZWR1bXAgY29kZSByZWFkcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRhYmxlcyAqL1xuIFx0aWYgKHVuc2hhcmVfZmlsZXMoKSlcbmRpZmYgLS1naXQgYS9mcy9maWxlX3RhYmxlLmMgYi9mcy9maWxlX3RhYmxlLmNcbmluZGV4IGM2OGI4YzBhNDA5N2EuLjAyZWU0ZThiMWNmZTggMTAwNjQ0XG4tLS0gYS9mcy9maWxlX3RhYmxlLmNcbisrKyBiL2ZzL2ZpbGVfdGFibGUuY1xuQEAgLTU2OCw3ICs1NjgsMTIgQEAgc3RhdGljIHZvaWQgX19mcHV0X2RlZmVycmVkKHN0cnVjdCBmaWxlICpmaWxlKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAobGlrZWx5KCFpbl9pbnRlcnJ1cHQoKSBcdTAwMjZcdTAwMjYgISh0YXNrLVx1MDAzZWZsYWdzIFx1MDAyNiBQRl9LVEhSRUFEKSkpIHtcbitcdC8qXG4rXHQgKiBjb3JlZHVtcF9wcmVfZXhpdCgpIG1heSByZWxlYXNlIGZpbGVzIGJlZm9yZSBkdW1waW5nIGNvcmUuXG4rXHQgKiBDYW5ub3QgdXNlIHRhc2tfd29yayBpbiB0aGUgY2FzZSwgbmVlZHMgdG8gcmVsZWFzZSBmaWxlc1xuK1x0ICogZWFybGllci5cbitcdCAqL1xuK1x0aWYgKGxpa2VseSghaW5faW50ZXJydXB0KCkgXHUwMDI2XHUwMDI2ICEodGFzay1cdTAwM2VmbGFncyBcdTAwMjYgKFBGX0tUSFJFQUQgfCBQRl9EVU1QQ09SRSkpKSkge1xuIFx0XHRpbml0X3Rhc2tfd29yayhcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBfX19fZnB1dCk7XG4gXHRcdGlmICghdGFza193b3JrX2FkZCh0YXNrLCBcdTAwMjZmaWxlLVx1MDAzZWZfdGFza193b3JrLCBUV0FfUkVTVU1FKSlcbiBcdFx0XHRyZXR1cm47XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG5pbmRleCBiNWQ0Y2QzYjA2N2JmLi5hMjdmZjg4YTlhZDhhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcbkBAIC0xOTQ3LDE0ICsxOTQ3LDE2IEBAIGVudW0ge1xuICNkZWZpbmUgTU1GX0RVTVBfSFVHRVRMQl9TSEFSRUQgIDhcbiAjZGVmaW5lIE1NRl9EVU1QX0RBWF9QUklWQVRFXHQ5XG4gI2RlZmluZSBNTUZfRFVNUF9EQVhfU0hBUkVEXHQxMFxuKyNkZWZpbmUgTU1GX0RVTVBfRkRfTElTVFx0MTFcbiBcbiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9TSElGVFx0TU1GX0RVTVBBQkxFX0JJVFNcbi0jZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9CSVRTXHQ5XG4rI2RlZmluZSBNTUZfRFVNUF9GSUxURVJfQklUU1x0MTBcbiAjZGVmaW5lIE1NRl9EVU1QX0ZJTFRFUl9NQVNLIFxcXG4gXHQoKEJJVChNTUZfRFVNUF9GSUxURVJfQklUUykgLSAxKSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfRklMVEVSX1NISUZUKVxuICNkZWZpbmUgTU1GX0RVTVBfRklMVEVSX0RFRkFVTFQgXFxcbiBcdChCSVQoTU1GX0RVTVBfQU5PTl9QUklWQVRFKSB8IEJJVChNTUZfRFVNUF9BTk9OX1NIQVJFRCkgfCBcXFxuLVx0IEJJVChNTUZfRFVNUF9IVUdFVExCX1BSSVZBVEUpIHwgTU1GX0RVTVBfTUFTS19ERUZBVUxUX0VMRilcbitcdCAoMSBcdTAwM2NcdTAwM2MgTU1GX0RVTVBfSFVHRVRMQl9QUklWQVRFKSB8IE1NRl9EVU1QX01BU0tfREVGQVVMVF9FTEYgfFxcXG4rXHQgKDEgXHUwMDNjXHUwMDNjIE1NRl9EVU1QX0ZEX0xJU1QpKVxuIFxuICNpZmRlZiBDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hFQURFUlNcbiAjIGRlZmluZSBNTUZfRFVNUF9NQVNLX0RFRkFVTFRfRUxGXHRCSVQoTU1GX0RVTVBfRUxGX0hFQURFUlMpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzoyMi4zMzg4NjM0NzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjg4MDY5MDYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQ29yZWR1bXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBjb3JlZHVtcCBwcm9jZXNzIGluIHRoZSBMaW51eCBrZXJuZWwuIFNlZW1zIGxpa2UgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGltcGFjdGZ1bCBjaGFuZ2UuIFNwZWNpZmljYWxseSwgaXQncyBhZGRpbmcgYSBuZXcgYml0LCBiaXQgOSwgYE1NRl9EVU1QX0ZEX0xJU1RgLCB0byB0aGUgYGNvcmVkdW1wX2ZpbHRlcmAuICBUaGUgY29yZSBpZGVhIGlzLCBpZiB0aGlzIGJpdCBpc24ndCBzZXQsIHRoZSBgY29yZWR1bXBfcHJlX2V4aXQoKWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgd2l0aGluIGBkb19jb3JlZHVtcCgpYCB0byBtYWtlIHN1cmUgZmlsZSBkZXNjcmlwdG9ycyBhcmUgY2xlYW5lZCB1cCAqYmVmb3JlKiB0aGUgY29yZWR1bXAgYWN0dWFsbHkgaGFwcGVucy5cblxuQ3J1Y2lhbGx5LCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBfX2ZwdXRfZGVmZXJyZWRgIGluIGBmcy9maWxlX3RhYmxlLmNgLiAgVGhlIG1vZGlmaWNhdGlvbiB0aGVyZSBpbnZvbHZlcyBjaGVja2luZyB0aGUgYFBGX0RVTVBDT1JFYCBmbGFnLiBJZiB0aGlzIGZsYWcgaXMgc2V0LCBpdCBtZWFucyB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY29yZWR1bXAsIGFuZCBpdCdzIGJ5cGFzc2luZyB0aGUgYHRhc2tfd29ya2AgbWVjaGFuaXNtLCBlbnN1cmluZyBmaWxlcyBhcmUgcmVsZWFzZWQgZXZlbiBlYXJsaWVyLiBUaGlzIGlzIGRlZmluaXRlbHkgYWJvdXQgb3B0aW1pemluZyB0aGUgY2xlYW51cCBwaGFzZSBwcmlvciB0byB0aGUgZHVtcC5cblxuTm93LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZTogYGRvX2NvcmVkdW1wYCBpcyBjYWxsaW5nIGBjb3JlZHVtcF9wcmVfZXhpdCgpYCwgd2hpY2ggaW4gdHVybiBjYWxscyBgZXhpdF9maWxlcyh0KWAgb24gZWFjaCB0aHJlYWQgaW4gdGhlIHRocmVhZCBncm91cC4gIFRoYXQncyB0aGUgZmlsZSBjbGVhbnVwIHNlcXVlbmNlLiBBbmQgdGhlbiwgdGhlIG1vZGlmaWNhdGlvbiB0byBgX19mcHV0X2RlZmVycmVkYCBpcyB0aGUga2V5IOKAkyBpdCdzIG1ha2luZyB0aGUgZmlsZSByZWxlYXNlIGhhcHBlbiBtb3JlIGVhZ2VybHkgdW5kZXIgY29yZWR1bXAgY29uZGl0aW9ucy5cblxuVGhpcyBpcyBjb3JlIGtlcm5lbCBsb2dpYyDigJMgaXQncyBjaGFuZ2luZyBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGZpbGUgZGVzY3JpcHRvcnMgZHVyaW5nIGNyaXRpY2FsIGNyYXNoIGR1bXAgc2NlbmFyaW9zLiBEZWZpbml0ZWx5LCB0aGlzIHdhcnJhbnRzIGZ1enppbmc7IGl0J3MgYSBnb29kIHBsYWNlIHRvIGV4cG9zZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIG90aGVyIHN1YnRsZSBpc3N1ZXMuIFNvLCBiYXNlZCBvbiB0aGlzIHVuZGVyc3RhbmRpbmcsIEknZCByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC5cblxuTm93LCBmb3IgcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMgdG8gdGFyZ2V0IGluIGZ1enppbmcsIGBkb19jb3JlZHVtcGAgaXMgZGVmaW5pdGVseSBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0LiBgY29yZWR1bXBfcHJlX2V4aXQoKWAgaXMgYWxzbyByZWxldmFudCwgYnV0IGl0J3MgbWFya2VkIGFzIGBzdGF0aWNgLCBzbyBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoYXQgbWlnaHQgYWZmZWN0IGRpcmVjdCBjb3ZlcmFnZS4gSSBtYXkgYWxzbyB3YW50IHRvIGZvY3VzIG9uIHZhcmlhbnRzIG9mIGBfX2ZwdXRfZGVmZXJyZWRgLiBQZXJoYXBzLCBgZnB1dGAsIGBfX2ZwdXRgLCBvciBgZnB1dF9tYW55YCBhcyB0aGUgc3RhdGljIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIHRob3NlLlxuXG5JJ2xsIG5lZWQgdG8gZGlnIGludG8gYGZzL2NvcmVkdW1wLmNgIGFuZCBgZnMvZmlsZV90YWJsZS5jYCB0byB1bmRlcnN0YW5kIHRoZSBmaW5lciBkZXRhaWxzIG9mIHRoZXNlIGNoYW5nZXMgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aGluIHRoZSBjb2RlIGJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2OTgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzozNS4yMTk1NTY1MzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA3Mzk5MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcmVkdW1wX3ByZV9leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2NvcmVkdW1wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvY29yZWR1bXAuYz01MDQ9c3RhdGljIGludCB6YXBfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayxcXG4tLVxcbmZzL2NvcmVkdW1wLmMtNTI5LSAqL1xcbmZzL2NvcmVkdW1wLmM6NTMwOnN0YXRpYyB2b2lkIGNvcmVkdW1wX3ByZV9leGl0KHZvaWQpXFxuZnMvY29yZWR1bXAuYy01MzEte1xcbi0tXFxuZnMvY29yZWR1bXAuYz0xMTExPXN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxcbi0tXFxuZnMvY29yZWR1bXAuYy0xMTQ0LVxcbmZzL2NvcmVkdW1wLmM6MTE0NTpcXHRjb3JlZHVtcF9wcmVfZXhpdCgpO1xcbmZzL2NvcmVkdW1wLmMtMTE0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MzUuNTI2OTkwODM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5MzM0MjE4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipTdGF0aWMgRnVuY3Rpb25zIGluIENvcmUgRHVtcCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIGBjb3JlZHVtcF9wcmVfZXhpdGAgaXMgZGVmaW5pdGVseSBzdGF0aWMuIFRoYXQgbWFrZXMgc2Vuc2UsIGtlZXBzIGl0IHNjb3BlZCBhcHByb3ByaWF0ZWx5LiBOb3csIEknbSBwcmV0dHkgc3VyZSBgZG9fY29yZWR1bXBgIGlzIGFsc28gc3RhdGljLCBidXQgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQuIEl0J3MgaW1wb3J0YW50IHRvIGJlIGFic29sdXRlbHkgc3VyZSBhYm91dCB0aGUgc2NvcGUgYW5kIGxpbmthZ2UgaW4gdGhlc2UgY3JpdGljYWwgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgY29yZSBkdW1wIGhhbmRsaW5nIGNvbnRleHQuIFdlIGNhbid0IGFmZm9yZCBhbnkgYWNjaWRlbnRhbCBleHRlcm5hbCBhY2Nlc3Mgb3IgbmFtZSBjb2xsaXNpb25zIGhlcmUuIExldCdzIGNvbmZpcm0gdGhhdCBgZG9fY29yZWR1bXBgIGlzIGRlY2xhcmVkIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc1MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjM4LjUyMDMzNTMzNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjE1MzYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkb19jb3JlZHVtcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9jb3JlZHVtcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NvcmVkdW1wLmM9NTA0PXN0YXRpYyBpbnQgemFwX3RocmVhZHMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTUyNi0gKiBsb2dpYywgc3VjaCBhcyBleGl0aW5nIGZsb2NrIG9yIHJlbGVhc2luZyByZWZlcmVuY2VzIHRvIHNoYXJlZFxcbmZzL2NvcmVkdW1wLmM6NTI3OiAqIGJ1ZmZlcnMgaXMgZXhlY3V0ZWQgbXVjaCBlYXJsaWVyLiBOb3RlIHRoYXQgZG9fY29yZWR1bXAoKSBvZnRlblxcbmZzL2NvcmVkdW1wLmMtNTI4LSAqIHRha2VzIHNldmVyYWwgc2Vjb25kcyBvciBldmVuIGxvbmdlciB0byBleGVjdXRlLlxcbi0tXFxuZnMvY29yZWR1bXAuYz0xMDk5PXN0YXRpYyBpbmxpbmUgYm9vbCBjb3JlZHVtcF9za2lwKGNvbnN0IHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTExMTAtXFxuZnMvY29yZWR1bXAuYzoxMTExOnN0YXRpYyB2b2lkIGRvX2NvcmVkdW1wKHN0cnVjdCBjb3JlX25hbWUgKmNuLCBzdHJ1Y3QgY29yZWR1bXBfcGFyYW1zICpjcHJtLFxcbmZzL2NvcmVkdW1wLmMtMTExMi1cXHRcXHRcXHRzaXplX3QgKiphcmd2LCBpbnQgKmFyZ2MsIGNvbnN0IHN0cnVjdCBsaW51eF9iaW5mbXQgKmJpbmZtdClcXG4tLVxcbmZzL2NvcmVkdW1wLmM9MTE4Mj12b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKVxcbi0tXFxuZnMvY29yZWR1bXAuYy0xMjIwLVxcdHNjb3BlZF93aXRoX2NyZWRzKGNyZWQpXFxuZnMvY29yZWR1bXAuYzoxMjIxOlxcdFxcdGRvX2NvcmVkdW1wKFxcdTAwMjZjbiwgXFx1MDAyNmNwcm0sIFxcdTAwMjZhcmd2LCBcXHUwMDI2YXJnYywgYmluZm10KTtcXG5mcy9jb3JlZHVtcC5jLTEyMjItXFx0Y29yZWR1bXBfY2xlYW51cChcXHUwMDI2Y24sIFxcdTAwMjZjcHJtKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MzguNTg2NDk3NDE0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0OTQwMzM3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29yZSBEdW1wIEVudHJ5IFBvaW50KipcblxuUmlnaHQsIHNvIGB2ZnNfY29yZWR1bXBgIGlzIHRoZSBleHRlcm5hbGx5IHZpc2libGUsIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQgZm9yIGNvcmUgZHVtcHMuIEdvb2QuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgZnJvbSB0aGVyZS4gTGV0J3Mgc2VlLi4uIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGxvb2sgZm9yIHJlbGF0ZWQgZnVuY3Rpb25zIGFuZCBzdHJ1Y3R1cmVzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gZmlsZSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdoZXJlIGZpbGVzIGFyZSBjbG9zZWQsIHBvdGVudGlhbGx5IGRlZmVycmVkLiBPa2F5LCBteSBodW5jaCBpcyB0byBjaGVjayBgZnMvZmlsZV90YWJsZS5jYCwgYW5kIEknbSB6ZXJvaW5nIGluIG9uIGBfX2ZwdXRfZGVmZXJyZWRgLiBUaGF0J3MgbGlrZWx5IHdoZXJlIHNvbWUgY3JpdGljYWwgb3BlcmF0aW9ucyBkdXJpbmcgZmlsZSBjbG9zdXJlIGFyZSBoYXBwZW5pbmcsIGFuZCBwb3RlbnRpYWxseSByZWxhdGVkIHRvIGhvdyBjb3JlIGR1bXAgaW5mb3JtYXRpb24gaXMgYWN0dWFsbHkgaGFuZGxlZCBiZWZvcmUgdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBmdWxseSByZWxlYXNlZC4gVGhhdCBzZWVtcyBsaWtlIGEgbG9naWNhbCBuZXh0IHN0ZXAgaW4gdHJhY2luZyB0aGUgY2FsbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mjk0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6NDIuNzM1OTAzNTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg4MzMxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19mcHV0X2RlZmVycmVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2ZpbGVfdGFibGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9maWxlX3RhYmxlLmM9NTYwPUVYUE9SVF9TWU1CT0xfR1BMKGZsdXNoX2RlbGF5ZWRfZnB1dCk7XFxuZnMvZmlsZV90YWJsZS5jLTU2MS1cXG5mcy9maWxlX3RhYmxlLmM6NTYyOnN0YXRpYyB2b2lkIF9fZnB1dF9kZWZlcnJlZChzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9maWxlX3RhYmxlLmMtNTYzLXtcXG4tLVxcbmZzL2ZpbGVfdGFibGUuYz01OTE9dm9pZCBmcHV0KHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZmlsZV90YWJsZS5jLTU5My1cXHRpZiAodW5saWtlbHkoZmlsZV9yZWZfcHV0KFxcdTAwMjZmaWxlLVxcdTAwM2VmX3JlZikpKVxcbmZzL2ZpbGVfdGFibGUuYzo1OTQ6XFx0XFx0X19mcHV0X2RlZmVycmVkKGZpbGUpO1xcbmZzL2ZpbGVfdGFibGUuYy01OTUtfVxcbi0tXFxuZnMvZmlsZV90YWJsZS5jPTYzMT12b2lkIGZwdXRfY2xvc2Uoc3RydWN0IGZpbGUgKmZpbGUpXFxuLS1cXG5mcy9maWxlX3RhYmxlLmMtNjMzLVxcdGlmIChmaWxlX3JlZl9wdXRfY2xvc2UoXFx1MDAyNmZpbGUtXFx1MDAzZWZfcmVmKSlcXG5mcy9maWxlX3RhYmxlLmM6NjM0OlxcdFxcdF9fZnB1dF9kZWZlcnJlZChmaWxlKTtcXG5mcy9maWxlX3RhYmxlLmMtNjM1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6NDIuNzk0NzQxODE4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEzMTUwMzIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgQ29yZSBEdW1wIEVudHJ5IFBvaW50cyBhbmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgZW50cnkgcG9pbnRzIGZvciBjb3JlIGR1bXAgZnVuY3Rpb25hbGl0eSBoZXJlLiBJIHNlZSB0aGF0IGBmcHV0YCBhbmQgYGZwdXRfY2xvc2VgIGFyZSB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMgaW52b2x2ZWQsIGFuZCBhbHNvIGB2ZnNfY29yZWR1bXBgIGlzIHJlbGV2YW50LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoYXQgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCB0byBtYWtlIGFsbCB0aGlzIHdvcms/IEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBMZXQgbWUgc2VlLi4uIGFoYSwgbG9va3MgbGlrZSBgQ09ORklHX0NPUkVEVU1QYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYGZzL2NvcmVkdW1wLmNgLiBHb3QgaXQuIFRoYXQncyBnb29kIHRvIGtub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MTYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzo0OC45MjYyNDg1ODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzQ0MDE2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENPUkVEVU1QXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnLmJpbmZtdD0xNDU9Y29uZmlnIEJJTkZNVF9NSVNDXFxuLS1cXG5mcy9LY29uZmlnLmJpbmZtdC0xNzAtXFxuZnMvS2NvbmZpZy5iaW5mbXQ6MTcxOmNvbmZpZyBDT1JFRFVNUFxcbmZzL0tjb25maWcuYmluZm10LTE3Mi1cXHRib29sIFxcXCJFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzo1MS4zMDA2NTg2NjJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODUzOTA2MDQwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgQ29yZSBEdW1wIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGtleXdvcmQgdGhhdCBqdW1wcyBvdXQgaW1tZWRpYXRlbHkgaXMgYENPUkVEVU1QYC4gUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgdXN1YWwgc3VzcGVjdHMgLSBJIG5lZWQgdG8gc3RhcnQgY2hlY2tpbmcgYGZzL2ZpbGVfdGFibGUuY2AsIGJlY2F1c2UgaXQncyBhbHdheXMgY29tcGlsZWQgaW4uIE9rYXksIEkndmUgZ290IGl0LCBiaXQgMTEsIGBNTUZfRFVNUF9GRF9MSVNUYC4gSW50ZXJlc3RpbmcuXG5cbk5vdywgdGhlIHBhdGNoIHRvdWNoZXMgYGRvX2NvcmVkdW1wYCBhbmQgYF9fZnB1dF9kZWZlcnJlZGAuIFRoZSBjb3JlIGlkZWEgaXMgdG8gY2hhbmdlIGhvdyB3ZSByZWxlYXNlIGZpbGVzICpiZWZvcmUqIGEgY29yZSBkdW1wLCBpZiBgTU1GX0RVTVBfRkRfTElTVGAgaXMgKm5vdCogc2V0IGluIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIG9wdGltaXphdGlvbi4gVGhlIHNlY29uZCBjaGFuZ2UgYXZvaWRzIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQsIGFsc28gbG9naWNhbC4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIGNvcmUga2VybmVsIGxvZ2ljIOKAkyBzcGVjaWZpY2FsbHksIGhvdyBjb3JlIGR1bXBzIGFuZCBmaWxlIHJlZmVyZW5jZXMgYXJlIG1hbmFnZWQuIEJlY2F1c2UgaXQncyBmdW5jdGlvbmFsLCBmdXp6aW5nIGlzIGRlZmluaXRlbHkgaW4gb3JkZXIuXG5cbkxldCdzIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHByaW1hcnkgZm9jdXMgcG9pbnRzLiBJIG5lZWQgdG8ga2VlcCBhbiBleWUgb24gYHZmc19jb3JlZHVtcGAsIGBmcHV0YCwgYW5kIGBmcHV0X2Nsb3NlYC4gVGhlIGNvbmZpZ3VyYXRpb24gbmVlZGVkIGlzIHNpbXBseSBgQ09SRURVTVBgLiBBbHJpZ2h0LCBJJ2xsIHRha2UgYSBxdWljayBsb29rIHRvIHZlcmlmeSB0aGF0IGB2ZnNfY29yZWR1bXBgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBlbnRyeSBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEyMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzo1OS44Mzk3MjMyMDVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMzAxODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmc19jb3JlZHVtcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9jb3JlZHVtcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2NvcmVkdW1wLmM9MTExMT1zdGF0aWMgdm9pZCBkb19jb3JlZHVtcChzdHJ1Y3QgY29yZV9uYW1lICpjbiwgc3RydWN0IGNvcmVkdW1wX3BhcmFtcyAqY3BybSxcXG4tLVxcbmZzL2NvcmVkdW1wLmMtMTE4MS1cXG5mcy9jb3JlZHVtcC5jOjExODI6dm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbylcXG5mcy9jb3JlZHVtcC5jLTExODMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzo1OS45MDIwMjk1MTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE1Nzk5NTg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGRpc3RpbGxpbmcgdGhlbSBpbnRvIGEgY29uY2lzZSBzdW1tYXJ5IGFzIGEgc2Vhc29uZWQgcHJvZmVzc2lvbmFsIHdvdWxkOlxuXG4qKkNvcmVkdW1wIEVudHJ5IFBvaW50IEFuYWx5c2lzKipcblxuQWxyaWdodCwgaXQgbG9va3MgbGlrZSBgdmZzX2NvcmVkdW1wYCAqaXMqIHRoZSBrZXkgZW50cnkgcG9pbnQuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIGhvdCBzcG90cywgYnV0IGJlZm9yZSBJIGdldCB0b28gZGVlcCwgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIHN5c3RlbS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgd2hldGhlciBgZnB1dGAgaXMgdG9vIGJ1c3kuIERhbW4sIHllYWgsIGBmcHV0YCBpcyBnZXR0aW5nIGhhbW1lcmVkLCBhbmQgc28gaXMgYGZwdXRfY2xvc2VgLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBleHBsaWNpdDogYXZvaWQgc2tld2luZyB0aGUgZGF0YSB3aXRoIGNvbW1vbiBob3QtcGF0aCBmdW5jdGlvbnMsIGFuZCB0aGVzZSBhcmUgdGV4dGJvb2sgZXhhbXBsZXMgb2Ygc3VjaCBmdW5jdGlvbnMuIFRoZXkncmUgZ29pbmcgdG8gZG9taW5hdGUgYW55IGRpc3RyaWJ1dGlvbiwgbWFraW5nIHRoZSBzcGVjaWZpYyBhbmFseXNpcyBvZiBgdmZzX2NvcmVkdW1wYCBsZXNzIGFjY3VyYXRlLiBTbywgdGhlIGJlc3QgcGF0aCBmb3J3YXJkLCBhcyB0aGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnksIGlzIHRvIGV4Y2x1ZGUgdGhvc2UgZ2VuZXJpYyBmdW5jdGlvbnMgYW5kIGZvY3VzIGV4Y2x1c2l2ZWx5IG9uIGB2ZnNfY29yZWR1bXBgLiBUaW1lIHRvIGNvbmZpcm0gdGhlIGNhbGxlcnMgb2YgYHZmc19jb3JlZHVtcGAgYW5kIHByb2NlZWQgd2l0aCB0aGUgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc3NCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozODowNS4wNjAwMjk1OTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjA5MTMzMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZzX2NvcmVkdW1wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdD01NTU9ZGlmZmVyZW50IHNldCBvZiBjcmVkZW50aWFscy4gIFRoaXMgaXMgZG9uZSBpbiB0aGUgZm9sbG93aW5nIHBsYWNlczpcXG4tLVxcbkRvY3VtZW50YXRpb24vc2VjdXJpdHkvY3JlZGVudGlhbHMucnN0LTU1Ny0gKiBgYHN5c19mYWNjZXNzYXQoKWBgLlxcbkRvY3VtZW50YXRpb24vc2VjdXJpdHkvY3JlZGVudGlhbHMucnN0OjU1ODogKiBgYHZmc19jb3JlZHVtcCgpYGAuXFxuRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3QtNTU5LSAqIG5mczRyZWNvdmVyLmMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3Q9MjU0PWNvbnN05oyH6ZKI5LiK5pON5L2c77yM5Zug5q2k5LiN6ZyA6KaB6L+b6KGM57G75Z6L6L2s5o2i77yM5L2G6ZyA6KaB5Li05pe25pS+5byDY29uc3TpmZDlrprvvIzku6Xkvr/og73lpJ/kv67mlLlcXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL3NlY3VyaXR5L2NyZWRlbnRpYWxzLnJzdC00NzctICogYGBzeXNfZmFjY2Vzc2F0KClgYC5cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3Q6NDc4OiAqIGBgdmZzX2NvcmVkdW1wKClgYC5cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3QtNDc5LSAqIG5mczRyZWNvdmVyLmMuXFxuLS1cXG5mcy9jb3JlZHVtcC5jPTExMTE9c3RhdGljIHZvaWQgZG9fY29yZWR1bXAoc3RydWN0IGNvcmVfbmFtZSAqY24sIHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sXFxuLS1cXG5mcy9jb3JlZHVtcC5jLTExODEtXFxuZnMvY29yZWR1bXAuYzoxMTgyOnZvaWQgdmZzX2NvcmVkdW1wKGNvbnN0IGtlcm5lbF9zaWdpbmZvX3QgKnNpZ2luZm8pXFxuZnMvY29yZWR1bXAuYy0xMTgzLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvY29yZWR1bXAuaD00OD1pbnQgZHVtcF91c2VyX3JhbmdlKHN0cnVjdCBjb3JlZHVtcF9wYXJhbXMgKmNwcm0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oLTQ5LVxcdFxcdCAgICB1bnNpZ25lZCBsb25nIGxlbik7XFxuaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oOjUwOmV4dGVybiB2b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKTtcXG5pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmgtNTEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmgtNjktI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmg6NzA6c3RhdGljIGlubGluZSB2b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKSB7fVxcbmluY2x1ZGUvbGludXgvY29yZWR1bXAuaC03MS1cXG4tLVxcbmtlcm5lbC9zaWduYWwuYz0yODEwPWJvb2wgZ2V0X3NpZ25hbChzdHJ1Y3Qga3NpZ25hbCAqa3NpZylcXG4tLVxcbmtlcm5lbC9zaWduYWwuYy0zMDMwLVxcdFxcdFxcdCAqL1xcbmtlcm5lbC9zaWduYWwuYzozMDMxOlxcdFxcdFxcdHZmc19jb3JlZHVtcChcXHUwMDI2a3NpZy1cXHUwMDNlaW5mbyk7XFxua2VybmVsL3NpZ25hbC5jLTMwMzItXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozODowNy4zMjA5NDkwOTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4NTc3ODY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENyYXNoIER1bXAgUHJvY2VzcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIGtlcm5lbCdzIGNyYXNoIGR1bXAgbWVjaGFuaXNtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgdmZzX2NvcmVkdW1wYCBpcyBhIHByZXR0eSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBhcyBJIGNhbiBzZWUgaXQncyBjYWxsZWQgZnJvbSBgZ2V0X3NpZ25hbGAgd2hlbiBhIHByb2Nlc3MgZ29lcyBiZWxseS11cC4gVGhhdCBtYWtlcyBpdCBhIG5hdHVyYWwgZm9jYWwgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgZmxvdy5cblxuTGV0IG1lIHRha2UgYSBsb29rIGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMsIGFuZCBjb25maXJtIHRoYXQgYHZmc19jb3JlZHVtcGAgaXMgaW5kZWVkIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBIbW0sIGBjb3JlZHVtcF9wcmVfZXhpdGAgYW5kIGBkb19jb3JlZHVtcGAgYXJlIHN0YXRpYywgYW5kIHRoZW4gdGhlcmUncyBhbHNvIGBfX2ZwdXRfZGVmZXJyZWRgIHdoaWNoIGlzIGFsc28gc3RhdGljLiBUaGVzZSBtaWdodCBiZSB1c2VmdWwsIGJ1dCBgdmZzX2NvcmVkdW1wYCBzZWVtcyB0byBiZSB0aGUgbW9zdCBhY2Nlc3NpYmxlIGFuZCBjZW50cmFsIGVudHJ5IHBvaW50IGZvciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LlxuXG5Tbywgbm93IHRoYXQgSSd2ZSBpZGVudGlmaWVkIGB2ZnNfY29yZWR1bXBgLCBpdCdzIHRpbWUgdG8gY2hlY2sgd2hhdCBgQ09SRURVTVBgIGRlcGVuZHMgb24sIGFuZCBzZWUgaG93IG11Y2ggdGhlIGNvcmUgZHVtcCBwcm9jZXNzIGlzIGFmZmVjdGVkIGJ5IG90aGVyIHN1YnN5c3RlbXMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0IGluIHdoaWNoIGBDT1JFRFVNUGAgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozODoxMS45MDY3MzA0MjRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNTM1NTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDT1JFRFVNUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9LY29uZmlnLmJpbmZtdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnLmJpbmZtdD0xNDU9Y29uZmlnIEJJTkZNVF9NSVNDXFxuLS1cXG5mcy9LY29uZmlnLmJpbmZtdC0xNzAtXFxuZnMvS2NvbmZpZy5iaW5mbXQ6MTcxOmNvbmZpZyBDT1JFRFVNUFxcbmZzL0tjb25maWcuYmluZm10LTE3Mi1cXHRib29sIFxcXCJFbmFibGUgY29yZSBkdW1wIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozODoxMS45ODcyNzA4NDFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4Mjg3NDgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb3JlIER1bXAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYENPUkVEVU1QYCBjb25maWcgb3B0aW9uIGFuZCBpdCBkZWZhdWx0cyB0byBcInksXCIgd2hpY2gsIGdpdmVuIG15IGV4cGVyaWVuY2UsIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoZSBoZWxwIHRleHQgZXZlbiBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IGVuYWJsaW5nIGl0IGlzIHByYWN0aWNhbGx5IGEgbmVjZXNzaXR5IHVubGVzcyB3ZSdyZSBkZWFsaW5nIHdpdGggc3lzdGVtcyB0aGF0IGFyZSBlaXRoZXIgaW5oZXJlbnRseSBkZWJ1Zy1mcmVlIG9yIHJ1biBub3RoaW5nIGJ1dCBmbGF3bGVzc2x5IHdyaXR0ZW4gY29kZSDigJMgYW5kIGxldCdzIGJlIGhvbmVzdCwgdGhvc2UgYXJlIHJhcmUuIFRoaXMgbWVhbnMgSSdtIHByZXR0eSBtdWNoIGFncmVlaW5nIHdpdGggdGhlIGRlZmF1bHQuIEl0J3Mgc2FmZSwgYW5kIG1vc3Qgc2FuZSBrZXJuZWwgc2V0dXBzIHdpbGwgd2FudCBjb3JlIGR1bXBzIGVuYWJsZWQuIEkgY2FuIGNvbmZpZGVudGx5IGNoZWNrIGBDT1JFRFVNUGAuXG5cblRoZSBwYXRjaCBpdHNlbGYgaW52b2x2ZXMgc29tZSBjcnVjaWFsIGNvcmUga2VybmVsIGNoYW5nZXMsIHNwZWNpZmljYWxseSBhcm91bmQgaG93IGNvcmUgZHVtcHMgYXJlIGhhbmRsZWQgd2hlbiBmaWxlIGRlc2NyaXB0b3JzIGFyZSBpbnZvbHZlZC4gVGhlIGxvZ2ljIGFwcGVhcnMgdG8gYmUgZGVhbGluZyB3aXRoIHRoZSByZWxlYXNlIG9mIGZpbGVzIGJlZm9yZSB0aGUgYWN0dWFsIGNvcmUgZHVtcCBoYXBwZW5zLCBjb250aW5nZW50IG9uIHRoZSBgTU1GX0RVTVBfRkRfTElTVGAgc2V0dGluZyB3aXRoaW4gdGhlIGBjb3JlZHVtcF9maWx0ZXJgLiBUaGVyZSdzIGFsc28gc29tZSByZWZhY3RvcmluZyBnb2luZyBvbiB3aXRoIGBfX2ZwdXRfZGVmZXJyZWRgIHRvIGJ5cGFzcyBgdGFza193b3JrYCB3aGVuIGBQRl9EVU1QQ09SRWAgaXMgYWN0aXZlLiBUaGlzIHNpZ25hbHMgdGhhdCB0aGVzZSBjaGFuZ2VzIGFyZSB0b3VjaGluZyBjcml0aWNhbCBwaWVjZXMgb2YgY29yZSBkdW1wIGFuZCBmaWxlIHJlZmVyZW5jZSBtYW5hZ2VtZW50LiBDb25zaWRlcmluZyBpdCdzIGNvcmUga2VybmVsIGNvZGUsIHBhcnRpY3VsYXJseSB0aGUgY29yZSBkdW1wIGZsb3csIEknbSBjb25maWRlbnQgd2UgbmVlZCB0byBsb29rIGNsb3NlciBhbmQgcG90ZW50aWFsbHkgZnV6eiB0aGlzIHBhdGNoLlxuXG5NeSBhdHRlbnRpb24gaXMgZGVmaW5pdGVseSBkcmF3biB0byBgdmZzX2NvcmVkdW1wYCwgYXMgaXQgd2lsbCBsaWtlbHkgYmUgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgb3IgaW52b2x2ZWQgaW4gc29tZSBjcml0aWNhbCBwYXJ0IG9mIHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHksIHNvIHRoYXQgZnVuY3Rpb24gd2lsbCBiZSB0aGUgZm9jYWwgcG9pbnQgb2YgYW55IGRlZXAgZGl2ZSBvciB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTgyLCJPdXRwdXRUb2tlbnMiOjEzMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozODoxOC4zNzAxNDg0OTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE5NzQ3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPUkVEVU1QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZzX2NvcmVkdW1wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyByZWxlYXNpbmcgZmlsZXMgYmVmb3JlIGR1bXBpbmcgY29yZSBpZiBgTU1GX0RVTVBfRkRfTElTVGAgaXMgbm90IHNldCBpbiBgY29yZWR1bXBfZmlsdGVyYC4gSXQgYWxzbyBjaGFuZ2VzIGBfX2ZwdXRfZGVmZXJyZWRgIHRvIGF2b2lkIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyAoY29yZWR1bXAgYW5kIGZpbGUgcmVmZXJlbmNlIG1hbmFnZW1lbnQpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPUkVEVU1QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZzX2NvcmVkdW1wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgZHVtcCBsb2dpYyB0byBhbGxvdyByZWxlYXNpbmcgZmlsZXMgYmVmb3JlIGR1bXBpbmcgY29yZSBpZiBgTU1GX0RVTVBfRkRfTElTVGAgaXMgbm90IHNldCBpbiBgY29yZWR1bXBfZmlsdGVyYC4gSXQgYWxzbyBjaGFuZ2VzIGBfX2ZwdXRfZGVmZXJyZWRgIHRvIGF2b2lkIHVzaW5nIGB0YXNrX3dvcmtgIHdoZW4gYFBGX0RVTVBDT1JFYCBpcyBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyAoY29yZWR1bXAgYW5kIGZpbGUgcmVmZXJlbmNlIG1hbmFnZW1lbnQpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjgl5[1] Phase: Succeeded StartedAt: 2026-08-07 06:38:30 +0000 UTC FinishedAt: 2026-08-07 06:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 06:38:30 +0000 UTC FinishedAt: 2026-08-07 06:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2] Phase: Succeeded StartedAt: 2026-08-07 06:38:30 +0000 UTC FinishedAt: 2026-08-07 10:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 06:38:30 +0000 UTC FinishedAt: 2026-08-07 10:22:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 06:38:30 +0000 UTC FinishedAt: 2026-08-07 06:38:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 06:38:30 +0000 UTC FinishedAt: 2026-08-07 06:38:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtjgl5/series-workflowtjgl5-convert-artifact-424560060/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 06:38:40 +0000 UTC FinishedAt: 2026-08-07 06:56:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 06:38:40 +0000 UTC FinishedAt: 2026-08-07 06:56:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*85f213cc-3c85-4500-9e29-abf9b4f18bb6,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-workflowtjgl5/series-workflowtjgl5-convert-artifact-424560060/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": "078a69d4-35cc-42fc-ae43-39d829d46095", "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-workflowtjgl5/series-workflowtjgl5-build-action-2769475306/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 06:38:40 +0000 UTC FinishedAt: 2026-08-07 06:55:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*85f213cc-3c85-4500-9e29-abf9b4f18bb6,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-workflowtjgl5/series-workflowtjgl5-convert-artifact-424560060/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": "078a69d4-35cc-42fc-ae43-39d829d46095", "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-workflowtjgl5/series-workflowtjgl5-build-action-2769475306/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 06:56:01 +0000 UTC FinishedAt: 2026-08-07 06:56:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 06:56:01 +0000 UTC FinishedAt: 2026-08-07 06:56:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 06:56:01 +0000 UTC FinishedAt: 2026-08-07 06:56:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 06:56:01 +0000 UTC FinishedAt: 2026-08-07 06:56:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtjgl5/series-workflowtjgl5-convert-artifact-1009364731/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 06:56:11 +0000 UTC FinishedAt: 2026-08-07 06:58:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 06:56:11 +0000 UTC FinishedAt: 2026-08-07 06:58:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*078a69d4-35cc-42fc-ae43-39d829d46095,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-workflowtjgl5/series-workflowtjgl5-build-action-2769475306/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-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 06:58:16 +0000 UTC FinishedAt: 2026-08-07 06:58:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 06:58:16 +0000 UTC FinishedAt: 2026-08-07 06:58:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 06:58:16 +0000 UTC FinishedAt: 2026-08-07 07:18:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 06:58:16 +0000 UTC FinishedAt: 2026-08-07 07:18:33 +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:*85f213cc-3c85-4500-9e29-abf9b4f18bb6,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-workflowtjgl5/series-workflowtjgl5-convert-artifact-1009364731/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": "686b7eff-a040-4963-868c-2706af29a54b", "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-workflowtjgl5/series-workflowtjgl5-build-action-2791842591/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 06:58:16 +0000 UTC FinishedAt: 2026-08-07 07:18:09 +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:*85f213cc-3c85-4500-9e29-abf9b4f18bb6,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-workflowtjgl5/series-workflowtjgl5-convert-artifact-1009364731/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": "686b7eff-a040-4963-868c-2706af29a54b", "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-workflowtjgl5/series-workflowtjgl5-build-action-2791842591/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 07:18:33 +0000 UTC FinishedAt: 2026-08-07 07:18:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 07:18:33 +0000 UTC FinishedAt: 2026-08-07 07:18:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 07:18:33 +0000 UTC FinishedAt: 2026-08-07 07:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 07:18:33 +0000 UTC FinishedAt: 2026-08-07 07:20:24 +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:*686b7eff-a040-4963-868c-2706af29a54b,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-workflowtjgl5/series-workflowtjgl5-build-action-2791842591/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-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 07:20:34 +0000 UTC FinishedAt: 2026-08-07 10:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 07:20:34 +0000 UTC FinishedAt: 2026-08-07 10:22:36 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},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:*078a69d4-35cc-42fc-ae43-39d829d46095,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*686b7eff-a040-4963-868c-2706af29a54b,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-workflowtjgl5/series-workflowtjgl5-build-action-2769475306/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-workflowtjgl5/series-workflowtjgl5-build-action-2791842591/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 07:20:34 +0000 UTC FinishedAt: 2026-08-07 07:20:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 07:20:34 +0000 UTC FinishedAt: 2026-08-07 07:20:40 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},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-workflowtjgl5/series-workflowtjgl5-convert-artifact-313962996/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 07:20:34 +0000 UTC FinishedAt: 2026-08-07 07:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 07:20:34 +0000 UTC FinishedAt: 2026-08-07 07:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 07:20:34 +0000 UTC FinishedAt: 2026-08-07 07:20:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 07:20:44 +0000 UTC FinishedAt: 2026-08-07 10:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjgl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["vfs_coredump"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"1fb556c523f6c18b43b1f52fb366f61c9963ce06","config_name":"upstream-apparmor-kasan.config","enable_configs":["COREDUMP"],"series_id":"2915562b-e07e-4864-82d9-649a3906be18","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 07:20:44 +0000 UTC FinishedAt: 2026-08-07 10:22:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*078a69d4-35cc-42fc-ae43-39d829d46095,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*686b7eff-a040-4963-868c-2706af29a54b,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-workflowtjgl5/series-workflowtjgl5-build-action-2769475306/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-workflowtjgl5/series-workflowtjgl5-build-action-2791842591/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-workflowtjgl5/series-workflowtjgl5-convert-artifact-313962996/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,}