Name: series-workfloww7rsn Phase: Succeeded StartedAt: 2026-07-22 09:36:53 +0000 UTC FinishedAt: 2026-07-22 14:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[0] Phase: Succeeded StartedAt: 2026-07-22 09:36:53 +0000 UTC FinishedAt: 2026-07-22 10:10:33 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 09:36:53 +0000 UTC FinishedAt: 2026-07-22 10:10:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "285fd588859f42b14f6f455faaa336b4077c3a87", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "285fd588859f42b14f6f455faaa336b4077c3a87", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM" ], "series_id": "ec3ac8e5-648d-4a59-a03f-4e8fc115daf8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nat_keepalive_work", "nat_keepalive_work_collect", "nat_keepalive_work_single" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEwOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3dvcmsmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgWEZSTSBOQVQga2VlcGFsaXZlIG1lY2hhbmlzbSwgY2hhbmdpbmcgaG93IHN0YXRlcyBhcmUgaXRlcmF0ZWQgYW5kIGxvY2tlZCBkdXJpbmcgdGhlIGtlZXBhbGl2ZSB3b3JrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3MgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTA6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkMDBjMmE0NDA1MDgxOWRiNWJiODlmODkwZjQ0NjViYjBjMDAyNjgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTA6MDk6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuaW5kZXggNDU4OTMxMDYyYTA0ZWYuLjEzMmRlMjNlNjRjMjgyIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5AQCAtMTUzLDI0ICYjNDM7MTUzLDUxIEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXG4gfVxuIFxuIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcbiYjNDM7XHRzdHJ1Y3QgbGlzdF9oZWFkIHN0YXRlcztcbiBcdHRpbWU2NF90IG5leHRfcnVuO1xuIFx0dGltZTY0X3Qgbm93O1xuIH07XG4gXG4tc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiYjNDM7c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUge1xuJiM0MztcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbiYjNDM7XHRzdHJ1Y3QgeGZybV9zdGF0ZSAqeDtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuIHtcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7XG4mIzQzO1x0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlO1xuJiM0MztcbiYjNDM7XHRpZiAoIVJFQURfT05DRSh4LVx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHN0YXRlID0ga21hbGxvY19vYmooKnN0YXRlLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRpZiAoIXN0YXRlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdHhmcm1fc3RhdGVfaG9sZCh4KTtcbiYjNDM7XHRzdGF0ZS1cdTAwM2V4ID0geDtcbiYjNDM7XHRsaXN0X2FkZF90YWlsKFx1MDAyNnN0YXRlLVx1MDAzZWxpc3QsIFx1MDAyNmN0eC1cdTAwM2VzdGF0ZXMpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuJiM0MztcdFx0XHRcdCAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpXG4mIzQzO3tcbiBcdGJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTtcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlIGthO1xuLVx0dGltZTY0X3QgbmV4dF9ydW47XG4mIzQzO1x0dGltZTY0X3QgbmV4dF9ydW4gPSAwO1xuIFx0dTMyIGludGVydmFsO1xuIFx0aW50IGRlbHRhO1xuIFxuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAoeC1cdTAwM2VrbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX0RFQUQpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4gXHRpbnRlcnZhbCA9IHgtXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbDtcbiBcdGlmICghaW50ZXJ2YWwpXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0c3Bpbl9sb2NrKFx1MDAyNngtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiBcbiBcdGRlbHRhID0gKGludCkoY3R4LVx1MDAzZW5vdyAtIHgtXHUwMDNlbGFzdHVzZWQpO1xuIFx0aWYgKGRlbHRhIFx1MDAzYyBpbnRlcnZhbCkge1xuQEAgLTE4NCwyOSAmIzQzOzIxMSw0MSBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuIFx0XHRzZW5kX2tlZXBhbGl2ZSA9IHRydWU7XG4gXHR9XG4gXG4tXHRzcGluX3VubG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spO1xuJiM0MztvdXQ6XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiBcbiBcdGlmIChzZW5kX2tlZXBhbGl2ZSlcbiBcdFx0bmF0X2tlZXBhbGl2ZV9zZW5kKFx1MDAyNmthKTtcbiBcbi1cdGlmICghY3R4LVx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFx1MDAzYyBjdHgtXHUwMDNlbmV4dF9ydW4pXG4mIzQzO1x0aWYgKG5leHRfcnVuIFx1MDAyNlx1MDAyNiAoIWN0eC1cdTAwM2VuZXh0X3J1biB8fCBuZXh0X3J1biBcdTAwM2MgY3R4LVx1MDAzZW5leHRfcnVuKSlcbiBcdFx0Y3R4LVx1MDAzZW5leHRfcnVuID0gbmV4dF9ydW47XG4tXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4mIzQzO1x0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlLCAqdG1wO1xuIFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xuIFx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xuIFx0c3RydWN0IG5ldCAqbmV0O1xuJiM0MztcdGludCBlcnI7XG4gXG4mIzQzO1x0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y3R4LnN0YXRlcyk7XG4gXHRjdHgubmV4dF9ydW4gPSAwO1xuIFx0Y3R4Lm5vdyA9IGt0aW1lX2dldF9yZWFsX3NlY29uZHMoKTtcbiBcbiBcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcbiBcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcbi1cdHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFx1MDAyNmN0eCk7XG4mIzQzO1x0ZXJyID0geGZybV9zdGF0ZV93YWxrKG5ldCwgXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QsIFx1MDAyNmN0eCk7XG4gXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcdTAwMjZ3YWxrLCBuZXQpO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdGF0ZSwgdG1wLCBcdTAwMjZjdHguc3RhdGVzLCBsaXN0KSB7XG4mIzQzO1x0XHRuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0YXRlLVx1MDAzZXgsIFx1MDAyNmN0eCk7XG4mIzQzO1x0XHR4ZnJtX3N0YXRlX3B1dChzdGF0ZS1cdTAwM2V4KTtcbiYjNDM7XHRcdGtmcmVlKHN0YXRlKTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKGVyciA9PSAtRU5PTUVNKSB7XG4mIzQzO1x0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCAwKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4gXHRpZiAoY3R4Lm5leHRfcnVuKVxuIFx0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxuIFx0XHRcdFx0ICAgICAgKGN0eC5uZXh0X3J1biAtIGN0eC5ub3cpICogSFopO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEwOjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrJiMzNDssCiAgICAmIzM0O25hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0JiMzNDssCiAgICAmIzM0O25hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFhGUk0gTkFUIGtlZXBhbGl2ZSBtZWNoYW5pc20sIGNoYW5naW5nIGhvdyBzdGF0ZXMgYXJlIGl0ZXJhdGVkIGFuZCBsb2NrZWQgZHVyaW5nIHRoZSBrZWVwYWxpdmUgd29yay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3Vic3lzdGVtIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMDBjMmE0NDA1MDgxOWRiNWJiODlmODkwZjQ0NjViYjBjMDAyNjgyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjIgMTA6MDk6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCmluZGV4IDQ1ODkzMTA2MmEwNGVmLi4xMzJkZTIzZTY0YzI4MiAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKQEAgLTE1MywyNCAmIzQzOzE1Myw1MSBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKQogfQogCiBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7CiYjNDM7CXN0cnVjdCBsaXN0X2hlYWQgc3RhdGVzOwogCXRpbWU2NF90IG5leHRfcnVuOwogCXRpbWU2NF90IG5vdzsKIH07CiAKLXN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpCiYjNDM7c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgewomIzQzOwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiYjNDM7CXN0cnVjdCB4ZnJtX3N0YXRlICp4OwomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpCiB7CiAJc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjsKJiM0MzsJc3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlOwomIzQzOwomIzQzOwlpZiAoIVJFQURfT05DRSh4LSZndDtuYXRfa2VlcGFsaXZlX2ludGVydmFsKSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlzdGF0ZSA9IGttYWxsb2Nfb2JqKCpzdGF0ZSwgR0ZQX0FUT01JQyk7CiYjNDM7CWlmICghc3RhdGUpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJeGZybV9zdGF0ZV9ob2xkKHgpOwomIzQzOwlzdGF0ZS0mZ3Q7eCA9IHg7CiYjNDM7CWxpc3RfYWRkX3RhaWwoJmFtcDtzdGF0ZS0mZ3Q7bGlzdCwgJmFtcDtjdHgtJmd0O3N0YXRlcyk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LAomIzQzOwkJCQkgICAgICBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4KQomIzQzO3sKIAlib29sIHNlbmRfa2VlcGFsaXZlID0gZmFsc2U7CiAJc3RydWN0IG5hdF9rZWVwYWxpdmUga2E7Ci0JdGltZTY0X3QgbmV4dF9ydW47CiYjNDM7CXRpbWU2NF90IG5leHRfcnVuID0gMDsKIAl1MzIgaW50ZXJ2YWw7CiAJaW50IGRlbHRhOwogCiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO3gtJmd0O2xvY2spOwomIzQzOwomIzQzOwlpZiAoeC0mZ3Q7a20uc3RhdGUgPT0gWEZSTV9TVEFURV9ERUFEKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiAJaW50ZXJ2YWwgPSB4LSZndDtuYXRfa2VlcGFsaXZlX2ludGVydmFsOwogCWlmICghaW50ZXJ2YWwpCi0JCXJldHVybiAwOwotCi0Jc3Bpbl9sb2NrKCZhbXA7eC0mZ3Q7bG9jayk7CiYjNDM7CQlnb3RvIG91dDsKIAogCWRlbHRhID0gKGludCkoY3R4LSZndDtub3cgLSB4LSZndDtsYXN0dXNlZCk7CiAJaWYgKGRlbHRhICZsdDsgaW50ZXJ2YWwpIHsKQEAgLTE4NCwyOSAmIzQzOzIxMSw0MSBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQogCQlzZW5kX2tlZXBhbGl2ZSA9IHRydWU7CiAJfQogCi0Jc3Bpbl91bmxvY2soJmFtcDt4LSZndDtsb2NrKTsKJiM0MztvdXQ6CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7eC0mZ3Q7bG9jayk7CiAKIAlpZiAoc2VuZF9rZWVwYWxpdmUpCiAJCW5hdF9rZWVwYWxpdmVfc2VuZCgmYW1wO2thKTsKIAotCWlmICghY3R4LSZndDtuZXh0X3J1biB8fCBuZXh0X3J1biAmbHQ7IGN0eC0mZ3Q7bmV4dF9ydW4pCiYjNDM7CWlmIChuZXh0X3J1biAmYW1wOyZhbXA7ICghY3R4LSZndDtuZXh0X3J1biB8fCBuZXh0X3J1biAmbHQ7IGN0eC0mZ3Q7bmV4dF9ydW4pKQogCQljdHgtJmd0O25leHRfcnVuID0gbmV4dF9ydW47Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CiYjNDM7CXN0cnVjdCBuYXRfa2VlcGFsaXZlX3N0YXRlICpzdGF0ZSwgKnRtcDsKIAlzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCBjdHg7CiAJc3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrOwogCXN0cnVjdCBuZXQgKm5ldDsKJiM0MzsJaW50IGVycjsKIAomIzQzOwlJTklUX0xJU1RfSEVBRCgmYW1wO2N0eC5zdGF0ZXMpOwogCWN0eC5uZXh0X3J1biA9IDA7CiAJY3R4Lm5vdyA9IGt0aW1lX2dldF9yZWFsX3NlY29uZHMoKTsKIAogCW5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTsKIAl4ZnJtX3N0YXRlX3dhbGtfaW5pdCgmYW1wO3dhbGssIElQUFJPVE9fRVNQLCBOVUxMKTsKLQl4ZnJtX3N0YXRlX3dhbGsobmV0LCAmYW1wO3dhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsICZhbXA7Y3R4KTsKJiM0MzsJZXJyID0geGZybV9zdGF0ZV93YWxrKG5ldCwgJmFtcDt3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgJmFtcDtjdHgpOwogCXhmcm1fc3RhdGVfd2Fsa19kb25lKCZhbXA7d2FsaywgbmV0KTsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN0YXRlLCB0bXAsICZhbXA7Y3R4LnN0YXRlcywgbGlzdCkgewomIzQzOwkJbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdGF0ZS0mZ3Q7eCwgJmFtcDtjdHgpOwomIzQzOwkJeGZybV9zdGF0ZV9wdXQoc3RhdGUtJmd0O3gpOwomIzQzOwkJa2ZyZWUoc3RhdGUpOwomIzQzOwl9CiYjNDM7CWlmIChlcnIgPT0gLUVOT01FTSkgewomIzQzOwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZhbXA7bmV0LSZndDt4ZnJtLm5hdF9rZWVwYWxpdmVfd29yaywgMCk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAlpZiAoY3R4Lm5leHRfcnVuKQogCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmFtcDtuZXQtJmd0O3hmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLAogCQkJCSAgICAgIChjdHgubmV4dF9ydW4gLSBjdHgubm93KSAqIEhaKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTA6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyOQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFhGUk0gTkFUIEtlZXBhbGl2ZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IHRoZSBgbmF0X2tlZXBhbGl2ZV93b3JrYCBmdW5jdGlvbiB3b3JrcyBpdHMgd2F5IHRocm91Z2ggWEZSTSBzdGF0ZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIHNlZW1zIGxpa2UgYSByZWxhdGl2ZWx5IGNvbnRhaW5lZCBjaGFuZ2UsIGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSBpdGVyYXRpb24gcHJvY2Vzcy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBzaGlmdGluZyBmcm9tIGRpcmVjdGx5IGNhbGxpbmcgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIHdpdGhpbiB0aGUgYHhmcm1fc3RhdGVfd2Fsa2AgbG9vcCB0byBmaXJzdCBjb2xsZWN0aW5nIHN0YXRlcyBpbnRvIGEgbGlzdCB1c2luZyBgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3RgIGFuZCAqdGhlbiogaXRlcmF0aW5nIG92ZXIgdGhhdCBsaXN0LgoKSG1tLCBpbnRlcmVzdGluZy4gVGhhdCBzaWduYWxzIGEgcG90ZW50aWFsIGNvbmNlcm4gd2l0aCB0aGUgb3JpZ2luYWwgaXRlcmF0aW9uLCBwZXJoYXBzIHJlbGF0ZWQgdG8gY29uY3VycmVudCBtb2RpZmljYXRpb24gb3IgbG9jayBjb250ZW50aW9uIGR1cmluZyB0aGUgd2Fsay4gVGhlIGNoYW5nZSBmcm9tIGBzcGluX2xvY2soJmFtcDt4LSZndDtsb2NrKWAgdG8gYHNwaW5fbG9ja19iaCgmYW1wO3gtJmd0O2xvY2spYCB3aXRoaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzIHN1c3BpY2lvbjsgdXNpbmcgYHNwaW5fbG9ja19iaGAgc3VnZ2VzdHMgdGhlIG9yaWdpbmFsIGNvZGUgbWlnaHQgaGF2ZSBiZWVuIHZ1bG5lcmFibGUgdG8gcHJlZW1wdGlvbiBpc3N1ZXMgb3IgaW50ZXJydXB0LXJlbGF0ZWQgcHJvYmxlbXMuIEFkZGluZyBoYW5kbGluZyBmb3IgYFhGUk1fU1RBVEVfREVBRGAgc3RhdGVzIHNlZW1zIGxvZ2ljYWwgaW4gdGhpcyBjb250ZXh0IGFzIHdlbGwsIGFuZCBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBzdGF0ZSBjb2xsZWN0aW9uIHByb2Nlc3MuCgpGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW0gY2hhbmdlLCBzbyBpdCYjMzk7cyB3b3J0aCBhIGNsb3NlciBsb29rIGF0IHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgbG9ja2luZyBvciBzdGF0ZSBpdGVyYXRpb24gaXNzdWVzLiBCZWZvcmUgSSBkZWx2ZSB0b28gZGVlcGx5IGludG8gdGhlIGNvZGUgaXRzZWxmLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBidWlsZCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgZmlyZSB1cCBgZ3JlcHBlcmAgdG8gc2VlIHdoZXJlIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AgaXMgdXNlZCBpbiBhbnkgTWFrZWZpbGVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgcXVpY2sgaGVhZHMgdXAgb24gYW55IG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyB0aGF0IHdpbGwgYmUgbmVlZGVkIHRvIGFjdHVhbGx5IHVzZSB0aGlzIG5ldyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxMDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQveGZybS5oPTIzNjM9c3RhdGljIGlubGluZSBpbnQgcmVnaXN0ZXJfeGZybV9zdGF0ZV9icGYodm9pZClcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMjM2OC1cbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzY5OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpO1xuaW5jbHVkZS9uZXQveGZybS5oOjIzNzA6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfZmluaSh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpO1xuaW5jbHVkZS9uZXQveGZybS5oOjIzNzE6aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpO1xuaW5jbHVkZS9uZXQveGZybS5oOjIzNzI6aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfZmluaShzdHJ1Y3QgbmV0ICpuZXQpO1xuaW5jbHVkZS9uZXQveGZybS5oOjIzNzM6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XG5pbmNsdWRlL25ldC94ZnJtLmgtMjM3NC1cbi0tXG5uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYz0yNzk9aW50IF9faW5pdCB4ZnJtNl9pbml0KHZvaWQpXG4tLVxubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMjk3LVxubmV0L2lwdjYveGZybTZfcG9saWN5LmM6Mjk4Olx0cmV0ID0geGZybV9uYXRfa2VlcGFsaXZlX2luaXQoQUZfSU5FVDYpO1xubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMjk5LVx0aWYgKHJldClcbi0tXG5uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYz0zMTQ9dm9pZCB4ZnJtNl9maW5pKHZvaWQpXG5uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYy0zMTUte1xubmV0L2lwdjYveGZybTZfcG9saWN5LmM6MzE2Olx0eGZybV9uYXRfa2VlcGFsaXZlX2ZpbmkoQUZfSU5FVDYpO1xubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMzE3LVx0dW5yZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFx1MDAyNnhmcm02X25ldF9vcHMpO1xuLS1cbm5ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxuLS1cbm5ldC94ZnJtL01ha2VmaWxlLTE2LVx0XHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTc6XHRcdCAgICAgIHhmcm1fbmF0X2tlZXBhbGl2ZS5vXG5uZXQveGZybS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfWEZSTV9TVEFUSVNUSUNTKSAmIzQzOz0geGZybV9wcm9jLm9cbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yLS8qXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzozOiAqIHhmcm1fbmF0X2tlZXBhbGl2ZS5jXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy00LSAqXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9Mjc2PXN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2tfZmluaShzdHJ1Y3Qgc29ja19iaF9sb2NrZWQgX19wZXJjcHUgKnNvY2tzKVxuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI4My1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI4NDp2b2lkIHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjg1LXtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTQtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyOTU6aW50IF9fbmV0X2luaXQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5Ni17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzAwLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzAxOmludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzAyLXtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDYtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzozMDc6aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0KHVuc2lnbmVkIHNob3J0IGZhbWlseSlcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMwOC17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzI1LX1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjMyNjpFWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMjctXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzozMjg6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfZmluaSh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMjkte1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTM0MC19XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzozNDE6RVhQT1JUX1NZTUJPTF9HUEwoeGZybV9uYXRfa2VlcGFsaXZlX2ZpbmkpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDMxMD1zdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MzM1LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MzM2Olx0cnYgPSB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXQobmV0KTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDMzNy1cdGlmIChydiBcdTAwM2MgMClcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQzNTQ9c3RhdGljIHZvaWQgX19uZXRfZXhpdCB4ZnJtX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDM1NS17XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQzNTY6XHR4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2ZpbmkobmV0KTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDM1Ny1cdHhmcm1fc3lzY3RsX2ZpbmkobmV0KTtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQ0MDQ9dm9pZCBfX2luaXQgeGZybV9pbml0KHZvaWQpXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NDE4LVx0cmVnaXN0ZXJfeGZybV9zdGF0ZV9icGYoKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDQxOTpcdHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0KEFGX0lORVQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NDIwLX1cbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9ODExPWludCBfX3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzItXHRcdG5ldC1cdTAwM2V4ZnJtLnN0YXRlX251bS0tO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjgzMzpcdFx0eGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODM0LVx0XHRzcGluX3VubG9jayhcdTAwMjZuZXQtXHUwMDNleGZybS54ZnJtX3N0YXRlX2xvY2spO1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0xNzIyPXN0YXRpYyB2b2lkIF9feGZybV9zdGF0ZV9pbnNlcnQoc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE3NjYtXHR4ZnJtX2hhc2hfZ3Jvd19jaGVjayhuZXQsIHgtXHUwMDNlYnlkc3QubmV4dCAhPSBOVUxMKTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNzY3Olx0eGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTc2OC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM4NQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFhGUk0gTkFUIEtlZXBhbGl2ZSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHRhcmdldHMgYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgd2hpY2gsIGFzIEkga25vdywgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1hGUk1gIGlzIHNldC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIFhGUk0gZnJhbWV3b3JrIGFuZCBpdHMgTkFUIGtlZXBhbGl2ZSBmdW5jdGlvbmFsaXR5LiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgdGhyZWUgZnVuY3Rpb25zOiBgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZWAsIGBuYXRfa2VlcGFsaXZlX3dvcmtgLCBhbmQgYWRkcyBhIG5ldyBvbmUsIGBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdGAuCgpUaGUgZmFjdCB0aGF0IHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgYmVpbmcgbW9kaWZpZWQgb3IgYWRkZWQgc3Ryb25nbHkgc3VnZ2VzdHMgd2UmIzM5O3JlIGRpZ2dpbmcgaW50byB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkFUIGtlZXBhbGl2ZSBtZWNoYW5pc20gd2l0aGluIFhGUk0uIEl0IHNvdW5kcyBsaWtlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZmVhdHVyZSwgd2hpY2ggaXMgZ29vZC4gVGhhdCBjb25maXJtcyB0aGUgZGVwZW5kZW5jeSBvbiBgWEZSTWAgYmVpbmcgZW5hYmxlZC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gSSYjMzk7bGwgbmVlZCB0byBkaXZlIGludG8gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCBpdHNlbGYuIE15IG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggYW5kIHVuZGVyc3RhbmQgcHJlY2lzZWx5ICpob3cqIGBuYXRfa2VlcGFsaXZlX3dvcmtgIGlzIGFjdHVhbGx5IHRyaWdnZXJlZCB3aXRoaW4gdGhlIHN5c3RlbS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGVmZmVjdCBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25hdF9rZWVwYWxpdmVfd29yayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9uZXRucy94ZnJtLmg9MzI9c3RydWN0IG5ldG5zX3hmcm0ge1xuLS1cbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaC04NS1cdHN0cnVjdCBtdXRleCB4ZnJtX2NmZ19tdXRleDtcbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaDo4NjpcdHN0cnVjdCBkZWxheWVkX3dvcmtcdG5hdF9rZWVwYWxpdmVfd29yaztcbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaC04Ny19O1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTExNT1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE1NC1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE1NTpzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNTYtXHRzdHJ1Y3QgbGlzdF9oZWFkIHN0YXRlcztcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0xNjE9c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUge1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2NS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2NjpzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2Ny17XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNjg6XHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4ID0gcHRyO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTY5LVx0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlO1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE4My1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE4NDpzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTg1Olx0XHRcdFx0ICAgICAgc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eClcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE4Ni17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjIzLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI0OnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjUte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI2LVx0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlLCAqdG1wO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI3Olx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI4LVx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIzNS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIzNjpcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIzNy1cdHhmcm1fc3RhdGVfd2Fsa19pbml0KFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIzODpcdGVyciA9IHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0LCBcdTAwMjZjdHgpO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjM5LVx0eGZybV9zdGF0ZV93YWxrX2RvbmUoXHUwMDI2d2FsaywgbmV0KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0MC1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdGF0ZSwgdG1wLCBcdTAwMjZjdHguc3RhdGVzLCBsaXN0KSB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDE6XHRcdG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RhdGUtXHUwMDNleCwgXHUwMDI2Y3R4KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0Mi1cdFx0eGZybV9zdGF0ZV9wdXQoc3RhdGUtXHUwMDNleCk7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQ1LVx0aWYgKGVyciA9PSAtRU5PTUVNKSB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDY6XHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssIDApO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQ3LVx0XHRyZXR1cm47XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQ5LVx0aWYgKGN0eC5uZXh0X3J1bilcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI1MDpcdFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yayxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI1MS1cdFx0XHRcdCAgICAgIChjdHgubmV4dF9ydW4gLSBjdHgubm93KSAqIEhaKTtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yODQ9dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTEtXHRuZXQgPSB4c19uZXQoeCk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyOTI6XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCAwKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5My19XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9Mjk1PWludCBfX25ldF9pbml0IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTYte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjk3Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCBuYXRfa2VlcGFsaXZlX3dvcmspO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjk4LVx0cmV0dXJuIDA7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MzAxPWludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzAyLXtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjMwMzpcdGRpc2FibGVfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMwNC1cdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODcKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOQVQgS2VlcGFsaXZlIEZ1bmN0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGlzIGBuYXRfa2VlcGFsaXZlYCBmdW5jdGlvbmFsaXR5LiBNeSBmb2N1cyBpcyBvbiB0aGVzZSB0aHJlZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5OiBgbmF0X2tlZXBhbGl2ZV93b3JrYCwgYG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0YCwgYW5kIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYC4gSSBrbm93IHRob3NlIGFyZSBzdGF0aWMgZnVuY3Rpb25zIGRlZmluZWQgd2l0aGluIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AuIE5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMgYXJlIGluIHBsYWNlLgoKQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYFhGUk1gIGlzIHRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gaGVyZS4gQnV0IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gaGlkZGVuIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXQveGZybS9NYWtlZmlsZWAgdG8gY29uZmlybS4gQWgsIGhlcmUgaXQgaXM6IGBvYmotJChDT05GSUdfWEZSTSkgOj0gLi4uIHhmcm1fbmF0X2tlZXBhbGl2ZS5vYC4gVGhhdCBjb25maXJtcyBpdDsgYENPTkZJR19YRlJNYCBoYW5kbGVzIGV2ZXJ5dGhpbmcgd2UgbmVlZC4gTm8gb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkLgoKQWxyaWdodCwgSSBoYXZlIG15IGZpbmRpbmdzLiBJJiMzOTttIHJlYWR5IHRvIGRvY3VtZW50IHRoZXNlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3dvcmsmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgWEZSTSBOQVQga2VlcGFsaXZlIG1lY2hhbmlzbSwgY2hhbmdpbmcgaG93IHN0YXRlcyBhcmUgaXRlcmF0ZWQgYW5kIGxvY2tlZCBkdXJpbmcgdGhlIGtlZXBhbGl2ZSB3b3JrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3MgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3dvcmsmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgWEZSTSBOQVQga2VlcGFsaXZlIG1lY2hhbmlzbSwgY2hhbmdpbmcgaG93IHN0YXRlcyBhcmUgaXRlcmF0ZWQgYW5kIGxvY2tlZCBkdXJpbmcgdGhlIGtlZXBhbGl2ZSB3b3JrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3MgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMDowOTo1My4xNzAyNjEzOTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzExOTIwMzA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdFwiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRlJNIE5BVCBrZWVwYWxpdmUgbWVjaGFuaXNtLCBjaGFuZ2luZyBob3cgc3RhdGVzIGFyZSBpdGVyYXRlZCBhbmQgbG9ja2VkIGR1cmluZyB0aGUga2VlcGFsaXZlIHdvcmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTA6MDk6NTMuMTcwMjY4NzAyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDIyOTAxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkMDBjMmE0NDA1MDgxOWRiNWJiODlmODkwZjQ0NjViYjBjMDAyNjgyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDEwOjA5OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jIGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcXG5pbmRleCA0NTg5MzEwNjJhMDRlZi4uMTMyZGUyM2U2NGMyODIgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xcbkBAIC0xNTMsMjQgKzE1Myw1MSBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxcbiB9XFxuIFxcbiBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XFxuK1xcdHN0cnVjdCBsaXN0X2hlYWQgc3RhdGVzO1xcbiBcXHR0aW1lNjRfdCBuZXh0X3J1bjtcXG4gXFx0dGltZTY0X3Qgbm93O1xcbiB9O1xcbiBcXG4tc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG4rc3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUge1xcbitcXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuK1xcdHN0cnVjdCB4ZnJtX3N0YXRlICp4O1xcbit9O1xcbitcXG4rc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXFxuIHtcXG4gXFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjtcXG4rXFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlO1xcbitcXG4rXFx0aWYgKCFSRUFEX09OQ0UoeC1cXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbCkpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0c3RhdGUgPSBrbWFsbG9jX29iaigqc3RhdGUsIEdGUF9BVE9NSUMpO1xcbitcXHRpZiAoIXN0YXRlKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdHhmcm1fc3RhdGVfaG9sZCh4KTtcXG4rXFx0c3RhdGUtXFx1MDAzZXggPSB4O1xcbitcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZzdGF0ZS1cXHUwMDNlbGlzdCwgXFx1MDAyNmN0eC1cXHUwMDNlc3RhdGVzKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpXFxuK3tcXG4gXFx0Ym9vbCBzZW5kX2tlZXBhbGl2ZSA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSBrYTtcXG4tXFx0dGltZTY0X3QgbmV4dF9ydW47XFxuK1xcdHRpbWU2NF90IG5leHRfcnVuID0gMDtcXG4gXFx0dTMyIGludGVydmFsO1xcbiBcXHRpbnQgZGVsdGE7XFxuIFxcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNngtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0aWYgKHgtXFx1MDAzZWttLnN0YXRlID09IFhGUk1fU1RBVEVfREVBRClcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbiBcXHRpbnRlcnZhbCA9IHgtXFx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWw7XFxuIFxcdGlmICghaW50ZXJ2YWwpXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4tXFx0c3Bpbl9sb2NrKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuIFxcbiBcXHRkZWx0YSA9IChpbnQpKGN0eC1cXHUwMDNlbm93IC0geC1cXHUwMDNlbGFzdHVzZWQpO1xcbiBcXHRpZiAoZGVsdGEgXFx1MDAzYyBpbnRlcnZhbCkge1xcbkBAIC0xODQsMjkgKzIxMSw0MSBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxcbiBcXHRcXHRzZW5kX2tlZXBhbGl2ZSA9IHRydWU7XFxuIFxcdH1cXG4gXFxuLVxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG4rb3V0OlxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2eC1cXHUwMDNlbG9jayk7XFxuIFxcbiBcXHRpZiAoc2VuZF9rZWVwYWxpdmUpXFxuIFxcdFxcdG5hdF9rZWVwYWxpdmVfc2VuZChcXHUwMDI2a2EpO1xcbiBcXG4tXFx0aWYgKCFjdHgtXFx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFxcdTAwM2MgY3R4LVxcdTAwM2VuZXh0X3J1bilcXG4rXFx0aWYgKG5leHRfcnVuIFxcdTAwMjZcXHUwMDI2ICghY3R4LVxcdTAwM2VuZXh0X3J1biB8fCBuZXh0X3J1biBcXHUwMDNjIGN0eC1cXHUwMDNlbmV4dF9ydW4pKVxcbiBcXHRcXHRjdHgtXFx1MDAzZW5leHRfcnVuID0gbmV4dF9ydW47XFxuLVxcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiB7XFxuK1xcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3N0YXRlICpzdGF0ZSwgKnRtcDtcXG4gXFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xcbiBcXHRzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7XFxuIFxcdHN0cnVjdCBuZXQgKm5ldDtcXG4rXFx0aW50IGVycjtcXG4gXFxuK1xcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjdHguc3RhdGVzKTtcXG4gXFx0Y3R4Lm5leHRfcnVuID0gMDtcXG4gXFx0Y3R4Lm5vdyA9IGt0aW1lX2dldF9yZWFsX3NlY29uZHMoKTtcXG4gXFxuIFxcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcXG4gXFx0eGZybV9zdGF0ZV93YWxrX2luaXQoXFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcXG4tXFx0eGZybV9zdGF0ZV93YWxrKG5ldCwgXFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFxcdTAwMjZjdHgpO1xcbitcXHRlcnIgPSB4ZnJtX3N0YXRlX3dhbGsobmV0LCBcXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QsIFxcdTAwMjZjdHgpO1xcbiBcXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcXHUwMDI2d2FsaywgbmV0KTtcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN0YXRlLCB0bXAsIFxcdTAwMjZjdHguc3RhdGVzLCBsaXN0KSB7XFxuK1xcdFxcdG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RhdGUtXFx1MDAzZXgsIFxcdTAwMjZjdHgpO1xcbitcXHRcXHR4ZnJtX3N0YXRlX3B1dChzdGF0ZS1cXHUwMDNleCk7XFxuK1xcdFxcdGtmcmVlKHN0YXRlKTtcXG4rXFx0fVxcbitcXHRpZiAoZXJyID09IC1FTk9NRU0pIHtcXG4rXFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCAwKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuIFxcdGlmIChjdHgubmV4dF9ydW4pXFxuIFxcdFxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yayxcXG4gXFx0XFx0XFx0XFx0ICAgICAgKGN0eC5uZXh0X3J1biAtIGN0eC5ub3cpICogSFopO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMDowOTo1My43NzM0NTc5NDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNjUxNTk5MzI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdFwiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRlJNIE5BVCBrZWVwYWxpdmUgbWVjaGFuaXNtLCBjaGFuZ2luZyBob3cgc3RhdGVzIGFyZSBpdGVyYXRlZCBhbmQgbG9ja2VkIGR1cmluZyB0aGUga2VlcGFsaXZlIHdvcmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkMDBjMmE0NDA1MDgxOWRiNWJiODlmODkwZjQ0NjViYjBjMDAyNjgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTA6MDk6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5pbmRleCA0NTg5MzEwNjJhMDRlZi4uMTMyZGUyM2U2NGMyODIgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuKysrIGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbkBAIC0xNTMsMjQgKzE1Myw1MSBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxuIH1cbiBcbiBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkIHN0YXRlcztcbiBcdHRpbWU2NF90IG5leHRfcnVuO1xuIFx0dGltZTY0X3Qgbm93O1xuIH07XG4gXG4tc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbitzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV9zdGF0ZSB7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4rXHRzdHJ1Y3QgeGZybV9zdGF0ZSAqeDtcbit9O1xuK1xuK3N0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuIHtcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7XG4rXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV9zdGF0ZSAqc3RhdGU7XG4rXG4rXHRpZiAoIVJFQURfT05DRSh4LVx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHN0YXRlID0ga21hbGxvY19vYmooKnN0YXRlLCBHRlBfQVRPTUlDKTtcbitcdGlmICghc3RhdGUpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0eGZybV9zdGF0ZV9ob2xkKHgpO1xuK1x0c3RhdGUtXHUwMDNleCA9IHg7XG4rXHRsaXN0X2FkZF90YWlsKFx1MDAyNnN0YXRlLVx1MDAzZWxpc3QsIFx1MDAyNmN0eC1cdTAwM2VzdGF0ZXMpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsXG4rXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4KVxuK3tcbiBcdGJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTtcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlIGthO1xuLVx0dGltZTY0X3QgbmV4dF9ydW47XG4rXHR0aW1lNjRfdCBuZXh0X3J1biA9IDA7XG4gXHR1MzIgaW50ZXJ2YWw7XG4gXHRpbnQgZGVsdGE7XG4gXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbitcbitcdGlmICh4LVx1MDAzZWttLnN0YXRlID09IFhGUk1fU1RBVEVfREVBRClcbitcdFx0Z290byBvdXQ7XG4rXG4gXHRpbnRlcnZhbCA9IHgtXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbDtcbiBcdGlmICghaW50ZXJ2YWwpXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0c3Bpbl9sb2NrKFx1MDAyNngtXHUwMDNlbG9jayk7XG4rXHRcdGdvdG8gb3V0O1xuIFxuIFx0ZGVsdGEgPSAoaW50KShjdHgtXHUwMDNlbm93IC0geC1cdTAwM2VsYXN0dXNlZCk7XG4gXHRpZiAoZGVsdGEgXHUwMDNjIGludGVydmFsKSB7XG5AQCAtMTg0LDI5ICsyMTEsNDEgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiBcdFx0c2VuZF9rZWVwYWxpdmUgPSB0cnVlO1xuIFx0fVxuIFxuLVx0c3Bpbl91bmxvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbitvdXQ6XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xuIFxuIFx0aWYgKHNlbmRfa2VlcGFsaXZlKVxuIFx0XHRuYXRfa2VlcGFsaXZlX3NlbmQoXHUwMDI2a2EpO1xuIFxuLVx0aWYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bilcbitcdGlmIChuZXh0X3J1biBcdTAwMjZcdTAwMjYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bikpXG4gXHRcdGN0eC1cdTAwM2VuZXh0X3J1biA9IG5leHRfcnVuO1xuLVx0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuK1x0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlLCAqdG1wO1xuIFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xuIFx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xuIFx0c3RydWN0IG5ldCAqbmV0O1xuK1x0aW50IGVycjtcbiBcbitcdElOSVRfTElTVF9IRUFEKFx1MDAyNmN0eC5zdGF0ZXMpO1xuIFx0Y3R4Lm5leHRfcnVuID0gMDtcbiBcdGN0eC5ub3cgPSBrdGltZV9nZXRfcmVhbF9zZWNvbmRzKCk7XG4gXG4gXHRuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCwgeGZybS5uYXRfa2VlcGFsaXZlX3dvcmsud29yayk7XG4gXHR4ZnJtX3N0YXRlX3dhbGtfaW5pdChcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XG4tXHR4ZnJtX3N0YXRlX3dhbGsobmV0LCBcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlLCBcdTAwMjZjdHgpO1xuK1x0ZXJyID0geGZybV9zdGF0ZV93YWxrKG5ldCwgXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QsIFx1MDAyNmN0eCk7XG4gXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcdTAwMjZ3YWxrLCBuZXQpO1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN0YXRlLCB0bXAsIFx1MDAyNmN0eC5zdGF0ZXMsIGxpc3QpIHtcbitcdFx0bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdGF0ZS1cdTAwM2V4LCBcdTAwMjZjdHgpO1xuK1x0XHR4ZnJtX3N0YXRlX3B1dChzdGF0ZS1cdTAwM2V4KTtcbitcdFx0a2ZyZWUoc3RhdGUpO1xuK1x0fVxuK1x0aWYgKGVyciA9PSAtRU5PTUVNKSB7XG4rXHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssIDApO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXHRpZiAoY3R4Lm5leHRfcnVuKVxuIFx0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxuIFx0XHRcdFx0ICAgICAgKGN0eC5uZXh0X3J1biAtIGN0eC5ub3cpICogSFopO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTA6MDk6NTMuNzczNDYwMTU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg0MTg2NTI3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFhGUk0gTkFUIEtlZXBhbGl2ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgdGhlIGBuYXRfa2VlcGFsaXZlX3dvcmtgIGZ1bmN0aW9uIHdvcmtzIGl0cyB3YXkgdGhyb3VnaCBYRlJNIHN0YXRlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgc2VlbXMgbGlrZSBhIHJlbGF0aXZlbHkgY29udGFpbmVkIGNoYW5nZSwgZm9jdXNlZCBvbiBpbXByb3ZpbmcgdGhlIGl0ZXJhdGlvbiBwcm9jZXNzLiBJdCBsb29rcyBsaWtlIGl0J3Mgc2hpZnRpbmcgZnJvbSBkaXJlY3RseSBjYWxsaW5nIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCB3aXRoaW4gdGhlIGB4ZnJtX3N0YXRlX3dhbGtgIGxvb3AgdG8gZmlyc3QgY29sbGVjdGluZyBzdGF0ZXMgaW50byBhIGxpc3QgdXNpbmcgYG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0YCBhbmQgKnRoZW4qIGl0ZXJhdGluZyBvdmVyIHRoYXQgbGlzdC5cblxuSG1tLCBpbnRlcmVzdGluZy4gVGhhdCBzaWduYWxzIGEgcG90ZW50aWFsIGNvbmNlcm4gd2l0aCB0aGUgb3JpZ2luYWwgaXRlcmF0aW9uLCBwZXJoYXBzIHJlbGF0ZWQgdG8gY29uY3VycmVudCBtb2RpZmljYXRpb24gb3IgbG9jayBjb250ZW50aW9uIGR1cmluZyB0aGUgd2Fsay4gVGhlIGNoYW5nZSBmcm9tIGBzcGluX2xvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKWAgdG8gYHNwaW5fbG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spYCB3aXRoaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzIHN1c3BpY2lvbjsgdXNpbmcgYHNwaW5fbG9ja19iaGAgc3VnZ2VzdHMgdGhlIG9yaWdpbmFsIGNvZGUgbWlnaHQgaGF2ZSBiZWVuIHZ1bG5lcmFibGUgdG8gcHJlZW1wdGlvbiBpc3N1ZXMgb3IgaW50ZXJydXB0LXJlbGF0ZWQgcHJvYmxlbXMuIEFkZGluZyBoYW5kbGluZyBmb3IgYFhGUk1fU1RBVEVfREVBRGAgc3RhdGVzIHNlZW1zIGxvZ2ljYWwgaW4gdGhpcyBjb250ZXh0IGFzIHdlbGwsIGFuZCBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBzdGF0ZSBjb2xsZWN0aW9uIHByb2Nlc3MuXG5cbkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCB0aGlzIGlzIGEgY29yZSBuZXR3b3JraW5nIHN1YnN5c3RlbSBjaGFuZ2UsIHNvIGl0J3Mgd29ydGggYSBjbG9zZXIgbG9vayBhdCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSXQgc2VlbXMgbGlrZSBpdCdzIGFkZHJlc3NpbmcgbG9ja2luZyBvciBzdGF0ZSBpdGVyYXRpb24gaXNzdWVzLiBCZWZvcmUgSSBkZWx2ZSB0b28gZGVlcGx5IGludG8gdGhlIGNvZGUgaXRzZWxmLCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGJ1aWxkIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJ2xsIGZpcmUgdXAgYGdyZXBwZXJgIHRvIHNlZSB3aGVyZSBgeGZybV9uYXRfa2VlcGFsaXZlLmNgIGlzIHVzZWQgaW4gYW55IE1ha2VmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIGhlYWRzIHVwIG9uIGFueSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdGhhdCB3aWxsIGJlIG5lZWRlZCB0byBhY3R1YWxseSB1c2UgdGhpcyBuZXcgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MjksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMDowOTo1OS42MTUzMjc5NDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExMDAwODgwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX25hdF9rZWVwYWxpdmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQveGZybS5oPTIzNjM9c3RhdGljIGlubGluZSBpbnQgcmVnaXN0ZXJfeGZybV9zdGF0ZV9icGYodm9pZClcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMzY4LVxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzY5OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzcwOnZvaWQgeGZybV9uYXRfa2VlcGFsaXZlX2ZpbmkodW5zaWduZWQgc2hvcnQgZmFtaWx5KTtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MjM3MTppbnQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCk7XFxuaW5jbHVkZS9uZXQveGZybS5oOjIzNzI6aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfZmluaShzdHJ1Y3QgbmV0ICpuZXQpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzczOnZvaWQgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoc3RydWN0IHhmcm1fc3RhdGUgKngpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMzc0LVxcbi0tXFxubmV0L2lwdjYveGZybTZfcG9saWN5LmM9Mjc5PWludCBfX2luaXQgeGZybTZfaW5pdCh2b2lkKVxcbi0tXFxubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMjk3LVxcbm5ldC9pcHY2L3hmcm02X3BvbGljeS5jOjI5ODpcXHRyZXQgPSB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdChBRl9JTkVUNik7XFxubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMjk5LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYz0zMTQ9dm9pZCB4ZnJtNl9maW5pKHZvaWQpXFxubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMzE1LXtcXG5uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYzozMTY6XFx0eGZybV9uYXRfa2VlcGFsaXZlX2ZpbmkoQUZfSU5FVDYpO1xcbm5ldC9pcHY2L3hmcm02X3BvbGljeS5jLTMxNy1cXHR1bnJlZ2lzdGVyX3Blcm5ldF9zdWJzeXMoXFx1MDAyNnhmcm02X25ldF9vcHMpO1xcbi0tXFxubmV0L3hmcm0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1hGUk0pIDo9IHhmcm1fcG9saWN5Lm8geGZybV9zdGF0ZS5vIHhmcm1faGFzaC5vIFxcXFxcXG4tLVxcbm5ldC94ZnJtL01ha2VmaWxlLTE2LVxcdFxcdCAgICAgIHhmcm1fc3lzY3RsLm8geGZybV9yZXBsYXkubyB4ZnJtX2RldmljZS5vIFxcXFxcXG5uZXQveGZybS9NYWtlZmlsZToxNzpcXHRcXHQgICAgICB4ZnJtX25hdF9rZWVwYWxpdmUub1xcbm5ldC94ZnJtL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19YRlJNX1NUQVRJU1RJQ1MpICs9IHhmcm1fcHJvYy5vXFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yLS8qXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzogKiB4ZnJtX25hdF9rZWVwYWxpdmUuY1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTQtICpcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI3Nj1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NrX2Zpbmkoc3RydWN0IHNvY2tfYmhfbG9ja2VkIF9fcGVyY3B1ICpzb2NrcylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI4My1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyODQ6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yODUte1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjk0LVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI5NTppbnQgX19uZXRfaW5pdCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5Ni17XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDAtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzAxOmludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMwMi17XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDYtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzA3OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzA4LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMyNS19XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzI2OkVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0KTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMjctXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzI4OnZvaWQgeGZybV9uYXRfa2VlcGFsaXZlX2ZpbmkodW5zaWduZWQgc2hvcnQgZmFtaWx5KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMyOS17XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zNDAtfVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjM0MTpFWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX25hdF9rZWVwYWxpdmVfZmluaSk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQzMTA9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MzM1LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDMzNjpcXHRydiA9IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChuZXQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDMzNy1cXHRpZiAocnYgXFx1MDAzYyAwKVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00MzU0PXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZybV9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MzU1LXtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQzNTY6XFx0eGZybV9uYXRfa2VlcGFsaXZlX25ldF9maW5pKG5ldCk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MzU3LVxcdHhmcm1fc3lzY3RsX2ZpbmkobmV0KTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDQwND12b2lkIF9faW5pdCB4ZnJtX2luaXQodm9pZClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDQxOC1cXHRyZWdpc3Rlcl94ZnJtX3N0YXRlX2JwZigpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDQxOTpcXHR4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdChBRl9JTkVUKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ0MjAtfVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTgxMT1pbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzItXFx0XFx0bmV0LVxcdTAwM2V4ZnJtLnN0YXRlX251bS0tO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4MzM6XFx0XFx0eGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzNC1cXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnhmcm1fc3RhdGVfbG9jayk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTcyMj1zdGF0aWMgdm9pZCBfX3hmcm1fc3RhdGVfaW5zZXJ0KHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE3NjYtXFx0eGZybV9oYXNoX2dyb3dfY2hlY2sobmV0LCB4LVxcdTAwM2VieWRzdC5uZXh0ICE9IE5VTEwpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNzY3OlxcdHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHgpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNzY4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTA6MTA6MDQuNzI1MzQyNDIzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMDkwNjY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFhGUk0gTkFUIEtlZXBhbGl2ZSBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggdGFyZ2V0cyBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLCB3aGljaCwgYXMgSSBrbm93LCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfWEZSTWAgaXMgc2V0LiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4gV2UncmUgZGVhbGluZyB3aXRoIHRoZSBYRlJNIGZyYW1ld29yayBhbmQgaXRzIE5BVCBrZWVwYWxpdmUgZnVuY3Rpb25hbGl0eS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0b3VjaGVzIHRocmVlIGZ1bmN0aW9uczogYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLCBgbmF0X2tlZXBhbGl2ZV93b3JrYCwgYW5kIGFkZHMgYSBuZXcgb25lLCBgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3RgLlxuXG5UaGUgZmFjdCB0aGF0IHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgYmVpbmcgbW9kaWZpZWQgb3IgYWRkZWQgc3Ryb25nbHkgc3VnZ2VzdHMgd2UncmUgZGlnZ2luZyBpbnRvIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBOQVQga2VlcGFsaXZlIG1lY2hhbmlzbSB3aXRoaW4gWEZSTS4gSXQgc291bmRzIGxpa2UgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmZWF0dXJlLCB3aGljaCBpcyBnb29kLiBUaGF0IGNvbmZpcm1zIHRoZSBkZXBlbmRlbmN5IG9uIGBYRlJNYCBiZWluZyBlbmFibGVkLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuIEknbGwgbmVlZCB0byBkaXZlIGludG8gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCBpdHNlbGYuIE15IG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggYW5kIHVuZGVyc3RhbmQgcHJlY2lzZWx5ICpob3cqIGBuYXRfa2VlcGFsaXZlX3dvcmtgIGlzIGFjdHVhbGx5IHRyaWdnZXJlZCB3aXRoaW4gdGhlIHN5c3RlbS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZWZmZWN0IG9mIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzODUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTA6MTA6MDguNTQ2MjUxNzI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODY2MjA1MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmF0X2tlZXBhbGl2ZV93b3JrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaD0zMj1zdHJ1Y3QgbmV0bnNfeGZybSB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRucy94ZnJtLmgtODUtXFx0c3RydWN0IG11dGV4IHhmcm1fY2ZnX211dGV4O1xcbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaDo4NjpcXHRzdHJ1Y3QgZGVsYXllZF93b3JrXFx0bmF0X2tlZXBhbGl2ZV93b3JrO1xcbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaC04Ny19O1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MTE1PXN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNTQtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTU1OnN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNTYtXFx0c3RydWN0IGxpc3RfaGVhZCBzdGF0ZXM7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0xNjE9c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUge1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTY1LVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2NjpzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjcte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2ODpcXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4ID0gcHRyO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2OS1cXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV9zdGF0ZSAqc3RhdGU7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xODMtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTg0OnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTg1OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTg2LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyMy1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMjQ6c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjUte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyNi1cXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV9zdGF0ZSAqc3RhdGUsICp0bXA7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI3OlxcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IGN0eDtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjgtXFx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjM1LVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIzNjpcXHRuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCwgeGZybS5uYXRfa2VlcGFsaXZlX3dvcmsud29yayk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjM3LVxcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFxcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjM4OlxcdGVyciA9IHhmcm1fc3RhdGVfd2FsayhuZXQsIFxcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgXFx1MDAyNmN0eCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjM5LVxcdHhmcm1fc3RhdGVfd2Fsa19kb25lKFxcdTAwMjZ3YWxrLCBuZXQpO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0MC1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc3RhdGUsIHRtcCwgXFx1MDAyNmN0eC5zdGF0ZXMsIGxpc3QpIHtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDE6XFx0XFx0bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdGF0ZS1cXHUwMDNleCwgXFx1MDAyNmN0eCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQyLVxcdFxcdHhmcm1fc3RhdGVfcHV0KHN0YXRlLVxcdTAwM2V4KTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0NS1cXHRpZiAoZXJyID09IC1FTk9NRU0pIHtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDY6XFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCAwKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNDctXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQ5LVxcdGlmIChjdHgubmV4dF9ydW4pXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjUwOlxcdFxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yayxcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNTEtXFx0XFx0XFx0XFx0ICAgICAgKGN0eC5uZXh0X3J1biAtIGN0eC5ub3cpICogSFopO1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9Mjg0PXZvaWQgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTEtXFx0bmV0ID0geHNfbmV0KHgpO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI5MjpcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssIDApO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5My19XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yOTU9aW50IF9fbmV0X2luaXQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTYte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI5NzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yaywgbmF0X2tlZXBhbGl2ZV93b3JrKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTgtXFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0zMDE9aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfZmluaShzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzAyLXtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzozMDM6XFx0ZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yayk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzA0LVxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMDoxMDoxMy4xMzI4Nzk0MDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTMxMzM2NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOQVQgS2VlcGFsaXZlIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gdGhpcyBgbmF0X2tlZXBhbGl2ZWAgZnVuY3Rpb25hbGl0eS4gTXkgZm9jdXMgaXMgb24gdGhlc2UgdGhyZWUgZnVuY3Rpb25zIHNwZWNpZmljYWxseTogYG5hdF9rZWVwYWxpdmVfd29ya2AsIGBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdGAsIGFuZCBgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZWAuIEkga25vdyB0aG9zZSBhcmUgc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBpbiBwbGFjZS5cblxuQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYFhGUk1gIGlzIHRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gaGVyZS4gQnV0IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gaGlkZGVuIGRlcGVuZGVuY2llcy4gSSdsbCB0YWtlIGEgbG9vayBhdCB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCB0byBjb25maXJtLiBBaCwgaGVyZSBpdCBpczogYG9iai0kKENPTkZJR19YRlJNKSA6PSAuLi4geGZybV9uYXRfa2VlcGFsaXZlLm9gLiBUaGF0IGNvbmZpcm1zIGl0OyBgQ09ORklHX1hGUk1gIGhhbmRsZXMgZXZlcnl0aGluZyB3ZSBuZWVkLiBObyBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQuXG5cbkFscmlnaHQsIEkgaGF2ZSBteSBmaW5kaW5ncy4gSSdtIHJlYWR5IHRvIGRvY3VtZW50IHRoZXNlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODcsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEwOjEwOjIwLjA2NDIxODExM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1MjI4MTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdFwiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRlJNIE5BVCBrZWVwYWxpdmUgbWVjaGFuaXNtLCBjaGFuZ2luZyBob3cgc3RhdGVzIGFyZSBpdGVyYXRlZCBhbmQgbG9ja2VkIGR1cmluZyB0aGUga2VlcGFsaXZlIHdvcmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdFwiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRlJNIE5BVCBrZWVwYWxpdmUgbWVjaGFuaXNtLCBjaGFuZ2luZyBob3cgc3RhdGVzIGFyZSBpdGVyYXRlZCBhbmQgbG9ja2VkIGR1cmluZyB0aGUga2VlcGFsaXZlIHdvcmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rsn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 09:36:53 +0000 UTC FinishedAt: 2026-07-22 10:10:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "285fd588859f42b14f6f455faaa336b4077c3a87", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "285fd588859f42b14f6f455faaa336b4077c3a87", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM" ], "series_id": "ec3ac8e5-648d-4a59-a03f-4e8fc115daf8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nat_keepalive_work", "nat_keepalive_work_collect", "nat_keepalive_work_single" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEwOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3dvcmsmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgWEZSTSBOQVQga2VlcGFsaXZlIG1lY2hhbmlzbSwgY2hhbmdpbmcgaG93IHN0YXRlcyBhcmUgaXRlcmF0ZWQgYW5kIGxvY2tlZCBkdXJpbmcgdGhlIGtlZXBhbGl2ZSB3b3JrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3MgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTA6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkMDBjMmE0NDA1MDgxOWRiNWJiODlmODkwZjQ0NjViYjBjMDAyNjgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTA6MDk6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuaW5kZXggNDU4OTMxMDYyYTA0ZWYuLjEzMmRlMjNlNjRjMjgyIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5AQCAtMTUzLDI0ICYjNDM7MTUzLDUxIEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXG4gfVxuIFxuIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcbiYjNDM7XHRzdHJ1Y3QgbGlzdF9oZWFkIHN0YXRlcztcbiBcdHRpbWU2NF90IG5leHRfcnVuO1xuIFx0dGltZTY0X3Qgbm93O1xuIH07XG4gXG4tc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiYjNDM7c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUge1xuJiM0MztcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbiYjNDM7XHRzdHJ1Y3QgeGZybV9zdGF0ZSAqeDtcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuIHtcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7XG4mIzQzO1x0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlO1xuJiM0MztcbiYjNDM7XHRpZiAoIVJFQURfT05DRSh4LVx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHN0YXRlID0ga21hbGxvY19vYmooKnN0YXRlLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRpZiAoIXN0YXRlKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdHhmcm1fc3RhdGVfaG9sZCh4KTtcbiYjNDM7XHRzdGF0ZS1cdTAwM2V4ID0geDtcbiYjNDM7XHRsaXN0X2FkZF90YWlsKFx1MDAyNnN0YXRlLVx1MDAzZWxpc3QsIFx1MDAyNmN0eC1cdTAwM2VzdGF0ZXMpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuJiM0MztcdFx0XHRcdCAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpXG4mIzQzO3tcbiBcdGJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTtcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlIGthO1xuLVx0dGltZTY0X3QgbmV4dF9ydW47XG4mIzQzO1x0dGltZTY0X3QgbmV4dF9ydW4gPSAwO1xuIFx0dTMyIGludGVydmFsO1xuIFx0aW50IGRlbHRhO1xuIFxuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAoeC1cdTAwM2VrbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX0RFQUQpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4gXHRpbnRlcnZhbCA9IHgtXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbDtcbiBcdGlmICghaW50ZXJ2YWwpXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0c3Bpbl9sb2NrKFx1MDAyNngtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiBcbiBcdGRlbHRhID0gKGludCkoY3R4LVx1MDAzZW5vdyAtIHgtXHUwMDNlbGFzdHVzZWQpO1xuIFx0aWYgKGRlbHRhIFx1MDAzYyBpbnRlcnZhbCkge1xuQEAgLTE4NCwyOSAmIzQzOzIxMSw0MSBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuIFx0XHRzZW5kX2tlZXBhbGl2ZSA9IHRydWU7XG4gXHR9XG4gXG4tXHRzcGluX3VubG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spO1xuJiM0MztvdXQ6XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiBcbiBcdGlmIChzZW5kX2tlZXBhbGl2ZSlcbiBcdFx0bmF0X2tlZXBhbGl2ZV9zZW5kKFx1MDAyNmthKTtcbiBcbi1cdGlmICghY3R4LVx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFx1MDAzYyBjdHgtXHUwMDNlbmV4dF9ydW4pXG4mIzQzO1x0aWYgKG5leHRfcnVuIFx1MDAyNlx1MDAyNiAoIWN0eC1cdTAwM2VuZXh0X3J1biB8fCBuZXh0X3J1biBcdTAwM2MgY3R4LVx1MDAzZW5leHRfcnVuKSlcbiBcdFx0Y3R4LVx1MDAzZW5leHRfcnVuID0gbmV4dF9ydW47XG4tXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4mIzQzO1x0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlLCAqdG1wO1xuIFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xuIFx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xuIFx0c3RydWN0IG5ldCAqbmV0O1xuJiM0MztcdGludCBlcnI7XG4gXG4mIzQzO1x0SU5JVF9MSVNUX0hFQUQoXHUwMDI2Y3R4LnN0YXRlcyk7XG4gXHRjdHgubmV4dF9ydW4gPSAwO1xuIFx0Y3R4Lm5vdyA9IGt0aW1lX2dldF9yZWFsX3NlY29uZHMoKTtcbiBcbiBcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcbiBcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcbi1cdHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFx1MDAyNmN0eCk7XG4mIzQzO1x0ZXJyID0geGZybV9zdGF0ZV93YWxrKG5ldCwgXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QsIFx1MDAyNmN0eCk7XG4gXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcdTAwMjZ3YWxrLCBuZXQpO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdGF0ZSwgdG1wLCBcdTAwMjZjdHguc3RhdGVzLCBsaXN0KSB7XG4mIzQzO1x0XHRuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0YXRlLVx1MDAzZXgsIFx1MDAyNmN0eCk7XG4mIzQzO1x0XHR4ZnJtX3N0YXRlX3B1dChzdGF0ZS1cdTAwM2V4KTtcbiYjNDM7XHRcdGtmcmVlKHN0YXRlKTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKGVyciA9PSAtRU5PTUVNKSB7XG4mIzQzO1x0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCAwKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4gXHRpZiAoY3R4Lm5leHRfcnVuKVxuIFx0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxuIFx0XHRcdFx0ICAgICAgKGN0eC5uZXh0X3J1biAtIGN0eC5ub3cpICogSFopO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEwOjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrJiMzNDssCiAgICAmIzM0O25hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0JiMzNDssCiAgICAmIzM0O25hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFhGUk0gTkFUIGtlZXBhbGl2ZSBtZWNoYW5pc20sIGNoYW5naW5nIGhvdyBzdGF0ZXMgYXJlIGl0ZXJhdGVkIGFuZCBsb2NrZWQgZHVyaW5nIHRoZSBrZWVwYWxpdmUgd29yay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3Vic3lzdGVtIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMDBjMmE0NDA1MDgxOWRiNWJiODlmODkwZjQ0NjViYjBjMDAyNjgyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjIgMTA6MDk6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCmluZGV4IDQ1ODkzMTA2MmEwNGVmLi4xMzJkZTIzZTY0YzI4MiAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKQEAgLTE1MywyNCAmIzQzOzE1Myw1MSBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKQogfQogCiBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7CiYjNDM7CXN0cnVjdCBsaXN0X2hlYWQgc3RhdGVzOwogCXRpbWU2NF90IG5leHRfcnVuOwogCXRpbWU2NF90IG5vdzsKIH07CiAKLXN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpCiYjNDM7c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgewomIzQzOwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiYjNDM7CXN0cnVjdCB4ZnJtX3N0YXRlICp4OwomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpCiB7CiAJc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjsKJiM0MzsJc3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlOwomIzQzOwomIzQzOwlpZiAoIVJFQURfT05DRSh4LSZndDtuYXRfa2VlcGFsaXZlX2ludGVydmFsKSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlzdGF0ZSA9IGttYWxsb2Nfb2JqKCpzdGF0ZSwgR0ZQX0FUT01JQyk7CiYjNDM7CWlmICghc3RhdGUpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJeGZybV9zdGF0ZV9ob2xkKHgpOwomIzQzOwlzdGF0ZS0mZ3Q7eCA9IHg7CiYjNDM7CWxpc3RfYWRkX3RhaWwoJmFtcDtzdGF0ZS0mZ3Q7bGlzdCwgJmFtcDtjdHgtJmd0O3N0YXRlcyk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LAomIzQzOwkJCQkgICAgICBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4KQomIzQzO3sKIAlib29sIHNlbmRfa2VlcGFsaXZlID0gZmFsc2U7CiAJc3RydWN0IG5hdF9rZWVwYWxpdmUga2E7Ci0JdGltZTY0X3QgbmV4dF9ydW47CiYjNDM7CXRpbWU2NF90IG5leHRfcnVuID0gMDsKIAl1MzIgaW50ZXJ2YWw7CiAJaW50IGRlbHRhOwogCiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO3gtJmd0O2xvY2spOwomIzQzOwomIzQzOwlpZiAoeC0mZ3Q7a20uc3RhdGUgPT0gWEZSTV9TVEFURV9ERUFEKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiAJaW50ZXJ2YWwgPSB4LSZndDtuYXRfa2VlcGFsaXZlX2ludGVydmFsOwogCWlmICghaW50ZXJ2YWwpCi0JCXJldHVybiAwOwotCi0Jc3Bpbl9sb2NrKCZhbXA7eC0mZ3Q7bG9jayk7CiYjNDM7CQlnb3RvIG91dDsKIAogCWRlbHRhID0gKGludCkoY3R4LSZndDtub3cgLSB4LSZndDtsYXN0dXNlZCk7CiAJaWYgKGRlbHRhICZsdDsgaW50ZXJ2YWwpIHsKQEAgLTE4NCwyOSAmIzQzOzIxMSw0MSBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQogCQlzZW5kX2tlZXBhbGl2ZSA9IHRydWU7CiAJfQogCi0Jc3Bpbl91bmxvY2soJmFtcDt4LSZndDtsb2NrKTsKJiM0MztvdXQ6CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7eC0mZ3Q7bG9jayk7CiAKIAlpZiAoc2VuZF9rZWVwYWxpdmUpCiAJCW5hdF9rZWVwYWxpdmVfc2VuZCgmYW1wO2thKTsKIAotCWlmICghY3R4LSZndDtuZXh0X3J1biB8fCBuZXh0X3J1biAmbHQ7IGN0eC0mZ3Q7bmV4dF9ydW4pCiYjNDM7CWlmIChuZXh0X3J1biAmYW1wOyZhbXA7ICghY3R4LSZndDtuZXh0X3J1biB8fCBuZXh0X3J1biAmbHQ7IGN0eC0mZ3Q7bmV4dF9ydW4pKQogCQljdHgtJmd0O25leHRfcnVuID0gbmV4dF9ydW47Ci0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CiYjNDM7CXN0cnVjdCBuYXRfa2VlcGFsaXZlX3N0YXRlICpzdGF0ZSwgKnRtcDsKIAlzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCBjdHg7CiAJc3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrOwogCXN0cnVjdCBuZXQgKm5ldDsKJiM0MzsJaW50IGVycjsKIAomIzQzOwlJTklUX0xJU1RfSEVBRCgmYW1wO2N0eC5zdGF0ZXMpOwogCWN0eC5uZXh0X3J1biA9IDA7CiAJY3R4Lm5vdyA9IGt0aW1lX2dldF9yZWFsX3NlY29uZHMoKTsKIAogCW5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTsKIAl4ZnJtX3N0YXRlX3dhbGtfaW5pdCgmYW1wO3dhbGssIElQUFJPVE9fRVNQLCBOVUxMKTsKLQl4ZnJtX3N0YXRlX3dhbGsobmV0LCAmYW1wO3dhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsICZhbXA7Y3R4KTsKJiM0MzsJZXJyID0geGZybV9zdGF0ZV93YWxrKG5ldCwgJmFtcDt3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgJmFtcDtjdHgpOwogCXhmcm1fc3RhdGVfd2Fsa19kb25lKCZhbXA7d2FsaywgbmV0KTsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN0YXRlLCB0bXAsICZhbXA7Y3R4LnN0YXRlcywgbGlzdCkgewomIzQzOwkJbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdGF0ZS0mZ3Q7eCwgJmFtcDtjdHgpOwomIzQzOwkJeGZybV9zdGF0ZV9wdXQoc3RhdGUtJmd0O3gpOwomIzQzOwkJa2ZyZWUoc3RhdGUpOwomIzQzOwl9CiYjNDM7CWlmIChlcnIgPT0gLUVOT01FTSkgewomIzQzOwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZhbXA7bmV0LSZndDt4ZnJtLm5hdF9rZWVwYWxpdmVfd29yaywgMCk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KIAlpZiAoY3R4Lm5leHRfcnVuKQogCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmFtcDtuZXQtJmd0O3hmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLAogCQkJCSAgICAgIChjdHgubmV4dF9ydW4gLSBjdHgubm93KSAqIEhaKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTA6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyOQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFhGUk0gTkFUIEtlZXBhbGl2ZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IHRoZSBgbmF0X2tlZXBhbGl2ZV93b3JrYCBmdW5jdGlvbiB3b3JrcyBpdHMgd2F5IHRocm91Z2ggWEZSTSBzdGF0ZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIHNlZW1zIGxpa2UgYSByZWxhdGl2ZWx5IGNvbnRhaW5lZCBjaGFuZ2UsIGZvY3VzZWQgb24gaW1wcm92aW5nIHRoZSBpdGVyYXRpb24gcHJvY2Vzcy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBzaGlmdGluZyBmcm9tIGRpcmVjdGx5IGNhbGxpbmcgYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIHdpdGhpbiB0aGUgYHhmcm1fc3RhdGVfd2Fsa2AgbG9vcCB0byBmaXJzdCBjb2xsZWN0aW5nIHN0YXRlcyBpbnRvIGEgbGlzdCB1c2luZyBgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3RgIGFuZCAqdGhlbiogaXRlcmF0aW5nIG92ZXIgdGhhdCBsaXN0LgoKSG1tLCBpbnRlcmVzdGluZy4gVGhhdCBzaWduYWxzIGEgcG90ZW50aWFsIGNvbmNlcm4gd2l0aCB0aGUgb3JpZ2luYWwgaXRlcmF0aW9uLCBwZXJoYXBzIHJlbGF0ZWQgdG8gY29uY3VycmVudCBtb2RpZmljYXRpb24gb3IgbG9jayBjb250ZW50aW9uIGR1cmluZyB0aGUgd2Fsay4gVGhlIGNoYW5nZSBmcm9tIGBzcGluX2xvY2soJmFtcDt4LSZndDtsb2NrKWAgdG8gYHNwaW5fbG9ja19iaCgmYW1wO3gtJmd0O2xvY2spYCB3aXRoaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzIHN1c3BpY2lvbjsgdXNpbmcgYHNwaW5fbG9ja19iaGAgc3VnZ2VzdHMgdGhlIG9yaWdpbmFsIGNvZGUgbWlnaHQgaGF2ZSBiZWVuIHZ1bG5lcmFibGUgdG8gcHJlZW1wdGlvbiBpc3N1ZXMgb3IgaW50ZXJydXB0LXJlbGF0ZWQgcHJvYmxlbXMuIEFkZGluZyBoYW5kbGluZyBmb3IgYFhGUk1fU1RBVEVfREVBRGAgc3RhdGVzIHNlZW1zIGxvZ2ljYWwgaW4gdGhpcyBjb250ZXh0IGFzIHdlbGwsIGFuZCBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBzdGF0ZSBjb2xsZWN0aW9uIHByb2Nlc3MuCgpGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW0gY2hhbmdlLCBzbyBpdCYjMzk7cyB3b3J0aCBhIGNsb3NlciBsb29rIGF0IHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgbG9ja2luZyBvciBzdGF0ZSBpdGVyYXRpb24gaXNzdWVzLiBCZWZvcmUgSSBkZWx2ZSB0b28gZGVlcGx5IGludG8gdGhlIGNvZGUgaXRzZWxmLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBidWlsZCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgZmlyZSB1cCBgZ3JlcHBlcmAgdG8gc2VlIHdoZXJlIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AgaXMgdXNlZCBpbiBhbnkgTWFrZWZpbGVzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgcXVpY2sgaGVhZHMgdXAgb24gYW55IG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyB0aGF0IHdpbGwgYmUgbmVlZGVkIHRvIGFjdHVhbGx5IHVzZSB0aGlzIG5ldyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxMDowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX25hdF9rZWVwYWxpdmUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQveGZybS5oPTIzNjM9c3RhdGljIGlubGluZSBpbnQgcmVnaXN0ZXJfeGZybV9zdGF0ZV9icGYodm9pZClcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMjM2OC1cbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzY5OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpO1xuaW5jbHVkZS9uZXQveGZybS5oOjIzNzA6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfZmluaSh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpO1xuaW5jbHVkZS9uZXQveGZybS5oOjIzNzE6aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpO1xuaW5jbHVkZS9uZXQveGZybS5oOjIzNzI6aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfZmluaShzdHJ1Y3QgbmV0ICpuZXQpO1xuaW5jbHVkZS9uZXQveGZybS5oOjIzNzM6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XG5pbmNsdWRlL25ldC94ZnJtLmgtMjM3NC1cbi0tXG5uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYz0yNzk9aW50IF9faW5pdCB4ZnJtNl9pbml0KHZvaWQpXG4tLVxubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMjk3LVxubmV0L2lwdjYveGZybTZfcG9saWN5LmM6Mjk4Olx0cmV0ID0geGZybV9uYXRfa2VlcGFsaXZlX2luaXQoQUZfSU5FVDYpO1xubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMjk5LVx0aWYgKHJldClcbi0tXG5uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYz0zMTQ9dm9pZCB4ZnJtNl9maW5pKHZvaWQpXG5uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYy0zMTUte1xubmV0L2lwdjYveGZybTZfcG9saWN5LmM6MzE2Olx0eGZybV9uYXRfa2VlcGFsaXZlX2ZpbmkoQUZfSU5FVDYpO1xubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMzE3LVx0dW5yZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFx1MDAyNnhmcm02X25ldF9vcHMpO1xuLS1cbm5ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxuLS1cbm5ldC94ZnJtL01ha2VmaWxlLTE2LVx0XHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTc6XHRcdCAgICAgIHhmcm1fbmF0X2tlZXBhbGl2ZS5vXG5uZXQveGZybS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfWEZSTV9TVEFUSVNUSUNTKSAmIzQzOz0geGZybV9wcm9jLm9cbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yLS8qXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzozOiAqIHhmcm1fbmF0X2tlZXBhbGl2ZS5jXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy00LSAqXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9Mjc2PXN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2tfZmluaShzdHJ1Y3Qgc29ja19iaF9sb2NrZWQgX19wZXJjcHUgKnNvY2tzKVxuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI4My1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI4NDp2b2lkIHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjg1LXtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTQtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyOTU6aW50IF9fbmV0X2luaXQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5Ni17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzAwLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzAxOmludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzAyLXtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDYtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzozMDc6aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0KHVuc2lnbmVkIHNob3J0IGZhbWlseSlcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMwOC17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzI1LX1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjMyNjpFWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMjctXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzozMjg6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfZmluaSh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMjkte1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTM0MC19XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzozNDE6RVhQT1JUX1NZTUJPTF9HUEwoeGZybV9uYXRfa2VlcGFsaXZlX2ZpbmkpO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDMxMD1zdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MzM1LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MzM2Olx0cnYgPSB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXQobmV0KTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDMzNy1cdGlmIChydiBcdTAwM2MgMClcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQzNTQ9c3RhdGljIHZvaWQgX19uZXRfZXhpdCB4ZnJtX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDM1NS17XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQzNTY6XHR4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2ZpbmkobmV0KTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDM1Ny1cdHhmcm1fc3lzY3RsX2ZpbmkobmV0KTtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQ0MDQ9dm9pZCBfX2luaXQgeGZybV9pbml0KHZvaWQpXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NDE4LVx0cmVnaXN0ZXJfeGZybV9zdGF0ZV9icGYoKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDQxOTpcdHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0KEFGX0lORVQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NDIwLX1cbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9ODExPWludCBfX3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzItXHRcdG5ldC1cdTAwM2V4ZnJtLnN0YXRlX251bS0tO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjgzMzpcdFx0eGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODM0LVx0XHRzcGluX3VubG9jayhcdTAwMjZuZXQtXHUwMDNleGZybS54ZnJtX3N0YXRlX2xvY2spO1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0xNzIyPXN0YXRpYyB2b2lkIF9feGZybV9zdGF0ZV9pbnNlcnQoc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE3NjYtXHR4ZnJtX2hhc2hfZ3Jvd19jaGVjayhuZXQsIHgtXHUwMDNlYnlkc3QubmV4dCAhPSBOVUxMKTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNzY3Olx0eGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTc2OC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTA6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM4NQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFhGUk0gTkFUIEtlZXBhbGl2ZSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHRhcmdldHMgYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgd2hpY2gsIGFzIEkga25vdywgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX1hGUk1gIGlzIHNldC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIFhGUk0gZnJhbWV3b3JrIGFuZCBpdHMgTkFUIGtlZXBhbGl2ZSBmdW5jdGlvbmFsaXR5LiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgdGhyZWUgZnVuY3Rpb25zOiBgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZWAsIGBuYXRfa2VlcGFsaXZlX3dvcmtgLCBhbmQgYWRkcyBhIG5ldyBvbmUsIGBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdGAuCgpUaGUgZmFjdCB0aGF0IHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgYmVpbmcgbW9kaWZpZWQgb3IgYWRkZWQgc3Ryb25nbHkgc3VnZ2VzdHMgd2UmIzM5O3JlIGRpZ2dpbmcgaW50byB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkFUIGtlZXBhbGl2ZSBtZWNoYW5pc20gd2l0aGluIFhGUk0uIEl0IHNvdW5kcyBsaWtlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZmVhdHVyZSwgd2hpY2ggaXMgZ29vZC4gVGhhdCBjb25maXJtcyB0aGUgZGVwZW5kZW5jeSBvbiBgWEZSTWAgYmVpbmcgZW5hYmxlZC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gSSYjMzk7bGwgbmVlZCB0byBkaXZlIGludG8gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCBpdHNlbGYuIE15IG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggYW5kIHVuZGVyc3RhbmQgcHJlY2lzZWx5ICpob3cqIGBuYXRfa2VlcGFsaXZlX3dvcmtgIGlzIGFjdHVhbGx5IHRyaWdnZXJlZCB3aXRoaW4gdGhlIHN5c3RlbS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGVmZmVjdCBvZiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEwOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25hdF9rZWVwYWxpdmVfd29yayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9uZXRucy94ZnJtLmg9MzI9c3RydWN0IG5ldG5zX3hmcm0ge1xuLS1cbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaC04NS1cdHN0cnVjdCBtdXRleCB4ZnJtX2NmZ19tdXRleDtcbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaDo4NjpcdHN0cnVjdCBkZWxheWVkX3dvcmtcdG5hdF9rZWVwYWxpdmVfd29yaztcbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaC04Ny19O1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTExNT1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE1NC1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE1NTpzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNTYtXHRzdHJ1Y3QgbGlzdF9oZWFkIHN0YXRlcztcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0xNjE9c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUge1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2NS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2NjpzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2Ny17XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNjg6XHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4ID0gcHRyO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTY5LVx0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlO1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE4My1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE4NDpzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTg1Olx0XHRcdFx0ICAgICAgc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eClcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE4Ni17XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjIzLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI0OnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjUte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI2LVx0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlLCAqdG1wO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI3Olx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI4LVx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIzNS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIzNjpcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIzNy1cdHhmcm1fc3RhdGVfd2Fsa19pbml0KFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIzODpcdGVyciA9IHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0LCBcdTAwMjZjdHgpO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjM5LVx0eGZybV9zdGF0ZV93YWxrX2RvbmUoXHUwMDI2d2FsaywgbmV0KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0MC1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdGF0ZSwgdG1wLCBcdTAwMjZjdHguc3RhdGVzLCBsaXN0KSB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDE6XHRcdG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RhdGUtXHUwMDNleCwgXHUwMDI2Y3R4KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0Mi1cdFx0eGZybV9zdGF0ZV9wdXQoc3RhdGUtXHUwMDNleCk7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQ1LVx0aWYgKGVyciA9PSAtRU5PTUVNKSB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDY6XHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssIDApO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQ3LVx0XHRyZXR1cm47XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQ5LVx0aWYgKGN0eC5uZXh0X3J1bilcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI1MDpcdFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yayxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI1MS1cdFx0XHRcdCAgICAgIChjdHgubmV4dF9ydW4gLSBjdHgubm93KSAqIEhaKTtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yODQ9dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTEtXHRuZXQgPSB4c19uZXQoeCk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyOTI6XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCAwKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5My19XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9Mjk1PWludCBfX25ldF9pbml0IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTYte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjk3Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCBuYXRfa2VlcGFsaXZlX3dvcmspO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjk4LVx0cmV0dXJuIDA7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MzAxPWludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzAyLXtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjMwMzpcdGRpc2FibGVfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrKTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMwNC1cdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEwOjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczODcKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOQVQgS2VlcGFsaXZlIEZ1bmN0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGlzIGBuYXRfa2VlcGFsaXZlYCBmdW5jdGlvbmFsaXR5LiBNeSBmb2N1cyBpcyBvbiB0aGVzZSB0aHJlZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5OiBgbmF0X2tlZXBhbGl2ZV93b3JrYCwgYG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0YCwgYW5kIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYC4gSSBrbm93IHRob3NlIGFyZSBzdGF0aWMgZnVuY3Rpb25zIGRlZmluZWQgd2l0aGluIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AuIE5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMgYXJlIGluIHBsYWNlLgoKQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYFhGUk1gIGlzIHRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gaGVyZS4gQnV0IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gaGlkZGVuIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXQveGZybS9NYWtlZmlsZWAgdG8gY29uZmlybS4gQWgsIGhlcmUgaXQgaXM6IGBvYmotJChDT05GSUdfWEZSTSkgOj0gLi4uIHhmcm1fbmF0X2tlZXBhbGl2ZS5vYC4gVGhhdCBjb25maXJtcyBpdDsgYENPTkZJR19YRlJNYCBoYW5kbGVzIGV2ZXJ5dGhpbmcgd2UgbmVlZC4gTm8gb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIHJlcXVpcmVkLgoKQWxyaWdodCwgSSBoYXZlIG15IGZpbmRpbmdzLiBJJiMzOTttIHJlYWR5IHRvIGRvY3VtZW50IHRoZXNlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTA6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3dvcmsmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgWEZSTSBOQVQga2VlcGFsaXZlIG1lY2hhbmlzbSwgY2hhbmdpbmcgaG93IHN0YXRlcyBhcmUgaXRlcmF0ZWQgYW5kIGxvY2tlZCBkdXJpbmcgdGhlIGtlZXBhbGl2ZSB3b3JrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3MgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3dvcmsmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgWEZSTSBOQVQga2VlcGFsaXZlIG1lY2hhbmlzbSwgY2hhbmdpbmcgaG93IHN0YXRlcyBhcmUgaXRlcmF0ZWQgYW5kIGxvY2tlZCBkdXJpbmcgdGhlIGtlZXBhbGl2ZSB3b3JrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW0gdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3MgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMDowOTo1My4xNzAyNjEzOTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzExOTIwMzA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdFwiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRlJNIE5BVCBrZWVwYWxpdmUgbWVjaGFuaXNtLCBjaGFuZ2luZyBob3cgc3RhdGVzIGFyZSBpdGVyYXRlZCBhbmQgbG9ja2VkIGR1cmluZyB0aGUga2VlcGFsaXZlIHdvcmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTA6MDk6NTMuMTcwMjY4NzAyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDIyOTAxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkMDBjMmE0NDA1MDgxOWRiNWJiODlmODkwZjQ0NjViYjBjMDAyNjgyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDEwOjA5OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jIGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcXG5pbmRleCA0NTg5MzEwNjJhMDRlZi4uMTMyZGUyM2U2NGMyODIgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xcbkBAIC0xNTMsMjQgKzE1Myw1MSBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxcbiB9XFxuIFxcbiBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XFxuK1xcdHN0cnVjdCBsaXN0X2hlYWQgc3RhdGVzO1xcbiBcXHR0aW1lNjRfdCBuZXh0X3J1bjtcXG4gXFx0dGltZTY0X3Qgbm93O1xcbiB9O1xcbiBcXG4tc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG4rc3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUge1xcbitcXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuK1xcdHN0cnVjdCB4ZnJtX3N0YXRlICp4O1xcbit9O1xcbitcXG4rc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXFxuIHtcXG4gXFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjtcXG4rXFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlO1xcbitcXG4rXFx0aWYgKCFSRUFEX09OQ0UoeC1cXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbCkpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0c3RhdGUgPSBrbWFsbG9jX29iaigqc3RhdGUsIEdGUF9BVE9NSUMpO1xcbitcXHRpZiAoIXN0YXRlKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdHhmcm1fc3RhdGVfaG9sZCh4KTtcXG4rXFx0c3RhdGUtXFx1MDAzZXggPSB4O1xcbitcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZzdGF0ZS1cXHUwMDNlbGlzdCwgXFx1MDAyNmN0eC1cXHUwMDNlc3RhdGVzKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpXFxuK3tcXG4gXFx0Ym9vbCBzZW5kX2tlZXBhbGl2ZSA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSBrYTtcXG4tXFx0dGltZTY0X3QgbmV4dF9ydW47XFxuK1xcdHRpbWU2NF90IG5leHRfcnVuID0gMDtcXG4gXFx0dTMyIGludGVydmFsO1xcbiBcXHRpbnQgZGVsdGE7XFxuIFxcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNngtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0aWYgKHgtXFx1MDAzZWttLnN0YXRlID09IFhGUk1fU1RBVEVfREVBRClcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbiBcXHRpbnRlcnZhbCA9IHgtXFx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWw7XFxuIFxcdGlmICghaW50ZXJ2YWwpXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4tXFx0c3Bpbl9sb2NrKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuIFxcbiBcXHRkZWx0YSA9IChpbnQpKGN0eC1cXHUwMDNlbm93IC0geC1cXHUwMDNlbGFzdHVzZWQpO1xcbiBcXHRpZiAoZGVsdGEgXFx1MDAzYyBpbnRlcnZhbCkge1xcbkBAIC0xODQsMjkgKzIxMSw0MSBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxcbiBcXHRcXHRzZW5kX2tlZXBhbGl2ZSA9IHRydWU7XFxuIFxcdH1cXG4gXFxuLVxcdHNwaW5fdW5sb2NrKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG4rb3V0OlxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2eC1cXHUwMDNlbG9jayk7XFxuIFxcbiBcXHRpZiAoc2VuZF9rZWVwYWxpdmUpXFxuIFxcdFxcdG5hdF9rZWVwYWxpdmVfc2VuZChcXHUwMDI2a2EpO1xcbiBcXG4tXFx0aWYgKCFjdHgtXFx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFxcdTAwM2MgY3R4LVxcdTAwM2VuZXh0X3J1bilcXG4rXFx0aWYgKG5leHRfcnVuIFxcdTAwMjZcXHUwMDI2ICghY3R4LVxcdTAwM2VuZXh0X3J1biB8fCBuZXh0X3J1biBcXHUwMDNjIGN0eC1cXHUwMDNlbmV4dF9ydW4pKVxcbiBcXHRcXHRjdHgtXFx1MDAzZW5leHRfcnVuID0gbmV4dF9ydW47XFxuLVxcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiB7XFxuK1xcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3N0YXRlICpzdGF0ZSwgKnRtcDtcXG4gXFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xcbiBcXHRzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7XFxuIFxcdHN0cnVjdCBuZXQgKm5ldDtcXG4rXFx0aW50IGVycjtcXG4gXFxuK1xcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjdHguc3RhdGVzKTtcXG4gXFx0Y3R4Lm5leHRfcnVuID0gMDtcXG4gXFx0Y3R4Lm5vdyA9IGt0aW1lX2dldF9yZWFsX3NlY29uZHMoKTtcXG4gXFxuIFxcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcXG4gXFx0eGZybV9zdGF0ZV93YWxrX2luaXQoXFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcXG4tXFx0eGZybV9zdGF0ZV93YWxrKG5ldCwgXFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFxcdTAwMjZjdHgpO1xcbitcXHRlcnIgPSB4ZnJtX3N0YXRlX3dhbGsobmV0LCBcXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QsIFxcdTAwMjZjdHgpO1xcbiBcXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcXHUwMDI2d2FsaywgbmV0KTtcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN0YXRlLCB0bXAsIFxcdTAwMjZjdHguc3RhdGVzLCBsaXN0KSB7XFxuK1xcdFxcdG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RhdGUtXFx1MDAzZXgsIFxcdTAwMjZjdHgpO1xcbitcXHRcXHR4ZnJtX3N0YXRlX3B1dChzdGF0ZS1cXHUwMDNleCk7XFxuK1xcdFxcdGtmcmVlKHN0YXRlKTtcXG4rXFx0fVxcbitcXHRpZiAoZXJyID09IC1FTk9NRU0pIHtcXG4rXFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCAwKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuIFxcdGlmIChjdHgubmV4dF9ydW4pXFxuIFxcdFxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yayxcXG4gXFx0XFx0XFx0XFx0ICAgICAgKGN0eC5uZXh0X3J1biAtIGN0eC5ub3cpICogSFopO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMDowOTo1My43NzM0NTc5NDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNjUxNTk5MzI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdFwiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRlJNIE5BVCBrZWVwYWxpdmUgbWVjaGFuaXNtLCBjaGFuZ2luZyBob3cgc3RhdGVzIGFyZSBpdGVyYXRlZCBhbmQgbG9ja2VkIGR1cmluZyB0aGUga2VlcGFsaXZlIHdvcmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkMDBjMmE0NDA1MDgxOWRiNWJiODlmODkwZjQ0NjViYjBjMDAyNjgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTA6MDk6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5pbmRleCA0NTg5MzEwNjJhMDRlZi4uMTMyZGUyM2U2NGMyODIgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuKysrIGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbkBAIC0xNTMsMjQgKzE1Myw1MSBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxuIH1cbiBcbiBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkIHN0YXRlcztcbiBcdHRpbWU2NF90IG5leHRfcnVuO1xuIFx0dGltZTY0X3Qgbm93O1xuIH07XG4gXG4tc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbitzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV9zdGF0ZSB7XG4rXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4rXHRzdHJ1Y3QgeGZybV9zdGF0ZSAqeDtcbit9O1xuK1xuK3N0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuIHtcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7XG4rXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV9zdGF0ZSAqc3RhdGU7XG4rXG4rXHRpZiAoIVJFQURfT05DRSh4LVx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHN0YXRlID0ga21hbGxvY19vYmooKnN0YXRlLCBHRlBfQVRPTUlDKTtcbitcdGlmICghc3RhdGUpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0eGZybV9zdGF0ZV9ob2xkKHgpO1xuK1x0c3RhdGUtXHUwMDNleCA9IHg7XG4rXHRsaXN0X2FkZF90YWlsKFx1MDAyNnN0YXRlLVx1MDAzZWxpc3QsIFx1MDAyNmN0eC1cdTAwM2VzdGF0ZXMpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsXG4rXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4KVxuK3tcbiBcdGJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTtcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlIGthO1xuLVx0dGltZTY0X3QgbmV4dF9ydW47XG4rXHR0aW1lNjRfdCBuZXh0X3J1biA9IDA7XG4gXHR1MzIgaW50ZXJ2YWw7XG4gXHRpbnQgZGVsdGE7XG4gXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbitcbitcdGlmICh4LVx1MDAzZWttLnN0YXRlID09IFhGUk1fU1RBVEVfREVBRClcbitcdFx0Z290byBvdXQ7XG4rXG4gXHRpbnRlcnZhbCA9IHgtXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbDtcbiBcdGlmICghaW50ZXJ2YWwpXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0c3Bpbl9sb2NrKFx1MDAyNngtXHUwMDNlbG9jayk7XG4rXHRcdGdvdG8gb3V0O1xuIFxuIFx0ZGVsdGEgPSAoaW50KShjdHgtXHUwMDNlbm93IC0geC1cdTAwM2VsYXN0dXNlZCk7XG4gXHRpZiAoZGVsdGEgXHUwMDNjIGludGVydmFsKSB7XG5AQCAtMTg0LDI5ICsyMTEsNDEgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiBcdFx0c2VuZF9rZWVwYWxpdmUgPSB0cnVlO1xuIFx0fVxuIFxuLVx0c3Bpbl91bmxvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbitvdXQ6XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xuIFxuIFx0aWYgKHNlbmRfa2VlcGFsaXZlKVxuIFx0XHRuYXRfa2VlcGFsaXZlX3NlbmQoXHUwMDI2a2EpO1xuIFxuLVx0aWYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bilcbitcdGlmIChuZXh0X3J1biBcdTAwMjZcdTAwMjYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bikpXG4gXHRcdGN0eC1cdTAwM2VuZXh0X3J1biA9IG5leHRfcnVuO1xuLVx0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuK1x0c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUgKnN0YXRlLCAqdG1wO1xuIFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xuIFx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xuIFx0c3RydWN0IG5ldCAqbmV0O1xuK1x0aW50IGVycjtcbiBcbitcdElOSVRfTElTVF9IRUFEKFx1MDAyNmN0eC5zdGF0ZXMpO1xuIFx0Y3R4Lm5leHRfcnVuID0gMDtcbiBcdGN0eC5ub3cgPSBrdGltZV9nZXRfcmVhbF9zZWNvbmRzKCk7XG4gXG4gXHRuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCwgeGZybS5uYXRfa2VlcGFsaXZlX3dvcmsud29yayk7XG4gXHR4ZnJtX3N0YXRlX3dhbGtfaW5pdChcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XG4tXHR4ZnJtX3N0YXRlX3dhbGsobmV0LCBcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlLCBcdTAwMjZjdHgpO1xuK1x0ZXJyID0geGZybV9zdGF0ZV93YWxrKG5ldCwgXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QsIFx1MDAyNmN0eCk7XG4gXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcdTAwMjZ3YWxrLCBuZXQpO1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHN0YXRlLCB0bXAsIFx1MDAyNmN0eC5zdGF0ZXMsIGxpc3QpIHtcbitcdFx0bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdGF0ZS1cdTAwM2V4LCBcdTAwMjZjdHgpO1xuK1x0XHR4ZnJtX3N0YXRlX3B1dChzdGF0ZS1cdTAwM2V4KTtcbitcdFx0a2ZyZWUoc3RhdGUpO1xuK1x0fVxuK1x0aWYgKGVyciA9PSAtRU5PTUVNKSB7XG4rXHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssIDApO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4gXHRpZiAoY3R4Lm5leHRfcnVuKVxuIFx0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxuIFx0XHRcdFx0ICAgICAgKGN0eC5uZXh0X3J1biAtIGN0eC5ub3cpICogSFopO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTA6MDk6NTMuNzczNDYwMTU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg0MTg2NTI3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFhGUk0gTkFUIEtlZXBhbGl2ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgdGhlIGBuYXRfa2VlcGFsaXZlX3dvcmtgIGZ1bmN0aW9uIHdvcmtzIGl0cyB3YXkgdGhyb3VnaCBYRlJNIHN0YXRlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgc2VlbXMgbGlrZSBhIHJlbGF0aXZlbHkgY29udGFpbmVkIGNoYW5nZSwgZm9jdXNlZCBvbiBpbXByb3ZpbmcgdGhlIGl0ZXJhdGlvbiBwcm9jZXNzLiBJdCBsb29rcyBsaWtlIGl0J3Mgc2hpZnRpbmcgZnJvbSBkaXJlY3RseSBjYWxsaW5nIGBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlYCB3aXRoaW4gdGhlIGB4ZnJtX3N0YXRlX3dhbGtgIGxvb3AgdG8gZmlyc3QgY29sbGVjdGluZyBzdGF0ZXMgaW50byBhIGxpc3QgdXNpbmcgYG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0YCBhbmQgKnRoZW4qIGl0ZXJhdGluZyBvdmVyIHRoYXQgbGlzdC5cblxuSG1tLCBpbnRlcmVzdGluZy4gVGhhdCBzaWduYWxzIGEgcG90ZW50aWFsIGNvbmNlcm4gd2l0aCB0aGUgb3JpZ2luYWwgaXRlcmF0aW9uLCBwZXJoYXBzIHJlbGF0ZWQgdG8gY29uY3VycmVudCBtb2RpZmljYXRpb24gb3IgbG9jayBjb250ZW50aW9uIGR1cmluZyB0aGUgd2Fsay4gVGhlIGNoYW5nZSBmcm9tIGBzcGluX2xvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKWAgdG8gYHNwaW5fbG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spYCB3aXRoaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzIHN1c3BpY2lvbjsgdXNpbmcgYHNwaW5fbG9ja19iaGAgc3VnZ2VzdHMgdGhlIG9yaWdpbmFsIGNvZGUgbWlnaHQgaGF2ZSBiZWVuIHZ1bG5lcmFibGUgdG8gcHJlZW1wdGlvbiBpc3N1ZXMgb3IgaW50ZXJydXB0LXJlbGF0ZWQgcHJvYmxlbXMuIEFkZGluZyBoYW5kbGluZyBmb3IgYFhGUk1fU1RBVEVfREVBRGAgc3RhdGVzIHNlZW1zIGxvZ2ljYWwgaW4gdGhpcyBjb250ZXh0IGFzIHdlbGwsIGFuZCBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBzdGF0ZSBjb2xsZWN0aW9uIHByb2Nlc3MuXG5cbkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCB0aGlzIGlzIGEgY29yZSBuZXR3b3JraW5nIHN1YnN5c3RlbSBjaGFuZ2UsIHNvIGl0J3Mgd29ydGggYSBjbG9zZXIgbG9vayBhdCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSXQgc2VlbXMgbGlrZSBpdCdzIGFkZHJlc3NpbmcgbG9ja2luZyBvciBzdGF0ZSBpdGVyYXRpb24gaXNzdWVzLiBCZWZvcmUgSSBkZWx2ZSB0b28gZGVlcGx5IGludG8gdGhlIGNvZGUgaXRzZWxmLCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGJ1aWxkIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJ2xsIGZpcmUgdXAgYGdyZXBwZXJgIHRvIHNlZSB3aGVyZSBgeGZybV9uYXRfa2VlcGFsaXZlLmNgIGlzIHVzZWQgaW4gYW55IE1ha2VmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIGhlYWRzIHVwIG9uIGFueSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdGhhdCB3aWxsIGJlIG5lZWRlZCB0byBhY3R1YWxseSB1c2UgdGhpcyBuZXcgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MjksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMDowOTo1OS42MTUzMjc5NDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExMDAwODgwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX25hdF9rZWVwYWxpdmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQveGZybS5oPTIzNjM9c3RhdGljIGlubGluZSBpbnQgcmVnaXN0ZXJfeGZybV9zdGF0ZV9icGYodm9pZClcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMzY4LVxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzY5OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzcwOnZvaWQgeGZybV9uYXRfa2VlcGFsaXZlX2ZpbmkodW5zaWduZWQgc2hvcnQgZmFtaWx5KTtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MjM3MTppbnQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCk7XFxuaW5jbHVkZS9uZXQveGZybS5oOjIzNzI6aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfZmluaShzdHJ1Y3QgbmV0ICpuZXQpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzczOnZvaWQgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoc3RydWN0IHhmcm1fc3RhdGUgKngpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMzc0LVxcbi0tXFxubmV0L2lwdjYveGZybTZfcG9saWN5LmM9Mjc5PWludCBfX2luaXQgeGZybTZfaW5pdCh2b2lkKVxcbi0tXFxubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMjk3LVxcbm5ldC9pcHY2L3hmcm02X3BvbGljeS5jOjI5ODpcXHRyZXQgPSB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdChBRl9JTkVUNik7XFxubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMjk5LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYz0zMTQ9dm9pZCB4ZnJtNl9maW5pKHZvaWQpXFxubmV0L2lwdjYveGZybTZfcG9saWN5LmMtMzE1LXtcXG5uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYzozMTY6XFx0eGZybV9uYXRfa2VlcGFsaXZlX2ZpbmkoQUZfSU5FVDYpO1xcbm5ldC9pcHY2L3hmcm02X3BvbGljeS5jLTMxNy1cXHR1bnJlZ2lzdGVyX3Blcm5ldF9zdWJzeXMoXFx1MDAyNnhmcm02X25ldF9vcHMpO1xcbi0tXFxubmV0L3hmcm0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1hGUk0pIDo9IHhmcm1fcG9saWN5Lm8geGZybV9zdGF0ZS5vIHhmcm1faGFzaC5vIFxcXFxcXG4tLVxcbm5ldC94ZnJtL01ha2VmaWxlLTE2LVxcdFxcdCAgICAgIHhmcm1fc3lzY3RsLm8geGZybV9yZXBsYXkubyB4ZnJtX2RldmljZS5vIFxcXFxcXG5uZXQveGZybS9NYWtlZmlsZToxNzpcXHRcXHQgICAgICB4ZnJtX25hdF9rZWVwYWxpdmUub1xcbm5ldC94ZnJtL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19YRlJNX1NUQVRJU1RJQ1MpICs9IHhmcm1fcHJvYy5vXFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yLS8qXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzogKiB4ZnJtX25hdF9rZWVwYWxpdmUuY1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTQtICpcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI3Nj1zdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NrX2Zpbmkoc3RydWN0IHNvY2tfYmhfbG9ja2VkIF9fcGVyY3B1ICpzb2NrcylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI4My1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyODQ6dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yODUte1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjk0LVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI5NTppbnQgX19uZXRfaW5pdCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5Ni17XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDAtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzAxOmludCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMwMi17XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDYtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzA3OmludCB4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdCh1bnNpZ25lZCBzaG9ydCBmYW1pbHkpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzA4LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMyNS19XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzI2OkVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fbmF0X2tlZXBhbGl2ZV9pbml0KTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMjctXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzI4OnZvaWQgeGZybV9uYXRfa2VlcGFsaXZlX2ZpbmkodW5zaWduZWQgc2hvcnQgZmFtaWx5KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTMyOS17XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zNDAtfVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjM0MTpFWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX25hdF9rZWVwYWxpdmVfZmluaSk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQzMTA9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MzM1LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDMzNjpcXHRydiA9IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfaW5pdChuZXQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDMzNy1cXHRpZiAocnYgXFx1MDAzYyAwKVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00MzU0PXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZybV9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MzU1LXtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQzNTY6XFx0eGZybV9uYXRfa2VlcGFsaXZlX25ldF9maW5pKG5ldCk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MzU3LVxcdHhmcm1fc3lzY3RsX2ZpbmkobmV0KTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDQwND12b2lkIF9faW5pdCB4ZnJtX2luaXQodm9pZClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDQxOC1cXHRyZWdpc3Rlcl94ZnJtX3N0YXRlX2JwZigpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDQxOTpcXHR4ZnJtX25hdF9rZWVwYWxpdmVfaW5pdChBRl9JTkVUKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ0MjAtfVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTgxMT1pbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzItXFx0XFx0bmV0LVxcdTAwM2V4ZnJtLnN0YXRlX251bS0tO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4MzM6XFx0XFx0eGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzNC1cXHRcXHRzcGluX3VubG9jayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnhmcm1fc3RhdGVfbG9jayk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTcyMj1zdGF0aWMgdm9pZCBfX3hmcm1fc3RhdGVfaW5zZXJ0KHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE3NjYtXFx0eGZybV9oYXNoX2dyb3dfY2hlY2sobmV0LCB4LVxcdTAwM2VieWRzdC5uZXh0ICE9IE5VTEwpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNzY3OlxcdHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHgpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNzY4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTA6MTA6MDQuNzI1MzQyNDIzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMDkwNjY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFhGUk0gTkFUIEtlZXBhbGl2ZSBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggdGFyZ2V0cyBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLCB3aGljaCwgYXMgSSBrbm93LCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfWEZSTWAgaXMgc2V0LiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZS4gV2UncmUgZGVhbGluZyB3aXRoIHRoZSBYRlJNIGZyYW1ld29yayBhbmQgaXRzIE5BVCBrZWVwYWxpdmUgZnVuY3Rpb25hbGl0eS4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0b3VjaGVzIHRocmVlIGZ1bmN0aW9uczogYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgLCBgbmF0X2tlZXBhbGl2ZV93b3JrYCwgYW5kIGFkZHMgYSBuZXcgb25lLCBgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3RgLlxuXG5UaGUgZmFjdCB0aGF0IHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgYmVpbmcgbW9kaWZpZWQgb3IgYWRkZWQgc3Ryb25nbHkgc3VnZ2VzdHMgd2UncmUgZGlnZ2luZyBpbnRvIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBOQVQga2VlcGFsaXZlIG1lY2hhbmlzbSB3aXRoaW4gWEZSTS4gSXQgc291bmRzIGxpa2UgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmZWF0dXJlLCB3aGljaCBpcyBnb29kLiBUaGF0IGNvbmZpcm1zIHRoZSBkZXBlbmRlbmN5IG9uIGBYRlJNYCBiZWluZyBlbmFibGVkLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuIEknbGwgbmVlZCB0byBkaXZlIGludG8gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCBpdHNlbGYuIE15IG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggYW5kIHVuZGVyc3RhbmQgcHJlY2lzZWx5ICpob3cqIGBuYXRfa2VlcGFsaXZlX3dvcmtgIGlzIGFjdHVhbGx5IHRyaWdnZXJlZCB3aXRoaW4gdGhlIHN5c3RlbS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZWZmZWN0IG9mIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzODUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTA6MTA6MDguNTQ2MjUxNzI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODY2MjA1MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmF0X2tlZXBhbGl2ZV93b3JrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaD0zMj1zdHJ1Y3QgbmV0bnNfeGZybSB7XFxuLS1cXG5pbmNsdWRlL25ldC9uZXRucy94ZnJtLmgtODUtXFx0c3RydWN0IG11dGV4IHhmcm1fY2ZnX211dGV4O1xcbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaDo4NjpcXHRzdHJ1Y3QgZGVsYXllZF93b3JrXFx0bmF0X2tlZXBhbGl2ZV93b3JrO1xcbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaC04Ny19O1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MTE1PXN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNTQtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTU1OnN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNTYtXFx0c3RydWN0IGxpc3RfaGVhZCBzdGF0ZXM7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0xNjE9c3RydWN0IG5hdF9rZWVwYWxpdmVfc3RhdGUge1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTY1LVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2NjpzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjcte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2ODpcXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4ID0gcHRyO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2OS1cXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV9zdGF0ZSAqc3RhdGU7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xODMtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTg0OnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTg1OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTg2LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyMy1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMjQ6c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjUte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyNi1cXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV9zdGF0ZSAqc3RhdGUsICp0bXA7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI3OlxcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IGN0eDtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjgtXFx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjM1LVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIzNjpcXHRuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCwgeGZybS5uYXRfa2VlcGFsaXZlX3dvcmsud29yayk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjM3LVxcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFxcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjM4OlxcdGVyciA9IHhmcm1fc3RhdGVfd2FsayhuZXQsIFxcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgXFx1MDAyNmN0eCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjM5LVxcdHhmcm1fc3RhdGVfd2Fsa19kb25lKFxcdTAwMjZ3YWxrLCBuZXQpO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0MC1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc3RhdGUsIHRtcCwgXFx1MDAyNmN0eC5zdGF0ZXMsIGxpc3QpIHtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDE6XFx0XFx0bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdGF0ZS1cXHUwMDNleCwgXFx1MDAyNmN0eCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQyLVxcdFxcdHhmcm1fc3RhdGVfcHV0KHN0YXRlLVxcdTAwM2V4KTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0NS1cXHRpZiAoZXJyID09IC1FTk9NRU0pIHtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDY6XFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCAwKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNDctXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQ5LVxcdGlmIChjdHgubmV4dF9ydW4pXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjUwOlxcdFxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yayxcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNTEtXFx0XFx0XFx0XFx0ICAgICAgKGN0eC5uZXh0X3J1biAtIGN0eC5ub3cpICogSFopO1xcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9Mjg0PXZvaWQgeGZybV9uYXRfa2VlcGFsaXZlX3N0YXRlX3VwZGF0ZWQoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTEtXFx0bmV0ID0geHNfbmV0KHgpO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI5MjpcXHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssIDApO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5My19XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yOTU9aW50IF9fbmV0X2luaXQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTYte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI5NzpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yaywgbmF0X2tlZXBhbGl2ZV93b3JrKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTgtXFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0zMDE9aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfZmluaShzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzAyLXtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzozMDM6XFx0ZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yayk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzA0LVxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxMDoxMDoxMy4xMzI4Nzk0MDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTMxMzM2NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOQVQgS2VlcGFsaXZlIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gdGhpcyBgbmF0X2tlZXBhbGl2ZWAgZnVuY3Rpb25hbGl0eS4gTXkgZm9jdXMgaXMgb24gdGhlc2UgdGhyZWUgZnVuY3Rpb25zIHNwZWNpZmljYWxseTogYG5hdF9rZWVwYWxpdmVfd29ya2AsIGBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdGAsIGFuZCBgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZWAuIEkga25vdyB0aG9zZSBhcmUgc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBpbiBwbGFjZS5cblxuQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYFhGUk1gIGlzIHRoZSBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gaGVyZS4gQnV0IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gaGlkZGVuIGRlcGVuZGVuY2llcy4gSSdsbCB0YWtlIGEgbG9vayBhdCB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCB0byBjb25maXJtLiBBaCwgaGVyZSBpdCBpczogYG9iai0kKENPTkZJR19YRlJNKSA6PSAuLi4geGZybV9uYXRfa2VlcGFsaXZlLm9gLiBUaGF0IGNvbmZpcm1zIGl0OyBgQ09ORklHX1hGUk1gIGhhbmRsZXMgZXZlcnl0aGluZyB3ZSBuZWVkLiBObyBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgcmVxdWlyZWQuXG5cbkFscmlnaHQsIEkgaGF2ZSBteSBmaW5kaW5ncy4gSSdtIHJlYWR5IHRvIGRvY3VtZW50IHRoZXNlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczODcsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEwOjEwOjIwLjA2NDIxODExM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1MjI4MTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdFwiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRlJNIE5BVCBrZWVwYWxpdmUgbWVjaGFuaXNtLCBjaGFuZ2luZyBob3cgc3RhdGVzIGFyZSBpdGVyYXRlZCBhbmQgbG9ja2VkIGR1cmluZyB0aGUga2VlcGFsaXZlIHdvcmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdFwiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBYRlJNIE5BVCBrZWVwYWxpdmUgbWVjaGFuaXNtLCBjaGFuZ2luZyBob3cgc3RhdGVzIGFyZSBpdGVyYXRlZCBhbmQgbG9ja2VkIGR1cmluZyB0aGUga2VlcGFsaXZlIHdvcmsuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rsn[1] Phase: Succeeded StartedAt: 2026-07-22 10:10:33 +0000 UTC FinishedAt: 2026-07-22 10:10:33 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 10:10:33 +0000 UTC FinishedAt: 2026-07-22 10:10:33 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2] Phase: Succeeded StartedAt: 2026-07-22 10:10:33 +0000 UTC FinishedAt: 2026-07-22 14:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 10:10:33 +0000 UTC FinishedAt: 2026-07-22 14:21:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 10:10:33 +0000 UTC FinishedAt: 2026-07-22 10:11:38 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 10:10:33 +0000 UTC FinishedAt: 2026-07-22 10:11:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workfloww7rsn/series-workfloww7rsn-convert-artifact-3236939158/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 10:11:38 +0000 UTC FinishedAt: 2026-07-22 10:42:12 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 10:11:38 +0000 UTC FinishedAt: 2026-07-22 10:42:12 +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:*48575418-9f85-49e6-b2c6-2a1f3fd93d80,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-workfloww7rsn/series-workfloww7rsn-convert-artifact-3236939158/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": "6909896f-d1a2-4e75-8ff2-2a7fe7a4a364", "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-workfloww7rsn/series-workfloww7rsn-build-action-3922392364/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 10:11:38 +0000 UTC FinishedAt: 2026-07-22 10:42:02 +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:*48575418-9f85-49e6-b2c6-2a1f3fd93d80,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-workfloww7rsn/series-workfloww7rsn-convert-artifact-3236939158/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": "6909896f-d1a2-4e75-8ff2-2a7fe7a4a364", "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-workfloww7rsn/series-workfloww7rsn-build-action-3922392364/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 10:42:12 +0000 UTC FinishedAt: 2026-07-22 10:42:12 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 10:42:12 +0000 UTC FinishedAt: 2026-07-22 10:42:12 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 10:42:12 +0000 UTC FinishedAt: 2026-07-22 10:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 10:42:12 +0000 UTC FinishedAt: 2026-07-22 10:42:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workfloww7rsn/series-workfloww7rsn-convert-artifact-3862487593/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 10:42:22 +0000 UTC FinishedAt: 2026-07-22 10:44:41 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 10:42:22 +0000 UTC FinishedAt: 2026-07-22 10:44:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6909896f-d1a2-4e75-8ff2-2a7fe7a4a364,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-workfloww7rsn/series-workfloww7rsn-build-action-3922392364/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-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 10:44:41 +0000 UTC FinishedAt: 2026-07-22 10:44:41 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 10:44:41 +0000 UTC FinishedAt: 2026-07-22 10:44:41 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 10:44:41 +0000 UTC FinishedAt: 2026-07-22 11:16:11 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 10:44:41 +0000 UTC FinishedAt: 2026-07-22 11:16:11 +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:*48575418-9f85-49e6-b2c6-2a1f3fd93d80,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-workfloww7rsn/series-workfloww7rsn-convert-artifact-3862487593/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": "03fb5979-0d7f-4bc9-8023-904378bb7023", "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-workfloww7rsn/series-workfloww7rsn-build-action-1423976197/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 10:44:41 +0000 UTC FinishedAt: 2026-07-22 11:16:01 +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:*48575418-9f85-49e6-b2c6-2a1f3fd93d80,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-workfloww7rsn/series-workfloww7rsn-convert-artifact-3862487593/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": "03fb5979-0d7f-4bc9-8023-904378bb7023", "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-workfloww7rsn/series-workfloww7rsn-build-action-1423976197/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 11:16:11 +0000 UTC FinishedAt: 2026-07-22 11:16:11 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 11:16:11 +0000 UTC FinishedAt: 2026-07-22 11:16:11 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 11:16:11 +0000 UTC FinishedAt: 2026-07-22 11:18:25 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 11:16:11 +0000 UTC FinishedAt: 2026-07-22 11:18:15 +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:*03fb5979-0d7f-4bc9-8023-904378bb7023,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-workfloww7rsn/series-workfloww7rsn-build-action-1423976197/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-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 11:18:25 +0000 UTC FinishedAt: 2026-07-22 14:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 11:18:25 +0000 UTC FinishedAt: 2026-07-22 14:21:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*6909896f-d1a2-4e75-8ff2-2a7fe7a4a364,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*03fb5979-0d7f-4bc9-8023-904378bb7023,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-workfloww7rsn/series-workfloww7rsn-build-action-3922392364/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-workfloww7rsn/series-workfloww7rsn-build-action-1423976197/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 11:18:25 +0000 UTC FinishedAt: 2026-07-22 11:18:46 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 11:18:25 +0000 UTC FinishedAt: 2026-07-22 11:18:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workfloww7rsn/series-workfloww7rsn-convert-artifact-3482239614/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 11:18:25 +0000 UTC FinishedAt: 2026-07-22 11:18:25 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 11:18:25 +0000 UTC FinishedAt: 2026-07-22 11:18:25 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 11:18:25 +0000 UTC FinishedAt: 2026-07-22 11:18:25 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 11:18:46 +0000 UTC FinishedAt: 2026-07-22 14:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7rsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nat_keepalive_work","nat_keepalive_work_collect","nat_keepalive_work_single"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"285fd588859f42b14f6f455faaa336b4077c3a87","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM"],"series_id":"ec3ac8e5-648d-4a59-a03f-4e8fc115daf8","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 11:18:46 +0000 UTC FinishedAt: 2026-07-22 14:20:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6909896f-d1a2-4e75-8ff2-2a7fe7a4a364,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*03fb5979-0d7f-4bc9-8023-904378bb7023,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-workfloww7rsn/series-workfloww7rsn-build-action-3922392364/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-workfloww7rsn/series-workfloww7rsn-build-action-1423976197/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-workfloww7rsn/series-workfloww7rsn-convert-artifact-3482239614/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,}