Name: series-workflowtvf82 Phase: Succeeded StartedAt: 2026-07-10 11:10:46 +0000 UTC FinishedAt: 2026-07-10 15:56:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[0] Phase: Succeeded StartedAt: 2026-07-10 11:10:46 +0000 UTC FinishedAt: 2026-07-10 11:36:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 11:10:46 +0000 UTC FinishedAt: 2026-07-10 11:36:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "7fc2c3dcae28347a30ccd76c8817e5719005f1c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "SWAP", "THP_SWAP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "7fc2c3dcae28347a30ccd76c8817e5719005f1c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "SWAP", "THP_SWAP" ], "series_id": "5cd8e97c-db3b-4b59-9424-e4ff05a28f43" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "page_counter_margin", "__mem_cgroup_try_charge_swap", "folio_alloc_swap" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OywKICAgICYjMzQ7VEhQX1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWdlX2NvdW50ZXJfbWFyZ2luJiMzNDssCiAgICAmIzM0O19fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAmIzM0OywKICAgICYjMzQ7Zm9saW9fYWxsb2Nfc3dhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igc3dhcCBjaGFyZ2luZyBhbmQgbWVtY2cgbGltaXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgbGFyZ2UgZm9saW9zIGFuZCBmYWxsYmFjayB0byBzbWFsbGVyIHBhZ2VzIHdoZW4gc3dhcCBzcGFjZSBvciBtZW1jZyBsaW1pdHMgYXJlIGNvbnN0cmFpbmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlIGFuZCBzd2FwcGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVjNjYxNjdiNzI0ZjhmOGFiNGVhY2FiNDU3Y2MyNTJjZThhNjMxNjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMTozNjozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oIGIvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaFxuaW5kZXggZDY0OWI2YmJiYzg3MWIuLjA3YjdjYjEyMjQ5YzdjIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaFxuQEAgLTY4LDYgJiM0Mzs2OCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBwYWdlX2NvdW50ZXJfcmVhZChzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKVxuIFx0cmV0dXJuIGF0b21pY19sb25nX3JlYWQoXHUwMDI2Y291bnRlci1cdTAwM2V1c2FnZSk7XG4gfVxuIFxuJiM0Mztsb25nIHBhZ2VfY291bnRlcl9tYXJnaW4oc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcik7XG4gdm9pZCBwYWdlX2NvdW50ZXJfY2FuY2VsKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpO1xuIHZvaWQgcGFnZV9jb3VudGVyX2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcbiBib29sIHBhZ2VfY291bnRlcl90cnlfY2hhcmdlKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zd2FwLmggYi9pbmNsdWRlL2xpbnV4L3N3YXAuaFxuaW5kZXggN2EwOWRmNjk3N2E1ZjMuLjA2OTVhYzU2NDU3ZmY3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zd2FwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvc3dhcC5oXG5AQCAtNTcxLDEzICYjNDM7NTcxLDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb190aHJvdHRsZV9zd2FwcmF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBnZnBfdCBnZnApXG4gI2VuZGlmXG4gXG4gI2lmIGRlZmluZWQoQ09ORklHX01FTUNHKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfU1dBUClcbi1pbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSk7XG4mIzQzO2ludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5LFxuJiM0MztcdFx0XHRcdCBsb25nICpucl9zd2FwX3BhZ2VzKTtcbiBzdGF0aWMgaW5saW5lIGludCBtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLVx0XHRzd3BfZW50cnlfdCBlbnRyeSlcbiYjNDM7XHRcdHN3cF9lbnRyeV90IGVudHJ5LCBsb25nICpucl9zd2FwX3BhZ2VzKVxuIHtcbiBcdGlmIChtZW1fY2dyb3VwX2Rpc2FibGVkKCkpXG4gXHRcdHJldHVybiAwO1xuLVx0cmV0dXJuIF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoZm9saW8sIGVudHJ5KTtcbiYjNDM7XHRyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnksIG5yX3N3YXBfcGFnZXMpO1xuIH1cbiBcbiBleHRlcm4gdm9pZCBfX21lbV9jZ3JvdXBfdW5jaGFyZ2Vfc3dhcChzd3BfZW50cnlfdCBlbnRyeSwgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTtcbkBAIC01OTIsNyAmIzQzOzU5Myw4IEBAIGV4dGVybiBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKTtcbiBleHRlcm4gYm9vbCBtZW1fY2dyb3VwX3N3YXBfZnVsbChzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tXHRcdFx0XHRcdCAgICAgc3dwX2VudHJ5X3QgZW50cnkpXG4mIzQzO1x0XHRcdFx0XHQgICAgIHN3cF9lbnRyeV90IGVudHJ5LFxuJiM0MztcdFx0XHRcdFx0ICAgICBsb25nICpucl9zd2FwX3BhZ2VzKVxuIHtcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmNcbmluZGV4IDE3NzczMmZlZjAxMGJjLi43MTYwMGQ0MTk1OGVmNyAxMDA2NDRcbi0tLSBhL21tL21lbWNvbnRyb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC5jXG5AQCAtNTQ3MiwxMiAmIzQzOzU0NzIsMTQgQEAgaW50IF9faW5pdCBtZW1fY2dyb3VwX2luaXQodm9pZClcbiAgKiBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwIC0gdHJ5IGNoYXJnaW5nIHN3YXAgc3BhY2UgZm9yIGEgZm9saW9cbiAgKiBAZm9saW86IGZvbGlvIGJlaW5nIGFkZGVkIHRvIHN3YXBcbiAgKiBAZW50cnk6IHN3YXAgZW50cnkgdG8gY2hhcmdlXG4mIzQzOyAqIEBucl9zd2FwX3BhZ2VzOiBvcHRpb25hbCBzd2FwIGF2YWlsYWJpbGl0eSB0byBjYXAgYnkgbWVtY2cgbWFyZ2luXG4gICpcbiAgKiBUcnkgdG8gY2hhcmdlIEBmb2xpbyYjMzk7cyBtZW1jZyBmb3IgdGhlIHN3YXAgc3BhY2UgYXQgQGVudHJ5LlxuICAqXG4gICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1FTk9NRU0gb24gZmFpbHVyZS5cbiAgKi9cbi1pbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSlcbiYjNDM7aW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnksXG4mIzQzO1x0XHRcdFx0IGxvbmcgKm5yX3N3YXBfcGFnZXMpXG4ge1xuIFx0dW5zaWduZWQgaW50IG5yX3BhZ2VzID0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xuIFx0c3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcjtcbkBAIC01NDk1LDYgJiM0Mzs1NDk3LDkgQEAgaW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRtZW1jZyA9IG9ial9jZ3JvdXBfbWVtY2cob2JqY2cpO1xuIFx0aWYgKCFlbnRyeS52YWwpIHtcbiYjNDM7XHRcdGlmIChucl9zd2FwX3BhZ2VzIFx1MDAyNlx1MDAyNiAhbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcbiYjNDM7XHRcdFx0Km5yX3N3YXBfcGFnZXMgPSBtaW4oKm5yX3N3YXBfcGFnZXMsXG4mIzQzO1x0XHRcdFx0XHQgICAgIHBhZ2VfY291bnRlcl9tYXJnaW4oXHUwMDI2bWVtY2ctXHUwMDNlc3dhcCkpO1xuIFx0XHRtZW1jZ19tZW1vcnlfZXZlbnQobWVtY2csIE1FTUNHX1NXQVBfRkFJTCk7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0XHRyZXR1cm4gMDtcbkBAIC01NTA5LDYgJiM0Mzs1NTE0LDkgQEAgaW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpXG4gXHRcdG1lbWNnX21lbW9yeV9ldmVudChtZW1jZywgTUVNQ0dfU1dBUF9NQVgpO1xuIFx0XHRtZW1jZ19tZW1vcnlfZXZlbnQobWVtY2csIE1FTUNHX1NXQVBfRkFJTCk7XG4gXHRcdG1lbV9jZ3JvdXBfcHJpdmF0ZV9pZF9wdXQobWVtY2csIG5yX3BhZ2VzKTtcbiYjNDM7XHRcdGlmIChucl9zd2FwX3BhZ2VzKVxuJiM0MztcdFx0XHQqbnJfc3dhcF9wYWdlcyA9IG1pbigqbnJfc3dhcF9wYWdlcyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgcGFnZV9jb3VudGVyX21hcmdpbihjb3VudGVyKSk7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19TV0FQLCBucl9wYWdlcyk7XG5AQCAtNTU1MCwxMCAmIzQzOzU1NTgsNyBAQCBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuIFxuIFx0aWYgKG1lbV9jZ3JvdXBfZGlzYWJsZWQoKSB8fCBkb19tZW1zd19hY2NvdW50KCkpXG4gXHRcdHJldHVybiBucl9zd2FwX3BhZ2VzO1xuLVx0Zm9yICg7ICFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpOyBtZW1jZyA9IHBhcmVudF9tZW1fY2dyb3VwKG1lbWNnKSlcbi1cdFx0bnJfc3dhcF9wYWdlcyA9IG1pbl90KGxvbmcsIG5yX3N3YXBfcGFnZXMsXG4tXHRcdFx0XHQgICAgICBSRUFEX09OQ0UobWVtY2ctXHUwMDNlc3dhcC5tYXgpIC1cbi1cdFx0XHRcdCAgICAgIHBhZ2VfY291bnRlcl9yZWFkKFx1MDAyNm1lbWNnLVx1MDAzZXN3YXApKTtcbiYjNDM7XHRucl9zd2FwX3BhZ2VzID0gbWluKG5yX3N3YXBfcGFnZXMsIHBhZ2VfY291bnRlcl9tYXJnaW4oXHUwMDI2bWVtY2ctXHUwMDNlc3dhcCkpO1xuIFx0cmV0dXJuIG5yX3N3YXBfcGFnZXM7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL21tL3BhZ2VfY291bnRlci5jIGIvbW0vcGFnZV9jb3VudGVyLmNcbmluZGV4IDY2MWUwZjJhNTEyN2E1Li42ZTU1Yzc2MjgwMjVmMyAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfY291bnRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2NvdW50ZXIuY1xuQEAgLTE3MSw2ICYjNDM7MTcxLDI2IEBAIGJvb2wgcGFnZV9jb3VudGVyX3RyeV9jaGFyZ2Uoc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcixcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBwYWdlX2NvdW50ZXJfbWFyZ2luIC0gcmVtYWluaW5nIGNoYXJnZWFibGUgcGFnZXMgd2l0aGluIGhpZXJhcmNoaWNhbCBsaW1pdHNcbiYjNDM7ICogQGNvdW50ZXI6IGNvdW50ZXJcbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJucyB0aGUgc21hbGxlc3QgcmVtYWluaW5nIG1hcmdpbiBiZXR3ZWVuIEBjb3VudGVyIGFuZCB0aGUgcm9vdC5cbiYjNDM7ICovXG4mIzQzO2xvbmcgcGFnZV9jb3VudGVyX21hcmdpbihzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKVxuJiM0Mzt7XG4mIzQzO1x0bG9uZyBtYXJnaW4gPSBQQUdFX0NPVU5URVJfTUFYO1xuJiM0MztcbiYjNDM7XHRmb3IgKDsgY291bnRlcjsgY291bnRlciA9IGNvdW50ZXItXHUwMDNlcGFyZW50KSB7XG4mIzQzO1x0XHRsb25nIGxpbWl0ID0gUkVBRF9PTkNFKGNvdW50ZXItXHUwMDNlbWF4KTtcbiYjNDM7XHRcdGxvbmcgdXNhZ2UgPSBwYWdlX2NvdW50ZXJfcmVhZChjb3VudGVyKTtcbiYjNDM7XG4mIzQzO1x0XHRtYXJnaW4gPSBtaW4obWFyZ2luLCBsaW1pdCAtIHVzYWdlKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBtYXJnaW47XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogcGFnZV9jb3VudGVyX3VuY2hhcmdlIC0gaGllcmFyY2hpY2FsbHkgdW5jaGFyZ2UgcGFnZXNcbiAgKiBAY291bnRlcjogY291bnRlclxuZGlmZiAtLWdpdCBhL21tL3N3YXBmaWxlLmMgYi9tbS9zd2FwZmlsZS5jXG5pbmRleCA5MTc0ZjFlZWZmYjA5MS4uNTNhOTIxY2EwOTlhZWQgMTAwNjQ0XG4tLS0gYS9tbS9zd2FwZmlsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9zd2FwZmlsZS5jXG5AQCAtMTY5MCwxMiAmIzQzOzE2OTAsMTQgQEAgc3RhdGljIGludCBzd2FwX2R1cF9lbnRyaWVzX2NsdXN0ZXIoc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpLFxuICAqIHN3YXAgY2FjaGUuXG4gICpcbiAgKiBDb250ZXh0OiBDYWxsZXIgbmVlZHMgdG8gaG9sZCB0aGUgZm9saW8gbG9jay5cbi0gKiBSZXR1cm46IFdoZXRoZXIgdGhlIGZvbGlvIHdhcyBhZGRlZCB0byB0aGUgc3dhcCBjYWNoZS5cbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FMkJJRyBpZiBzcGxpdHRpbmcgdGhlIGZvbGlvIG1pZ2h0IGFsbG93IHN3YXBvdXQsXG4mIzQzOyAqIG9yIGFub3RoZXIgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiBzcGxpdHRpbmcgd291bGQgbm90IGhlbHAuXG4gICovXG4gaW50IGZvbGlvX2FsbG9jX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbylcbiB7XG4gXHR1bnNpZ25lZCBpbnQgb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XG4gXHR1bnNpZ25lZCBpbnQgc2l6ZSA9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuJiM0MztcdGxvbmcgbnJfc3dhcF9wYWdlcztcbiBcbiBcdFZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7XG4gXHRWTV9CVUdfT05fRk9MSU8oIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pLCBmb2xpbyk7XG5AQCAtMTcwNiw3ICYjNDM7MTcwOCw3IEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4gXHRcdCAqIHRoZSBjYWxsZXIgc2hvdWxkIHNwbGl0IHRoZSBmb2xpbyBhbmQgdHJ5IGFnYWluLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19USFBfU1dBUCkpXG4tXHRcdFx0cmV0dXJuIC1FQUdBSU47XG4mIzQzO1x0XHRcdHJldHVybiAtRTJCSUc7XG4gXG4gXHRcdC8qXG4gXHRcdCAqIEFsbG9jYXRpb24gc2l6ZSBzaG91bGQgbmV2ZXIgZXhjZWVkIGNsdXN0ZXIgc2l6ZVxuQEAgLTE3MTQsMTAgJiM0MzsxNzE2LDEyIEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4gXHRcdCAqL1xuIFx0XHRpZiAoc2l6ZSBcdTAwM2UgU1dBUEZJTEVfQ0xVU1RFUikge1xuIFx0XHRcdFZNX1dBUk5fT05fT05DRSgxKTtcbi1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0cmV0dXJuIC1FMkJJRztcbiBcdFx0fVxuIFx0fVxuIFxuJiM0MztcdG5yX3N3YXBfcGFnZXMgPSBnZXRfbnJfc3dhcF9wYWdlcygpO1xuJiM0MztcbiBhZ2FpbjpcbiBcdGxvY2FsX2xvY2soXHUwMDI2cGVyY3B1X3N3YXBfY2x1c3Rlci5sb2NrKTtcbiBcdGlmICghc3dhcF9hbGxvY19mYXN0KGZvbGlvKSlcbkBAIC0xNzMwLDExICYjNDM7MTczNCwxNiBAQCBpbnQgZm9saW9fYWxsb2Nfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0fVxuIFxuIFx0LyogTmVlZCB0byBjYWxsIHRoaXMgZXZlbiBpZiBhbGxvY2F0aW9uIGZhaWxlZCwgZm9yIE1FTUNHX1NXQVBfRkFJTC4gKi9cbi1cdGlmICh1bmxpa2VseShtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZm9saW8tXHUwMDNlc3dhcCkpKVxuJiM0MztcdGlmICh1bmxpa2VseShtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZm9saW8tXHUwMDNlc3dhcCxcbiYjNDM7XHRcdFx0XHRcdFx0XHUwMDI2bnJfc3dhcF9wYWdlcykpKSB7XG4gXHRcdHN3YXBfY2FjaGVfZGVsX2ZvbGlvKGZvbGlvKTtcbiYjNDM7XHRcdHJldHVybiBvcmRlciBcdTAwMjZcdTAwMjYgbnJfc3dhcF9wYWdlcyBcdTAwM2UgMCA/IC1FMkJJRyA6IC1FTk9NRU07XG4mIzQzO1x0fVxuIFxuLVx0aWYgKHVubGlrZWx5KCFmb2xpb190ZXN0X3N3YXBjYWNoZShmb2xpbykpKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHRpZiAodW5saWtlbHkoIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkpIHtcbiYjNDM7XHRcdG5yX3N3YXBfcGFnZXMgPSBnZXRfbnJfc3dhcF9wYWdlcygpO1xuJiM0MztcdFx0cmV0dXJuIG9yZGVyIFx1MDAyNlx1MDAyNiBucl9zd2FwX3BhZ2VzIFx1MDAzZSAwID8gLUUyQklHIDogLUVOT1NQQztcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xuaW5kZXggYmQxYjFhYTEyNTgxOWYuLjQwMzQwYTg4Zjc4ZWQ2IDEwMDY0NFxuLS0tIGEvbW0vdm1zY2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3Ztc2Nhbi5jXG5AQCAtMTI2MCw2ICYjNDM7MTI2MCw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2hyaW5rX2ZvbGlvX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCxcbiBcdFx0ICovXG4gXHRcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFx1MDAyNlx1MDAyNiBmb2xpb190ZXN0X3N3YXBiYWNrZWQoZm9saW8pIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0IWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkge1xuJiM0MztcdFx0XHRpbnQgcmV0O1xuJiM0MztcbiBcdFx0XHRpZiAoIShzYy1cdTAwM2VnZnBfbWFzayBcdTAwMjYgX19HRlBfSU8pKVxuIFx0XHRcdFx0Z290byBrZWVwX2xvY2tlZDtcbiBcdFx0XHRpZiAoZm9saW9fbWF5YmVfZG1hX3Bpbm5lZChmb2xpbykpXG5AQCAtMTI3OCwxMCAmIzQzOzEyODAsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzaHJpbmtfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxuIFx0XHRcdFx0ICAgIHNwbGl0X2ZvbGlvX3RvX2xpc3QoZm9saW8sIGZvbGlvX2xpc3QpKVxuIFx0XHRcdFx0XHRnb3RvIGFjdGl2YXRlX2xvY2tlZDtcbiBcdFx0XHR9XG4tXHRcdFx0aWYgKGZvbGlvX2FsbG9jX3N3YXAoZm9saW8pKSB7XG4mIzQzO1x0XHRcdHJldCA9IGZvbGlvX2FsbG9jX3N3YXAoZm9saW8pO1xuJiM0MztcdFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0XHRpbnQgX19tYXliZV91bnVzZWQgb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XG4gXG4tXHRcdFx0XHRpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKVxuJiM0MztcdFx0XHRcdGlmICghZm9saW9fdGVzdF9sYXJnZShmb2xpbykgfHwgcmV0ICE9IC1FMkJJRylcbiBcdFx0XHRcdFx0Z290byBhY3RpdmF0ZV9sb2NrZWRfc3BsaXQ7XG4gXHRcdFx0XHQvKiBGYWxsYmFjayB0byBzd2FwIG5vcm1hbCBwYWdlcyAqL1xuIFx0XHRcdFx0aWYgKHNwbGl0X2ZvbGlvX3RvX2xpc3QoZm9saW8sIGZvbGlvX2xpc3QpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OywKICAgICYjMzQ7VEhQX1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWdlX2NvdW50ZXJfbWFyZ2luJiMzNDssCiAgICAmIzM0O19fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAmIzM0OywKICAgICYjMzQ7Zm9saW9fYWxsb2Nfc3dhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igc3dhcCBjaGFyZ2luZyBhbmQgbWVtY2cgbGltaXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgbGFyZ2UgZm9saW9zIGFuZCBmYWxsYmFjayB0byBzbWFsbGVyIHBhZ2VzIHdoZW4gc3dhcCBzcGFjZSBvciBtZW1jZyBsaW1pdHMgYXJlIGNvbnN0cmFpbmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlIGFuZCBzd2FwcGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWM2NjE2N2I3MjRmOGY4YWI0ZWFjYWI0NTdjYzI1MmNlOGE2MzE2OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDEwIDExOjM2OjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaCBiL2luY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmgKaW5kZXggZDY0OWI2YmJiYzg3MWIuLjA3YjdjYjEyMjQ5YzdjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmgKQEAgLTY4LDYgJiM0Mzs2OCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBwYWdlX2NvdW50ZXJfcmVhZChzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKQogCXJldHVybiBhdG9taWNfbG9uZ19yZWFkKCZhbXA7Y291bnRlci0mZ3Q7dXNhZ2UpOwogfQogCiYjNDM7bG9uZyBwYWdlX2NvdW50ZXJfbWFyZ2luKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIpOwogdm9pZCBwYWdlX2NvdW50ZXJfY2FuY2VsKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwogdm9pZCBwYWdlX2NvdW50ZXJfY2hhcmdlKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwogYm9vbCBwYWdlX2NvdW50ZXJfdHJ5X2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zd2FwLmggYi9pbmNsdWRlL2xpbnV4L3N3YXAuaAppbmRleCA3YTA5ZGY2OTc3YTVmMy4uMDY5NWFjNTY0NTdmZjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3dhcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvc3dhcC5oCkBAIC01NzEsMTMgJiM0Mzs1NzEsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcCkKICNlbmRpZgogCiAjaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpICZhbXA7JmFtcDsgZGVmaW5lZChDT05GSUdfU1dBUCkKLWludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KTsKJiM0MztpbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSwKJiM0MzsJCQkJIGxvbmcgKm5yX3N3YXBfcGFnZXMpOwogc3RhdGljIGlubGluZSBpbnQgbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywKLQkJc3dwX2VudHJ5X3QgZW50cnkpCiYjNDM7CQlzd3BfZW50cnlfdCBlbnRyeSwgbG9uZyAqbnJfc3dhcF9wYWdlcykKIHsKIAlpZiAobWVtX2Nncm91cF9kaXNhYmxlZCgpKQogCQlyZXR1cm4gMDsKLQlyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnkpOwomIzQzOwlyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnksIG5yX3N3YXBfcGFnZXMpOwogfQogCiBleHRlcm4gdm9pZCBfX21lbV9jZ3JvdXBfdW5jaGFyZ2Vfc3dhcChzd3BfZW50cnlfdCBlbnRyeSwgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTsKQEAgLTU5Miw3ICYjNDM7NTkzLDggQEAgZXh0ZXJuIGxvbmcgbWVtX2Nncm91cF9nZXRfbnJfc3dhcF9wYWdlcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpOwogZXh0ZXJuIGJvb2wgbWVtX2Nncm91cF9zd2FwX2Z1bGwoc3RydWN0IGZvbGlvICpmb2xpbyk7CiAjZWxzZQogc3RhdGljIGlubGluZSBpbnQgbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywKLQkJCQkJICAgICBzd3BfZW50cnlfdCBlbnRyeSkKJiM0MzsJCQkJCSAgICAgc3dwX2VudHJ5X3QgZW50cnksCiYjNDM7CQkJCQkgICAgIGxvbmcgKm5yX3N3YXBfcGFnZXMpCiB7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmMKaW5kZXggMTc3NzMyZmVmMDEwYmMuLjcxNjAwZDQxOTU4ZWY3IDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9sLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC5jCkBAIC01NDcyLDEyICYjNDM7NTQ3MiwxNCBAQCBpbnQgX19pbml0IG1lbV9jZ3JvdXBfaW5pdCh2b2lkKQogICogX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcCAtIHRyeSBjaGFyZ2luZyBzd2FwIHNwYWNlIGZvciBhIGZvbGlvCiAgKiBAZm9saW86IGZvbGlvIGJlaW5nIGFkZGVkIHRvIHN3YXAKICAqIEBlbnRyeTogc3dhcCBlbnRyeSB0byBjaGFyZ2UKJiM0MzsgKiBAbnJfc3dhcF9wYWdlczogb3B0aW9uYWwgc3dhcCBhdmFpbGFiaWxpdHkgdG8gY2FwIGJ5IG1lbWNnIG1hcmdpbgogICoKICAqIFRyeSB0byBjaGFyZ2UgQGZvbGlvJiMzOTtzIG1lbWNnIGZvciB0aGUgc3dhcCBzcGFjZSBhdCBAZW50cnkuCiAgKgogICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1FTk9NRU0gb24gZmFpbHVyZS4KICAqLwotaW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpCiYjNDM7aW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnksCiYjNDM7CQkJCSBsb25nICpucl9zd2FwX3BhZ2VzKQogewogCXVuc2lnbmVkIGludCBucl9wYWdlcyA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTsKIAlzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyOwpAQCAtNTQ5NSw2ICYjNDM7NTQ5Nyw5IEBAIGludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KQogCXJjdV9yZWFkX2xvY2soKTsKIAltZW1jZyA9IG9ial9jZ3JvdXBfbWVtY2cob2JqY2cpOwogCWlmICghZW50cnkudmFsKSB7CiYjNDM7CQlpZiAobnJfc3dhcF9wYWdlcyAmYW1wOyZhbXA7ICFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKQomIzQzOwkJCSpucl9zd2FwX3BhZ2VzID0gbWluKCpucl9zd2FwX3BhZ2VzLAomIzQzOwkJCQkJICAgICBwYWdlX2NvdW50ZXJfbWFyZ2luKCZhbXA7bWVtY2ctJmd0O3N3YXApKTsKIAkJbWVtY2dfbWVtb3J5X2V2ZW50KG1lbWNnLCBNRU1DR19TV0FQX0ZBSUwpOwogCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJcmV0dXJuIDA7CkBAIC01NTA5LDYgJiM0Mzs1NTE0LDkgQEAgaW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpCiAJCW1lbWNnX21lbW9yeV9ldmVudChtZW1jZywgTUVNQ0dfU1dBUF9NQVgpOwogCQltZW1jZ19tZW1vcnlfZXZlbnQobWVtY2csIE1FTUNHX1NXQVBfRkFJTCk7CiAJCW1lbV9jZ3JvdXBfcHJpdmF0ZV9pZF9wdXQobWVtY2csIG5yX3BhZ2VzKTsKJiM0MzsJCWlmIChucl9zd2FwX3BhZ2VzKQomIzQzOwkJCSpucl9zd2FwX3BhZ2VzID0gbWluKCpucl9zd2FwX3BhZ2VzLAomIzQzOwkJCQkJICAgICBwYWdlX2NvdW50ZXJfbWFyZ2luKGNvdW50ZXIpKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCW1vZF9tZW1jZ19zdGF0ZShtZW1jZywgTUVNQ0dfU1dBUCwgbnJfcGFnZXMpOwpAQCAtNTU1MCwxMCAmIzQzOzU1NTgsNyBAQCBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKQogCiAJaWYgKG1lbV9jZ3JvdXBfZGlzYWJsZWQoKSB8fCBkb19tZW1zd19hY2NvdW50KCkpCiAJCXJldHVybiBucl9zd2FwX3BhZ2VzOwotCWZvciAoOyAhbWVtX2Nncm91cF9pc19yb290KG1lbWNnKTsgbWVtY2cgPSBwYXJlbnRfbWVtX2Nncm91cChtZW1jZykpCi0JCW5yX3N3YXBfcGFnZXMgPSBtaW5fdChsb25nLCBucl9zd2FwX3BhZ2VzLAotCQkJCSAgICAgIFJFQURfT05DRShtZW1jZy0mZ3Q7c3dhcC5tYXgpIC0KLQkJCQkgICAgICBwYWdlX2NvdW50ZXJfcmVhZCgmYW1wO21lbWNnLSZndDtzd2FwKSk7CiYjNDM7CW5yX3N3YXBfcGFnZXMgPSBtaW4obnJfc3dhcF9wYWdlcywgcGFnZV9jb3VudGVyX21hcmdpbigmYW1wO21lbWNnLSZndDtzd2FwKSk7CiAJcmV0dXJuIG5yX3N3YXBfcGFnZXM7CiB9CiAKZGlmZiAtLWdpdCBhL21tL3BhZ2VfY291bnRlci5jIGIvbW0vcGFnZV9jb3VudGVyLmMKaW5kZXggNjYxZTBmMmE1MTI3YTUuLjZlNTVjNzYyODAyNWYzIDEwMDY0NAotLS0gYS9tbS9wYWdlX2NvdW50ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2NvdW50ZXIuYwpAQCAtMTcxLDYgJiM0MzsxNzEsMjYgQEAgYm9vbCBwYWdlX2NvdW50ZXJfdHJ5X2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLAogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHBhZ2VfY291bnRlcl9tYXJnaW4gLSByZW1haW5pbmcgY2hhcmdlYWJsZSBwYWdlcyB3aXRoaW4gaGllcmFyY2hpY2FsIGxpbWl0cwomIzQzOyAqIEBjb3VudGVyOiBjb3VudGVyCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCByZW1haW5pbmcgbWFyZ2luIGJldHdlZW4gQGNvdW50ZXIgYW5kIHRoZSByb290LgomIzQzOyAqLwomIzQzO2xvbmcgcGFnZV9jb3VudGVyX21hcmdpbihzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKQomIzQzO3sKJiM0MzsJbG9uZyBtYXJnaW4gPSBQQUdFX0NPVU5URVJfTUFYOwomIzQzOwomIzQzOwlmb3IgKDsgY291bnRlcjsgY291bnRlciA9IGNvdW50ZXItJmd0O3BhcmVudCkgewomIzQzOwkJbG9uZyBsaW1pdCA9IFJFQURfT05DRShjb3VudGVyLSZndDttYXgpOwomIzQzOwkJbG9uZyB1c2FnZSA9IHBhZ2VfY291bnRlcl9yZWFkKGNvdW50ZXIpOwomIzQzOwomIzQzOwkJbWFyZ2luID0gbWluKG1hcmdpbiwgbGltaXQgLSB1c2FnZSk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIG1hcmdpbjsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIHBhZ2VfY291bnRlcl91bmNoYXJnZSAtIGhpZXJhcmNoaWNhbGx5IHVuY2hhcmdlIHBhZ2VzCiAgKiBAY291bnRlcjogY291bnRlcgpkaWZmIC0tZ2l0IGEvbW0vc3dhcGZpbGUuYyBiL21tL3N3YXBmaWxlLmMKaW5kZXggOTE3NGYxZWVmZmIwOTEuLjUzYTkyMWNhMDk5YWVkIDEwMDY0NAotLS0gYS9tbS9zd2FwZmlsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3N3YXBmaWxlLmMKQEAgLTE2OTAsMTIgJiM0MzsxNjkwLDE0IEBAIHN0YXRpYyBpbnQgc3dhcF9kdXBfZW50cmllc19jbHVzdGVyKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzaSwKICAqIHN3YXAgY2FjaGUuCiAgKgogICogQ29udGV4dDogQ2FsbGVyIG5lZWRzIHRvIGhvbGQgdGhlIGZvbGlvIGxvY2suCi0gKiBSZXR1cm46IFdoZXRoZXIgdGhlIGZvbGlvIHdhcyBhZGRlZCB0byB0aGUgc3dhcCBjYWNoZS4KJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUUyQklHIGlmIHNwbGl0dGluZyB0aGUgZm9saW8gbWlnaHQgYWxsb3cgc3dhcG91dCwKJiM0MzsgKiBvciBhbm90aGVyIG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgc3BsaXR0aW5nIHdvdWxkIG5vdCBoZWxwLgogICovCiBpbnQgZm9saW9fYWxsb2Nfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvKQogewogCXVuc2lnbmVkIGludCBvcmRlciA9IGZvbGlvX29yZGVyKGZvbGlvKTsKIAl1bnNpZ25lZCBpbnQgc2l6ZSA9IDEgJmx0OyZsdDsgb3JkZXI7CiYjNDM7CWxvbmcgbnJfc3dhcF9wYWdlczsKIAogCVZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7CiAJVk1fQlVHX09OX0ZPTElPKCFmb2xpb190ZXN0X3VwdG9kYXRlKGZvbGlvKSwgZm9saW8pOwpAQCAtMTcwNiw3ICYjNDM7MTcwOCw3IEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJCSAqIHRoZSBjYWxsZXIgc2hvdWxkIHNwbGl0IHRoZSBmb2xpbyBhbmQgdHJ5IGFnYWluLgogCQkgKi8KIAkJaWYgKCFJU19FTkFCTEVEKENPTkZJR19USFBfU1dBUCkpCi0JCQlyZXR1cm4gLUVBR0FJTjsKJiM0MzsJCQlyZXR1cm4gLUUyQklHOwogCiAJCS8qCiAJCSAqIEFsbG9jYXRpb24gc2l6ZSBzaG91bGQgbmV2ZXIgZXhjZWVkIGNsdXN0ZXIgc2l6ZQpAQCAtMTcxNCwxMCAmIzQzOzE3MTYsMTIgQEAgaW50IGZvbGlvX2FsbG9jX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbykKIAkJICovCiAJCWlmIChzaXplICZndDsgU1dBUEZJTEVfQ0xVU1RFUikgewogCQkJVk1fV0FSTl9PTl9PTkNFKDEpOwotCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJcmV0dXJuIC1FMkJJRzsKIAkJfQogCX0KIAomIzQzOwlucl9zd2FwX3BhZ2VzID0gZ2V0X25yX3N3YXBfcGFnZXMoKTsKJiM0MzsKIGFnYWluOgogCWxvY2FsX2xvY2soJmFtcDtwZXJjcHVfc3dhcF9jbHVzdGVyLmxvY2spOwogCWlmICghc3dhcF9hbGxvY19mYXN0KGZvbGlvKSkKQEAgLTE3MzAsMTEgJiM0MzsxNzM0LDE2IEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJfQogCiAJLyogTmVlZCB0byBjYWxsIHRoaXMgZXZlbiBpZiBhbGxvY2F0aW9uIGZhaWxlZCwgZm9yIE1FTUNHX1NXQVBfRkFJTC4gKi8KLQlpZiAodW5saWtlbHkobWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoZm9saW8sIGZvbGlvLSZndDtzd2FwKSkpCiYjNDM7CWlmICh1bmxpa2VseShtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZm9saW8tJmd0O3N3YXAsCiYjNDM7CQkJCQkJJmFtcDtucl9zd2FwX3BhZ2VzKSkpIHsKIAkJc3dhcF9jYWNoZV9kZWxfZm9saW8oZm9saW8pOwomIzQzOwkJcmV0dXJuIG9yZGVyICZhbXA7JmFtcDsgbnJfc3dhcF9wYWdlcyAmZ3Q7IDAgPyAtRTJCSUcgOiAtRU5PTUVNOwomIzQzOwl9CiAKLQlpZiAodW5saWtlbHkoIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkpCi0JCXJldHVybiAtRU5PTUVNOwomIzQzOwlpZiAodW5saWtlbHkoIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkpIHsKJiM0MzsJCW5yX3N3YXBfcGFnZXMgPSBnZXRfbnJfc3dhcF9wYWdlcygpOwomIzQzOwkJcmV0dXJuIG9yZGVyICZhbXA7JmFtcDsgbnJfc3dhcF9wYWdlcyAmZ3Q7IDAgPyAtRTJCSUcgOiAtRU5PU1BDOwomIzQzOwl9CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggYmQxYjFhYTEyNTgxOWYuLjQwMzQwYTg4Zjc4ZWQ2IDEwMDY0NAotLS0gYS9tbS92bXNjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS92bXNjYW4uYwpAQCAtMTI2MCw2ICYjNDM7MTI2MCw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2hyaW5rX2ZvbGlvX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwKIAkJICovCiAJCWlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pICZhbXA7JmFtcDsgZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSAmYW1wOyZhbXA7CiAJCQkJIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkgewomIzQzOwkJCWludCByZXQ7CiYjNDM7CiAJCQlpZiAoIShzYy0mZ3Q7Z2ZwX21hc2sgJmFtcDsgX19HRlBfSU8pKQogCQkJCWdvdG8ga2VlcF9sb2NrZWQ7CiAJCQlpZiAoZm9saW9fbWF5YmVfZG1hX3Bpbm5lZChmb2xpbykpCkBAIC0xMjc4LDEwICYjNDM7MTI4MCwxMSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHNocmlua19mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsCiAJCQkJICAgIHNwbGl0X2ZvbGlvX3RvX2xpc3QoZm9saW8sIGZvbGlvX2xpc3QpKQogCQkJCQlnb3RvIGFjdGl2YXRlX2xvY2tlZDsKIAkJCX0KLQkJCWlmIChmb2xpb19hbGxvY19zd2FwKGZvbGlvKSkgewomIzQzOwkJCXJldCA9IGZvbGlvX2FsbG9jX3N3YXAoZm9saW8pOwomIzQzOwkJCWlmIChyZXQpIHsKIAkJCQlpbnQgX19tYXliZV91bnVzZWQgb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7CiAKLQkJCQlpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKQomIzQzOwkJCQlpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIHx8IHJldCAhPSAtRTJCSUcpCiAJCQkJCWdvdG8gYWN0aXZhdGVfbG9ja2VkX3NwbGl0OwogCQkJCS8qIEZhbGxiYWNrIHRvIHN3YXAgbm9ybWFsIHBhZ2VzICovCiAJCQkJaWYgKHNwbGl0X2ZvbGlvX3RvX2xpc3QoZm9saW8sIGZvbGlvX2xpc3QpKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njc0CgkJCQkJCQlvdXRwdXQ6IDEyOAoJCQkJCQkJdGhvdWdodHM6IDc2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFN3YXAgQ2hhcmdpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHN3YXAgY2hhcmdpbmcgYW5kIG1lbWNnIGludGVyYWN0aW9ucyB3aXRoaW4gYG1tL21lbWNvbnRyb2wuY2AsIGBtbS9wYWdlX2NvdW50ZXIuY2AsIGBtbS9zd2FwZmlsZS5jYCwgYW5kIGBtbS92bXNjYW4uY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgaW50cm9kdWNpbmcgdGhpcyBgcGFnZV9jb3VudGVyX21hcmdpbmAsIGFuZCB0aGVuIG1vZGlmeWluZyBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAgdG8gdGFrZSBgbnJfc3dhcF9wYWdlc2AgYW5kIGltcGxlbWVudCBhIGNhcCBiYXNlZCBvbiB0aGUgbWVtY2cgbWFyZ2luLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQgYWxzbyB0b3VjaGVzIGBmb2xpb19hbGxvY19zd2FwYCwgbWFraW5nIGl0IHJldHVybiBgLUUyQklHYCBpZiBzcGxpdHRpbmcgYSBmb2xpbyAqbWlnaHQqIGFsbG93IHN3YXBvdXQsIGFuZCB0aGVuIGBzaHJpbmtfZm9saW9fbGlzdGAgaXMgYWRqdXN0ZWQgdG8gaGFuZGxlIHRoYXQgcmV0dXJuIGFuZCBhY3R1YWxseSBzcGxpdCB0aGUgZm9saW8uCgpUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCDigJMgc3BlY2lmaWNhbGx5IGFyb3VuZCBzd2FwIGFuZCBtZW1jZyBpbnRlcmFjdGlvbi4gU2luY2UgaXQmIzM5O3MgY2hhbmdpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LCBmdXp6aW5nIGlzIGFic29sdXRlbHkgd2FycmFudGVkLgoKTGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiBJIHRoaW5rIGBwYWdlX2NvdW50ZXJfbWFyZ2luYCwgYF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXBgLCBhbmQgYGZvbGlvX2FsbG9jX3N3YXBgIGFyZSBwcmltZSB0YXJnZXRzLiBJIG1pZ2h0IGFkZCBgc2hyaW5rX2ZvbGlvX2xpc3RgIHRvIHRoZSBsaXN0LCBidXQgaXQgbWlnaHQgYmUgdG9vIGhvdCwgYW5kIGBmb2xpb19hbGxvY19zd2FwYCBzZWVtcyBtb3JlIGNydWNpYWwuCgpJJiMzOTt2ZSBhbHJlYWR5IGNoZWNrZWQgYG1tL3N3YXBmaWxlLmNgIGFuZCBgbW0vbWVtY29udHJvbC5jYCBhbmQgY29uZmlybWVkIHRob3NlIGZ1bmN0aW9ucyBhcmUgaW4gdGhlIGNvZGUuIGBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwYCBhbmQgYGZvbGlvX2FsbG9jX3N3YXBgIGxvb2sgdG8gYmUgZ29vZCwgaGlnaC12YWx1ZSBzeW1ib2xzLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlncy4gSSYjMzk7bSBzZWVpbmcgdGhhdCB3ZSYjMzk7bGwgbmVlZCBgQ09ORklHX01FTUNHYCwgYENPTkZJR19TV0FQYCwgYW5kIGBDT05GSUdfVEhQX1NXQVBgIHNpbmNlIGl0IG1lbnRpb25zIGl0IGluIGBmb2xpb19hbGxvY19zd2FwYC4KCkp1c3QgY2hlY2tlZCBgaW5jbHVkZS9saW51eC9zd2FwLmhgLCBhbmQsIGFzIGV4cGVjdGVkLCBib3RoIGBNRU1DR2AgYW5kIGBTV0FQYCBhcmUgcmVxdWlyZWQgZm9yIHRoZSBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAgZnVuY3Rpb24uIEdvb2QuCgpJbiBgbW0vc3dhcGZpbGUuY2AsIGBDT05GSUdfVEhQX1NXQVBgIGlzIHVzZWQuCgpBbHJpZ2h0LCB0aGUgbmV4dCB0aGluZyBpcyB0byBzZXQgdXAgdGhlIHJlc3VsdHMgd2l0aCB0aGUgYHNldC1yZXN1bHRzYCB0b29sLgoKU28sIFdvcnRoRnV6emluZyBpcyBkZWZpbml0ZWx5IGB0cnVlYC4KCk15IGBGb2N1c1N5bWJvbHNgIGFyZTogYHBhZ2VfY291bnRlcl9tYXJnaW5gLCBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAsIGFuZCBgZm9saW9fYWxsb2Nfc3dhcGAuCgpBbmQgdGhlIGBFbmFibGVDb25maWdzYCBhcmU6IGBNRU1DR2AsIGBTV0FQYCwgYW5kIGBUSFBfU1dBUGAuCgpUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGlzIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCBkZWFsaW5nIHdpdGggc3dhcCBjaGFyZ2luZyBhbmQgbWVtY2cgbGltaXRzLCBhbmQgaG93IGl0IGhhbmRsZXMgZm9saW9zIGFuZCBmYWxsYmFja3MgdG8gc21hbGxlciBwYWdlcy4gSXQgY2FuIGJlIGhpdCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlLgoKT2theSwgbGV0IG1lIGRvdWJsZSBjaGVjayBhZ2Fpbi4uLiBgZm9saW9fYWxsb2Nfc3dhcGAgaXMgbm90IHN0YXRpYywgbm9yIGlzIGBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwYCBvciBgcGFnZV9jb3VudGVyX21hcmdpbmAuCgpXaGlsZSBJJiMzOTttIGF0IGl0LCBJIHNob3VsZCBzZWUgaWYgYW55ICpvdGhlciogY29uZmlncyBuZWVkIHRvIGJlIGFkZGVkLiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBtaWdodCBiZSBuZWVkZWQgZm9yIGBUSFBfU1dBUGAsIGJ1dCBgVEhQX1NXQVBgIHVzdWFsbHkgZGVwZW5kcyBvbiBpdCwgc28gbGV0JiMzOTtzIGxlYXZlIGl0IGZvciBub3cuCgpOb3csIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7LAogICAgJiMzNDtTV0FQJiMzNDssCiAgICAmIzM0O1RIUF9TV0FQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFnZV9jb3VudGVyX21hcmdpbiYjMzQ7LAogICAgJiMzNDtfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwJiMzNDssCiAgICAmIzM0O2ZvbGlvX2FsbG9jX3N3YXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgZm9yIHN3YXAgY2hhcmdpbmcgYW5kIG1lbWNnIGxpbWl0cywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGxhcmdlIGZvbGlvcyBhbmQgZmFsbGJhY2sgdG8gc21hbGxlciBwYWdlcyB3aGVuIHN3YXAgc3BhY2Ugb3IgbWVtY2cgbGltaXRzIGFyZSBjb25zdHJhaW5lZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgc3dhcHBpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OywKICAgICYjMzQ7VEhQX1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWdlX2NvdW50ZXJfbWFyZ2luJiMzNDssCiAgICAmIzM0O19fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAmIzM0OywKICAgICYjMzQ7Zm9saW9fYWxsb2Nfc3dhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igc3dhcCBjaGFyZ2luZyBhbmQgbWVtY2cgbGltaXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgbGFyZ2UgZm9saW9zIGFuZCBmYWxsYmFjayB0byBzbWFsbGVyIHBhZ2VzIHdoZW4gc3dhcCBzcGFjZSBvciBtZW1jZyBsaW1pdHMgYXJlIGNvbnN0cmFpbmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlIGFuZCBzd2FwcGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjM2OjMzLjM3NDYzNDA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4NDk5MDc0OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIlNXQVBcIixcbiAgICBcIlRIUF9TV0FQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFnZV9jb3VudGVyX21hcmdpblwiLFxuICAgIFwiX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcFwiLFxuICAgIFwiZm9saW9fYWxsb2Nfc3dhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGZvciBzd2FwIGNoYXJnaW5nIGFuZCBtZW1jZyBsaW1pdHMsIHNwZWNpZmljYWxseSBoYW5kbGluZyBsYXJnZSBmb2xpb3MgYW5kIGZhbGxiYWNrIHRvIHNtYWxsZXIgcGFnZXMgd2hlbiBzd2FwIHNwYWNlIG9yIG1lbWNnIGxpbWl0cyBhcmUgY29uc3RyYWluZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIHN3YXBwaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMTozNjozMy4zNzQ2NDAzNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMzM2NzA2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVjNjYxNjdiNzI0ZjhmOGFiNGVhY2FiNDU3Y2MyNTJjZThhNjMxNjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTE6MzY6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaCBiL2luY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmhcXG5pbmRleCBkNjQ5YjZiYmJjODcxYi4uMDdiN2NiMTIyNDljN2MgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmhcXG5AQCAtNjgsNiArNjgsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcGFnZV9jb3VudGVyX3JlYWQoc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcilcXG4gXFx0cmV0dXJuIGF0b21pY19sb25nX3JlYWQoXFx1MDAyNmNvdW50ZXItXFx1MDAzZXVzYWdlKTtcXG4gfVxcbiBcXG4rbG9uZyBwYWdlX2NvdW50ZXJfbWFyZ2luKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIpO1xcbiB2b2lkIHBhZ2VfY291bnRlcl9jYW5jZWwoc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlciwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyk7XFxuIHZvaWQgcGFnZV9jb3VudGVyX2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcXG4gYm9vbCBwYWdlX2NvdW50ZXJfdHJ5X2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N3YXAuaCBiL2luY2x1ZGUvbGludXgvc3dhcC5oXFxuaW5kZXggN2EwOWRmNjk3N2E1ZjMuLjA2OTVhYzU2NDU3ZmY3IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvc3dhcC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zd2FwLmhcXG5AQCAtNTcxLDEzICs1NzEsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcClcXG4gI2VuZGlmXFxuIFxcbiAjaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1NXQVApXFxuLWludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KTtcXG4raW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnksXFxuK1xcdFxcdFxcdFxcdCBsb25nICpucl9zd2FwX3BhZ2VzKTtcXG4gc3RhdGljIGlubGluZSBpbnQgbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tXFx0XFx0c3dwX2VudHJ5X3QgZW50cnkpXFxuK1xcdFxcdHN3cF9lbnRyeV90IGVudHJ5LCBsb25nICpucl9zd2FwX3BhZ2VzKVxcbiB7XFxuIFxcdGlmIChtZW1fY2dyb3VwX2Rpc2FibGVkKCkpXFxuIFxcdFxcdHJldHVybiAwO1xcbi1cXHRyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnkpO1xcbitcXHRyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnksIG5yX3N3YXBfcGFnZXMpO1xcbiB9XFxuIFxcbiBleHRlcm4gdm9pZCBfX21lbV9jZ3JvdXBfdW5jaGFyZ2Vfc3dhcChzd3BfZW50cnlfdCBlbnRyeSwgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTtcXG5AQCAtNTkyLDcgKzU5Myw4IEBAIGV4dGVybiBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKTtcXG4gZXh0ZXJuIGJvb2wgbWVtX2Nncm91cF9zd2FwX2Z1bGwoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxuICNlbHNlXFxuIHN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgc3dwX2VudHJ5X3QgZW50cnkpXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgc3dwX2VudHJ5X3QgZW50cnksXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgbG9uZyAqbnJfc3dhcF9wYWdlcylcXG4ge1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmNcXG5pbmRleCAxNzc3MzJmZWYwMTBiYy4uNzE2MDBkNDE5NThlZjcgMTAwNjQ0XFxuLS0tIGEvbW0vbWVtY29udHJvbC5jXFxuKysrIGIvbW0vbWVtY29udHJvbC5jXFxuQEAgLTU0NzIsMTIgKzU0NzIsMTQgQEAgaW50IF9faW5pdCBtZW1fY2dyb3VwX2luaXQodm9pZClcXG4gICogX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcCAtIHRyeSBjaGFyZ2luZyBzd2FwIHNwYWNlIGZvciBhIGZvbGlvXFxuICAqIEBmb2xpbzogZm9saW8gYmVpbmcgYWRkZWQgdG8gc3dhcFxcbiAgKiBAZW50cnk6IHN3YXAgZW50cnkgdG8gY2hhcmdlXFxuKyAqIEBucl9zd2FwX3BhZ2VzOiBvcHRpb25hbCBzd2FwIGF2YWlsYWJpbGl0eSB0byBjYXAgYnkgbWVtY2cgbWFyZ2luXFxuICAqXFxuICAqIFRyeSB0byBjaGFyZ2UgQGZvbGlvJ3MgbWVtY2cgZm9yIHRoZSBzd2FwIHNwYWNlIGF0IEBlbnRyeS5cXG4gICpcXG4gICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1FTk9NRU0gb24gZmFpbHVyZS5cXG4gICovXFxuLWludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KVxcbitpbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcXG4rXFx0XFx0XFx0XFx0IGxvbmcgKm5yX3N3YXBfcGFnZXMpXFxuIHtcXG4gXFx0dW5zaWduZWQgaW50IG5yX3BhZ2VzID0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xcbiBcXHRzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyO1xcbkBAIC01NDk1LDYgKzU0OTcsOSBAQCBpbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSlcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRtZW1jZyA9IG9ial9jZ3JvdXBfbWVtY2cob2JqY2cpO1xcbiBcXHRpZiAoIWVudHJ5LnZhbCkge1xcbitcXHRcXHRpZiAobnJfc3dhcF9wYWdlcyBcXHUwMDI2XFx1MDAyNiAhbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcXG4rXFx0XFx0XFx0Km5yX3N3YXBfcGFnZXMgPSBtaW4oKm5yX3N3YXBfcGFnZXMsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgcGFnZV9jb3VudGVyX21hcmdpbihcXHUwMDI2bWVtY2ctXFx1MDAzZXN3YXApKTtcXG4gXFx0XFx0bWVtY2dfbWVtb3J5X2V2ZW50KG1lbWNnLCBNRU1DR19TV0FQX0ZBSUwpO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuQEAgLTU1MDksNiArNTUxNCw5IEBAIGludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KVxcbiBcXHRcXHRtZW1jZ19tZW1vcnlfZXZlbnQobWVtY2csIE1FTUNHX1NXQVBfTUFYKTtcXG4gXFx0XFx0bWVtY2dfbWVtb3J5X2V2ZW50KG1lbWNnLCBNRU1DR19TV0FQX0ZBSUwpO1xcbiBcXHRcXHRtZW1fY2dyb3VwX3ByaXZhdGVfaWRfcHV0KG1lbWNnLCBucl9wYWdlcyk7XFxuK1xcdFxcdGlmIChucl9zd2FwX3BhZ2VzKVxcbitcXHRcXHRcXHQqbnJfc3dhcF9wYWdlcyA9IG1pbigqbnJfc3dhcF9wYWdlcyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBwYWdlX2NvdW50ZXJfbWFyZ2luKGNvdW50ZXIpKTtcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdH1cXG4gXFx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19TV0FQLCBucl9wYWdlcyk7XFxuQEAgLTU1NTAsMTAgKzU1NTgsNyBAQCBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbiBcXG4gXFx0aWYgKG1lbV9jZ3JvdXBfZGlzYWJsZWQoKSB8fCBkb19tZW1zd19hY2NvdW50KCkpXFxuIFxcdFxcdHJldHVybiBucl9zd2FwX3BhZ2VzO1xcbi1cXHRmb3IgKDsgIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZyk7IG1lbWNnID0gcGFyZW50X21lbV9jZ3JvdXAobWVtY2cpKVxcbi1cXHRcXHRucl9zd2FwX3BhZ2VzID0gbWluX3QobG9uZywgbnJfc3dhcF9wYWdlcyxcXG4tXFx0XFx0XFx0XFx0ICAgICAgUkVBRF9PTkNFKG1lbWNnLVxcdTAwM2Vzd2FwLm1heCkgLVxcbi1cXHRcXHRcXHRcXHQgICAgICBwYWdlX2NvdW50ZXJfcmVhZChcXHUwMDI2bWVtY2ctXFx1MDAzZXN3YXApKTtcXG4rXFx0bnJfc3dhcF9wYWdlcyA9IG1pbihucl9zd2FwX3BhZ2VzLCBwYWdlX2NvdW50ZXJfbWFyZ2luKFxcdTAwMjZtZW1jZy1cXHUwMDNlc3dhcCkpO1xcbiBcXHRyZXR1cm4gbnJfc3dhcF9wYWdlcztcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV9jb3VudGVyLmMgYi9tbS9wYWdlX2NvdW50ZXIuY1xcbmluZGV4IDY2MWUwZjJhNTEyN2E1Li42ZTU1Yzc2MjgwMjVmMyAxMDA2NDRcXG4tLS0gYS9tbS9wYWdlX2NvdW50ZXIuY1xcbisrKyBiL21tL3BhZ2VfY291bnRlci5jXFxuQEAgLTE3MSw2ICsxNzEsMjYgQEAgYm9vbCBwYWdlX2NvdW50ZXJfdHJ5X2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLFxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBwYWdlX2NvdW50ZXJfbWFyZ2luIC0gcmVtYWluaW5nIGNoYXJnZWFibGUgcGFnZXMgd2l0aGluIGhpZXJhcmNoaWNhbCBsaW1pdHNcXG4rICogQGNvdW50ZXI6IGNvdW50ZXJcXG4rICpcXG4rICogUmV0dXJucyB0aGUgc21hbGxlc3QgcmVtYWluaW5nIG1hcmdpbiBiZXR3ZWVuIEBjb3VudGVyIGFuZCB0aGUgcm9vdC5cXG4rICovXFxuK2xvbmcgcGFnZV9jb3VudGVyX21hcmdpbihzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKVxcbit7XFxuK1xcdGxvbmcgbWFyZ2luID0gUEFHRV9DT1VOVEVSX01BWDtcXG4rXFxuK1xcdGZvciAoOyBjb3VudGVyOyBjb3VudGVyID0gY291bnRlci1cXHUwMDNlcGFyZW50KSB7XFxuK1xcdFxcdGxvbmcgbGltaXQgPSBSRUFEX09OQ0UoY291bnRlci1cXHUwMDNlbWF4KTtcXG4rXFx0XFx0bG9uZyB1c2FnZSA9IHBhZ2VfY291bnRlcl9yZWFkKGNvdW50ZXIpO1xcbitcXG4rXFx0XFx0bWFyZ2luID0gbWluKG1hcmdpbiwgbGltaXQgLSB1c2FnZSk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBtYXJnaW47XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBwYWdlX2NvdW50ZXJfdW5jaGFyZ2UgLSBoaWVyYXJjaGljYWxseSB1bmNoYXJnZSBwYWdlc1xcbiAgKiBAY291bnRlcjogY291bnRlclxcbmRpZmYgLS1naXQgYS9tbS9zd2FwZmlsZS5jIGIvbW0vc3dhcGZpbGUuY1xcbmluZGV4IDkxNzRmMWVlZmZiMDkxLi41M2E5MjFjYTA5OWFlZCAxMDA2NDRcXG4tLS0gYS9tbS9zd2FwZmlsZS5jXFxuKysrIGIvbW0vc3dhcGZpbGUuY1xcbkBAIC0xNjkwLDEyICsxNjkwLDE0IEBAIHN0YXRpYyBpbnQgc3dhcF9kdXBfZW50cmllc19jbHVzdGVyKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzaSxcXG4gICogc3dhcCBjYWNoZS5cXG4gICpcXG4gICogQ29udGV4dDogQ2FsbGVyIG5lZWRzIHRvIGhvbGQgdGhlIGZvbGlvIGxvY2suXFxuLSAqIFJldHVybjogV2hldGhlciB0aGUgZm9saW8gd2FzIGFkZGVkIHRvIHRoZSBzd2FwIGNhY2hlLlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUUyQklHIGlmIHNwbGl0dGluZyB0aGUgZm9saW8gbWlnaHQgYWxsb3cgc3dhcG91dCxcXG4rICogb3IgYW5vdGhlciBuZWdhdGl2ZSBlcnJvciBjb2RlIGlmIHNwbGl0dGluZyB3b3VsZCBub3QgaGVscC5cXG4gICovXFxuIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIHtcXG4gXFx0dW5zaWduZWQgaW50IG9yZGVyID0gZm9saW9fb3JkZXIoZm9saW8pO1xcbiBcXHR1bnNpZ25lZCBpbnQgc2l6ZSA9IDEgXFx1MDAzY1xcdTAwM2Mgb3JkZXI7XFxuK1xcdGxvbmcgbnJfc3dhcF9wYWdlcztcXG4gXFxuIFxcdFZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7XFxuIFxcdFZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbyksIGZvbGlvKTtcXG5AQCAtMTcwNiw3ICsxNzA4LDcgQEAgaW50IGZvbGlvX2FsbG9jX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbylcXG4gXFx0XFx0ICogdGhlIGNhbGxlciBzaG91bGQgc3BsaXQgdGhlIGZvbGlvIGFuZCB0cnkgYWdhaW4uXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1RIUF9TV0FQKSlcXG4tXFx0XFx0XFx0cmV0dXJuIC1FQUdBSU47XFxuK1xcdFxcdFxcdHJldHVybiAtRTJCSUc7XFxuIFxcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBBbGxvY2F0aW9uIHNpemUgc2hvdWxkIG5ldmVyIGV4Y2VlZCBjbHVzdGVyIHNpemVcXG5AQCAtMTcxNCwxMCArMTcxNiwxMiBAQCBpbnQgZm9saW9fYWxsb2Nfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKHNpemUgXFx1MDAzZSBTV0FQRklMRV9DTFVTVEVSKSB7XFxuIFxcdFxcdFxcdFZNX1dBUk5fT05fT05DRSgxKTtcXG4tXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdFxcdHJldHVybiAtRTJCSUc7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4rXFx0bnJfc3dhcF9wYWdlcyA9IGdldF9ucl9zd2FwX3BhZ2VzKCk7XFxuK1xcbiBhZ2FpbjpcXG4gXFx0bG9jYWxfbG9jayhcXHUwMDI2cGVyY3B1X3N3YXBfY2x1c3Rlci5sb2NrKTtcXG4gXFx0aWYgKCFzd2FwX2FsbG9jX2Zhc3QoZm9saW8pKVxcbkBAIC0xNzMwLDExICsxNzM0LDE2IEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIFxcdH1cXG4gXFxuIFxcdC8qIE5lZWQgdG8gY2FsbCB0aGlzIGV2ZW4gaWYgYWxsb2NhdGlvbiBmYWlsZWQsIGZvciBNRU1DR19TV0FQX0ZBSUwuICovXFxuLVxcdGlmICh1bmxpa2VseShtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZm9saW8tXFx1MDAzZXN3YXApKSlcXG4rXFx0aWYgKHVubGlrZWx5KG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKGZvbGlvLCBmb2xpby1cXHUwMDNlc3dhcCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNm5yX3N3YXBfcGFnZXMpKSkge1xcbiBcXHRcXHRzd2FwX2NhY2hlX2RlbF9mb2xpbyhmb2xpbyk7XFxuK1xcdFxcdHJldHVybiBvcmRlciBcXHUwMDI2XFx1MDAyNiBucl9zd2FwX3BhZ2VzIFxcdTAwM2UgMCA/IC1FMkJJRyA6IC1FTk9NRU07XFxuK1xcdH1cXG4gXFxuLVxcdGlmICh1bmxpa2VseSghZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKSlcXG4tXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdGlmICh1bmxpa2VseSghZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKSkge1xcbitcXHRcXHRucl9zd2FwX3BhZ2VzID0gZ2V0X25yX3N3YXBfcGFnZXMoKTtcXG4rXFx0XFx0cmV0dXJuIG9yZGVyIFxcdTAwMjZcXHUwMDI2IG5yX3N3YXBfcGFnZXMgXFx1MDAzZSAwID8gLUUyQklHIDogLUVOT1NQQztcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xcbmluZGV4IGJkMWIxYWExMjU4MTlmLi40MDM0MGE4OGY3OGVkNiAxMDA2NDRcXG4tLS0gYS9tbS92bXNjYW4uY1xcbisrKyBiL21tL3Ztc2Nhbi5jXFxuQEAgLTEyNjAsNiArMTI2MCw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2hyaW5rX2ZvbGlvX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCxcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3Rfc3dhcGJhY2tlZChmb2xpbykgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0IWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkge1xcbitcXHRcXHRcXHRpbnQgcmV0O1xcbitcXG4gXFx0XFx0XFx0aWYgKCEoc2MtXFx1MDAzZWdmcF9tYXNrIFxcdTAwMjYgX19HRlBfSU8pKVxcbiBcXHRcXHRcXHRcXHRnb3RvIGtlZXBfbG9ja2VkO1xcbiBcXHRcXHRcXHRpZiAoZm9saW9fbWF5YmVfZG1hX3Bpbm5lZChmb2xpbykpXFxuQEAgLTEyNzgsMTAgKzEyODAsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzaHJpbmtfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxcbiBcXHRcXHRcXHRcXHQgICAgc3BsaXRfZm9saW9fdG9fbGlzdChmb2xpbywgZm9saW9fbGlzdCkpXFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gYWN0aXZhdGVfbG9ja2VkO1xcbiBcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdGlmIChmb2xpb19hbGxvY19zd2FwKGZvbGlvKSkge1xcbitcXHRcXHRcXHRyZXQgPSBmb2xpb19hbGxvY19zd2FwKGZvbGlvKTtcXG4rXFx0XFx0XFx0aWYgKHJldCkge1xcbiBcXHRcXHRcXHRcXHRpbnQgX19tYXliZV91bnVzZWQgb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XFxuIFxcbi1cXHRcXHRcXHRcXHRpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKVxcbitcXHRcXHRcXHRcXHRpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIHx8IHJldCAhPSAtRTJCSUcpXFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gYWN0aXZhdGVfbG9ja2VkX3NwbGl0O1xcbiBcXHRcXHRcXHRcXHQvKiBGYWxsYmFjayB0byBzd2FwIG5vcm1hbCBwYWdlcyAqL1xcbiBcXHRcXHRcXHRcXHRpZiAoc3BsaXRfZm9saW9fdG9fbGlzdChmb2xpbywgZm9saW9fbGlzdCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjM2OjM0LjM4ODk4Mjk3MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4MzU1NDk3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIlNXQVBcIixcbiAgICBcIlRIUF9TV0FQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFnZV9jb3VudGVyX21hcmdpblwiLFxuICAgIFwiX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcFwiLFxuICAgIFwiZm9saW9fYWxsb2Nfc3dhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGZvciBzd2FwIGNoYXJnaW5nIGFuZCBtZW1jZyBsaW1pdHMsIHNwZWNpZmljYWxseSBoYW5kbGluZyBsYXJnZSBmb2xpb3MgYW5kIGZhbGxiYWNrIHRvIHNtYWxsZXIgcGFnZXMgd2hlbiBzd2FwIHNwYWNlIG9yIG1lbWNnIGxpbWl0cyBhcmUgY29uc3RyYWluZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIHN3YXBwaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVjNjYxNjdiNzI0ZjhmOGFiNGVhY2FiNDU3Y2MyNTJjZThhNjMxNjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMTozNjozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmggYi9pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oXG5pbmRleCBkNjQ5YjZiYmJjODcxYi4uMDdiN2NiMTIyNDljN2MgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oXG5AQCAtNjgsNiArNjgsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcGFnZV9jb3VudGVyX3JlYWQoc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcilcbiBcdHJldHVybiBhdG9taWNfbG9uZ19yZWFkKFx1MDAyNmNvdW50ZXItXHUwMDNldXNhZ2UpO1xuIH1cbiBcbitsb25nIHBhZ2VfY291bnRlcl9tYXJnaW4oc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcik7XG4gdm9pZCBwYWdlX2NvdW50ZXJfY2FuY2VsKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpO1xuIHZvaWQgcGFnZV9jb3VudGVyX2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcbiBib29sIHBhZ2VfY291bnRlcl90cnlfY2hhcmdlKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zd2FwLmggYi9pbmNsdWRlL2xpbnV4L3N3YXAuaFxuaW5kZXggN2EwOWRmNjk3N2E1ZjMuLjA2OTVhYzU2NDU3ZmY3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zd2FwLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc3dhcC5oXG5AQCAtNTcxLDEzICs1NzEsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcClcbiAjZW5kaWZcbiBcbiAjaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19TV0FQKVxuLWludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KTtcbitpbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcbitcdFx0XHRcdCBsb25nICpucl9zd2FwX3BhZ2VzKTtcbiBzdGF0aWMgaW5saW5lIGludCBtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLVx0XHRzd3BfZW50cnlfdCBlbnRyeSlcbitcdFx0c3dwX2VudHJ5X3QgZW50cnksIGxvbmcgKm5yX3N3YXBfcGFnZXMpXG4ge1xuIFx0aWYgKG1lbV9jZ3JvdXBfZGlzYWJsZWQoKSlcbiBcdFx0cmV0dXJuIDA7XG4tXHRyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnkpO1xuK1x0cmV0dXJuIF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoZm9saW8sIGVudHJ5LCBucl9zd2FwX3BhZ2VzKTtcbiB9XG4gXG4gZXh0ZXJuIHZvaWQgX19tZW1fY2dyb3VwX3VuY2hhcmdlX3N3YXAoc3dwX2VudHJ5X3QgZW50cnksIHVuc2lnbmVkIGludCBucl9wYWdlcyk7XG5AQCAtNTkyLDcgKzU5Myw4IEBAIGV4dGVybiBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKTtcbiBleHRlcm4gYm9vbCBtZW1fY2dyb3VwX3N3YXBfZnVsbChzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tXHRcdFx0XHRcdCAgICAgc3dwX2VudHJ5X3QgZW50cnkpXG4rXHRcdFx0XHRcdCAgICAgc3dwX2VudHJ5X3QgZW50cnksXG4rXHRcdFx0XHRcdCAgICAgbG9uZyAqbnJfc3dhcF9wYWdlcylcbiB7XG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jXG5pbmRleCAxNzc3MzJmZWYwMTBiYy4uNzE2MDBkNDE5NThlZjcgMTAwNjQ0XG4tLS0gYS9tbS9tZW1jb250cm9sLmNcbisrKyBiL21tL21lbWNvbnRyb2wuY1xuQEAgLTU0NzIsMTIgKzU0NzIsMTQgQEAgaW50IF9faW5pdCBtZW1fY2dyb3VwX2luaXQodm9pZClcbiAgKiBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwIC0gdHJ5IGNoYXJnaW5nIHN3YXAgc3BhY2UgZm9yIGEgZm9saW9cbiAgKiBAZm9saW86IGZvbGlvIGJlaW5nIGFkZGVkIHRvIHN3YXBcbiAgKiBAZW50cnk6IHN3YXAgZW50cnkgdG8gY2hhcmdlXG4rICogQG5yX3N3YXBfcGFnZXM6IG9wdGlvbmFsIHN3YXAgYXZhaWxhYmlsaXR5IHRvIGNhcCBieSBtZW1jZyBtYXJnaW5cbiAgKlxuICAqIFRyeSB0byBjaGFyZ2UgQGZvbGlvJ3MgbWVtY2cgZm9yIHRoZSBzd2FwIHNwYWNlIGF0IEBlbnRyeS5cbiAgKlxuICAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtRU5PTUVNIG9uIGZhaWx1cmUuXG4gICovXG4taW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpXG4raW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnksXG4rXHRcdFx0XHQgbG9uZyAqbnJfc3dhcF9wYWdlcylcbiB7XG4gXHR1bnNpZ25lZCBpbnQgbnJfcGFnZXMgPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG4gXHRzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyO1xuQEAgLTU0OTUsNiArNTQ5Nyw5IEBAIGludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KVxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0bWVtY2cgPSBvYmpfY2dyb3VwX21lbWNnKG9iamNnKTtcbiBcdGlmICghZW50cnkudmFsKSB7XG4rXHRcdGlmIChucl9zd2FwX3BhZ2VzIFx1MDAyNlx1MDAyNiAhbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcbitcdFx0XHQqbnJfc3dhcF9wYWdlcyA9IG1pbigqbnJfc3dhcF9wYWdlcyxcbitcdFx0XHRcdFx0ICAgICBwYWdlX2NvdW50ZXJfbWFyZ2luKFx1MDAyNm1lbWNnLVx1MDAzZXN3YXApKTtcbiBcdFx0bWVtY2dfbWVtb3J5X2V2ZW50KG1lbWNnLCBNRU1DR19TV0FQX0ZBSUwpO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdFx0cmV0dXJuIDA7XG5AQCAtNTUwOSw2ICs1NTE0LDkgQEAgaW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpXG4gXHRcdG1lbWNnX21lbW9yeV9ldmVudChtZW1jZywgTUVNQ0dfU1dBUF9NQVgpO1xuIFx0XHRtZW1jZ19tZW1vcnlfZXZlbnQobWVtY2csIE1FTUNHX1NXQVBfRkFJTCk7XG4gXHRcdG1lbV9jZ3JvdXBfcHJpdmF0ZV9pZF9wdXQobWVtY2csIG5yX3BhZ2VzKTtcbitcdFx0aWYgKG5yX3N3YXBfcGFnZXMpXG4rXHRcdFx0Km5yX3N3YXBfcGFnZXMgPSBtaW4oKm5yX3N3YXBfcGFnZXMsXG4rXHRcdFx0XHRcdCAgICAgcGFnZV9jb3VudGVyX21hcmdpbihjb3VudGVyKSk7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19TV0FQLCBucl9wYWdlcyk7XG5AQCAtNTU1MCwxMCArNTU1OCw3IEBAIGxvbmcgbWVtX2Nncm91cF9nZXRfbnJfc3dhcF9wYWdlcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4gXG4gXHRpZiAobWVtX2Nncm91cF9kaXNhYmxlZCgpIHx8IGRvX21lbXN3X2FjY291bnQoKSlcbiBcdFx0cmV0dXJuIG5yX3N3YXBfcGFnZXM7XG4tXHRmb3IgKDsgIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZyk7IG1lbWNnID0gcGFyZW50X21lbV9jZ3JvdXAobWVtY2cpKVxuLVx0XHRucl9zd2FwX3BhZ2VzID0gbWluX3QobG9uZywgbnJfc3dhcF9wYWdlcyxcbi1cdFx0XHRcdCAgICAgIFJFQURfT05DRShtZW1jZy1cdTAwM2Vzd2FwLm1heCkgLVxuLVx0XHRcdFx0ICAgICAgcGFnZV9jb3VudGVyX3JlYWQoXHUwMDI2bWVtY2ctXHUwMDNlc3dhcCkpO1xuK1x0bnJfc3dhcF9wYWdlcyA9IG1pbihucl9zd2FwX3BhZ2VzLCBwYWdlX2NvdW50ZXJfbWFyZ2luKFx1MDAyNm1lbWNnLVx1MDAzZXN3YXApKTtcbiBcdHJldHVybiBucl9zd2FwX3BhZ2VzO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2NvdW50ZXIuYyBiL21tL3BhZ2VfY291bnRlci5jXG5pbmRleCA2NjFlMGYyYTUxMjdhNS4uNmU1NWM3NjI4MDI1ZjMgMTAwNjQ0XG4tLS0gYS9tbS9wYWdlX2NvdW50ZXIuY1xuKysrIGIvbW0vcGFnZV9jb3VudGVyLmNcbkBAIC0xNzEsNiArMTcxLDI2IEBAIGJvb2wgcGFnZV9jb3VudGVyX3RyeV9jaGFyZ2Uoc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcixcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4rLyoqXG4rICogcGFnZV9jb3VudGVyX21hcmdpbiAtIHJlbWFpbmluZyBjaGFyZ2VhYmxlIHBhZ2VzIHdpdGhpbiBoaWVyYXJjaGljYWwgbGltaXRzXG4rICogQGNvdW50ZXI6IGNvdW50ZXJcbisgKlxuKyAqIFJldHVybnMgdGhlIHNtYWxsZXN0IHJlbWFpbmluZyBtYXJnaW4gYmV0d2VlbiBAY291bnRlciBhbmQgdGhlIHJvb3QuXG4rICovXG4rbG9uZyBwYWdlX2NvdW50ZXJfbWFyZ2luKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIpXG4re1xuK1x0bG9uZyBtYXJnaW4gPSBQQUdFX0NPVU5URVJfTUFYO1xuK1xuK1x0Zm9yICg7IGNvdW50ZXI7IGNvdW50ZXIgPSBjb3VudGVyLVx1MDAzZXBhcmVudCkge1xuK1x0XHRsb25nIGxpbWl0ID0gUkVBRF9PTkNFKGNvdW50ZXItXHUwMDNlbWF4KTtcbitcdFx0bG9uZyB1c2FnZSA9IHBhZ2VfY291bnRlcl9yZWFkKGNvdW50ZXIpO1xuK1xuK1x0XHRtYXJnaW4gPSBtaW4obWFyZ2luLCBsaW1pdCAtIHVzYWdlKTtcbitcdH1cbitcbitcdHJldHVybiBtYXJnaW47XG4rfVxuK1xuIC8qKlxuICAqIHBhZ2VfY291bnRlcl91bmNoYXJnZSAtIGhpZXJhcmNoaWNhbGx5IHVuY2hhcmdlIHBhZ2VzXG4gICogQGNvdW50ZXI6IGNvdW50ZXJcbmRpZmYgLS1naXQgYS9tbS9zd2FwZmlsZS5jIGIvbW0vc3dhcGZpbGUuY1xuaW5kZXggOTE3NGYxZWVmZmIwOTEuLjUzYTkyMWNhMDk5YWVkIDEwMDY0NFxuLS0tIGEvbW0vc3dhcGZpbGUuY1xuKysrIGIvbW0vc3dhcGZpbGUuY1xuQEAgLTE2OTAsMTIgKzE2OTAsMTQgQEAgc3RhdGljIGludCBzd2FwX2R1cF9lbnRyaWVzX2NsdXN0ZXIoc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpLFxuICAqIHN3YXAgY2FjaGUuXG4gICpcbiAgKiBDb250ZXh0OiBDYWxsZXIgbmVlZHMgdG8gaG9sZCB0aGUgZm9saW8gbG9jay5cbi0gKiBSZXR1cm46IFdoZXRoZXIgdGhlIGZvbGlvIHdhcyBhZGRlZCB0byB0aGUgc3dhcCBjYWNoZS5cbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUUyQklHIGlmIHNwbGl0dGluZyB0aGUgZm9saW8gbWlnaHQgYWxsb3cgc3dhcG91dCxcbisgKiBvciBhbm90aGVyIG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgc3BsaXR0aW5nIHdvdWxkIG5vdCBoZWxwLlxuICAqL1xuIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4ge1xuIFx0dW5zaWduZWQgaW50IG9yZGVyID0gZm9saW9fb3JkZXIoZm9saW8pO1xuIFx0dW5zaWduZWQgaW50IHNpemUgPSAxIFx1MDAzY1x1MDAzYyBvcmRlcjtcbitcdGxvbmcgbnJfc3dhcF9wYWdlcztcbiBcbiBcdFZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7XG4gXHRWTV9CVUdfT05fRk9MSU8oIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pLCBmb2xpbyk7XG5AQCAtMTcwNiw3ICsxNzA4LDcgQEAgaW50IGZvbGlvX2FsbG9jX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdFx0ICogdGhlIGNhbGxlciBzaG91bGQgc3BsaXQgdGhlIGZvbGlvIGFuZCB0cnkgYWdhaW4uXG4gXHRcdCAqL1xuIFx0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1RIUF9TV0FQKSlcbi1cdFx0XHRyZXR1cm4gLUVBR0FJTjtcbitcdFx0XHRyZXR1cm4gLUUyQklHO1xuIFxuIFx0XHQvKlxuIFx0XHQgKiBBbGxvY2F0aW9uIHNpemUgc2hvdWxkIG5ldmVyIGV4Y2VlZCBjbHVzdGVyIHNpemVcbkBAIC0xNzE0LDEwICsxNzE2LDEyIEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4gXHRcdCAqL1xuIFx0XHRpZiAoc2l6ZSBcdTAwM2UgU1dBUEZJTEVfQ0xVU1RFUikge1xuIFx0XHRcdFZNX1dBUk5fT05fT05DRSgxKTtcbi1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHRyZXR1cm4gLUUyQklHO1xuIFx0XHR9XG4gXHR9XG4gXG4rXHRucl9zd2FwX3BhZ2VzID0gZ2V0X25yX3N3YXBfcGFnZXMoKTtcbitcbiBhZ2FpbjpcbiBcdGxvY2FsX2xvY2soXHUwMDI2cGVyY3B1X3N3YXBfY2x1c3Rlci5sb2NrKTtcbiBcdGlmICghc3dhcF9hbGxvY19mYXN0KGZvbGlvKSlcbkBAIC0xNzMwLDExICsxNzM0LDE2IEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4gXHR9XG4gXG4gXHQvKiBOZWVkIHRvIGNhbGwgdGhpcyBldmVuIGlmIGFsbG9jYXRpb24gZmFpbGVkLCBmb3IgTUVNQ0dfU1dBUF9GQUlMLiAqL1xuLVx0aWYgKHVubGlrZWx5KG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKGZvbGlvLCBmb2xpby1cdTAwM2Vzd2FwKSkpXG4rXHRpZiAodW5saWtlbHkobWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoZm9saW8sIGZvbGlvLVx1MDAzZXN3YXAsXG4rXHRcdFx0XHRcdFx0XHUwMDI2bnJfc3dhcF9wYWdlcykpKSB7XG4gXHRcdHN3YXBfY2FjaGVfZGVsX2ZvbGlvKGZvbGlvKTtcbitcdFx0cmV0dXJuIG9yZGVyIFx1MDAyNlx1MDAyNiBucl9zd2FwX3BhZ2VzIFx1MDAzZSAwID8gLUUyQklHIDogLUVOT01FTTtcbitcdH1cbiBcbi1cdGlmICh1bmxpa2VseSghZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKSlcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4rXHRpZiAodW5saWtlbHkoIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkpIHtcbitcdFx0bnJfc3dhcF9wYWdlcyA9IGdldF9ucl9zd2FwX3BhZ2VzKCk7XG4rXHRcdHJldHVybiBvcmRlciBcdTAwMjZcdTAwMjYgbnJfc3dhcF9wYWdlcyBcdTAwM2UgMCA/IC1FMkJJRyA6IC1FTk9TUEM7XG4rXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xuaW5kZXggYmQxYjFhYTEyNTgxOWYuLjQwMzQwYTg4Zjc4ZWQ2IDEwMDY0NFxuLS0tIGEvbW0vdm1zY2FuLmNcbisrKyBiL21tL3Ztc2Nhbi5jXG5AQCAtMTI2MCw2ICsxMjYwLDggQEAgc3RhdGljIHVuc2lnbmVkIGludCBzaHJpbmtfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxuIFx0XHQgKi9cbiBcdFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3Rfc3dhcGJhY2tlZChmb2xpbykgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQhZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKSB7XG4rXHRcdFx0aW50IHJldDtcbitcbiBcdFx0XHRpZiAoIShzYy1cdTAwM2VnZnBfbWFzayBcdTAwMjYgX19HRlBfSU8pKVxuIFx0XHRcdFx0Z290byBrZWVwX2xvY2tlZDtcbiBcdFx0XHRpZiAoZm9saW9fbWF5YmVfZG1hX3Bpbm5lZChmb2xpbykpXG5AQCAtMTI3OCwxMCArMTI4MCwxMSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHNocmlua19mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsXG4gXHRcdFx0XHQgICAgc3BsaXRfZm9saW9fdG9fbGlzdChmb2xpbywgZm9saW9fbGlzdCkpXG4gXHRcdFx0XHRcdGdvdG8gYWN0aXZhdGVfbG9ja2VkO1xuIFx0XHRcdH1cbi1cdFx0XHRpZiAoZm9saW9fYWxsb2Nfc3dhcChmb2xpbykpIHtcbitcdFx0XHRyZXQgPSBmb2xpb19hbGxvY19zd2FwKGZvbGlvKTtcbitcdFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0XHRpbnQgX19tYXliZV91bnVzZWQgb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XG4gXG4tXHRcdFx0XHRpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKVxuK1x0XHRcdFx0aWYgKCFmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSB8fCByZXQgIT0gLUUyQklHKVxuIFx0XHRcdFx0XHRnb3RvIGFjdGl2YXRlX2xvY2tlZF9zcGxpdDtcbiBcdFx0XHRcdC8qIEZhbGxiYWNrIHRvIHN3YXAgbm9ybWFsIHBhZ2VzICovXG4gXHRcdFx0XHRpZiAoc3BsaXRfZm9saW9fdG9fbGlzdChmb2xpbywgZm9saW9fbGlzdCkpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMTozNjozNC4zODg5ODQ4NzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDU5NzQ4MTc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN3YXAgQ2hhcmdpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBzd2FwIGNoYXJnaW5nIGFuZCBtZW1jZyBpbnRlcmFjdGlvbnMgd2l0aGluIGBtbS9tZW1jb250cm9sLmNgLCBgbW0vcGFnZV9jb3VudGVyLmNgLCBgbW0vc3dhcGZpbGUuY2AsIGFuZCBgbW0vdm1zY2FuLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgdGhpcyBgcGFnZV9jb3VudGVyX21hcmdpbmAsIGFuZCB0aGVuIG1vZGlmeWluZyBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAgdG8gdGFrZSBgbnJfc3dhcF9wYWdlc2AgYW5kIGltcGxlbWVudCBhIGNhcCBiYXNlZCBvbiB0aGUgbWVtY2cgbWFyZ2luLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQgYWxzbyB0b3VjaGVzIGBmb2xpb19hbGxvY19zd2FwYCwgbWFraW5nIGl0IHJldHVybiBgLUUyQklHYCBpZiBzcGxpdHRpbmcgYSBmb2xpbyAqbWlnaHQqIGFsbG93IHN3YXBvdXQsIGFuZCB0aGVuIGBzaHJpbmtfZm9saW9fbGlzdGAgaXMgYWRqdXN0ZWQgdG8gaGFuZGxlIHRoYXQgcmV0dXJuIGFuZCBhY3R1YWxseSBzcGxpdCB0aGUgZm9saW8uXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IOKAkyBzcGVjaWZpY2FsbHkgYXJvdW5kIHN3YXAgYW5kIG1lbWNnIGludGVyYWN0aW9uLiBTaW5jZSBpdCdzIGNoYW5naW5nIHRoZSBleGVjdXRpb24gZmxvdywgZnV6emluZyBpcyBhYnNvbHV0ZWx5IHdhcnJhbnRlZC5cblxuTGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMuIEkgdGhpbmsgYHBhZ2VfY291bnRlcl9tYXJnaW5gLCBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAsIGFuZCBgZm9saW9fYWxsb2Nfc3dhcGAgYXJlIHByaW1lIHRhcmdldHMuIEkgbWlnaHQgYWRkIGBzaHJpbmtfZm9saW9fbGlzdGAgdG8gdGhlIGxpc3QsIGJ1dCBpdCBtaWdodCBiZSB0b28gaG90LCBhbmQgYGZvbGlvX2FsbG9jX3N3YXBgIHNlZW1zIG1vcmUgY3J1Y2lhbC5cblxuSSd2ZSBhbHJlYWR5IGNoZWNrZWQgYG1tL3N3YXBmaWxlLmNgIGFuZCBgbW0vbWVtY29udHJvbC5jYCBhbmQgY29uZmlybWVkIHRob3NlIGZ1bmN0aW9ucyBhcmUgaW4gdGhlIGNvZGUuIGBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwYCBhbmQgYGZvbGlvX2FsbG9jX3N3YXBgIGxvb2sgdG8gYmUgZ29vZCwgaGlnaC12YWx1ZSBzeW1ib2xzLlxuXG5Ob3csIGxldCdzIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3MuIEknbSBzZWVpbmcgdGhhdCB3ZSdsbCBuZWVkIGBDT05GSUdfTUVNQ0dgLCBgQ09ORklHX1NXQVBgLCBhbmQgYENPTkZJR19USFBfU1dBUGAgc2luY2UgaXQgbWVudGlvbnMgaXQgaW4gYGZvbGlvX2FsbG9jX3N3YXBgLlxuXG5KdXN0IGNoZWNrZWQgYGluY2x1ZGUvbGludXgvc3dhcC5oYCwgYW5kLCBhcyBleHBlY3RlZCwgYm90aCBgTUVNQ0dgIGFuZCBgU1dBUGAgYXJlIHJlcXVpcmVkIGZvciB0aGUgYF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXBgIGZ1bmN0aW9uLiBHb29kLlxuXG5JbiBgbW0vc3dhcGZpbGUuY2AsIGBDT05GSUdfVEhQX1NXQVBgIGlzIHVzZWQuXG5cbkFscmlnaHQsIHRoZSBuZXh0IHRoaW5nIGlzIHRvIHNldCB1cCB0aGUgcmVzdWx0cyB3aXRoIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wuXG5cblNvLCBXb3J0aEZ1enppbmcgaXMgZGVmaW5pdGVseSBgdHJ1ZWAuXG5cbk15IGBGb2N1c1N5bWJvbHNgIGFyZTogYHBhZ2VfY291bnRlcl9tYXJnaW5gLCBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAsIGFuZCBgZm9saW9fYWxsb2Nfc3dhcGAuXG5cbkFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGFyZTogYE1FTUNHYCwgYFNXQVBgLCBhbmQgYFRIUF9TV0FQYC5cblxuVGhlIHJlYXNvbmluZyBpcyBzb2xpZDogdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgZGVhbGluZyB3aXRoIHN3YXAgY2hhcmdpbmcgYW5kIG1lbWNnIGxpbWl0cywgYW5kIGhvdyBpdCBoYW5kbGVzIGZvbGlvcyBhbmQgZmFsbGJhY2tzIHRvIHNtYWxsZXIgcGFnZXMuIEl0IGNhbiBiZSBoaXQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZS5cblxuT2theSwgbGV0IG1lIGRvdWJsZSBjaGVjayBhZ2Fpbi4uLiBgZm9saW9fYWxsb2Nfc3dhcGAgaXMgbm90IHN0YXRpYywgbm9yIGlzIGBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwYCBvciBgcGFnZV9jb3VudGVyX21hcmdpbmAuXG5cbldoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgc2VlIGlmIGFueSAqb3RoZXIqIGNvbmZpZ3MgbmVlZCB0byBiZSBhZGRlZC4gYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgbWlnaHQgYmUgbmVlZGVkIGZvciBgVEhQX1NXQVBgLCBidXQgYFRIUF9TV0FQYCB1c3VhbGx5IGRlcGVuZHMgb24gaXQsIHNvIGxldCdzIGxlYXZlIGl0IGZvciBub3cuXG5cbk5vdywgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NCwiT3V0cHV0VG9rZW5zIjoxMjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMTozNjo0NC45ODY0Njg5NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODA1OTc2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIlNXQVBcIixcbiAgICBcIlRIUF9TV0FQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFnZV9jb3VudGVyX21hcmdpblwiLFxuICAgIFwiX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcFwiLFxuICAgIFwiZm9saW9fYWxsb2Nfc3dhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGZvciBzd2FwIGNoYXJnaW5nIGFuZCBtZW1jZyBsaW1pdHMsIHNwZWNpZmljYWxseSBoYW5kbGluZyBsYXJnZSBmb2xpb3MgYW5kIGZhbGxiYWNrIHRvIHNtYWxsZXIgcGFnZXMgd2hlbiBzd2FwIHNwYWNlIG9yIG1lbWNnIGxpbWl0cyBhcmUgY29uc3RyYWluZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIHN3YXBwaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJTV0FQXCIsXG4gICAgXCJUSFBfU1dBUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhZ2VfY291bnRlcl9tYXJnaW5cIixcbiAgICBcIl9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXBcIixcbiAgICBcImZvbGlvX2FsbG9jX3N3YXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igc3dhcCBjaGFyZ2luZyBhbmQgbWVtY2cgbGltaXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgbGFyZ2UgZm9saW9zIGFuZCBmYWxsYmFjayB0byBzbWFsbGVyIHBhZ2VzIHdoZW4gc3dhcCBzcGFjZSBvciBtZW1jZyBsaW1pdHMgYXJlIGNvbnN0cmFpbmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlIGFuZCBzd2FwcGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowtvf82[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 11:10:46 +0000 UTC FinishedAt: 2026-07-10 11:36:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "7fc2c3dcae28347a30ccd76c8817e5719005f1c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "SWAP", "THP_SWAP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "7fc2c3dcae28347a30ccd76c8817e5719005f1c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "SWAP", "THP_SWAP" ], "series_id": "5cd8e97c-db3b-4b59-9424-e4ff05a28f43" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "page_counter_margin", "__mem_cgroup_try_charge_swap", "folio_alloc_swap" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OywKICAgICYjMzQ7VEhQX1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWdlX2NvdW50ZXJfbWFyZ2luJiMzNDssCiAgICAmIzM0O19fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAmIzM0OywKICAgICYjMzQ7Zm9saW9fYWxsb2Nfc3dhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igc3dhcCBjaGFyZ2luZyBhbmQgbWVtY2cgbGltaXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgbGFyZ2UgZm9saW9zIGFuZCBmYWxsYmFjayB0byBzbWFsbGVyIHBhZ2VzIHdoZW4gc3dhcCBzcGFjZSBvciBtZW1jZyBsaW1pdHMgYXJlIGNvbnN0cmFpbmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlIGFuZCBzd2FwcGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVjNjYxNjdiNzI0ZjhmOGFiNGVhY2FiNDU3Y2MyNTJjZThhNjMxNjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMTozNjozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oIGIvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaFxuaW5kZXggZDY0OWI2YmJiYzg3MWIuLjA3YjdjYjEyMjQ5YzdjIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaFxuQEAgLTY4LDYgJiM0Mzs2OCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBwYWdlX2NvdW50ZXJfcmVhZChzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKVxuIFx0cmV0dXJuIGF0b21pY19sb25nX3JlYWQoXHUwMDI2Y291bnRlci1cdTAwM2V1c2FnZSk7XG4gfVxuIFxuJiM0Mztsb25nIHBhZ2VfY291bnRlcl9tYXJnaW4oc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcik7XG4gdm9pZCBwYWdlX2NvdW50ZXJfY2FuY2VsKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpO1xuIHZvaWQgcGFnZV9jb3VudGVyX2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcbiBib29sIHBhZ2VfY291bnRlcl90cnlfY2hhcmdlKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zd2FwLmggYi9pbmNsdWRlL2xpbnV4L3N3YXAuaFxuaW5kZXggN2EwOWRmNjk3N2E1ZjMuLjA2OTVhYzU2NDU3ZmY3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zd2FwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvc3dhcC5oXG5AQCAtNTcxLDEzICYjNDM7NTcxLDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb190aHJvdHRsZV9zd2FwcmF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBnZnBfdCBnZnApXG4gI2VuZGlmXG4gXG4gI2lmIGRlZmluZWQoQ09ORklHX01FTUNHKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfU1dBUClcbi1pbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSk7XG4mIzQzO2ludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5LFxuJiM0MztcdFx0XHRcdCBsb25nICpucl9zd2FwX3BhZ2VzKTtcbiBzdGF0aWMgaW5saW5lIGludCBtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLVx0XHRzd3BfZW50cnlfdCBlbnRyeSlcbiYjNDM7XHRcdHN3cF9lbnRyeV90IGVudHJ5LCBsb25nICpucl9zd2FwX3BhZ2VzKVxuIHtcbiBcdGlmIChtZW1fY2dyb3VwX2Rpc2FibGVkKCkpXG4gXHRcdHJldHVybiAwO1xuLVx0cmV0dXJuIF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoZm9saW8sIGVudHJ5KTtcbiYjNDM7XHRyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnksIG5yX3N3YXBfcGFnZXMpO1xuIH1cbiBcbiBleHRlcm4gdm9pZCBfX21lbV9jZ3JvdXBfdW5jaGFyZ2Vfc3dhcChzd3BfZW50cnlfdCBlbnRyeSwgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTtcbkBAIC01OTIsNyAmIzQzOzU5Myw4IEBAIGV4dGVybiBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKTtcbiBleHRlcm4gYm9vbCBtZW1fY2dyb3VwX3N3YXBfZnVsbChzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tXHRcdFx0XHRcdCAgICAgc3dwX2VudHJ5X3QgZW50cnkpXG4mIzQzO1x0XHRcdFx0XHQgICAgIHN3cF9lbnRyeV90IGVudHJ5LFxuJiM0MztcdFx0XHRcdFx0ICAgICBsb25nICpucl9zd2FwX3BhZ2VzKVxuIHtcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmNcbmluZGV4IDE3NzczMmZlZjAxMGJjLi43MTYwMGQ0MTk1OGVmNyAxMDA2NDRcbi0tLSBhL21tL21lbWNvbnRyb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC5jXG5AQCAtNTQ3MiwxMiAmIzQzOzU0NzIsMTQgQEAgaW50IF9faW5pdCBtZW1fY2dyb3VwX2luaXQodm9pZClcbiAgKiBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwIC0gdHJ5IGNoYXJnaW5nIHN3YXAgc3BhY2UgZm9yIGEgZm9saW9cbiAgKiBAZm9saW86IGZvbGlvIGJlaW5nIGFkZGVkIHRvIHN3YXBcbiAgKiBAZW50cnk6IHN3YXAgZW50cnkgdG8gY2hhcmdlXG4mIzQzOyAqIEBucl9zd2FwX3BhZ2VzOiBvcHRpb25hbCBzd2FwIGF2YWlsYWJpbGl0eSB0byBjYXAgYnkgbWVtY2cgbWFyZ2luXG4gICpcbiAgKiBUcnkgdG8gY2hhcmdlIEBmb2xpbyYjMzk7cyBtZW1jZyBmb3IgdGhlIHN3YXAgc3BhY2UgYXQgQGVudHJ5LlxuICAqXG4gICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1FTk9NRU0gb24gZmFpbHVyZS5cbiAgKi9cbi1pbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSlcbiYjNDM7aW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnksXG4mIzQzO1x0XHRcdFx0IGxvbmcgKm5yX3N3YXBfcGFnZXMpXG4ge1xuIFx0dW5zaWduZWQgaW50IG5yX3BhZ2VzID0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xuIFx0c3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcjtcbkBAIC01NDk1LDYgJiM0Mzs1NDk3LDkgQEAgaW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRtZW1jZyA9IG9ial9jZ3JvdXBfbWVtY2cob2JqY2cpO1xuIFx0aWYgKCFlbnRyeS52YWwpIHtcbiYjNDM7XHRcdGlmIChucl9zd2FwX3BhZ2VzIFx1MDAyNlx1MDAyNiAhbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcbiYjNDM7XHRcdFx0Km5yX3N3YXBfcGFnZXMgPSBtaW4oKm5yX3N3YXBfcGFnZXMsXG4mIzQzO1x0XHRcdFx0XHQgICAgIHBhZ2VfY291bnRlcl9tYXJnaW4oXHUwMDI2bWVtY2ctXHUwMDNlc3dhcCkpO1xuIFx0XHRtZW1jZ19tZW1vcnlfZXZlbnQobWVtY2csIE1FTUNHX1NXQVBfRkFJTCk7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0XHRyZXR1cm4gMDtcbkBAIC01NTA5LDYgJiM0Mzs1NTE0LDkgQEAgaW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpXG4gXHRcdG1lbWNnX21lbW9yeV9ldmVudChtZW1jZywgTUVNQ0dfU1dBUF9NQVgpO1xuIFx0XHRtZW1jZ19tZW1vcnlfZXZlbnQobWVtY2csIE1FTUNHX1NXQVBfRkFJTCk7XG4gXHRcdG1lbV9jZ3JvdXBfcHJpdmF0ZV9pZF9wdXQobWVtY2csIG5yX3BhZ2VzKTtcbiYjNDM7XHRcdGlmIChucl9zd2FwX3BhZ2VzKVxuJiM0MztcdFx0XHQqbnJfc3dhcF9wYWdlcyA9IG1pbigqbnJfc3dhcF9wYWdlcyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgcGFnZV9jb3VudGVyX21hcmdpbihjb3VudGVyKSk7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19TV0FQLCBucl9wYWdlcyk7XG5AQCAtNTU1MCwxMCAmIzQzOzU1NTgsNyBAQCBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuIFxuIFx0aWYgKG1lbV9jZ3JvdXBfZGlzYWJsZWQoKSB8fCBkb19tZW1zd19hY2NvdW50KCkpXG4gXHRcdHJldHVybiBucl9zd2FwX3BhZ2VzO1xuLVx0Zm9yICg7ICFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpOyBtZW1jZyA9IHBhcmVudF9tZW1fY2dyb3VwKG1lbWNnKSlcbi1cdFx0bnJfc3dhcF9wYWdlcyA9IG1pbl90KGxvbmcsIG5yX3N3YXBfcGFnZXMsXG4tXHRcdFx0XHQgICAgICBSRUFEX09OQ0UobWVtY2ctXHUwMDNlc3dhcC5tYXgpIC1cbi1cdFx0XHRcdCAgICAgIHBhZ2VfY291bnRlcl9yZWFkKFx1MDAyNm1lbWNnLVx1MDAzZXN3YXApKTtcbiYjNDM7XHRucl9zd2FwX3BhZ2VzID0gbWluKG5yX3N3YXBfcGFnZXMsIHBhZ2VfY291bnRlcl9tYXJnaW4oXHUwMDI2bWVtY2ctXHUwMDNlc3dhcCkpO1xuIFx0cmV0dXJuIG5yX3N3YXBfcGFnZXM7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL21tL3BhZ2VfY291bnRlci5jIGIvbW0vcGFnZV9jb3VudGVyLmNcbmluZGV4IDY2MWUwZjJhNTEyN2E1Li42ZTU1Yzc2MjgwMjVmMyAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfY291bnRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2NvdW50ZXIuY1xuQEAgLTE3MSw2ICYjNDM7MTcxLDI2IEBAIGJvb2wgcGFnZV9jb3VudGVyX3RyeV9jaGFyZ2Uoc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcixcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiBwYWdlX2NvdW50ZXJfbWFyZ2luIC0gcmVtYWluaW5nIGNoYXJnZWFibGUgcGFnZXMgd2l0aGluIGhpZXJhcmNoaWNhbCBsaW1pdHNcbiYjNDM7ICogQGNvdW50ZXI6IGNvdW50ZXJcbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJucyB0aGUgc21hbGxlc3QgcmVtYWluaW5nIG1hcmdpbiBiZXR3ZWVuIEBjb3VudGVyIGFuZCB0aGUgcm9vdC5cbiYjNDM7ICovXG4mIzQzO2xvbmcgcGFnZV9jb3VudGVyX21hcmdpbihzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKVxuJiM0Mzt7XG4mIzQzO1x0bG9uZyBtYXJnaW4gPSBQQUdFX0NPVU5URVJfTUFYO1xuJiM0MztcbiYjNDM7XHRmb3IgKDsgY291bnRlcjsgY291bnRlciA9IGNvdW50ZXItXHUwMDNlcGFyZW50KSB7XG4mIzQzO1x0XHRsb25nIGxpbWl0ID0gUkVBRF9PTkNFKGNvdW50ZXItXHUwMDNlbWF4KTtcbiYjNDM7XHRcdGxvbmcgdXNhZ2UgPSBwYWdlX2NvdW50ZXJfcmVhZChjb3VudGVyKTtcbiYjNDM7XG4mIzQzO1x0XHRtYXJnaW4gPSBtaW4obWFyZ2luLCBsaW1pdCAtIHVzYWdlKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBtYXJnaW47XG4mIzQzO31cbiYjNDM7XG4gLyoqXG4gICogcGFnZV9jb3VudGVyX3VuY2hhcmdlIC0gaGllcmFyY2hpY2FsbHkgdW5jaGFyZ2UgcGFnZXNcbiAgKiBAY291bnRlcjogY291bnRlclxuZGlmZiAtLWdpdCBhL21tL3N3YXBmaWxlLmMgYi9tbS9zd2FwZmlsZS5jXG5pbmRleCA5MTc0ZjFlZWZmYjA5MS4uNTNhOTIxY2EwOTlhZWQgMTAwNjQ0XG4tLS0gYS9tbS9zd2FwZmlsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9zd2FwZmlsZS5jXG5AQCAtMTY5MCwxMiAmIzQzOzE2OTAsMTQgQEAgc3RhdGljIGludCBzd2FwX2R1cF9lbnRyaWVzX2NsdXN0ZXIoc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpLFxuICAqIHN3YXAgY2FjaGUuXG4gICpcbiAgKiBDb250ZXh0OiBDYWxsZXIgbmVlZHMgdG8gaG9sZCB0aGUgZm9saW8gbG9jay5cbi0gKiBSZXR1cm46IFdoZXRoZXIgdGhlIGZvbGlvIHdhcyBhZGRlZCB0byB0aGUgc3dhcCBjYWNoZS5cbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FMkJJRyBpZiBzcGxpdHRpbmcgdGhlIGZvbGlvIG1pZ2h0IGFsbG93IHN3YXBvdXQsXG4mIzQzOyAqIG9yIGFub3RoZXIgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiBzcGxpdHRpbmcgd291bGQgbm90IGhlbHAuXG4gICovXG4gaW50IGZvbGlvX2FsbG9jX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbylcbiB7XG4gXHR1bnNpZ25lZCBpbnQgb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XG4gXHR1bnNpZ25lZCBpbnQgc2l6ZSA9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuJiM0MztcdGxvbmcgbnJfc3dhcF9wYWdlcztcbiBcbiBcdFZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7XG4gXHRWTV9CVUdfT05fRk9MSU8oIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pLCBmb2xpbyk7XG5AQCAtMTcwNiw3ICYjNDM7MTcwOCw3IEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4gXHRcdCAqIHRoZSBjYWxsZXIgc2hvdWxkIHNwbGl0IHRoZSBmb2xpbyBhbmQgdHJ5IGFnYWluLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19USFBfU1dBUCkpXG4tXHRcdFx0cmV0dXJuIC1FQUdBSU47XG4mIzQzO1x0XHRcdHJldHVybiAtRTJCSUc7XG4gXG4gXHRcdC8qXG4gXHRcdCAqIEFsbG9jYXRpb24gc2l6ZSBzaG91bGQgbmV2ZXIgZXhjZWVkIGNsdXN0ZXIgc2l6ZVxuQEAgLTE3MTQsMTAgJiM0MzsxNzE2LDEyIEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4gXHRcdCAqL1xuIFx0XHRpZiAoc2l6ZSBcdTAwM2UgU1dBUEZJTEVfQ0xVU1RFUikge1xuIFx0XHRcdFZNX1dBUk5fT05fT05DRSgxKTtcbi1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0cmV0dXJuIC1FMkJJRztcbiBcdFx0fVxuIFx0fVxuIFxuJiM0MztcdG5yX3N3YXBfcGFnZXMgPSBnZXRfbnJfc3dhcF9wYWdlcygpO1xuJiM0MztcbiBhZ2FpbjpcbiBcdGxvY2FsX2xvY2soXHUwMDI2cGVyY3B1X3N3YXBfY2x1c3Rlci5sb2NrKTtcbiBcdGlmICghc3dhcF9hbGxvY19mYXN0KGZvbGlvKSlcbkBAIC0xNzMwLDExICYjNDM7MTczNCwxNiBAQCBpbnQgZm9saW9fYWxsb2Nfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0fVxuIFxuIFx0LyogTmVlZCB0byBjYWxsIHRoaXMgZXZlbiBpZiBhbGxvY2F0aW9uIGZhaWxlZCwgZm9yIE1FTUNHX1NXQVBfRkFJTC4gKi9cbi1cdGlmICh1bmxpa2VseShtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZm9saW8tXHUwMDNlc3dhcCkpKVxuJiM0MztcdGlmICh1bmxpa2VseShtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZm9saW8tXHUwMDNlc3dhcCxcbiYjNDM7XHRcdFx0XHRcdFx0XHUwMDI2bnJfc3dhcF9wYWdlcykpKSB7XG4gXHRcdHN3YXBfY2FjaGVfZGVsX2ZvbGlvKGZvbGlvKTtcbiYjNDM7XHRcdHJldHVybiBvcmRlciBcdTAwMjZcdTAwMjYgbnJfc3dhcF9wYWdlcyBcdTAwM2UgMCA/IC1FMkJJRyA6IC1FTk9NRU07XG4mIzQzO1x0fVxuIFxuLVx0aWYgKHVubGlrZWx5KCFmb2xpb190ZXN0X3N3YXBjYWNoZShmb2xpbykpKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHRpZiAodW5saWtlbHkoIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkpIHtcbiYjNDM7XHRcdG5yX3N3YXBfcGFnZXMgPSBnZXRfbnJfc3dhcF9wYWdlcygpO1xuJiM0MztcdFx0cmV0dXJuIG9yZGVyIFx1MDAyNlx1MDAyNiBucl9zd2FwX3BhZ2VzIFx1MDAzZSAwID8gLUUyQklHIDogLUVOT1NQQztcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xuaW5kZXggYmQxYjFhYTEyNTgxOWYuLjQwMzQwYTg4Zjc4ZWQ2IDEwMDY0NFxuLS0tIGEvbW0vdm1zY2FuLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3Ztc2Nhbi5jXG5AQCAtMTI2MCw2ICYjNDM7MTI2MCw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2hyaW5rX2ZvbGlvX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCxcbiBcdFx0ICovXG4gXHRcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFx1MDAyNlx1MDAyNiBmb2xpb190ZXN0X3N3YXBiYWNrZWQoZm9saW8pIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0IWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkge1xuJiM0MztcdFx0XHRpbnQgcmV0O1xuJiM0MztcbiBcdFx0XHRpZiAoIShzYy1cdTAwM2VnZnBfbWFzayBcdTAwMjYgX19HRlBfSU8pKVxuIFx0XHRcdFx0Z290byBrZWVwX2xvY2tlZDtcbiBcdFx0XHRpZiAoZm9saW9fbWF5YmVfZG1hX3Bpbm5lZChmb2xpbykpXG5AQCAtMTI3OCwxMCAmIzQzOzEyODAsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzaHJpbmtfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxuIFx0XHRcdFx0ICAgIHNwbGl0X2ZvbGlvX3RvX2xpc3QoZm9saW8sIGZvbGlvX2xpc3QpKVxuIFx0XHRcdFx0XHRnb3RvIGFjdGl2YXRlX2xvY2tlZDtcbiBcdFx0XHR9XG4tXHRcdFx0aWYgKGZvbGlvX2FsbG9jX3N3YXAoZm9saW8pKSB7XG4mIzQzO1x0XHRcdHJldCA9IGZvbGlvX2FsbG9jX3N3YXAoZm9saW8pO1xuJiM0MztcdFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0XHRpbnQgX19tYXliZV91bnVzZWQgb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XG4gXG4tXHRcdFx0XHRpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKVxuJiM0MztcdFx0XHRcdGlmICghZm9saW9fdGVzdF9sYXJnZShmb2xpbykgfHwgcmV0ICE9IC1FMkJJRylcbiBcdFx0XHRcdFx0Z290byBhY3RpdmF0ZV9sb2NrZWRfc3BsaXQ7XG4gXHRcdFx0XHQvKiBGYWxsYmFjayB0byBzd2FwIG5vcm1hbCBwYWdlcyAqL1xuIFx0XHRcdFx0aWYgKHNwbGl0X2ZvbGlvX3RvX2xpc3QoZm9saW8sIGZvbGlvX2xpc3QpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OywKICAgICYjMzQ7VEhQX1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWdlX2NvdW50ZXJfbWFyZ2luJiMzNDssCiAgICAmIzM0O19fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAmIzM0OywKICAgICYjMzQ7Zm9saW9fYWxsb2Nfc3dhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igc3dhcCBjaGFyZ2luZyBhbmQgbWVtY2cgbGltaXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgbGFyZ2UgZm9saW9zIGFuZCBmYWxsYmFjayB0byBzbWFsbGVyIHBhZ2VzIHdoZW4gc3dhcCBzcGFjZSBvciBtZW1jZyBsaW1pdHMgYXJlIGNvbnN0cmFpbmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlIGFuZCBzd2FwcGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWM2NjE2N2I3MjRmOGY4YWI0ZWFjYWI0NTdjYzI1MmNlOGE2MzE2OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDEwIDExOjM2OjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaCBiL2luY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmgKaW5kZXggZDY0OWI2YmJiYzg3MWIuLjA3YjdjYjEyMjQ5YzdjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmgKQEAgLTY4LDYgJiM0Mzs2OCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBwYWdlX2NvdW50ZXJfcmVhZChzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKQogCXJldHVybiBhdG9taWNfbG9uZ19yZWFkKCZhbXA7Y291bnRlci0mZ3Q7dXNhZ2UpOwogfQogCiYjNDM7bG9uZyBwYWdlX2NvdW50ZXJfbWFyZ2luKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIpOwogdm9pZCBwYWdlX2NvdW50ZXJfY2FuY2VsKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwogdm9pZCBwYWdlX2NvdW50ZXJfY2hhcmdlKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwogYm9vbCBwYWdlX2NvdW50ZXJfdHJ5X2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zd2FwLmggYi9pbmNsdWRlL2xpbnV4L3N3YXAuaAppbmRleCA3YTA5ZGY2OTc3YTVmMy4uMDY5NWFjNTY0NTdmZjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3dhcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvc3dhcC5oCkBAIC01NzEsMTMgJiM0Mzs1NzEsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcCkKICNlbmRpZgogCiAjaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpICZhbXA7JmFtcDsgZGVmaW5lZChDT05GSUdfU1dBUCkKLWludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KTsKJiM0MztpbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSwKJiM0MzsJCQkJIGxvbmcgKm5yX3N3YXBfcGFnZXMpOwogc3RhdGljIGlubGluZSBpbnQgbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywKLQkJc3dwX2VudHJ5X3QgZW50cnkpCiYjNDM7CQlzd3BfZW50cnlfdCBlbnRyeSwgbG9uZyAqbnJfc3dhcF9wYWdlcykKIHsKIAlpZiAobWVtX2Nncm91cF9kaXNhYmxlZCgpKQogCQlyZXR1cm4gMDsKLQlyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnkpOwomIzQzOwlyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnksIG5yX3N3YXBfcGFnZXMpOwogfQogCiBleHRlcm4gdm9pZCBfX21lbV9jZ3JvdXBfdW5jaGFyZ2Vfc3dhcChzd3BfZW50cnlfdCBlbnRyeSwgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTsKQEAgLTU5Miw3ICYjNDM7NTkzLDggQEAgZXh0ZXJuIGxvbmcgbWVtX2Nncm91cF9nZXRfbnJfc3dhcF9wYWdlcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpOwogZXh0ZXJuIGJvb2wgbWVtX2Nncm91cF9zd2FwX2Z1bGwoc3RydWN0IGZvbGlvICpmb2xpbyk7CiAjZWxzZQogc3RhdGljIGlubGluZSBpbnQgbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywKLQkJCQkJICAgICBzd3BfZW50cnlfdCBlbnRyeSkKJiM0MzsJCQkJCSAgICAgc3dwX2VudHJ5X3QgZW50cnksCiYjNDM7CQkJCQkgICAgIGxvbmcgKm5yX3N3YXBfcGFnZXMpCiB7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmMKaW5kZXggMTc3NzMyZmVmMDEwYmMuLjcxNjAwZDQxOTU4ZWY3IDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9sLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC5jCkBAIC01NDcyLDEyICYjNDM7NTQ3MiwxNCBAQCBpbnQgX19pbml0IG1lbV9jZ3JvdXBfaW5pdCh2b2lkKQogICogX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcCAtIHRyeSBjaGFyZ2luZyBzd2FwIHNwYWNlIGZvciBhIGZvbGlvCiAgKiBAZm9saW86IGZvbGlvIGJlaW5nIGFkZGVkIHRvIHN3YXAKICAqIEBlbnRyeTogc3dhcCBlbnRyeSB0byBjaGFyZ2UKJiM0MzsgKiBAbnJfc3dhcF9wYWdlczogb3B0aW9uYWwgc3dhcCBhdmFpbGFiaWxpdHkgdG8gY2FwIGJ5IG1lbWNnIG1hcmdpbgogICoKICAqIFRyeSB0byBjaGFyZ2UgQGZvbGlvJiMzOTtzIG1lbWNnIGZvciB0aGUgc3dhcCBzcGFjZSBhdCBAZW50cnkuCiAgKgogICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1FTk9NRU0gb24gZmFpbHVyZS4KICAqLwotaW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpCiYjNDM7aW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnksCiYjNDM7CQkJCSBsb25nICpucl9zd2FwX3BhZ2VzKQogewogCXVuc2lnbmVkIGludCBucl9wYWdlcyA9IGZvbGlvX25yX3BhZ2VzKGZvbGlvKTsKIAlzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyOwpAQCAtNTQ5NSw2ICYjNDM7NTQ5Nyw5IEBAIGludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KQogCXJjdV9yZWFkX2xvY2soKTsKIAltZW1jZyA9IG9ial9jZ3JvdXBfbWVtY2cob2JqY2cpOwogCWlmICghZW50cnkudmFsKSB7CiYjNDM7CQlpZiAobnJfc3dhcF9wYWdlcyAmYW1wOyZhbXA7ICFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKQomIzQzOwkJCSpucl9zd2FwX3BhZ2VzID0gbWluKCpucl9zd2FwX3BhZ2VzLAomIzQzOwkJCQkJICAgICBwYWdlX2NvdW50ZXJfbWFyZ2luKCZhbXA7bWVtY2ctJmd0O3N3YXApKTsKIAkJbWVtY2dfbWVtb3J5X2V2ZW50KG1lbWNnLCBNRU1DR19TV0FQX0ZBSUwpOwogCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJcmV0dXJuIDA7CkBAIC01NTA5LDYgJiM0Mzs1NTE0LDkgQEAgaW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpCiAJCW1lbWNnX21lbW9yeV9ldmVudChtZW1jZywgTUVNQ0dfU1dBUF9NQVgpOwogCQltZW1jZ19tZW1vcnlfZXZlbnQobWVtY2csIE1FTUNHX1NXQVBfRkFJTCk7CiAJCW1lbV9jZ3JvdXBfcHJpdmF0ZV9pZF9wdXQobWVtY2csIG5yX3BhZ2VzKTsKJiM0MzsJCWlmIChucl9zd2FwX3BhZ2VzKQomIzQzOwkJCSpucl9zd2FwX3BhZ2VzID0gbWluKCpucl9zd2FwX3BhZ2VzLAomIzQzOwkJCQkJICAgICBwYWdlX2NvdW50ZXJfbWFyZ2luKGNvdW50ZXIpKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCW1vZF9tZW1jZ19zdGF0ZShtZW1jZywgTUVNQ0dfU1dBUCwgbnJfcGFnZXMpOwpAQCAtNTU1MCwxMCAmIzQzOzU1NTgsNyBAQCBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKQogCiAJaWYgKG1lbV9jZ3JvdXBfZGlzYWJsZWQoKSB8fCBkb19tZW1zd19hY2NvdW50KCkpCiAJCXJldHVybiBucl9zd2FwX3BhZ2VzOwotCWZvciAoOyAhbWVtX2Nncm91cF9pc19yb290KG1lbWNnKTsgbWVtY2cgPSBwYXJlbnRfbWVtX2Nncm91cChtZW1jZykpCi0JCW5yX3N3YXBfcGFnZXMgPSBtaW5fdChsb25nLCBucl9zd2FwX3BhZ2VzLAotCQkJCSAgICAgIFJFQURfT05DRShtZW1jZy0mZ3Q7c3dhcC5tYXgpIC0KLQkJCQkgICAgICBwYWdlX2NvdW50ZXJfcmVhZCgmYW1wO21lbWNnLSZndDtzd2FwKSk7CiYjNDM7CW5yX3N3YXBfcGFnZXMgPSBtaW4obnJfc3dhcF9wYWdlcywgcGFnZV9jb3VudGVyX21hcmdpbigmYW1wO21lbWNnLSZndDtzd2FwKSk7CiAJcmV0dXJuIG5yX3N3YXBfcGFnZXM7CiB9CiAKZGlmZiAtLWdpdCBhL21tL3BhZ2VfY291bnRlci5jIGIvbW0vcGFnZV9jb3VudGVyLmMKaW5kZXggNjYxZTBmMmE1MTI3YTUuLjZlNTVjNzYyODAyNWYzIDEwMDY0NAotLS0gYS9tbS9wYWdlX2NvdW50ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2NvdW50ZXIuYwpAQCAtMTcxLDYgJiM0MzsxNzEsMjYgQEAgYm9vbCBwYWdlX2NvdW50ZXJfdHJ5X2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLAogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzOy8qKgomIzQzOyAqIHBhZ2VfY291bnRlcl9tYXJnaW4gLSByZW1haW5pbmcgY2hhcmdlYWJsZSBwYWdlcyB3aXRoaW4gaGllcmFyY2hpY2FsIGxpbWl0cwomIzQzOyAqIEBjb3VudGVyOiBjb3VudGVyCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCByZW1haW5pbmcgbWFyZ2luIGJldHdlZW4gQGNvdW50ZXIgYW5kIHRoZSByb290LgomIzQzOyAqLwomIzQzO2xvbmcgcGFnZV9jb3VudGVyX21hcmdpbihzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKQomIzQzO3sKJiM0MzsJbG9uZyBtYXJnaW4gPSBQQUdFX0NPVU5URVJfTUFYOwomIzQzOwomIzQzOwlmb3IgKDsgY291bnRlcjsgY291bnRlciA9IGNvdW50ZXItJmd0O3BhcmVudCkgewomIzQzOwkJbG9uZyBsaW1pdCA9IFJFQURfT05DRShjb3VudGVyLSZndDttYXgpOwomIzQzOwkJbG9uZyB1c2FnZSA9IHBhZ2VfY291bnRlcl9yZWFkKGNvdW50ZXIpOwomIzQzOwomIzQzOwkJbWFyZ2luID0gbWluKG1hcmdpbiwgbGltaXQgLSB1c2FnZSk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIG1hcmdpbjsKJiM0Mzt9CiYjNDM7CiAvKioKICAqIHBhZ2VfY291bnRlcl91bmNoYXJnZSAtIGhpZXJhcmNoaWNhbGx5IHVuY2hhcmdlIHBhZ2VzCiAgKiBAY291bnRlcjogY291bnRlcgpkaWZmIC0tZ2l0IGEvbW0vc3dhcGZpbGUuYyBiL21tL3N3YXBmaWxlLmMKaW5kZXggOTE3NGYxZWVmZmIwOTEuLjUzYTkyMWNhMDk5YWVkIDEwMDY0NAotLS0gYS9tbS9zd2FwZmlsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3N3YXBmaWxlLmMKQEAgLTE2OTAsMTIgJiM0MzsxNjkwLDE0IEBAIHN0YXRpYyBpbnQgc3dhcF9kdXBfZW50cmllc19jbHVzdGVyKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzaSwKICAqIHN3YXAgY2FjaGUuCiAgKgogICogQ29udGV4dDogQ2FsbGVyIG5lZWRzIHRvIGhvbGQgdGhlIGZvbGlvIGxvY2suCi0gKiBSZXR1cm46IFdoZXRoZXIgdGhlIGZvbGlvIHdhcyBhZGRlZCB0byB0aGUgc3dhcCBjYWNoZS4KJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUUyQklHIGlmIHNwbGl0dGluZyB0aGUgZm9saW8gbWlnaHQgYWxsb3cgc3dhcG91dCwKJiM0MzsgKiBvciBhbm90aGVyIG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgc3BsaXR0aW5nIHdvdWxkIG5vdCBoZWxwLgogICovCiBpbnQgZm9saW9fYWxsb2Nfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvKQogewogCXVuc2lnbmVkIGludCBvcmRlciA9IGZvbGlvX29yZGVyKGZvbGlvKTsKIAl1bnNpZ25lZCBpbnQgc2l6ZSA9IDEgJmx0OyZsdDsgb3JkZXI7CiYjNDM7CWxvbmcgbnJfc3dhcF9wYWdlczsKIAogCVZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7CiAJVk1fQlVHX09OX0ZPTElPKCFmb2xpb190ZXN0X3VwdG9kYXRlKGZvbGlvKSwgZm9saW8pOwpAQCAtMTcwNiw3ICYjNDM7MTcwOCw3IEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJCSAqIHRoZSBjYWxsZXIgc2hvdWxkIHNwbGl0IHRoZSBmb2xpbyBhbmQgdHJ5IGFnYWluLgogCQkgKi8KIAkJaWYgKCFJU19FTkFCTEVEKENPTkZJR19USFBfU1dBUCkpCi0JCQlyZXR1cm4gLUVBR0FJTjsKJiM0MzsJCQlyZXR1cm4gLUUyQklHOwogCiAJCS8qCiAJCSAqIEFsbG9jYXRpb24gc2l6ZSBzaG91bGQgbmV2ZXIgZXhjZWVkIGNsdXN0ZXIgc2l6ZQpAQCAtMTcxNCwxMCAmIzQzOzE3MTYsMTIgQEAgaW50IGZvbGlvX2FsbG9jX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbykKIAkJICovCiAJCWlmIChzaXplICZndDsgU1dBUEZJTEVfQ0xVU1RFUikgewogCQkJVk1fV0FSTl9PTl9PTkNFKDEpOwotCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJcmV0dXJuIC1FMkJJRzsKIAkJfQogCX0KIAomIzQzOwlucl9zd2FwX3BhZ2VzID0gZ2V0X25yX3N3YXBfcGFnZXMoKTsKJiM0MzsKIGFnYWluOgogCWxvY2FsX2xvY2soJmFtcDtwZXJjcHVfc3dhcF9jbHVzdGVyLmxvY2spOwogCWlmICghc3dhcF9hbGxvY19mYXN0KGZvbGlvKSkKQEAgLTE3MzAsMTEgJiM0MzsxNzM0LDE2IEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJfQogCiAJLyogTmVlZCB0byBjYWxsIHRoaXMgZXZlbiBpZiBhbGxvY2F0aW9uIGZhaWxlZCwgZm9yIE1FTUNHX1NXQVBfRkFJTC4gKi8KLQlpZiAodW5saWtlbHkobWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoZm9saW8sIGZvbGlvLSZndDtzd2FwKSkpCiYjNDM7CWlmICh1bmxpa2VseShtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZm9saW8tJmd0O3N3YXAsCiYjNDM7CQkJCQkJJmFtcDtucl9zd2FwX3BhZ2VzKSkpIHsKIAkJc3dhcF9jYWNoZV9kZWxfZm9saW8oZm9saW8pOwomIzQzOwkJcmV0dXJuIG9yZGVyICZhbXA7JmFtcDsgbnJfc3dhcF9wYWdlcyAmZ3Q7IDAgPyAtRTJCSUcgOiAtRU5PTUVNOwomIzQzOwl9CiAKLQlpZiAodW5saWtlbHkoIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkpCi0JCXJldHVybiAtRU5PTUVNOwomIzQzOwlpZiAodW5saWtlbHkoIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkpIHsKJiM0MzsJCW5yX3N3YXBfcGFnZXMgPSBnZXRfbnJfc3dhcF9wYWdlcygpOwomIzQzOwkJcmV0dXJuIG9yZGVyICZhbXA7JmFtcDsgbnJfc3dhcF9wYWdlcyAmZ3Q7IDAgPyAtRTJCSUcgOiAtRU5PU1BDOwomIzQzOwl9CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggYmQxYjFhYTEyNTgxOWYuLjQwMzQwYTg4Zjc4ZWQ2IDEwMDY0NAotLS0gYS9tbS92bXNjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS92bXNjYW4uYwpAQCAtMTI2MCw2ICYjNDM7MTI2MCw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2hyaW5rX2ZvbGlvX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCwKIAkJICovCiAJCWlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pICZhbXA7JmFtcDsgZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSAmYW1wOyZhbXA7CiAJCQkJIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkgewomIzQzOwkJCWludCByZXQ7CiYjNDM7CiAJCQlpZiAoIShzYy0mZ3Q7Z2ZwX21hc2sgJmFtcDsgX19HRlBfSU8pKQogCQkJCWdvdG8ga2VlcF9sb2NrZWQ7CiAJCQlpZiAoZm9saW9fbWF5YmVfZG1hX3Bpbm5lZChmb2xpbykpCkBAIC0xMjc4LDEwICYjNDM7MTI4MCwxMSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHNocmlua19mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsCiAJCQkJICAgIHNwbGl0X2ZvbGlvX3RvX2xpc3QoZm9saW8sIGZvbGlvX2xpc3QpKQogCQkJCQlnb3RvIGFjdGl2YXRlX2xvY2tlZDsKIAkJCX0KLQkJCWlmIChmb2xpb19hbGxvY19zd2FwKGZvbGlvKSkgewomIzQzOwkJCXJldCA9IGZvbGlvX2FsbG9jX3N3YXAoZm9saW8pOwomIzQzOwkJCWlmIChyZXQpIHsKIAkJCQlpbnQgX19tYXliZV91bnVzZWQgb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7CiAKLQkJCQlpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKQomIzQzOwkJCQlpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIHx8IHJldCAhPSAtRTJCSUcpCiAJCQkJCWdvdG8gYWN0aXZhdGVfbG9ja2VkX3NwbGl0OwogCQkJCS8qIEZhbGxiYWNrIHRvIHN3YXAgbm9ybWFsIHBhZ2VzICovCiAJCQkJaWYgKHNwbGl0X2ZvbGlvX3RvX2xpc3QoZm9saW8sIGZvbGlvX2xpc3QpKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njc0CgkJCQkJCQlvdXRwdXQ6IDEyOAoJCQkJCQkJdGhvdWdodHM6IDc2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFN3YXAgQ2hhcmdpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHN3YXAgY2hhcmdpbmcgYW5kIG1lbWNnIGludGVyYWN0aW9ucyB3aXRoaW4gYG1tL21lbWNvbnRyb2wuY2AsIGBtbS9wYWdlX2NvdW50ZXIuY2AsIGBtbS9zd2FwZmlsZS5jYCwgYW5kIGBtbS92bXNjYW4uY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgaW50cm9kdWNpbmcgdGhpcyBgcGFnZV9jb3VudGVyX21hcmdpbmAsIGFuZCB0aGVuIG1vZGlmeWluZyBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAgdG8gdGFrZSBgbnJfc3dhcF9wYWdlc2AgYW5kIGltcGxlbWVudCBhIGNhcCBiYXNlZCBvbiB0aGUgbWVtY2cgbWFyZ2luLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQgYWxzbyB0b3VjaGVzIGBmb2xpb19hbGxvY19zd2FwYCwgbWFraW5nIGl0IHJldHVybiBgLUUyQklHYCBpZiBzcGxpdHRpbmcgYSBmb2xpbyAqbWlnaHQqIGFsbG93IHN3YXBvdXQsIGFuZCB0aGVuIGBzaHJpbmtfZm9saW9fbGlzdGAgaXMgYWRqdXN0ZWQgdG8gaGFuZGxlIHRoYXQgcmV0dXJuIGFuZCBhY3R1YWxseSBzcGxpdCB0aGUgZm9saW8uCgpUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCDigJMgc3BlY2lmaWNhbGx5IGFyb3VuZCBzd2FwIGFuZCBtZW1jZyBpbnRlcmFjdGlvbi4gU2luY2UgaXQmIzM5O3MgY2hhbmdpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LCBmdXp6aW5nIGlzIGFic29sdXRlbHkgd2FycmFudGVkLgoKTGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiBJIHRoaW5rIGBwYWdlX2NvdW50ZXJfbWFyZ2luYCwgYF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXBgLCBhbmQgYGZvbGlvX2FsbG9jX3N3YXBgIGFyZSBwcmltZSB0YXJnZXRzLiBJIG1pZ2h0IGFkZCBgc2hyaW5rX2ZvbGlvX2xpc3RgIHRvIHRoZSBsaXN0LCBidXQgaXQgbWlnaHQgYmUgdG9vIGhvdCwgYW5kIGBmb2xpb19hbGxvY19zd2FwYCBzZWVtcyBtb3JlIGNydWNpYWwuCgpJJiMzOTt2ZSBhbHJlYWR5IGNoZWNrZWQgYG1tL3N3YXBmaWxlLmNgIGFuZCBgbW0vbWVtY29udHJvbC5jYCBhbmQgY29uZmlybWVkIHRob3NlIGZ1bmN0aW9ucyBhcmUgaW4gdGhlIGNvZGUuIGBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwYCBhbmQgYGZvbGlvX2FsbG9jX3N3YXBgIGxvb2sgdG8gYmUgZ29vZCwgaGlnaC12YWx1ZSBzeW1ib2xzLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlncy4gSSYjMzk7bSBzZWVpbmcgdGhhdCB3ZSYjMzk7bGwgbmVlZCBgQ09ORklHX01FTUNHYCwgYENPTkZJR19TV0FQYCwgYW5kIGBDT05GSUdfVEhQX1NXQVBgIHNpbmNlIGl0IG1lbnRpb25zIGl0IGluIGBmb2xpb19hbGxvY19zd2FwYC4KCkp1c3QgY2hlY2tlZCBgaW5jbHVkZS9saW51eC9zd2FwLmhgLCBhbmQsIGFzIGV4cGVjdGVkLCBib3RoIGBNRU1DR2AgYW5kIGBTV0FQYCBhcmUgcmVxdWlyZWQgZm9yIHRoZSBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAgZnVuY3Rpb24uIEdvb2QuCgpJbiBgbW0vc3dhcGZpbGUuY2AsIGBDT05GSUdfVEhQX1NXQVBgIGlzIHVzZWQuCgpBbHJpZ2h0LCB0aGUgbmV4dCB0aGluZyBpcyB0byBzZXQgdXAgdGhlIHJlc3VsdHMgd2l0aCB0aGUgYHNldC1yZXN1bHRzYCB0b29sLgoKU28sIFdvcnRoRnV6emluZyBpcyBkZWZpbml0ZWx5IGB0cnVlYC4KCk15IGBGb2N1c1N5bWJvbHNgIGFyZTogYHBhZ2VfY291bnRlcl9tYXJnaW5gLCBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAsIGFuZCBgZm9saW9fYWxsb2Nfc3dhcGAuCgpBbmQgdGhlIGBFbmFibGVDb25maWdzYCBhcmU6IGBNRU1DR2AsIGBTV0FQYCwgYW5kIGBUSFBfU1dBUGAuCgpUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGlzIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCBkZWFsaW5nIHdpdGggc3dhcCBjaGFyZ2luZyBhbmQgbWVtY2cgbGltaXRzLCBhbmQgaG93IGl0IGhhbmRsZXMgZm9saW9zIGFuZCBmYWxsYmFja3MgdG8gc21hbGxlciBwYWdlcy4gSXQgY2FuIGJlIGhpdCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlLgoKT2theSwgbGV0IG1lIGRvdWJsZSBjaGVjayBhZ2Fpbi4uLiBgZm9saW9fYWxsb2Nfc3dhcGAgaXMgbm90IHN0YXRpYywgbm9yIGlzIGBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwYCBvciBgcGFnZV9jb3VudGVyX21hcmdpbmAuCgpXaGlsZSBJJiMzOTttIGF0IGl0LCBJIHNob3VsZCBzZWUgaWYgYW55ICpvdGhlciogY29uZmlncyBuZWVkIHRvIGJlIGFkZGVkLiBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBtaWdodCBiZSBuZWVkZWQgZm9yIGBUSFBfU1dBUGAsIGJ1dCBgVEhQX1NXQVBgIHVzdWFsbHkgZGVwZW5kcyBvbiBpdCwgc28gbGV0JiMzOTtzIGxlYXZlIGl0IGZvciBub3cuCgpOb3csIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDExOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7LAogICAgJiMzNDtTV0FQJiMzNDssCiAgICAmIzM0O1RIUF9TV0FQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFnZV9jb3VudGVyX21hcmdpbiYjMzQ7LAogICAgJiMzNDtfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwJiMzNDssCiAgICAmIzM0O2ZvbGlvX2FsbG9jX3N3YXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgZm9yIHN3YXAgY2hhcmdpbmcgYW5kIG1lbWNnIGxpbWl0cywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGxhcmdlIGZvbGlvcyBhbmQgZmFsbGJhY2sgdG8gc21hbGxlciBwYWdlcyB3aGVuIHN3YXAgc3BhY2Ugb3IgbWVtY2cgbGltaXRzIGFyZSBjb25zdHJhaW5lZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBhbmQgc3dhcHBpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O1NXQVAmIzM0OywKICAgICYjMzQ7VEhQX1NXQVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWdlX2NvdW50ZXJfbWFyZ2luJiMzNDssCiAgICAmIzM0O19fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAmIzM0OywKICAgICYjMzQ7Zm9saW9fYWxsb2Nfc3dhcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igc3dhcCBjaGFyZ2luZyBhbmQgbWVtY2cgbGltaXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgbGFyZ2UgZm9saW9zIGFuZCBmYWxsYmFjayB0byBzbWFsbGVyIHBhZ2VzIHdoZW4gc3dhcCBzcGFjZSBvciBtZW1jZyBsaW1pdHMgYXJlIGNvbnN0cmFpbmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlIGFuZCBzd2FwcGluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjM2OjMzLjM3NDYzNDA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4NDk5MDc0OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIlNXQVBcIixcbiAgICBcIlRIUF9TV0FQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFnZV9jb3VudGVyX21hcmdpblwiLFxuICAgIFwiX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcFwiLFxuICAgIFwiZm9saW9fYWxsb2Nfc3dhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGZvciBzd2FwIGNoYXJnaW5nIGFuZCBtZW1jZyBsaW1pdHMsIHNwZWNpZmljYWxseSBoYW5kbGluZyBsYXJnZSBmb2xpb3MgYW5kIGZhbGxiYWNrIHRvIHNtYWxsZXIgcGFnZXMgd2hlbiBzd2FwIHNwYWNlIG9yIG1lbWNnIGxpbWl0cyBhcmUgY29uc3RyYWluZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIHN3YXBwaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMTozNjozMy4zNzQ2NDAzNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMzM2NzA2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVjNjYxNjdiNzI0ZjhmOGFiNGVhY2FiNDU3Y2MyNTJjZThhNjMxNjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTE6MzY6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaCBiL2luY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmhcXG5pbmRleCBkNjQ5YjZiYmJjODcxYi4uMDdiN2NiMTIyNDljN2MgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9wYWdlX2NvdW50ZXIuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmhcXG5AQCAtNjgsNiArNjgsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcGFnZV9jb3VudGVyX3JlYWQoc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcilcXG4gXFx0cmV0dXJuIGF0b21pY19sb25nX3JlYWQoXFx1MDAyNmNvdW50ZXItXFx1MDAzZXVzYWdlKTtcXG4gfVxcbiBcXG4rbG9uZyBwYWdlX2NvdW50ZXJfbWFyZ2luKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIpO1xcbiB2b2lkIHBhZ2VfY291bnRlcl9jYW5jZWwoc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlciwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyk7XFxuIHZvaWQgcGFnZV9jb3VudGVyX2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcXG4gYm9vbCBwYWdlX2NvdW50ZXJfdHJ5X2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N3YXAuaCBiL2luY2x1ZGUvbGludXgvc3dhcC5oXFxuaW5kZXggN2EwOWRmNjk3N2E1ZjMuLjA2OTVhYzU2NDU3ZmY3IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvc3dhcC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zd2FwLmhcXG5AQCAtNTcxLDEzICs1NzEsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcClcXG4gI2VuZGlmXFxuIFxcbiAjaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1NXQVApXFxuLWludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KTtcXG4raW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnksXFxuK1xcdFxcdFxcdFxcdCBsb25nICpucl9zd2FwX3BhZ2VzKTtcXG4gc3RhdGljIGlubGluZSBpbnQgbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4tXFx0XFx0c3dwX2VudHJ5X3QgZW50cnkpXFxuK1xcdFxcdHN3cF9lbnRyeV90IGVudHJ5LCBsb25nICpucl9zd2FwX3BhZ2VzKVxcbiB7XFxuIFxcdGlmIChtZW1fY2dyb3VwX2Rpc2FibGVkKCkpXFxuIFxcdFxcdHJldHVybiAwO1xcbi1cXHRyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnkpO1xcbitcXHRyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnksIG5yX3N3YXBfcGFnZXMpO1xcbiB9XFxuIFxcbiBleHRlcm4gdm9pZCBfX21lbV9jZ3JvdXBfdW5jaGFyZ2Vfc3dhcChzd3BfZW50cnlfdCBlbnRyeSwgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTtcXG5AQCAtNTkyLDcgKzU5Myw4IEBAIGV4dGVybiBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKTtcXG4gZXh0ZXJuIGJvb2wgbWVtX2Nncm91cF9zd2FwX2Z1bGwoc3RydWN0IGZvbGlvICpmb2xpbyk7XFxuICNlbHNlXFxuIHN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgc3dwX2VudHJ5X3QgZW50cnkpXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgc3dwX2VudHJ5X3QgZW50cnksXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgbG9uZyAqbnJfc3dhcF9wYWdlcylcXG4ge1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmNcXG5pbmRleCAxNzc3MzJmZWYwMTBiYy4uNzE2MDBkNDE5NThlZjcgMTAwNjQ0XFxuLS0tIGEvbW0vbWVtY29udHJvbC5jXFxuKysrIGIvbW0vbWVtY29udHJvbC5jXFxuQEAgLTU0NzIsMTIgKzU0NzIsMTQgQEAgaW50IF9faW5pdCBtZW1fY2dyb3VwX2luaXQodm9pZClcXG4gICogX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcCAtIHRyeSBjaGFyZ2luZyBzd2FwIHNwYWNlIGZvciBhIGZvbGlvXFxuICAqIEBmb2xpbzogZm9saW8gYmVpbmcgYWRkZWQgdG8gc3dhcFxcbiAgKiBAZW50cnk6IHN3YXAgZW50cnkgdG8gY2hhcmdlXFxuKyAqIEBucl9zd2FwX3BhZ2VzOiBvcHRpb25hbCBzd2FwIGF2YWlsYWJpbGl0eSB0byBjYXAgYnkgbWVtY2cgbWFyZ2luXFxuICAqXFxuICAqIFRyeSB0byBjaGFyZ2UgQGZvbGlvJ3MgbWVtY2cgZm9yIHRoZSBzd2FwIHNwYWNlIGF0IEBlbnRyeS5cXG4gICpcXG4gICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1FTk9NRU0gb24gZmFpbHVyZS5cXG4gICovXFxuLWludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KVxcbitpbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcXG4rXFx0XFx0XFx0XFx0IGxvbmcgKm5yX3N3YXBfcGFnZXMpXFxuIHtcXG4gXFx0dW5zaWduZWQgaW50IG5yX3BhZ2VzID0gZm9saW9fbnJfcGFnZXMoZm9saW8pO1xcbiBcXHRzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyO1xcbkBAIC01NDk1LDYgKzU0OTcsOSBAQCBpbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSlcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRtZW1jZyA9IG9ial9jZ3JvdXBfbWVtY2cob2JqY2cpO1xcbiBcXHRpZiAoIWVudHJ5LnZhbCkge1xcbitcXHRcXHRpZiAobnJfc3dhcF9wYWdlcyBcXHUwMDI2XFx1MDAyNiAhbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcXG4rXFx0XFx0XFx0Km5yX3N3YXBfcGFnZXMgPSBtaW4oKm5yX3N3YXBfcGFnZXMsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgcGFnZV9jb3VudGVyX21hcmdpbihcXHUwMDI2bWVtY2ctXFx1MDAzZXN3YXApKTtcXG4gXFx0XFx0bWVtY2dfbWVtb3J5X2V2ZW50KG1lbWNnLCBNRU1DR19TV0FQX0ZBSUwpO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuQEAgLTU1MDksNiArNTUxNCw5IEBAIGludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KVxcbiBcXHRcXHRtZW1jZ19tZW1vcnlfZXZlbnQobWVtY2csIE1FTUNHX1NXQVBfTUFYKTtcXG4gXFx0XFx0bWVtY2dfbWVtb3J5X2V2ZW50KG1lbWNnLCBNRU1DR19TV0FQX0ZBSUwpO1xcbiBcXHRcXHRtZW1fY2dyb3VwX3ByaXZhdGVfaWRfcHV0KG1lbWNnLCBucl9wYWdlcyk7XFxuK1xcdFxcdGlmIChucl9zd2FwX3BhZ2VzKVxcbitcXHRcXHRcXHQqbnJfc3dhcF9wYWdlcyA9IG1pbigqbnJfc3dhcF9wYWdlcyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBwYWdlX2NvdW50ZXJfbWFyZ2luKGNvdW50ZXIpKTtcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdH1cXG4gXFx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19TV0FQLCBucl9wYWdlcyk7XFxuQEAgLTU1NTAsMTAgKzU1NTgsNyBAQCBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbiBcXG4gXFx0aWYgKG1lbV9jZ3JvdXBfZGlzYWJsZWQoKSB8fCBkb19tZW1zd19hY2NvdW50KCkpXFxuIFxcdFxcdHJldHVybiBucl9zd2FwX3BhZ2VzO1xcbi1cXHRmb3IgKDsgIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZyk7IG1lbWNnID0gcGFyZW50X21lbV9jZ3JvdXAobWVtY2cpKVxcbi1cXHRcXHRucl9zd2FwX3BhZ2VzID0gbWluX3QobG9uZywgbnJfc3dhcF9wYWdlcyxcXG4tXFx0XFx0XFx0XFx0ICAgICAgUkVBRF9PTkNFKG1lbWNnLVxcdTAwM2Vzd2FwLm1heCkgLVxcbi1cXHRcXHRcXHRcXHQgICAgICBwYWdlX2NvdW50ZXJfcmVhZChcXHUwMDI2bWVtY2ctXFx1MDAzZXN3YXApKTtcXG4rXFx0bnJfc3dhcF9wYWdlcyA9IG1pbihucl9zd2FwX3BhZ2VzLCBwYWdlX2NvdW50ZXJfbWFyZ2luKFxcdTAwMjZtZW1jZy1cXHUwMDNlc3dhcCkpO1xcbiBcXHRyZXR1cm4gbnJfc3dhcF9wYWdlcztcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV9jb3VudGVyLmMgYi9tbS9wYWdlX2NvdW50ZXIuY1xcbmluZGV4IDY2MWUwZjJhNTEyN2E1Li42ZTU1Yzc2MjgwMjVmMyAxMDA2NDRcXG4tLS0gYS9tbS9wYWdlX2NvdW50ZXIuY1xcbisrKyBiL21tL3BhZ2VfY291bnRlci5jXFxuQEAgLTE3MSw2ICsxNzEsMjYgQEAgYm9vbCBwYWdlX2NvdW50ZXJfdHJ5X2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLFxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG4gXFxuKy8qKlxcbisgKiBwYWdlX2NvdW50ZXJfbWFyZ2luIC0gcmVtYWluaW5nIGNoYXJnZWFibGUgcGFnZXMgd2l0aGluIGhpZXJhcmNoaWNhbCBsaW1pdHNcXG4rICogQGNvdW50ZXI6IGNvdW50ZXJcXG4rICpcXG4rICogUmV0dXJucyB0aGUgc21hbGxlc3QgcmVtYWluaW5nIG1hcmdpbiBiZXR3ZWVuIEBjb3VudGVyIGFuZCB0aGUgcm9vdC5cXG4rICovXFxuK2xvbmcgcGFnZV9jb3VudGVyX21hcmdpbihzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyKVxcbit7XFxuK1xcdGxvbmcgbWFyZ2luID0gUEFHRV9DT1VOVEVSX01BWDtcXG4rXFxuK1xcdGZvciAoOyBjb3VudGVyOyBjb3VudGVyID0gY291bnRlci1cXHUwMDNlcGFyZW50KSB7XFxuK1xcdFxcdGxvbmcgbGltaXQgPSBSRUFEX09OQ0UoY291bnRlci1cXHUwMDNlbWF4KTtcXG4rXFx0XFx0bG9uZyB1c2FnZSA9IHBhZ2VfY291bnRlcl9yZWFkKGNvdW50ZXIpO1xcbitcXG4rXFx0XFx0bWFyZ2luID0gbWluKG1hcmdpbiwgbGltaXQgLSB1c2FnZSk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBtYXJnaW47XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBwYWdlX2NvdW50ZXJfdW5jaGFyZ2UgLSBoaWVyYXJjaGljYWxseSB1bmNoYXJnZSBwYWdlc1xcbiAgKiBAY291bnRlcjogY291bnRlclxcbmRpZmYgLS1naXQgYS9tbS9zd2FwZmlsZS5jIGIvbW0vc3dhcGZpbGUuY1xcbmluZGV4IDkxNzRmMWVlZmZiMDkxLi41M2E5MjFjYTA5OWFlZCAxMDA2NDRcXG4tLS0gYS9tbS9zd2FwZmlsZS5jXFxuKysrIGIvbW0vc3dhcGZpbGUuY1xcbkBAIC0xNjkwLDEyICsxNjkwLDE0IEBAIHN0YXRpYyBpbnQgc3dhcF9kdXBfZW50cmllc19jbHVzdGVyKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzaSxcXG4gICogc3dhcCBjYWNoZS5cXG4gICpcXG4gICogQ29udGV4dDogQ2FsbGVyIG5lZWRzIHRvIGhvbGQgdGhlIGZvbGlvIGxvY2suXFxuLSAqIFJldHVybjogV2hldGhlciB0aGUgZm9saW8gd2FzIGFkZGVkIHRvIHRoZSBzd2FwIGNhY2hlLlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUUyQklHIGlmIHNwbGl0dGluZyB0aGUgZm9saW8gbWlnaHQgYWxsb3cgc3dhcG91dCxcXG4rICogb3IgYW5vdGhlciBuZWdhdGl2ZSBlcnJvciBjb2RlIGlmIHNwbGl0dGluZyB3b3VsZCBub3QgaGVscC5cXG4gICovXFxuIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIHtcXG4gXFx0dW5zaWduZWQgaW50IG9yZGVyID0gZm9saW9fb3JkZXIoZm9saW8pO1xcbiBcXHR1bnNpZ25lZCBpbnQgc2l6ZSA9IDEgXFx1MDAzY1xcdTAwM2Mgb3JkZXI7XFxuK1xcdGxvbmcgbnJfc3dhcF9wYWdlcztcXG4gXFxuIFxcdFZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7XFxuIFxcdFZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF91cHRvZGF0ZShmb2xpbyksIGZvbGlvKTtcXG5AQCAtMTcwNiw3ICsxNzA4LDcgQEAgaW50IGZvbGlvX2FsbG9jX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbylcXG4gXFx0XFx0ICogdGhlIGNhbGxlciBzaG91bGQgc3BsaXQgdGhlIGZvbGlvIGFuZCB0cnkgYWdhaW4uXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1RIUF9TV0FQKSlcXG4tXFx0XFx0XFx0cmV0dXJuIC1FQUdBSU47XFxuK1xcdFxcdFxcdHJldHVybiAtRTJCSUc7XFxuIFxcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBBbGxvY2F0aW9uIHNpemUgc2hvdWxkIG5ldmVyIGV4Y2VlZCBjbHVzdGVyIHNpemVcXG5AQCAtMTcxNCwxMCArMTcxNiwxMiBAQCBpbnQgZm9saW9fYWxsb2Nfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKHNpemUgXFx1MDAzZSBTV0FQRklMRV9DTFVTVEVSKSB7XFxuIFxcdFxcdFxcdFZNX1dBUk5fT05fT05DRSgxKTtcXG4tXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdFxcdHJldHVybiAtRTJCSUc7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4rXFx0bnJfc3dhcF9wYWdlcyA9IGdldF9ucl9zd2FwX3BhZ2VzKCk7XFxuK1xcbiBhZ2FpbjpcXG4gXFx0bG9jYWxfbG9jayhcXHUwMDI2cGVyY3B1X3N3YXBfY2x1c3Rlci5sb2NrKTtcXG4gXFx0aWYgKCFzd2FwX2FsbG9jX2Zhc3QoZm9saW8pKVxcbkBAIC0xNzMwLDExICsxNzM0LDE2IEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIFxcdH1cXG4gXFxuIFxcdC8qIE5lZWQgdG8gY2FsbCB0aGlzIGV2ZW4gaWYgYWxsb2NhdGlvbiBmYWlsZWQsIGZvciBNRU1DR19TV0FQX0ZBSUwuICovXFxuLVxcdGlmICh1bmxpa2VseShtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZm9saW8tXFx1MDAzZXN3YXApKSlcXG4rXFx0aWYgKHVubGlrZWx5KG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKGZvbGlvLCBmb2xpby1cXHUwMDNlc3dhcCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNm5yX3N3YXBfcGFnZXMpKSkge1xcbiBcXHRcXHRzd2FwX2NhY2hlX2RlbF9mb2xpbyhmb2xpbyk7XFxuK1xcdFxcdHJldHVybiBvcmRlciBcXHUwMDI2XFx1MDAyNiBucl9zd2FwX3BhZ2VzIFxcdTAwM2UgMCA/IC1FMkJJRyA6IC1FTk9NRU07XFxuK1xcdH1cXG4gXFxuLVxcdGlmICh1bmxpa2VseSghZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKSlcXG4tXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdGlmICh1bmxpa2VseSghZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKSkge1xcbitcXHRcXHRucl9zd2FwX3BhZ2VzID0gZ2V0X25yX3N3YXBfcGFnZXMoKTtcXG4rXFx0XFx0cmV0dXJuIG9yZGVyIFxcdTAwMjZcXHUwMDI2IG5yX3N3YXBfcGFnZXMgXFx1MDAzZSAwID8gLUUyQklHIDogLUVOT1NQQztcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xcbmluZGV4IGJkMWIxYWExMjU4MTlmLi40MDM0MGE4OGY3OGVkNiAxMDA2NDRcXG4tLS0gYS9tbS92bXNjYW4uY1xcbisrKyBiL21tL3Ztc2Nhbi5jXFxuQEAgLTEyNjAsNiArMTI2MCw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2hyaW5rX2ZvbGlvX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqZm9saW9fbGlzdCxcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChmb2xpb190ZXN0X2Fub24oZm9saW8pIFxcdTAwMjZcXHUwMDI2IGZvbGlvX3Rlc3Rfc3dhcGJhY2tlZChmb2xpbykgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0IWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkge1xcbitcXHRcXHRcXHRpbnQgcmV0O1xcbitcXG4gXFx0XFx0XFx0aWYgKCEoc2MtXFx1MDAzZWdmcF9tYXNrIFxcdTAwMjYgX19HRlBfSU8pKVxcbiBcXHRcXHRcXHRcXHRnb3RvIGtlZXBfbG9ja2VkO1xcbiBcXHRcXHRcXHRpZiAoZm9saW9fbWF5YmVfZG1hX3Bpbm5lZChmb2xpbykpXFxuQEAgLTEyNzgsMTAgKzEyODAsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzaHJpbmtfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxcbiBcXHRcXHRcXHRcXHQgICAgc3BsaXRfZm9saW9fdG9fbGlzdChmb2xpbywgZm9saW9fbGlzdCkpXFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gYWN0aXZhdGVfbG9ja2VkO1xcbiBcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdGlmIChmb2xpb19hbGxvY19zd2FwKGZvbGlvKSkge1xcbitcXHRcXHRcXHRyZXQgPSBmb2xpb19hbGxvY19zd2FwKGZvbGlvKTtcXG4rXFx0XFx0XFx0aWYgKHJldCkge1xcbiBcXHRcXHRcXHRcXHRpbnQgX19tYXliZV91bnVzZWQgb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XFxuIFxcbi1cXHRcXHRcXHRcXHRpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKVxcbitcXHRcXHRcXHRcXHRpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pIHx8IHJldCAhPSAtRTJCSUcpXFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gYWN0aXZhdGVfbG9ja2VkX3NwbGl0O1xcbiBcXHRcXHRcXHRcXHQvKiBGYWxsYmFjayB0byBzd2FwIG5vcm1hbCBwYWdlcyAqL1xcbiBcXHRcXHRcXHRcXHRpZiAoc3BsaXRfZm9saW9fdG9fbGlzdChmb2xpbywgZm9saW9fbGlzdCkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDExOjM2OjM0LjM4ODk4Mjk3MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA4MzU1NDk3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIlNXQVBcIixcbiAgICBcIlRIUF9TV0FQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFnZV9jb3VudGVyX21hcmdpblwiLFxuICAgIFwiX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcFwiLFxuICAgIFwiZm9saW9fYWxsb2Nfc3dhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGZvciBzd2FwIGNoYXJnaW5nIGFuZCBtZW1jZyBsaW1pdHMsIHNwZWNpZmljYWxseSBoYW5kbGluZyBsYXJnZSBmb2xpb3MgYW5kIGZhbGxiYWNrIHRvIHNtYWxsZXIgcGFnZXMgd2hlbiBzd2FwIHNwYWNlIG9yIG1lbWNnIGxpbWl0cyBhcmUgY29uc3RyYWluZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIHN3YXBwaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVjNjYxNjdiNzI0ZjhmOGFiNGVhY2FiNDU3Y2MyNTJjZThhNjMxNjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMTozNjozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGFnZV9jb3VudGVyLmggYi9pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oXG5pbmRleCBkNjQ5YjZiYmJjODcxYi4uMDdiN2NiMTIyNDljN2MgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BhZ2VfY291bnRlci5oXG5AQCAtNjgsNiArNjgsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcGFnZV9jb3VudGVyX3JlYWQoc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcilcbiBcdHJldHVybiBhdG9taWNfbG9uZ19yZWFkKFx1MDAyNmNvdW50ZXItXHUwMDNldXNhZ2UpO1xuIH1cbiBcbitsb25nIHBhZ2VfY291bnRlcl9tYXJnaW4oc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcik7XG4gdm9pZCBwYWdlX2NvdW50ZXJfY2FuY2VsKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpO1xuIHZvaWQgcGFnZV9jb3VudGVyX2NoYXJnZShzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTtcbiBib29sIHBhZ2VfY291bnRlcl90cnlfY2hhcmdlKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIsXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zd2FwLmggYi9pbmNsdWRlL2xpbnV4L3N3YXAuaFxuaW5kZXggN2EwOWRmNjk3N2E1ZjMuLjA2OTVhYzU2NDU3ZmY3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zd2FwLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc3dhcC5oXG5AQCAtNTcxLDEzICs1NzEsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3Rocm90dGxlX3N3YXByYXRlKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcClcbiAjZW5kaWZcbiBcbiAjaWYgZGVmaW5lZChDT05GSUdfTUVNQ0cpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19TV0FQKVxuLWludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KTtcbitpbnQgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzd3BfZW50cnlfdCBlbnRyeSxcbitcdFx0XHRcdCBsb25nICpucl9zd2FwX3BhZ2VzKTtcbiBzdGF0aWMgaW5saW5lIGludCBtZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuLVx0XHRzd3BfZW50cnlfdCBlbnRyeSlcbitcdFx0c3dwX2VudHJ5X3QgZW50cnksIGxvbmcgKm5yX3N3YXBfcGFnZXMpXG4ge1xuIFx0aWYgKG1lbV9jZ3JvdXBfZGlzYWJsZWQoKSlcbiBcdFx0cmV0dXJuIDA7XG4tXHRyZXR1cm4gX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcChmb2xpbywgZW50cnkpO1xuK1x0cmV0dXJuIF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoZm9saW8sIGVudHJ5LCBucl9zd2FwX3BhZ2VzKTtcbiB9XG4gXG4gZXh0ZXJuIHZvaWQgX19tZW1fY2dyb3VwX3VuY2hhcmdlX3N3YXAoc3dwX2VudHJ5X3QgZW50cnksIHVuc2lnbmVkIGludCBucl9wYWdlcyk7XG5AQCAtNTkyLDcgKzU5Myw4IEBAIGV4dGVybiBsb25nIG1lbV9jZ3JvdXBfZ2V0X25yX3N3YXBfcGFnZXMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKTtcbiBleHRlcm4gYm9vbCBtZW1fY2dyb3VwX3N3YXBfZnVsbChzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgaW50IG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sXG4tXHRcdFx0XHRcdCAgICAgc3dwX2VudHJ5X3QgZW50cnkpXG4rXHRcdFx0XHRcdCAgICAgc3dwX2VudHJ5X3QgZW50cnksXG4rXHRcdFx0XHRcdCAgICAgbG9uZyAqbnJfc3dhcF9wYWdlcylcbiB7XG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jXG5pbmRleCAxNzc3MzJmZWYwMTBiYy4uNzE2MDBkNDE5NThlZjcgMTAwNjQ0XG4tLS0gYS9tbS9tZW1jb250cm9sLmNcbisrKyBiL21tL21lbWNvbnRyb2wuY1xuQEAgLTU0NzIsMTIgKzU0NzIsMTQgQEAgaW50IF9faW5pdCBtZW1fY2dyb3VwX2luaXQodm9pZClcbiAgKiBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwIC0gdHJ5IGNoYXJnaW5nIHN3YXAgc3BhY2UgZm9yIGEgZm9saW9cbiAgKiBAZm9saW86IGZvbGlvIGJlaW5nIGFkZGVkIHRvIHN3YXBcbiAgKiBAZW50cnk6IHN3YXAgZW50cnkgdG8gY2hhcmdlXG4rICogQG5yX3N3YXBfcGFnZXM6IG9wdGlvbmFsIHN3YXAgYXZhaWxhYmlsaXR5IHRvIGNhcCBieSBtZW1jZyBtYXJnaW5cbiAgKlxuICAqIFRyeSB0byBjaGFyZ2UgQGZvbGlvJ3MgbWVtY2cgZm9yIHRoZSBzd2FwIHNwYWNlIGF0IEBlbnRyeS5cbiAgKlxuICAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtRU5PTUVNIG9uIGZhaWx1cmUuXG4gICovXG4taW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpXG4raW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnksXG4rXHRcdFx0XHQgbG9uZyAqbnJfc3dhcF9wYWdlcylcbiB7XG4gXHR1bnNpZ25lZCBpbnQgbnJfcGFnZXMgPSBmb2xpb19ucl9wYWdlcyhmb2xpbyk7XG4gXHRzdHJ1Y3QgcGFnZV9jb3VudGVyICpjb3VudGVyO1xuQEAgLTU0OTUsNiArNTQ5Nyw5IEBAIGludCBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8sIHN3cF9lbnRyeV90IGVudHJ5KVxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0bWVtY2cgPSBvYmpfY2dyb3VwX21lbWNnKG9iamNnKTtcbiBcdGlmICghZW50cnkudmFsKSB7XG4rXHRcdGlmIChucl9zd2FwX3BhZ2VzIFx1MDAyNlx1MDAyNiAhbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcbitcdFx0XHQqbnJfc3dhcF9wYWdlcyA9IG1pbigqbnJfc3dhcF9wYWdlcyxcbitcdFx0XHRcdFx0ICAgICBwYWdlX2NvdW50ZXJfbWFyZ2luKFx1MDAyNm1lbWNnLVx1MDAzZXN3YXApKTtcbiBcdFx0bWVtY2dfbWVtb3J5X2V2ZW50KG1lbWNnLCBNRU1DR19TV0FQX0ZBSUwpO1xuIFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdFx0cmV0dXJuIDA7XG5AQCAtNTUwOSw2ICs1NTE0LDkgQEAgaW50IF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbywgc3dwX2VudHJ5X3QgZW50cnkpXG4gXHRcdG1lbWNnX21lbW9yeV9ldmVudChtZW1jZywgTUVNQ0dfU1dBUF9NQVgpO1xuIFx0XHRtZW1jZ19tZW1vcnlfZXZlbnQobWVtY2csIE1FTUNHX1NXQVBfRkFJTCk7XG4gXHRcdG1lbV9jZ3JvdXBfcHJpdmF0ZV9pZF9wdXQobWVtY2csIG5yX3BhZ2VzKTtcbitcdFx0aWYgKG5yX3N3YXBfcGFnZXMpXG4rXHRcdFx0Km5yX3N3YXBfcGFnZXMgPSBtaW4oKm5yX3N3YXBfcGFnZXMsXG4rXHRcdFx0XHRcdCAgICAgcGFnZV9jb3VudGVyX21hcmdpbihjb3VudGVyKSk7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0fVxuIFx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19TV0FQLCBucl9wYWdlcyk7XG5AQCAtNTU1MCwxMCArNTU1OCw3IEBAIGxvbmcgbWVtX2Nncm91cF9nZXRfbnJfc3dhcF9wYWdlcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4gXG4gXHRpZiAobWVtX2Nncm91cF9kaXNhYmxlZCgpIHx8IGRvX21lbXN3X2FjY291bnQoKSlcbiBcdFx0cmV0dXJuIG5yX3N3YXBfcGFnZXM7XG4tXHRmb3IgKDsgIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZyk7IG1lbWNnID0gcGFyZW50X21lbV9jZ3JvdXAobWVtY2cpKVxuLVx0XHRucl9zd2FwX3BhZ2VzID0gbWluX3QobG9uZywgbnJfc3dhcF9wYWdlcyxcbi1cdFx0XHRcdCAgICAgIFJFQURfT05DRShtZW1jZy1cdTAwM2Vzd2FwLm1heCkgLVxuLVx0XHRcdFx0ICAgICAgcGFnZV9jb3VudGVyX3JlYWQoXHUwMDI2bWVtY2ctXHUwMDNlc3dhcCkpO1xuK1x0bnJfc3dhcF9wYWdlcyA9IG1pbihucl9zd2FwX3BhZ2VzLCBwYWdlX2NvdW50ZXJfbWFyZ2luKFx1MDAyNm1lbWNnLVx1MDAzZXN3YXApKTtcbiBcdHJldHVybiBucl9zd2FwX3BhZ2VzO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2NvdW50ZXIuYyBiL21tL3BhZ2VfY291bnRlci5jXG5pbmRleCA2NjFlMGYyYTUxMjdhNS4uNmU1NWM3NjI4MDI1ZjMgMTAwNjQ0XG4tLS0gYS9tbS9wYWdlX2NvdW50ZXIuY1xuKysrIGIvbW0vcGFnZV9jb3VudGVyLmNcbkBAIC0xNzEsNiArMTcxLDI2IEBAIGJvb2wgcGFnZV9jb3VudGVyX3RyeV9jaGFyZ2Uoc3RydWN0IHBhZ2VfY291bnRlciAqY291bnRlcixcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4rLyoqXG4rICogcGFnZV9jb3VudGVyX21hcmdpbiAtIHJlbWFpbmluZyBjaGFyZ2VhYmxlIHBhZ2VzIHdpdGhpbiBoaWVyYXJjaGljYWwgbGltaXRzXG4rICogQGNvdW50ZXI6IGNvdW50ZXJcbisgKlxuKyAqIFJldHVybnMgdGhlIHNtYWxsZXN0IHJlbWFpbmluZyBtYXJnaW4gYmV0d2VlbiBAY291bnRlciBhbmQgdGhlIHJvb3QuXG4rICovXG4rbG9uZyBwYWdlX2NvdW50ZXJfbWFyZ2luKHN0cnVjdCBwYWdlX2NvdW50ZXIgKmNvdW50ZXIpXG4re1xuK1x0bG9uZyBtYXJnaW4gPSBQQUdFX0NPVU5URVJfTUFYO1xuK1xuK1x0Zm9yICg7IGNvdW50ZXI7IGNvdW50ZXIgPSBjb3VudGVyLVx1MDAzZXBhcmVudCkge1xuK1x0XHRsb25nIGxpbWl0ID0gUkVBRF9PTkNFKGNvdW50ZXItXHUwMDNlbWF4KTtcbitcdFx0bG9uZyB1c2FnZSA9IHBhZ2VfY291bnRlcl9yZWFkKGNvdW50ZXIpO1xuK1xuK1x0XHRtYXJnaW4gPSBtaW4obWFyZ2luLCBsaW1pdCAtIHVzYWdlKTtcbitcdH1cbitcbitcdHJldHVybiBtYXJnaW47XG4rfVxuK1xuIC8qKlxuICAqIHBhZ2VfY291bnRlcl91bmNoYXJnZSAtIGhpZXJhcmNoaWNhbGx5IHVuY2hhcmdlIHBhZ2VzXG4gICogQGNvdW50ZXI6IGNvdW50ZXJcbmRpZmYgLS1naXQgYS9tbS9zd2FwZmlsZS5jIGIvbW0vc3dhcGZpbGUuY1xuaW5kZXggOTE3NGYxZWVmZmIwOTEuLjUzYTkyMWNhMDk5YWVkIDEwMDY0NFxuLS0tIGEvbW0vc3dhcGZpbGUuY1xuKysrIGIvbW0vc3dhcGZpbGUuY1xuQEAgLTE2OTAsMTIgKzE2OTAsMTQgQEAgc3RhdGljIGludCBzd2FwX2R1cF9lbnRyaWVzX2NsdXN0ZXIoc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3QgKnNpLFxuICAqIHN3YXAgY2FjaGUuXG4gICpcbiAgKiBDb250ZXh0OiBDYWxsZXIgbmVlZHMgdG8gaG9sZCB0aGUgZm9saW8gbG9jay5cbi0gKiBSZXR1cm46IFdoZXRoZXIgdGhlIGZvbGlvIHdhcyBhZGRlZCB0byB0aGUgc3dhcCBjYWNoZS5cbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUUyQklHIGlmIHNwbGl0dGluZyB0aGUgZm9saW8gbWlnaHQgYWxsb3cgc3dhcG91dCxcbisgKiBvciBhbm90aGVyIG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgc3BsaXR0aW5nIHdvdWxkIG5vdCBoZWxwLlxuICAqL1xuIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4ge1xuIFx0dW5zaWduZWQgaW50IG9yZGVyID0gZm9saW9fb3JkZXIoZm9saW8pO1xuIFx0dW5zaWduZWQgaW50IHNpemUgPSAxIFx1MDAzY1x1MDAzYyBvcmRlcjtcbitcdGxvbmcgbnJfc3dhcF9wYWdlcztcbiBcbiBcdFZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7XG4gXHRWTV9CVUdfT05fRk9MSU8oIWZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pLCBmb2xpbyk7XG5AQCAtMTcwNiw3ICsxNzA4LDcgQEAgaW50IGZvbGlvX2FsbG9jX3N3YXAoc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdFx0ICogdGhlIGNhbGxlciBzaG91bGQgc3BsaXQgdGhlIGZvbGlvIGFuZCB0cnkgYWdhaW4uXG4gXHRcdCAqL1xuIFx0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1RIUF9TV0FQKSlcbi1cdFx0XHRyZXR1cm4gLUVBR0FJTjtcbitcdFx0XHRyZXR1cm4gLUUyQklHO1xuIFxuIFx0XHQvKlxuIFx0XHQgKiBBbGxvY2F0aW9uIHNpemUgc2hvdWxkIG5ldmVyIGV4Y2VlZCBjbHVzdGVyIHNpemVcbkBAIC0xNzE0LDEwICsxNzE2LDEyIEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4gXHRcdCAqL1xuIFx0XHRpZiAoc2l6ZSBcdTAwM2UgU1dBUEZJTEVfQ0xVU1RFUikge1xuIFx0XHRcdFZNX1dBUk5fT05fT05DRSgxKTtcbi1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHRyZXR1cm4gLUUyQklHO1xuIFx0XHR9XG4gXHR9XG4gXG4rXHRucl9zd2FwX3BhZ2VzID0gZ2V0X25yX3N3YXBfcGFnZXMoKTtcbitcbiBhZ2FpbjpcbiBcdGxvY2FsX2xvY2soXHUwMDI2cGVyY3B1X3N3YXBfY2x1c3Rlci5sb2NrKTtcbiBcdGlmICghc3dhcF9hbGxvY19mYXN0KGZvbGlvKSlcbkBAIC0xNzMwLDExICsxNzM0LDE2IEBAIGludCBmb2xpb19hbGxvY19zd2FwKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4gXHR9XG4gXG4gXHQvKiBOZWVkIHRvIGNhbGwgdGhpcyBldmVuIGlmIGFsbG9jYXRpb24gZmFpbGVkLCBmb3IgTUVNQ0dfU1dBUF9GQUlMLiAqL1xuLVx0aWYgKHVubGlrZWx5KG1lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwKGZvbGlvLCBmb2xpby1cdTAwM2Vzd2FwKSkpXG4rXHRpZiAodW5saWtlbHkobWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXAoZm9saW8sIGZvbGlvLVx1MDAzZXN3YXAsXG4rXHRcdFx0XHRcdFx0XHUwMDI2bnJfc3dhcF9wYWdlcykpKSB7XG4gXHRcdHN3YXBfY2FjaGVfZGVsX2ZvbGlvKGZvbGlvKTtcbitcdFx0cmV0dXJuIG9yZGVyIFx1MDAyNlx1MDAyNiBucl9zd2FwX3BhZ2VzIFx1MDAzZSAwID8gLUUyQklHIDogLUVOT01FTTtcbitcdH1cbiBcbi1cdGlmICh1bmxpa2VseSghZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKSlcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4rXHRpZiAodW5saWtlbHkoIWZvbGlvX3Rlc3Rfc3dhcGNhY2hlKGZvbGlvKSkpIHtcbitcdFx0bnJfc3dhcF9wYWdlcyA9IGdldF9ucl9zd2FwX3BhZ2VzKCk7XG4rXHRcdHJldHVybiBvcmRlciBcdTAwMjZcdTAwMjYgbnJfc3dhcF9wYWdlcyBcdTAwM2UgMCA/IC1FMkJJRyA6IC1FTk9TUEM7XG4rXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xuaW5kZXggYmQxYjFhYTEyNTgxOWYuLjQwMzQwYTg4Zjc4ZWQ2IDEwMDY0NFxuLS0tIGEvbW0vdm1zY2FuLmNcbisrKyBiL21tL3Ztc2Nhbi5jXG5AQCAtMTI2MCw2ICsxMjYwLDggQEAgc3RhdGljIHVuc2lnbmVkIGludCBzaHJpbmtfZm9saW9fbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmb2xpb19saXN0LFxuIFx0XHQgKi9cbiBcdFx0aWYgKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgXHUwMDI2XHUwMDI2IGZvbGlvX3Rlc3Rfc3dhcGJhY2tlZChmb2xpbykgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQhZm9saW9fdGVzdF9zd2FwY2FjaGUoZm9saW8pKSB7XG4rXHRcdFx0aW50IHJldDtcbitcbiBcdFx0XHRpZiAoIShzYy1cdTAwM2VnZnBfbWFzayBcdTAwMjYgX19HRlBfSU8pKVxuIFx0XHRcdFx0Z290byBrZWVwX2xvY2tlZDtcbiBcdFx0XHRpZiAoZm9saW9fbWF5YmVfZG1hX3Bpbm5lZChmb2xpbykpXG5AQCAtMTI3OCwxMCArMTI4MCwxMSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHNocmlua19mb2xpb19saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZvbGlvX2xpc3QsXG4gXHRcdFx0XHQgICAgc3BsaXRfZm9saW9fdG9fbGlzdChmb2xpbywgZm9saW9fbGlzdCkpXG4gXHRcdFx0XHRcdGdvdG8gYWN0aXZhdGVfbG9ja2VkO1xuIFx0XHRcdH1cbi1cdFx0XHRpZiAoZm9saW9fYWxsb2Nfc3dhcChmb2xpbykpIHtcbitcdFx0XHRyZXQgPSBmb2xpb19hbGxvY19zd2FwKGZvbGlvKTtcbitcdFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0XHRpbnQgX19tYXliZV91bnVzZWQgb3JkZXIgPSBmb2xpb19vcmRlcihmb2xpbyk7XG4gXG4tXHRcdFx0XHRpZiAoIWZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKVxuK1x0XHRcdFx0aWYgKCFmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSB8fCByZXQgIT0gLUUyQklHKVxuIFx0XHRcdFx0XHRnb3RvIGFjdGl2YXRlX2xvY2tlZF9zcGxpdDtcbiBcdFx0XHRcdC8qIEZhbGxiYWNrIHRvIHN3YXAgbm9ybWFsIHBhZ2VzICovXG4gXHRcdFx0XHRpZiAoc3BsaXRfZm9saW9fdG9fbGlzdChmb2xpbywgZm9saW9fbGlzdCkpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMTozNjozNC4zODg5ODQ4NzJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDU5NzQ4MTc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFN3YXAgQ2hhcmdpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBzd2FwIGNoYXJnaW5nIGFuZCBtZW1jZyBpbnRlcmFjdGlvbnMgd2l0aGluIGBtbS9tZW1jb250cm9sLmNgLCBgbW0vcGFnZV9jb3VudGVyLmNgLCBgbW0vc3dhcGZpbGUuY2AsIGFuZCBgbW0vdm1zY2FuLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgdGhpcyBgcGFnZV9jb3VudGVyX21hcmdpbmAsIGFuZCB0aGVuIG1vZGlmeWluZyBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAgdG8gdGFrZSBgbnJfc3dhcF9wYWdlc2AgYW5kIGltcGxlbWVudCBhIGNhcCBiYXNlZCBvbiB0aGUgbWVtY2cgbWFyZ2luLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQgYWxzbyB0b3VjaGVzIGBmb2xpb19hbGxvY19zd2FwYCwgbWFraW5nIGl0IHJldHVybiBgLUUyQklHYCBpZiBzcGxpdHRpbmcgYSBmb2xpbyAqbWlnaHQqIGFsbG93IHN3YXBvdXQsIGFuZCB0aGVuIGBzaHJpbmtfZm9saW9fbGlzdGAgaXMgYWRqdXN0ZWQgdG8gaGFuZGxlIHRoYXQgcmV0dXJuIGFuZCBhY3R1YWxseSBzcGxpdCB0aGUgZm9saW8uXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IOKAkyBzcGVjaWZpY2FsbHkgYXJvdW5kIHN3YXAgYW5kIG1lbWNnIGludGVyYWN0aW9uLiBTaW5jZSBpdCdzIGNoYW5naW5nIHRoZSBleGVjdXRpb24gZmxvdywgZnV6emluZyBpcyBhYnNvbHV0ZWx5IHdhcnJhbnRlZC5cblxuTGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMuIEkgdGhpbmsgYHBhZ2VfY291bnRlcl9tYXJnaW5gLCBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAsIGFuZCBgZm9saW9fYWxsb2Nfc3dhcGAgYXJlIHByaW1lIHRhcmdldHMuIEkgbWlnaHQgYWRkIGBzaHJpbmtfZm9saW9fbGlzdGAgdG8gdGhlIGxpc3QsIGJ1dCBpdCBtaWdodCBiZSB0b28gaG90LCBhbmQgYGZvbGlvX2FsbG9jX3N3YXBgIHNlZW1zIG1vcmUgY3J1Y2lhbC5cblxuSSd2ZSBhbHJlYWR5IGNoZWNrZWQgYG1tL3N3YXBmaWxlLmNgIGFuZCBgbW0vbWVtY29udHJvbC5jYCBhbmQgY29uZmlybWVkIHRob3NlIGZ1bmN0aW9ucyBhcmUgaW4gdGhlIGNvZGUuIGBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwYCBhbmQgYGZvbGlvX2FsbG9jX3N3YXBgIGxvb2sgdG8gYmUgZ29vZCwgaGlnaC12YWx1ZSBzeW1ib2xzLlxuXG5Ob3csIGxldCdzIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3MuIEknbSBzZWVpbmcgdGhhdCB3ZSdsbCBuZWVkIGBDT05GSUdfTUVNQ0dgLCBgQ09ORklHX1NXQVBgLCBhbmQgYENPTkZJR19USFBfU1dBUGAgc2luY2UgaXQgbWVudGlvbnMgaXQgaW4gYGZvbGlvX2FsbG9jX3N3YXBgLlxuXG5KdXN0IGNoZWNrZWQgYGluY2x1ZGUvbGludXgvc3dhcC5oYCwgYW5kLCBhcyBleHBlY3RlZCwgYm90aCBgTUVNQ0dgIGFuZCBgU1dBUGAgYXJlIHJlcXVpcmVkIGZvciB0aGUgYF9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXBgIGZ1bmN0aW9uLiBHb29kLlxuXG5JbiBgbW0vc3dhcGZpbGUuY2AsIGBDT05GSUdfVEhQX1NXQVBgIGlzIHVzZWQuXG5cbkFscmlnaHQsIHRoZSBuZXh0IHRoaW5nIGlzIHRvIHNldCB1cCB0aGUgcmVzdWx0cyB3aXRoIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wuXG5cblNvLCBXb3J0aEZ1enppbmcgaXMgZGVmaW5pdGVseSBgdHJ1ZWAuXG5cbk15IGBGb2N1c1N5bWJvbHNgIGFyZTogYHBhZ2VfY291bnRlcl9tYXJnaW5gLCBgX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcGAsIGFuZCBgZm9saW9fYWxsb2Nfc3dhcGAuXG5cbkFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGFyZTogYE1FTUNHYCwgYFNXQVBgLCBhbmQgYFRIUF9TV0FQYC5cblxuVGhlIHJlYXNvbmluZyBpcyBzb2xpZDogdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgZGVhbGluZyB3aXRoIHN3YXAgY2hhcmdpbmcgYW5kIG1lbWNnIGxpbWl0cywgYW5kIGhvdyBpdCBoYW5kbGVzIGZvbGlvcyBhbmQgZmFsbGJhY2tzIHRvIHNtYWxsZXIgcGFnZXMuIEl0IGNhbiBiZSBoaXQgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZS5cblxuT2theSwgbGV0IG1lIGRvdWJsZSBjaGVjayBhZ2Fpbi4uLiBgZm9saW9fYWxsb2Nfc3dhcGAgaXMgbm90IHN0YXRpYywgbm9yIGlzIGBfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZV9zd2FwYCBvciBgcGFnZV9jb3VudGVyX21hcmdpbmAuXG5cbldoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgc2VlIGlmIGFueSAqb3RoZXIqIGNvbmZpZ3MgbmVlZCB0byBiZSBhZGRlZC4gYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgbWlnaHQgYmUgbmVlZGVkIGZvciBgVEhQX1NXQVBgLCBidXQgYFRIUF9TV0FQYCB1c3VhbGx5IGRlcGVuZHMgb24gaXQsIHNvIGxldCdzIGxlYXZlIGl0IGZvciBub3cuXG5cbk5vdywgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NCwiT3V0cHV0VG9rZW5zIjoxMjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMTozNjo0NC45ODY0Njg5NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODA1OTc2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNQ0dcIixcbiAgICBcIlNXQVBcIixcbiAgICBcIlRIUF9TV0FQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFnZV9jb3VudGVyX21hcmdpblwiLFxuICAgIFwiX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Vfc3dhcFwiLFxuICAgIFwiZm9saW9fYWxsb2Nfc3dhcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGZvciBzd2FwIGNoYXJnaW5nIGFuZCBtZW1jZyBsaW1pdHMsIHNwZWNpZmljYWxseSBoYW5kbGluZyBsYXJnZSBmb2xpb3MgYW5kIGZhbGxiYWNrIHRvIHNtYWxsZXIgcGFnZXMgd2hlbiBzd2FwIHNwYWNlIG9yIG1lbWNnIGxpbWl0cyBhcmUgY29uc3RyYWluZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgYW5kIHN3YXBwaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJTV0FQXCIsXG4gICAgXCJUSFBfU1dBUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhZ2VfY291bnRlcl9tYXJnaW5cIixcbiAgICBcIl9fbWVtX2Nncm91cF90cnlfY2hhcmdlX3N3YXBcIixcbiAgICBcImZvbGlvX2FsbG9jX3N3YXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igc3dhcCBjaGFyZ2luZyBhbmQgbWVtY2cgbGltaXRzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgbGFyZ2UgZm9saW9zIGFuZCBmYWxsYmFjayB0byBzbWFsbGVyIHBhZ2VzIHdoZW4gc3dhcCBzcGFjZSBvciBtZW1jZyBsaW1pdHMgYXJlIGNvbnN0cmFpbmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgbWVtb3J5IHByZXNzdXJlIGFuZCBzd2FwcGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowtvf82[1] Phase: Succeeded StartedAt: 2026-07-10 11:36:57 +0000 UTC FinishedAt: 2026-07-10 11:36:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 11:36:57 +0000 UTC FinishedAt: 2026-07-10 11:36:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2] Phase: Succeeded StartedAt: 2026-07-10 11:36:57 +0000 UTC FinishedAt: 2026-07-10 15:56:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-10 11:36:57 +0000 UTC FinishedAt: 2026-07-10 15:56:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-10 11:36:57 +0000 UTC FinishedAt: 2026-07-10 11:37:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-10 11:36:57 +0000 UTC FinishedAt: 2026-07-10 11:37:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtvf82/series-workflowtvf82-convert-artifact-2155016072/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-10 11:37:07 +0000 UTC FinishedAt: 2026-07-10 12:06:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-10 11:37:07 +0000 UTC FinishedAt: 2026-07-10 12:06:36 +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:*a05c39a5-bd49-4d5a-84c0-db76d29d30f2,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-workflowtvf82/series-workflowtvf82-convert-artifact-2155016072/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": "5f2564e7-ec70-444c-a8c4-b7891d9527b3", "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-workflowtvf82/series-workflowtvf82-build-action-618449406/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-10 11:37:07 +0000 UTC FinishedAt: 2026-07-10 12:06:26 +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:*a05c39a5-bd49-4d5a-84c0-db76d29d30f2,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-workflowtvf82/series-workflowtvf82-convert-artifact-2155016072/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": "5f2564e7-ec70-444c-a8c4-b7891d9527b3", "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-workflowtvf82/series-workflowtvf82-build-action-618449406/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-10 12:06:36 +0000 UTC FinishedAt: 2026-07-10 12:06:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-10 12:06:36 +0000 UTC FinishedAt: 2026-07-10 12:06:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-10 12:06:36 +0000 UTC FinishedAt: 2026-07-10 12:06:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-10 12:06:36 +0000 UTC FinishedAt: 2026-07-10 12:06:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtvf82/series-workflowtvf82-convert-artifact-127262575/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-10 12:06:57 +0000 UTC FinishedAt: 2026-07-10 12:09:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-10 12:06:57 +0000 UTC FinishedAt: 2026-07-10 12:08:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5f2564e7-ec70-444c-a8c4-b7891d9527b3,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-workflowtvf82/series-workflowtvf82-build-action-618449406/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-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-10 12:09:01 +0000 UTC FinishedAt: 2026-07-10 12:09:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-10 12:09:01 +0000 UTC FinishedAt: 2026-07-10 12:09:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-10 12:09:01 +0000 UTC FinishedAt: 2026-07-10 12:49:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-10 12:09:01 +0000 UTC FinishedAt: 2026-07-10 12:49:50 +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:*a05c39a5-bd49-4d5a-84c0-db76d29d30f2,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-workflowtvf82/series-workflowtvf82-convert-artifact-127262575/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": "11b35d10-991a-4593-8553-b8fa1e970c9a", "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-workflowtvf82/series-workflowtvf82-build-action-1421169411/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-10 12:09:01 +0000 UTC FinishedAt: 2026-07-10 12:49:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a05c39a5-bd49-4d5a-84c0-db76d29d30f2,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-workflowtvf82/series-workflowtvf82-convert-artifact-127262575/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": "11b35d10-991a-4593-8553-b8fa1e970c9a", "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-workflowtvf82/series-workflowtvf82-build-action-1421169411/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-10 12:49:50 +0000 UTC FinishedAt: 2026-07-10 12:49:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-10 12:49:50 +0000 UTC FinishedAt: 2026-07-10 12:49:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-10 12:49:50 +0000 UTC FinishedAt: 2026-07-10 12:51:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-10 12:49:50 +0000 UTC FinishedAt: 2026-07-10 12:51:43 +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:*11b35d10-991a-4593-8553-b8fa1e970c9a,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-workflowtvf82/series-workflowtvf82-build-action-1421169411/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-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-10 12:51:53 +0000 UTC FinishedAt: 2026-07-10 15:56:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-10 12:51:53 +0000 UTC FinishedAt: 2026-07-10 15:56:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*5f2564e7-ec70-444c-a8c4-b7891d9527b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*11b35d10-991a-4593-8553-b8fa1e970c9a,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-workflowtvf82/series-workflowtvf82-build-action-618449406/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-workflowtvf82/series-workflowtvf82-build-action-1421169411/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-10 12:51:53 +0000 UTC FinishedAt: 2026-07-10 12:53:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-10 12:51:53 +0000 UTC FinishedAt: 2026-07-10 12:52:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtvf82/series-workflowtvf82-convert-artifact-1162959400/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-10 12:51:53 +0000 UTC FinishedAt: 2026-07-10 12:51:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-10 12:51:53 +0000 UTC FinishedAt: 2026-07-10 12:51:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-10 12:51:53 +0000 UTC FinishedAt: 2026-07-10 12:51:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-10 12:53:23 +0000 UTC FinishedAt: 2026-07-10 15:56:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtvf82[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_counter_margin","__mem_cgroup_try_charge_swap","folio_alloc_swap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","SWAP","THP_SWAP"],"series_id":"5cd8e97c-db3b-4b59-9424-e4ff05a28f43","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-10 12:53:23 +0000 UTC FinishedAt: 2026-07-10 15:55:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5f2564e7-ec70-444c-a8c4-b7891d9527b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*11b35d10-991a-4593-8553-b8fa1e970c9a,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-workflowtvf82/series-workflowtvf82-build-action-618449406/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-workflowtvf82/series-workflowtvf82-build-action-1421169411/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-workflowtvf82/series-workflowtvf82-convert-artifact-1162959400/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,}