Name: series-workflowbbnsb Phase: Succeeded StartedAt: 2026-08-04 13:11:41 +0000 UTC FinishedAt: 2026-08-04 15:06:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[0] Phase: Succeeded StartedAt: 2026-08-04 13:11:41 +0000 UTC FinishedAt: 2026-08-04 13:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 13:11:41 +0000 UTC FinishedAt: 2026-08-04 13:40:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_UBLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_UBLK" ], "series_id": "fc7f2a32-2f94-4dcc-adbf-abbb3098d25a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ublk_ctrl_uring_cmd", "ublk_ctrl_unreg_buf", "ublk_shmem_remove_ranges", "__ublk_shmem_remove_ranges", "ublk_buf_cleanup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfY3RybF91cmluZ19jbWQmIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3VucmVnX2J1ZiYjMzQ7LAogICAgJiMzNDt1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7X191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7dWJsa19idWZfY2xlYW51cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhbiB4YXJyYXkgd2l0aCBhIGZpeGVkLXNpemUgYXJyYXkgaW4gYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCB0byBhdm9pZCBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHVibGsgZHJpdmVyLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyAoYHVibGtfY3RybF91cmluZ19jbWRgIC1cdTAwM2UgYHVibGtfY3RybF91bnJlZ19idWZgKSBhbmQgZGV2aWNlIGNsZWFudXAgKGB1YmxrX2NkZXZfcmVsYCAtXHUwMDNlIGB1YmxrX2J1Zl9jbGVhbnVwYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTM6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiMjQ1YmVkYTk2MzUxYzliNDMwNTJhODlmMTY2NTA2MGNiMjhjNjhmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMzozNzo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbmluZGV4IDY2ZjEwYTQ5NTA5ZjIuLjAwYTY2MTE0NjI0M2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xuQEAgLTU1MTksMzkgJiM0Mzs1NTE5LDM2IEBAIHN0YXRpYyB2b2lkIHVibGtfdW5waW5fcmFuZ2VfcGFnZXModW5zaWduZWQgbG9uZyBiYXNlX3BmbixcbiBcbiAvKlxuICAqIElubmVyIGxvb3A6IGVyYXNlIHVwIHRvIFVCTEtfUkVNT1ZFX0JBVENIIG1hdGNoaW5nIHJhbmdlcyB1bmRlclxuLSAqIG1hc19sb2NrLCBjb2xsZWN0aW5nIHRoZW0gaW50byBhbiB4YXJyYXkuIFRoZW4gZHJvcCB0aGUgbG9jayBhbmRcbi0gKiB1bnBpbiBwYWdlcyAmIzQzOyBmcmVlIHJhbmdlcyBvdXRzaWRlIHNwaW5sb2NrIGNvbnRleHQuXG4mIzQzOyAqIG1hc19sb2NrLCBjb2xsZWN0aW5nIHRoZSBwYWdlIHJhbmdlcyBpbiBhIGZpeGVkLXNpemUgYXJyYXkuIFRoZW5cbiYjNDM7ICogZHJvcCB0aGUgbG9jayBhbmQgdW5waW4gcGFnZXMgJiM0MzsgZnJlZSByYW5nZXMgb3V0c2lkZSBzcGlubG9jayBjb250ZXh0LlxuICAqXG4gICogUmV0dXJucyB0cnVlIGlmIHRoZSB0cmVlIHdhbGsgY29tcGxldGVkLCBmYWxzZSBpZiBtb3JlIHJhbmdlcyByZW1haW4uXG4tICogWGFycmF5IGtleSBpcyB0aGUgYmFzZSBQRk4sIHZhbHVlIGVuY29kZXMgbnJfcGFnZXMgdmlhIHhhX21rX3ZhbHVlKCkuXG4gICovXG4gI2RlZmluZSBVQkxLX1JFTU9WRV9CQVRDSFx0NjRcbiBcbiYjNDM7c3RydWN0IHVibGtfdW5waW5fcmFuZ2Uge1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgYmFzZV9wZm47XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBucl9wYWdlcztcbiYjNDM7fTtcbiYjNDM7XG4gc3RhdGljIGJvb2wgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbiBcdFx0XHRcdFx0aW50IGJ1Zl9pbmRleCwgaW50ICpyZXQpXG4ge1xuIFx0TUFfU1RBVEUobWFzLCBcdTAwMjZ1Yi1cdTAwM2VidWZfdHJlZSwgMCwgVUxPTkdfTUFYKTtcbiBcdHN0cnVjdCB1YmxrX2J1Zl9yYW5nZSAqcmFuZ2U7XG4tXHRzdHJ1Y3QgeGFycmF5IHRvX3VucGluO1xuLVx0dW5zaWduZWQgbG9uZyBpZHg7XG4mIzQzO1x0c3RydWN0IHVibGtfdW5waW5fcmFuZ2UgdG9fdW5waW5bVUJMS19SRU1PVkVfQkFUQ0hdO1xuIFx0dW5zaWduZWQgaW50IGNvdW50ID0gMDtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgaTtcbiBcdGJvb2wgZG9uZSA9IGZhbHNlO1xuLVx0dm9pZCAqZW50cnk7XG4tXG4tXHR4YV9pbml0KFx1MDAyNnRvX3VucGluKTtcbiBcbiBcdG1hc19sb2NrKFx1MDAyNm1hcyk7XG4gXHRtYXNfZm9yX2VhY2goXHUwMDI2bWFzLCByYW5nZSwgVUxPTkdfTUFYKSB7XG4tXHRcdHVuc2lnbmVkIGxvbmcgbnI7XG4tXG4gXHRcdGlmIChidWZfaW5kZXggXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiByYW5nZS1cdTAwM2VidWZfaW5kZXggIT0gYnVmX2luZGV4KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHQqcmV0ID0gMDtcbi1cdFx0bnIgPSBtYXMubGFzdCAtIG1hcy5pbmRleCAmIzQzOyAxO1xuLVx0XHRpZiAoeGFfZXJyKHhhX3N0b3JlKFx1MDAyNnRvX3VucGluLCBtYXMuaW5kZXgsXG4tXHRcdFx0XHQgICAgeGFfbWtfdmFsdWUobnIpLCBHRlBfQVRPTUlDKSkpXG4tXHRcdFx0Z290byB1bmxvY2s7XG4mIzQzO1x0XHR0b191bnBpbltjb3VudF0uYmFzZV9wZm4gPSBtYXMuaW5kZXg7XG4mIzQzO1x0XHR0b191bnBpbltjb3VudF0ubnJfcGFnZXMgPSBtYXMubGFzdCAtIG1hcy5pbmRleCAmIzQzOyAxO1xuIFx0XHRtYXNfZXJhc2UoXHUwMDI2bWFzKTtcbiBcdFx0a2ZyZWUocmFuZ2UpO1xuIFx0XHRpZiAoJiM0MzsmIzQzO2NvdW50IFx1MDAzZT0gVUJMS19SRU1PVkVfQkFUQ0gpXG5AQCAtNTU2MSw5ICYjNDM7NTU1OCw5IEBAIHN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4gdW5sb2NrOlxuIFx0bWFzX3VubG9jayhcdTAwMjZtYXMpO1xuIFxuLVx0eGFfZm9yX2VhY2goXHUwMDI2dG9fdW5waW4sIGlkeCwgZW50cnkpXG4tXHRcdHVibGtfdW5waW5fcmFuZ2VfcGFnZXMoaWR4LCB4YV90b192YWx1ZShlbnRyeSkpO1xuLVx0eGFfZGVzdHJveShcdTAwMjZ0b191bnBpbik7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgY291bnQ7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0dWJsa191bnBpbl9yYW5nZV9wYWdlcyh0b191bnBpbltpXS5iYXNlX3BmbixcbiYjNDM7XHRcdFx0XHQgICAgICAgdG9fdW5waW5baV0ubnJfcGFnZXMpO1xuIFxuIFx0cmV0dXJuIGRvbmU7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX1VCTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1YmxrX2N0cmxfdXJpbmdfY21kJiMzNDssCiAgICAmIzM0O3VibGtfY3RybF91bnJlZ19idWYmIzM0OywKICAgICYjMzQ7dWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzJiMzNDssCiAgICAmIzM0O19fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzJiMzNDssCiAgICAmIzM0O3VibGtfYnVmX2NsZWFudXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYW4geGFycmF5IHdpdGggYSBmaXhlZC1zaXplIGFycmF5IGluIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgdG8gYXZvaWQgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiB3aXRoaW4gYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB1YmxrIGRyaXZlci4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgaW9fdXJpbmcgY29tbWFuZHMgKGB1YmxrX2N0cmxfdXJpbmdfY21kYCAtXHUwMDNlIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCkgYW5kIGRldmljZSBjbGVhbnVwIChgdWJsa19jZGV2X3JlbGAgLVx1MDAzZSBgdWJsa19idWZfY2xlYW51cGApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjI0NWJlZGE5NjM1MWM5YjQzMDUyYTg5ZjE2NjUwNjBjYjI4YzY4ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMTM6Mzc6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMKaW5kZXggNjZmMTBhNDk1MDlmMi4uMDBhNjYxMTQ2MjQzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay91YmxrX2Rydi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYwpAQCAtNTUxOSwzOSAmIzQzOzU1MTksMzYgQEAgc3RhdGljIHZvaWQgdWJsa191bnBpbl9yYW5nZV9wYWdlcyh1bnNpZ25lZCBsb25nIGJhc2VfcGZuLAogCiAvKgogICogSW5uZXIgbG9vcDogZXJhc2UgdXAgdG8gVUJMS19SRU1PVkVfQkFUQ0ggbWF0Y2hpbmcgcmFuZ2VzIHVuZGVyCi0gKiBtYXNfbG9jaywgY29sbGVjdGluZyB0aGVtIGludG8gYW4geGFycmF5LiBUaGVuIGRyb3AgdGhlIGxvY2sgYW5kCi0gKiB1bnBpbiBwYWdlcyAmIzQzOyBmcmVlIHJhbmdlcyBvdXRzaWRlIHNwaW5sb2NrIGNvbnRleHQuCiYjNDM7ICogbWFzX2xvY2ssIGNvbGxlY3RpbmcgdGhlIHBhZ2UgcmFuZ2VzIGluIGEgZml4ZWQtc2l6ZSBhcnJheS4gVGhlbgomIzQzOyAqIGRyb3AgdGhlIGxvY2sgYW5kIHVucGluIHBhZ2VzICYjNDM7IGZyZWUgcmFuZ2VzIG91dHNpZGUgc3BpbmxvY2sgY29udGV4dC4KICAqCiAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHRyZWUgd2FsayBjb21wbGV0ZWQsIGZhbHNlIGlmIG1vcmUgcmFuZ2VzIHJlbWFpbi4KLSAqIFhhcnJheSBrZXkgaXMgdGhlIGJhc2UgUEZOLCB2YWx1ZSBlbmNvZGVzIG5yX3BhZ2VzIHZpYSB4YV9ta192YWx1ZSgpLgogICovCiAjZGVmaW5lIFVCTEtfUkVNT1ZFX0JBVENICTY0CiAKJiM0MztzdHJ1Y3QgdWJsa191bnBpbl9yYW5nZSB7CiYjNDM7CXVuc2lnbmVkIGxvbmcgYmFzZV9wZm47CiYjNDM7CXVuc2lnbmVkIGxvbmcgbnJfcGFnZXM7CiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsCiAJCQkJCWludCBidWZfaW5kZXgsIGludCAqcmV0KQogewogCU1BX1NUQVRFKG1hcywgJmFtcDt1Yi0mZ3Q7YnVmX3RyZWUsIDAsIFVMT05HX01BWCk7CiAJc3RydWN0IHVibGtfYnVmX3JhbmdlICpyYW5nZTsKLQlzdHJ1Y3QgeGFycmF5IHRvX3VucGluOwotCXVuc2lnbmVkIGxvbmcgaWR4OwomIzQzOwlzdHJ1Y3QgdWJsa191bnBpbl9yYW5nZSB0b191bnBpbltVQkxLX1JFTU9WRV9CQVRDSF07CiAJdW5zaWduZWQgaW50IGNvdW50ID0gMDsKJiM0MzsJdW5zaWduZWQgaW50IGk7CiAJYm9vbCBkb25lID0gZmFsc2U7Ci0Jdm9pZCAqZW50cnk7Ci0KLQl4YV9pbml0KCZhbXA7dG9fdW5waW4pOwogCiAJbWFzX2xvY2soJmFtcDttYXMpOwogCW1hc19mb3JfZWFjaCgmYW1wO21hcywgcmFuZ2UsIFVMT05HX01BWCkgewotCQl1bnNpZ25lZCBsb25nIG5yOwotCiAJCWlmIChidWZfaW5kZXggJmd0Oz0gMCAmYW1wOyZhbXA7IHJhbmdlLSZndDtidWZfaW5kZXggIT0gYnVmX2luZGV4KQogCQkJY29udGludWU7CiAKIAkJKnJldCA9IDA7Ci0JCW5yID0gbWFzLmxhc3QgLSBtYXMuaW5kZXggJiM0MzsgMTsKLQkJaWYgKHhhX2Vycih4YV9zdG9yZSgmYW1wO3RvX3VucGluLCBtYXMuaW5kZXgsCi0JCQkJICAgIHhhX21rX3ZhbHVlKG5yKSwgR0ZQX0FUT01JQykpKQotCQkJZ290byB1bmxvY2s7CiYjNDM7CQl0b191bnBpbltjb3VudF0uYmFzZV9wZm4gPSBtYXMuaW5kZXg7CiYjNDM7CQl0b191bnBpbltjb3VudF0ubnJfcGFnZXMgPSBtYXMubGFzdCAtIG1hcy5pbmRleCAmIzQzOyAxOwogCQltYXNfZXJhc2UoJmFtcDttYXMpOwogCQlrZnJlZShyYW5nZSk7CiAJCWlmICgmIzQzOyYjNDM7Y291bnQgJmd0Oz0gVUJMS19SRU1PVkVfQkFUQ0gpCkBAIC01NTYxLDkgJiM0Mzs1NTU4LDkgQEAgc3RhdGljIGJvb2wgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YiwKIHVubG9jazoKIAltYXNfdW5sb2NrKCZhbXA7bWFzKTsKIAotCXhhX2Zvcl9lYWNoKCZhbXA7dG9fdW5waW4sIGlkeCwgZW50cnkpCi0JCXVibGtfdW5waW5fcmFuZ2VfcGFnZXMoaWR4LCB4YV90b192YWx1ZShlbnRyeSkpOwotCXhhX2Rlc3Ryb3koJmFtcDt0b191bnBpbik7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBjb3VudDsgaSYjNDM7JiM0MzspCiYjNDM7CQl1YmxrX3VucGluX3JhbmdlX3BhZ2VzKHRvX3VucGluW2ldLmJhc2VfcGZuLAomIzQzOwkJCQkgICAgICAgdG9fdW5waW5baV0ubnJfcGFnZXMpOwogCiAJcmV0dXJuIGRvbmU7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB1YmxrX2Rydi5jIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9ibG9jay91YmxrX2Rydi5jYCwgc3BlY2lmaWNhbGx5IGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyB1bnBpbm5pbmcgcmFuZ2VzLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHJlcGxhY2VkIGFuIGB4YXJyYXlgIHdpdGggYSBmaXhlZC1zaXplIGFycmF5LCBgc3RydWN0IHVibGtfdW5waW5fcmFuZ2UgdG9fdW5waW5bVUJMS19SRU1PVkVfQkFUQ0hdYCwgd2l0aGluIHRoZSBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIG1vdGl2YXRpb246IHRoZXkmIzM5O3JlIGdldHRpbmcgcmlkIG9mIHRoZSBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHVzaW5nIGB4YV9zdG9yZWAgd2l0aCBgR0ZQX0FUT01JQ2AgKmluc2lkZSBhIHNwaW5sb2NrKi4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcGVyZm9ybWFuY2UgYW5kIHJlbGlhYmlsaXR5IGlzc3VlLCBhIHBvdGVudGlhbCBkZWFkbG9jayBzY2VuYXJpbyBpZiBpdCBmYWlscyBvciBiZWNvbWVzIGNvbnRlbmRlZC4gR29vZCBtb3ZlLgoKTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIGZvciBgdWJsa19kcnYuY2AuIFNpbmNlIGl0JiMzOTtzIGEgdXNlcnNwYWNlIGJsb2NrIGRyaXZlciwgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyBjb250cm9sbGVkIGJ5IGBCTEtfREVWX1VCTEtgLCB3aGljaCBpcyB3aGF0IEkmIzM5O2QgZXhwZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZz0zMTU9Y29uZmlnIEJMS19ERVZfUkJEXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyNy1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozMjg6Y29uZmlnIEJMS19ERVZfVUJMS1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyOS1cdHRyaXN0YXRlIFwmIzM0O1VzZXJzcGFjZSBibG9jayBkcml2ZXIgKEV4cGVyaW1lbnRhbClcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MzM3PWNvbmZpZyBCTEtERVZfVUJMS19MRUdBQ1lfT1BDT0RFU1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTMzOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBsZWdhY3kgY29tbWFuZCBvcGNvZGVcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozMzk6XHRkZXBlbmRzIG9uIEJMS19ERVZfVUJMS1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTM0MC1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvYmxvY2svTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSAmIzQzOz0gcm51bGwvXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlLTM5LVxuZHJpdmVycy9ibG9jay9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfQkxLX0RFVl9VQkxLKVx0XHRcdCYjNDM7PSB1YmxrX2Rydi5vXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlLTQxLW9iai0kKENPTkZJR19CTEtfREVWX1pPTkVEX0xPT1ApICYjNDM7PSB6bG9vcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTM6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM3NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AqKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBidWlsdCB3aXRoIGBCTEtfREVWX1VCTEtgLCB3aGljaCBpcyBpbXBvcnRhbnQgY29udGV4dC4gTXkgZm9jdXMgaXMgdGhlIGZ1bmN0aW9uIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgaXQgZXZlbiByZWFjaGFibGU/IElmIHNvLCB3aGF0IGFyZSB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cz8gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIHRyYWNlcyB0byBtYXAgb3V0IHRoZSBjYWxsIHBhdGhzIHRoYXQgbGVhZCB0byBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLiBVbmRlcnN0YW5kaW5nIGl0cyByZWFjaGFiaWxpdHkgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIGl0cyBpbXBhY3QgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIG9yIG1vZGlmaWNhdGlvbnMgdGhhdCBtaWdodCBiZSByZXF1aXJlZCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTI5PXN0cnVjdCB1YmxrX3VucGluX3JhbmdlIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTUzMy1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTM0OnN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTUzNS1cdFx0XHRcdFx0aW50IGJ1Zl9pbmRleCwgaW50ICpyZXQpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU1NzQ9c3RhdGljIGludCB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgaW50IGJ1Zl9pbmRleClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3Ny1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTc4Olx0d2hpbGUgKCFfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlcyh1YiwgYnVmX2luZGV4LCBcdTAwMjZyZXQpKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzktXHRcdGNvbmRfcmVzY2hlZCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDYWxsIEhpZXJhcmNoeTogYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIGZ1bmN0aW9uLiBJIHNlZSBpdCYjMzk7cyBjYWxsZWQgYnkgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgaXRzZWxmLi4uIGEgYml0IG9mIGEgY2lyY3VsYXIgcmVmZXJlbmNlISBTZWVtcyByZWR1bmRhbnQuLi4gb3IgcG90ZW50aWFsbHkgYSBjbHVlIHRvIGEgbG9vcD8gRWl0aGVyIHdheSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlICoqcHJpbWFyeSoqIHBvaW50cyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGdldHMgaW52b2tlZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGVudHJ5IHBvaW50LiBMZXQmIzM5O3Mgc2VlIHdoZXJlIHRoZSBvcmlnaW5hbCBjYWxsZXJzIG9mIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIHJlc2lkZS4gS25vd2luZyB0aGUgY2FsbCBjaGFpbiBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgaW50ZW5kZWQgcHVycG9zZSBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuIFNvLCB0aW1lIHRvIGRvIHNvbWUgZGlnZ2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU1Mjk9c3RydWN0IHVibGtfdW5waW5fcmFuZ2Uge1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTMzLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1MzQ6c3RhdGljIGJvb2wgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTM1LVx0XHRcdFx0XHRpbnQgYnVmX2luZGV4LCBpbnQgKnJldClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3My0gKi9cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTc0OnN0YXRpYyBpbnQgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIGludCBidWZfaW5kZXgpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3NS17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzctXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTU3ODpcdHdoaWxlICghX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXModWIsIGJ1Zl9pbmRleCwgXHUwMDI2cmV0KSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTc5LVx0XHRjb25kX3Jlc2NoZWQoKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTU4Mz1zdGF0aWMgaW50IHVibGtfY3RybF91bnJlZ19idWYoc3RydWN0IHVibGtfZGV2aWNlICp1Yixcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU5Ny1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTk4Olx0cmV0ID0gdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHViLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU5OS1cdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NjA2PXN0YXRpYyB2b2lkIHVibGtfYnVmX2NsZWFudXAoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjA3LXtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NjA4Olx0dWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHViLCAtMSk7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTYwOS1cdG10cmVlX2Rlc3Ryb3koXHUwMDI2dWItXHUwMDNlYnVmX3RyZWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MzAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyBVYmxrIEJ1ZmZlciBVbnJlZ2lzdHJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgdW5yZWdpc3RyYXRpb24gcHJvY2VzcyBmb3IgVWJsayBidWZmZXJzLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCwgYHVibGtfYnVmX2NsZWFudXBgLCBhbmQgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuIEkgc2VlIHRob3NlIGZ1bmN0aW9ucyBhcmUgaW50ZXJ0d2luZWQsIGFuZCB0aGF0JiMzOTtzIHRoZSBrZXkuIEtub3dpbmcgdGhhdCwgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgYHVibGtfY3RybF91bnJlZ19idWZgIGJlaW5nIGNhbGxlZD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBmb3IgdGhpcyBmdW5jdGlvbiB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBidWZmZXIgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgaW4gVWJsay4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VibGtfY3RybF91bnJlZ19idWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU1NzQ9c3RhdGljIGludCB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgaW50IGJ1Zl9pbmRleClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU4Mi1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTgzOnN0YXRpYyBpbnQgdWJsa19jdHJsX3VucmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1ODQtXHRcdFx0ICAgICAgIHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU3NjA9c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTg1NC1cdGNhc2UgVUJMS19DTURfVU5SRUdfQlVGOlxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU4NTU6XHRcdHJldCA9IHVibGtfY3RybF91bnJlZ19idWYodWIsIFx1MDAyNmhlYWRlcik7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTg1Ni1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB1YmxrX2N0cmxfdXJpbmdfY21kIENvbW1hbmQgSGFuZGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHVibGtfY3RybF91cmluZ19jbWRgLCB3aGljaCBoYW5kbGVzIGlvX3VyaW5nIGNvbW1hbmRzIGZvciB0aGUgdWJsayBjb250cm9sIGRldmljZS4gVGhpcyBpcyB0aGUgZW50cnkgcG9pbnQsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLiBUaGUgY29kZSBjbGVhcmx5IHNob3dzIHRoYXQgaXQgaXMgcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLCBmcm9tIGEgZnVuY3Rpb25hbGl0eSBzdGFuZHBvaW50LgoKTm93LCB0aGlzIHBhdGNoIEkmIzM5O20gcmV2aWV3aW5nIHJlcGxhY2VzIGFuIHhhcnJheSB3aXRoIGEgZml4ZWQtc2l6ZSBhcnJheS4gVGhlIGdvYWwgaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGVsaW1pbmF0ZSBtZW1vcnkgYWxsb2NhdGlvbiB3aXRoaW4gYSBzcGlubG9jay4gVGhhdCYjMzk7cyBhIHNvbGlkIG9wdGltaXphdGlvbiwgYXMgbG9ja2luZyBjYW4gaW50cm9kdWNlIGxhdGVuY3kgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGxvY2sgY29udGVudGlvbiBpc3N1ZXMuIEl0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGltcGFjdCB0aG9yb3VnaGx5LgoKSG1tLCBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIGNvbnNpZGVyLiBJIGFtIGdvaW5nIHRvIGhhdmUgYSBsb29rIGF0IGB1YmxrX2J1Zl9jbGVhbnVwYC4gSSBiZWxpZXZlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGB1YmxrX3JlbW92ZWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBzbyBJIHNob3VsZCBjaGVjayB0aGlzIGNvZGUgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTM6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWJsa19idWZfY2xlYW51cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzU5PXN0YXRpYyBib29sIHVibGtfdHJ5X2J1Zl9tYXRjaChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzYwLVx0XHRcdFx0ICB1MzIgKmJ1Zl9pZHgsIHUzMiAqYnVmX29mZik7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzYxOnN0YXRpYyB2b2lkIHVibGtfYnVmX2NsZWFudXAoc3RydWN0IHVibGtfZGV2aWNlICp1Yik7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzYyLXN0YXRpYyB2b2lkIHVibGtfYWJvcnRfcXVldWUoc3RydWN0IHVibGtfZGV2aWNlICp1Yiwgc3RydWN0IHVibGtfcXVldWUgKnVicSk7XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQzMjI9c3RhdGljIHZvaWQgdWJsa19jZGV2X3JlbChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQzMjUtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDMyNjpcdHVibGtfYnVmX2NsZWFudXAodWIpO1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQzMjctXHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnViLVx1MDAzZXRhZ19zZXQpO1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTgzPXN0YXRpYyBpbnQgdWJsa19jdHJsX3VucmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjA1LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU2MDY6c3RhdGljIHZvaWQgdWJsa19idWZfY2xlYW51cChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU2MDcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODgwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIENvbnRyb2wgRGV2aWNlIEVudHJ5IFBvaW50KioKCk9rYXksIHNvIEkmIzM5O20gemVyb2luZyBpbiBvbiBgdWJsa19jdHJsX3VyaW5nX2NtZGAgYXMgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IGhlcmUuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvbnRyb2wgcGxhbmUgaW50ZXJhY3Rpb25zIHdpbGwgYmUuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gY29uZmlybSBpcyBpdHMgc2NvcGUuIEFscmlnaHQsIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBwcm9iYWJseSBtZWFucyBpdCYjMzk7cyBsaW1pdGVkIGluIHNjb3BlIGFuZCBvbmx5IHVzZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBtb2R1bGUuIFdhaXQgYSBzZWNvbmQuLi4gaXQmIzM5O3MgdGhlIGAudXJpbmdfY21kYCBjYWxsYmFjay4gR290IGl0LCB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgcmVxdWVzdHMgY29taW5nIGluIHZpYSB0aGUgaW9fdXJpbmcgaW50ZXJmYWNlIGZvciB0aGUgY29udHJvbCBkZXZpY2UuIFRoYXQgY2xhcmlmaWVzIGl0cyBwdXJwb3NlIHNpZ25pZmljYW50bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VibGtfY3RybF91cmluZ19jbWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU2MTQ9c3RhdGljIGJvb2wgdWJsa190cnlfYnVmX21hdGNoKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU2NjctXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTY2ODpzdGF0aWMgaW50IHVibGtfY3RybF91cmluZ19jbWRfcGVybWlzc2lvbihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU2NjktXHRcdHUzMiBjbWRfb3AsIHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NDYtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTc0NzpzdGF0aWMgYm9vbCB1YmxrX2N0cmxfdXJpbmdfY21kX21heV9zbGVlcCh1MzIgY21kX29wKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NDgte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzU5LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU3NjA6c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzYxLVx0XHR1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NzAtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTc3MTpcdGlmICh1YmxrX2N0cmxfdXJpbmdfY21kX21heV9zbGVlcChjbWRfb3ApIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NzItXHQgICAgaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU4MDAtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTgwMTpcdFx0cmV0ID0gdWJsa19jdHJsX3VyaW5nX2NtZF9wZXJtaXNzaW9uKHViLCBjbWRfb3AsIFx1MDAyNmhlYWRlcik7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTgwMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTg3MT1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1YmxrX2N0bF9mb3BzID0ge1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU4NzItXHQub3Blblx0XHQ9IG5vbnNlZWthYmxlX29wZW4sXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTg3MzpcdC51cmluZ19jbWQgICAgICA9IHVibGtfY3RybF91cmluZ19jbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTg3NC1cdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzE3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVWJsayBEcml2ZXIgQ2FsbGJhY2tzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYHVibGtfY3RybF91cmluZ19jbWRgIGZ1bmN0aW9uLCBhbmQgeWVzLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgdGhlIGAudXJpbmdfY21kYCBjYWxsYmFjay4gSSYjMzk7bSBub3RpbmcgdGhhdCBpdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaXMgYSBrZXkgZGV0YWlsLiBUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IHdlIGNhbiYjMzk7dCBkaXJlY3RseSBhY2Nlc3MgaXQgb3V0c2lkZSBvZiBpdHMgY29tcGlsYXRpb24gdW5pdCwgYWx0aG91Z2ggd2UgYXJlIGVmZmVjdGl2ZWx5IHVzaW5nIGl0IGFzIGFuIGVudHJ5IHBvaW50LgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY29uc2lkZXIgYWx0ZXJuYXRpdmVzOiBpcyB0aGVyZSBhIG5vbi1zdGF0aWMsIG1vcmUgYWNjZXNzaWJsZSBmdW5jdGlvbiB3ZSBjb3VsZCB1dGlsaXplIGluc3RlYWQ/IElkZWFsbHksIHdlJiMzOTtkIHByZWZlciBzb21ldGhpbmcgbGVzcyByZXN0cmljdGl2ZS4KCkxldCYjMzk7cyBzZWUuLi5pZiB0aGVyZSBpc24mIzM5O3QgYSBub24tc3RhdGljIHZhcmlhbnQgcmVhZGlseSBhdmFpbGFibGUgd2l0aGluIHRoZSByZWxldmFudCBwYXJ0cyBvZiB0aGUgY29kZSwgdGhlbiwgd29yc3QgY2FzZSwgd2UmIzM5O2xsIGp1c3QgaGF2ZSB0byBkZWFsIHdpdGggdGhlIHN0YXRpYyBuYXR1cmUgb2YgYHVibGtfY3RybF91cmluZ19jbWRgIG9yIHBlcmhhcHMgY29uc2lkZXIgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2Agb3IgZXZlbiB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYC4KCkFoLCBidXQgaG9sZCBvbiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyOiAqYHVibGtfY3RybF91cmluZ19jbWRgIGlzIHN0YXRpYyohIEkmIzM5O20gY29uZmlybWluZyB0aGF0IGJlY2F1c2UgaXQmIzM5O3MgZ29pbmcgdG8gZHJpdmUgb3VyIGRlc2lnbiBkZWNpc2lvbnMgaW4gdGhpcyBhcmVhLgoKU28sIEkgdGhpbmsgSSYjMzk7bGwgZ28gY2hlY2sgdGhlIGZpbGUgYGRyaXZlcnMvYmxvY2svdWJsa19kcnYuY2AgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYSBub24tc3RhdGljIGNhbmRpZGF0ZSB0aGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCB1YmxrXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMDgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNvbnNpZGVyaW5nIFN0YXRpYyBWYXJpYWJsZSBOYW1pbmcgaW4gYSBTcGVjaWZpYyBDb250ZXh0KioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IG5hbWluZyBhIHN0YXRpYyBpbnRlZ2VyIHZhcmlhYmxlLCBsaWtlbHkgd2l0aGluIHRoZSBjb25maW5lcyBvZiBhIGtlcm5lbCBtb2R1bGUgb3Igc29tZSBzaW1pbGFyIGxvdy1sZXZlbCBjb2RlLiBJJiMzOTttIGxlYW5pbmcgdG93YXJkIGEgbmFtZSB0aGF0IGluZGljYXRlcyBzb21lIGxldmVsIG9mIGxvY2FsIHNjb3BlIGFuZCBwZXJzaXN0ZW5jZS4gJiMzNDtTdGF0aWMmIzM0OyBpcyB0aGUga2V5IGhlcmUuIEkgbmVlZCBzb21ldGhpbmcgdGhhdCYjMzk7cyBjbGVhcmx5IHJlcHJlc2VudGF0aXZlIG9mIHRoZSBkYXRhLCB0aGUgdXNlIGNhc2UsIG9yIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGlzIG1vZHVsZSBvciBzZWN0aW9uLiBJJiMzOTttIHF1aWNrbHkgZmlsdGVyaW5nIHRocm91Z2ggdGhlIG9idmlvdXMgY2hvaWNlcywgYW5kIEkmIzM5O3ZlIGFycml2ZWQgYXQgdGhlIHRob3VnaHQgb2YgdXNpbmcgYF5zdGF0aWMgaW50IHVibGtfYCBvciBhIHNpbWlsYXIgZm9ybWF0LiBUaGUgcHJlZml4IGB1YmxrX2AgbGlrZWx5IHJlZmVycyB0byBhIHNwZWNpZmljIHN1YnN5c3RlbSBvciBmdW5jdGlvbmFsaXR5LiBUaGF0IGtpbmQgb2YgbmFtaW5nIGNvbnZlbnRpb24gaGFzIGl0cyBtZXJpdHMg4oCTIGl0IGhlbHBzIHdpdGggc2NvcGluZywgYXZvaWRpbmcgY29sbGlzaW9ucywgYW5kIHF1aWNrIGlkZW50aWZpY2F0aW9uIHdoZW4gZGVidWdnaW5nIG9yIHRyYWNpbmcgdGhyb3VnaCB0aGUgY29kZS4gSSBhbSBjb25zaWRlcmluZyBgc3RhdGljYCB0byBlbnN1cmUgdGhhdCB0aGVyZSBpcyBubyBjb25mbGljdHMgb3IgdmlzaWJpbGl0eSBpc3N1ZXMuIFRoaXMgYWxsb3dzIG1lIHRvIHVzZSB0aGUgbmFtZSB3aXRob3V0IGFueSB3b3JyaWVzIG9mIHVuaW50ZW5kZWQgaW50ZXJhY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGNoZWNrIGZvciBleGlzdGluZyBjb252ZW50aW9ucyBhbmQgc2VlIHdoYXQgbWFrZXMgc2Vuc2UgaW4gdGhpcyBzcGVjaWZpYyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljIGludCB1YmxrXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTM4PXN0YXRpYyBERUZJTkVfWEFSUkFZKHVibGtfem9uZWRfcmVwb3J0X2Rlc2NzKTtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MzktXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTQwOnN0YXRpYyBpbnQgdWJsa196b25lZF9pbnNlcnRfcmVwb3J0X2Rlc2MoY29uc3Qgc3RydWN0IHJlcXVlc3QgKnJlcSxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NDEtXHRcdHN0cnVjdCB1YmxrX3pvbmVkX3JlcG9ydF9kZXNjICpkZXNjKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTM9c3RhdGljIHN0cnVjdCB1YmxrX3pvbmVkX3JlcG9ydF9kZXNjICp1YmxrX3pvbmVkX2dldF9yZXBvcnRfZGVzYyhcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1OTpzdGF0aWMgaW50IHVibGtfZ2V0X25yX3pvbmVzKGNvbnN0IHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTYwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY2LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU2NzpzdGF0aWMgaW50IHVibGtfcmV2YWxpZGF0ZV9kaXNrX3pvbmVzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTcxLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU3MjpzdGF0aWMgaW50IHVibGtfZGV2X3BhcmFtX3pvbmVkX3ZhbGlkYXRlKGNvbnN0IHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTczLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NjAwPXN0YXRpYyB2b2lkICp1YmxrX2FsbG9jX3JlcG9ydF9idWZmZXIoc3RydWN0IHVibGtfZGV2aWNlICp1YmxrLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy02MjYtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NjI3OnN0YXRpYyBpbnQgdWJsa19yZXBvcnRfem9uZXMoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHNlY3Rvcl90IHNlY3RvcixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy02MjgtXHRcdCAgICAgIHVuc2lnbmVkIGludCBucl96b25lcywgc3RydWN0IGJsa19yZXBvcnRfem9uZXNfYXJncyAqYXJncylcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NzI0PXN0YXRpYyB2b2lkIHVibGtfc2V0dXBfaW9kX3pvbmVkKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsIHN0cnVjdCByZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTc2NC1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo3NjU6c3RhdGljIGludCB1YmxrX2Rldl9wYXJhbV96b25lZF92YWxpZGF0ZShjb25zdCBzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTc2Ni17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTc3MD1zdGF0aWMgdm9pZCB1YmxrX2Rldl9wYXJhbV96b25lZF9hcHBseShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy03NzMtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6Nzc0OnN0YXRpYyBpbnQgdWJsa19yZXZhbGlkYXRlX2Rpc2tfem9uZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy03NzUte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz04MzE9c3RhdGljIHZvaWQgdWJsa19iYXRjaF9kZWluaXRfZmV0Y2hfYnVmKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTg0NS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo4NDY6c3RhdGljIGludCB1YmxrX2JhdGNoX2ZldGNoX3Bvc3RfY3FlKHN0cnVjdCB1YmxrX2JhdGNoX2ZldGNoX2NtZCAqZmNtZCxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy04NDctXHRcdFx0XHQgICAgIHN0cnVjdCBpb19icl9zZWwgKnNlbCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9ODk0PXN0YXRpYyB2b2lkIHVibGtfZGV2X3BhcmFtX2Jhc2ljX2FwcGx5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTkwMy1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo5MDQ6c3RhdGljIGludCB1YmxrX2ludGVncml0eV9mbGFncyh1MzIgZmxhZ3MpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtOTA1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtOTE4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjkxOTpzdGF0aWMgaW50IHVibGtfaW50ZWdyaXR5X3BpX3R1cGxlX3NpemUodTggY3N1bV90eXBlKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTkyMC17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTkzND1zdGF0aWMgZW51bSBibGtfaW50ZWdyaXR5X2NoZWNrc3VtIHVibGtfaW50ZWdyaXR5X2NzdW1fdHlwZSh1OCBjc3VtX3R5cGUpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTk1MC1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo5NTE6c3RhdGljIGludCB1YmxrX3ZhbGlkYXRlX3BhcmFtcyhjb25zdCBzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTk1Mi17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTEzMjc9c3RhdGljIHZvaWQgdWJsa19zdG9yZV9vd25lcl91aWRfZ2lkKHVuc2lnbmVkIGludCAqb3duZXJfdWlkLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMzM4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjEzMzk6c3RhdGljIGludCB1YmxrX29wZW4oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGJsa19tb2RlX3QgbW9kZSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMzQwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MjMwOT1zdGF0aWMgdm9pZCB1YmxrX2JhdGNoX3F1ZXVlX3JxcyhzdHJ1Y3QgcnFfbGlzdCAqcnFsaXN0KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMzM0LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjIzMzU6c3RhdGljIGludCB1YmxrX2luaXRfaGN0eChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgdm9pZCAqZHJpdmVyX2RhdGEsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjMzNi1cdFx0dW5zaWduZWQgaW50IGhjdHhfaWR4KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0yMzYwPXN0YXRpYyB2b2lkIHVibGtfcXVldWVfcmVpbml0KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTIzOTItXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MjM5MzpzdGF0aWMgaW50IHVibGtfY2hfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscClcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMzk0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MjUxNj1zdGF0aWMgdm9pZCB1YmxrX2NoX3JlbGVhc2Vfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI2MTctXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MjYxODpzdGF0aWMgaW50IHVibGtfY2hfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscClcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNjE5LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjYzMy0vKiBtYXAgcHJlLWFsbG9jYXRlZCBwZXItcXVldWUgY21kIGJ1ZmZlciB0byB1Ymxrc3J2IGRhZW1vbiAqL1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjI2MzQ6c3RhdGljIGludCB1YmxrX2NoX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI2MzUte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zMTYzPXN0YXRpYyB2b2lkIHVibGtfaW9fcmVsZWFzZSh2b2lkICpwcml2KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMTc4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjMxNzk6c3RhdGljIGludCB1YmxrX3JlZ2lzdGVyX2lvX2J1ZihzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzE4MC1cdFx0XHRcdHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTMyMDY9dWJsa19kYWVtb25fcmVnaXN0ZXJfaW9fYnVmKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzIzNS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMjM2OnN0YXRpYyBpbnQgdWJsa191bnJlZ2lzdGVyX2lvX2J1ZihzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzIzNy1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1Yixcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzI0NS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMjQ2OnN0YXRpYyBpbnQgdWJsa19jaGVja19mZXRjaF9idWYoY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1YiwgX191NjQgYnVmX2FkZHIpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzI0Ny17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTMyNjI9c3RhdGljIGludCBfX3VibGtfZmV0Y2goc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCBzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMjg0LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjMyODU6c3RhdGljIGludCB1YmxrX2ZldGNoKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgc3RydWN0IHVibGtfZGV2aWNlICp1YixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMjg2LVx0XHQgICAgICBzdHJ1Y3QgdWJsa19pbyAqaW8sIF9fdTY0IGJ1Zl9hZGRyLCB1MTYgcV9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzMwNy1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMzA4OnN0YXRpYyBpbnQgdWJsa19jaGVja19jb21taXRfYW5kX2ZldGNoKGNvbnN0IHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzMwOS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgdWJsa19pbyAqaW8sIF9fdTY0IGJ1Zl9hZGRyKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zMzQwPXN0YXRpYyBib29sIHVibGtfZ2V0X2RhdGEoY29uc3Qgc3RydWN0IHVibGtfcXVldWUgKnVicSwgc3RydWN0IHVibGtfaW8gKmlvLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMzU3LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjMzNTg6c3RhdGljIGludCB1YmxrX2NoX3VyaW5nX2NtZF9sb2NhbChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzM1OS1cdFx0dW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zNTIxPXN0YXRpYyB2b2lkIHVibGtfY2hfdXJpbmdfY21kX2NiKHN0cnVjdCBpb190d19yZXEgdHdfcmVxLCBpb190d190b2tlbl90IHR3KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNTMyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM1MzM6c3RhdGljIGludCB1YmxrX2NoX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNTM0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzU5OD1fX3VibGtfd2Fsa19jbWRfYnVmKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2MjYtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzYyNzpzdGF0aWMgaW50IHVibGtfd2Fsa19jbWRfYnVmKHN0cnVjdCB1YmxrX2JhdGNoX2lvX2l0ZXIgKml0ZXIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzYyOC1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvX2RhdGEgKmRhdGEsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2NTQtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzY1NTpzdGF0aWMgaW50IHVibGtfYmF0Y2hfdW5wcmVwX2lvKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzY1Ni1cdFx0XHRcdGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvX2RhdGEgKmRhdGEsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTM2ODA9c3RhdGljIHZvaWQgdWJsa19iYXRjaF9yZXZlcnRfcHJlcF9jbWQoc3RydWN0IHVibGtfYmF0Y2hfaW9faXRlciAqaXRlcixcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzY5Mi1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozNjkzOnN0YXRpYyBpbnQgdWJsa19iYXRjaF9wcmVwX2lvKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzY5NC1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNzIzLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM3MjQ6c3RhdGljIGludCB1YmxrX2hhbmRsZV9iYXRjaF9wcmVwX2NtZChjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM3MjUte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNzUwLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM3NTE6c3RhdGljIGludCB1YmxrX2JhdGNoX2NvbW1pdF9pb19jaGVjayhjb25zdCBzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM3NTItXHRcdFx0XHQgICAgICBzdHJ1Y3QgdWJsa19pbyAqaW8sXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM3NjMtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6Mzc2NDpzdGF0aWMgaW50IHVibGtfYmF0Y2hfY29tbWl0X2lvKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzc2NS1cdFx0XHRcdGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvX2RhdGEgKmRhdGEsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM4MTEtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzgxMjpzdGF0aWMgaW50IHVibGtfaGFuZGxlX2JhdGNoX2NvbW1pdF9jbWQoc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODEzLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzgzMi1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozODMzOnN0YXRpYyBpbnQgdWJsa19jaGVja19iYXRjaF9jbWRfZmxhZ3MoY29uc3Qgc3RydWN0IHVibGtfYmF0Y2hfaW8gKnVjKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM4MzQte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODUxLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM4NTI6c3RhdGljIGludCB1YmxrX2NoZWNrX2JhdGNoX2NtZChjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM4NTMte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODc2LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM4Nzc6c3RhdGljIGludCB1YmxrX2JhdGNoX2F0dGFjaChzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM4NzgtXHRcdFx0ICAgICBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTIyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM5MjM6c3RhdGljIGludCB1YmxrX2hhbmRsZV9iYXRjaF9mZXRjaF9jbWQoc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTI0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzkzMy1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozOTM0OnN0YXRpYyBpbnQgdWJsa192YWxpZGF0ZV9iYXRjaF9mZXRjaF9jbWQoc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTM1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzk1Mi1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozOTUzOnN0YXRpYyBpbnQgdWJsa19oYW5kbGVfbm9uX2JhdGNoX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzk1NC1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTgyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM5ODM6c3RhdGljIGludCB1YmxrX2NoX2JhdGNoX2lvX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzk4NC1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQxODg9c3RhdGljIHZvaWQgdWJsa19kZWluaXRfcXVldWUoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgdTE2IHFfaWQpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQxOTgtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDE5OTpzdGF0aWMgaW50IHVibGtfZ2V0X3F1ZXVlX251bWFfbm9kZShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCB1MTYgcV9pZClcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MjAwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDIxMS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0MjEyOnN0YXRpYyBpbnQgdWJsa19pbml0X3F1ZXVlKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHUxNiBxX2lkKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyMTMte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00MjY1PXN0YXRpYyB2b2lkIHVibGtfZGVpbml0X3F1ZXVlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MjcyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQyNzM6c3RhdGljIGludCB1YmxrX2luaXRfcXVldWVzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDI3NC17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyOTAtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDI5MTpzdGF0aWMgaW50IHVibGtfYWxsb2NfZGV2X251bWJlcihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBpbnQgaWR4KVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyOTIte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00MzIyPXN0YXRpYyB2b2lkIHVibGtfY2Rldl9yZWwoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MzM0LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQzMzU6c3RhdGljIGludCB1YmxrX2FkZF9jaGRldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQzMzYte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00MzY4PXN0YXRpYyB2b2lkIHVibGtfYWxpZ25fbWF4X2lvX3NpemUoc3RydWN0IHVibGtfZGV2aWNlICp1Yilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDM3NS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0Mzc2OnN0YXRpYyBpbnQgdWJsa19hZGRfdGFnX3NldChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQzNzcte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00NDE4PXN0YXRpYyBib29sIHVibGtfdmFsaWRhdGVfdXNlcl9waWQoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgcGlkX3QgdWJsa3Nydl9waWQpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0MzItICovXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDQzMzpzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NDM0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDQ0Ni1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0NDQ3OnN0YXRpYyBpbnQgdWJsa19jdHJsX3N0YXJ0X2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0NDgtXHRcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ2MDUtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDYwNjpzdGF0aWMgaW50IHVibGtfY3RybF9nZXRfcXVldWVfYWZmaW5pdHkoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NjA3LVx0XHRjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00NjQ5PXN0YXRpYyBpbmxpbmUgdm9pZCB1YmxrX2R1bXBfZGV2X2luZm8oc3RydWN0IHVibGtzcnZfY3RybF9kZXZfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDY1Ni1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0NjU3OnN0YXRpYyBpbnQgdWJsa19jdHJsX2FkZF9kZXYoY29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NjU4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDg3MT1zdGF0aWMgaW5saW5lIGJvb2wgdWJsa19pZHJfZnJlZWQoaW50IGlkKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00ODgxLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQ4ODI6c3RhdGljIGludCB1YmxrX2N0cmxfZGVsX2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKipwX3ViLCBib29sIHdhaXQpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDg4My17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQ5Mjk9c3RhdGljIHZvaWQgdWJsa19jdHJsX3N0b3BfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5MzMtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDkzNDpzdGF0aWMgaW50IHVibGtfY3RybF90cnlfc3RvcF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00OTM1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDk2MS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0OTYyOnN0YXRpYyBpbnQgdWJsa19jdHJsX2dldF9kZXZfaW5mbyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5NjMtXHRcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQ5OTc9c3RhdGljIHZvaWQgdWJsa19jdHJsX2ZpbGxfcGFyYW1zX2RldnQoc3RydWN0IHVibGtfZGV2aWNlICp1Yilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTAxMS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1MDEyOnN0YXRpYyBpbnQgdWJsa19jdHJsX2dldF9wYXJhbXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MDEzLVx0XHRjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MDQxLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUwNDI6c3RhdGljIGludCB1YmxrX2N0cmxfc2V0X3BhcmFtcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUwNDMtXHRcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUwODMtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTA4NDpzdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9yZWNvdmVyeShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUwODUte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MTE5LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUxMjA6c3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTEyMS1cdFx0Y29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTE1Ny1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1MTU4OnN0YXRpYyBpbnQgdWJsa19jdHJsX2dldF9mZWF0dXJlcyhjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxNTkte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MTcxLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUxNzI6c3RhdGljIGludCB1YmxrX2N0cmxfc2V0X3NpemUoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgY29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MTczLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTIwNT1zdGF0aWMgYm9vbCB1YnFfaGFzX2lkbGVfaW8oY29uc3Qgc3RydWN0IHVibGtfcXVldWUgKnVicSlcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTIxNS0vKiBXYWl0IHVudGlsIGVhY2ggaHcgcXVldWUgaGFzIGF0IGxlYXN0IG9uZSBpZGxlIElPICovXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTIxNjpzdGF0aWMgaW50IHVibGtfd2FpdF9mb3JfaWRsZV9pbyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyMTctXHRcdFx0XHQgdW5zaWduZWQgaW50IHRpbWVvdXRfbXMpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNTgtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTI1OTpzdGF0aWMgaW50IHVibGtfY3RybF9xdWllc2NlX2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNjAtXHRcdFx0XHQgY29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTMwNy0gKi9cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1MzA4OnN0YXRpYyBpbnQgdWJsa19jaGFyX2Rldl9wZXJtaXNzaW9uKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTMwOS1cdFx0Y29uc3QgY2hhciAqZGV2X3BhdGgsIGludCBtYXNrKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01Mzc2PXN0YXRpYyBpbnQgX191YmxrX2N0cmxfcmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NDIxLSAqL1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU0MjI6c3RhdGljIGludCB1YmxrX2N0cmxfcmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU0MjMtXHRcdFx0ICAgICBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTM0PXN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzMtICovXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTU3NDpzdGF0aWMgaW50IHVibGtfc2htZW1fcmVtb3ZlX3JhbmdlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBpbnQgYnVmX2luZGV4KVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzUte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTgyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1ODM6c3RhdGljIGludCB1YmxrX2N0cmxfdW5yZWdfYnVmKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU4NC1cdFx0XHQgICAgICAgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTYxND1zdGF0aWMgYm9vbCB1YmxrX3RyeV9idWZfbWF0Y2goc3RydWN0IHVibGtfZGV2aWNlICp1Yixcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY2Ny1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NjY4OnN0YXRpYyBpbnQgdWJsa19jdHJsX3VyaW5nX2NtZF9wZXJtaXNzaW9uKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY2OS1cdFx0dTMyIGNtZF9vcCwgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTc0Nz1zdGF0aWMgYm9vbCB1YmxrX2N0cmxfdXJpbmdfY21kX21heV9zbGVlcCh1MzIgY21kX29wKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzU5LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU3NjA6c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzYxLVx0XHR1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU5Mzc9bW9kdWxlX2V4aXQodWJsa19leGl0KTtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01OTM4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU5Mzk6c3RhdGljIGludCB1YmxrX3NldF9tYXhfdW5wcml2aWxlZ2VkX3VibGtzKGNvbnN0IGNoYXIgKmJ1ZixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01OTQwLVx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTk0NC1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1OTQ1OnN0YXRpYyBpbnQgdWJsa19nZXRfbWF4X3VucHJpdmlsZWdlZF91YmxrcyhjaGFyICpidWYsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTk0Ni1cdFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MjM0CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMzMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB1YmxrIENvbnRyb2wgUGF0aCBmb3IgRnV6emluZyBFbnRyeXBvaW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgYHVibGtgIGNvbnRyb2wgcGF0aCB0byBpZGVudGlmeSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgZW50cnlwb2ludHMuIEkgc2VlIHRoYXQgYHVibGtfY3RybF91cmluZ19jbWRgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBiaXQgb2YgYSByb2FkYmxvY2suIEl0IGNhbGxzIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCwgd2hpY2ggdGhlbiBjYWxscyBgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYC4gVGhlc2UgYXJlIGFsc28gc3RhdGljLCB3aGljaCBtYWtlcyB0aGlzIHRyaWNreS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBzaW1wbHkgbGlzdCB0aG9zZSBhcyBmb2N1cyBzeW1ib2xzLCBidXQgdGhlIHN0YXRpYyBuYXR1cmUgaXMgdGhyb3dpbmcgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLgoKSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBndWlkYW5jZSDigJMgcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoZSBjb21waWxlciBvZnRlbiBpbmxpbmVzIHN0YXRpYyBoZWxwZXJzLCByZW1vdmluZyB0aGVpciBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCBhbmQgdGhlcmVmb3JlIG1ha2luZyB0aGVtIGxlc3MgYXR0cmFjdGl2ZSBmb3IgZnV6emluZyBkaXJlY3RseS4gU28sIEkgbmVlZCB0byByZXRoaW5rIHRoaXMuIElmIGV2ZXJ5dGhpbmcgaXMgc3RhdGljLCBzaG91bGQgSSBqdXN0IGJpdGUgdGhlIGJ1bGxldCBhbmQgbGlzdCB0aGUgc3RhdGljIGZ1bmN0aW9ucyBhbnl3YXksIGhvcGluZyBTeXprYWxsZXIgY2FuIHN0aWxsIHJlYWNoIHRoZW0/IFNpbmNlIHRoZXkgYXJlIG5vdCBpbmxpbmVkLCBpdCBpcyBwb3NzaWJsZS4KCldhaXQsIGxldCBtZSBjb25maXJtLiBZZXMsIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCBhbmQgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgYXJlIHN0YXRpYywgYW5kIHNvIGlzIGB1YmxrX2N0cmxfdXJpbmdfY21kYC4gTm93LCBJJiMzOTttIGNoZWNraW5nIGlmIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCBpcyBpbmxpbmVkLCBiZWNhdXNlIHRoYXQgaXMgYSBrZXkgY29uc2lkZXJhdGlvbi4gTG9va2luZyBhdCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQsIGl0JiMzOTtzIGluc2lkZSBhIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aGluIGB1YmxrX2N0cmxfdXJpbmdfY21kYC4gVGhhdCBzdWdnZXN0cyBpdCYjMzk7cyAqcHJvYmFibHkqIG5vdCBpbmxpbmVkLCBnaXZlbiBpdHMgc2l6ZSBhbmQgdGhlIGNhbGwgc2l0ZSBzdHJ1Y3R1cmUuCgpOb3csIG15IG1pbmQgc2hpZnRzIHRvIG90aGVyIHBvdGVudGlhbCBlbnRyeXBvaW50cywgZ2l2ZW4gdGhlIHByaW5jaXBsZSBvZiBwcmVmZXJyaW5nIHRoZSBub24tc3RhdGljIG9uZXMuIEkgY291bGQgY29uc2lkZXIgdGhlIHN5c2NhbGxzIHRoYXQgKnRyaWdnZXIqIHRoaXMgcGF0aCwgbGlrZSBgaW9fdXJpbmdfZW50ZXJgLiBCdXQgYGlvX3VyaW5nX2VudGVyYCBpcyB0b28gZ2VuZXJpYyBhbmQgSSBhbSB0cnlpbmcgdG8gbmFycm93IHRoZSBzY29wZS4gU28sIEkgd2lsbCBsb29rIGZvciBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYHVibGtfZHJ2LmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYmV0dGVyIGNhbmRpZGF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIHVibGtfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMTMtLyogdWJsayBiYXRjaCBmZXRjaCB1cmluZ19jbWQgKi9cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoxMTQ6c3RydWN0IHVibGtfYmF0Y2hfZmV0Y2hfY21kIHtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMTUtXHRzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTExOS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoxMjA6c3RydWN0IHVibGtfdXJpbmdfY21kX3BkdSB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMTIxLVx0Lypcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMTQ1LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjE0NjpzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhIHtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xNDctXHRzdHJ1Y3QgdWJsa19kZXZpY2UgKnViO1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMDMtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MjA0OnVuaW9uIHVibGtfaW9fYnVmIHtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMDUtXHRfX3U2NFx0YWRkcjtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjA4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjIwOTpzdHJ1Y3QgdWJsa19pbyB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjEwLVx0dW5pb24gdWJsa19pb19idWYgYnVmO1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNDEtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MjQyOnN0cnVjdCB1YmxrX3F1ZXVlIHtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNDMtXHR1MTYgcV9pZDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzA0LS8qIE1hcGxlIHRyZWUgdmFsdWU6IG1hcHMgYSBQRk4gcmFuZ2UgdG8gYnVmZmVyIGxvY2F0aW9uICovXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzA1OnN0cnVjdCB1YmxrX2J1Zl9yYW5nZSB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzA2LVx0dW5zaWduZWQgc2hvcnQgYnVmX2luZGV4O1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMTAtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzExOnN0cnVjdCB1YmxrX2RldmljZSB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzEyLVx0c3RydWN0IGdlbmRpc2tcdFx0KnViX2Rpc2s7XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM1MS0vKiBoZWFkZXIgb2YgdWJsa19wYXJhbXMgKi9cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozNTI6c3RydWN0IHVibGtfcGFyYW1zX2hlYWRlciB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzUzLVx0X191MzJcdGxlbjtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTA2PXN0YXRpYyB2b2lkIHVibGtfaW5pdF9pb2Qoc3RydWN0IHVibGtfcXVldWUgKnVicSwgc3RydWN0IHJlcXVlc3QgKnJlcSxcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTMyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUzMzpzdHJ1Y3QgdWJsa196b25lZF9yZXBvcnRfZGVzYyB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTM0LVx0X191NjQgc2VjdG9yO1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zNTcxPXVibGtfYmF0Y2hfYXV0b19idWZfcmVnKGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvICp1Yyxcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzU4Ny0jZGVmaW5lIFVCTEtfQ01EX0JBVENIX1RNUF9CVUZfU1ogICg0OCAqIDEwKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM1ODg6c3RydWN0IHVibGtfYmF0Y2hfaW9faXRlciB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzU4OS1cdHZvaWQgX191c2VyICp1YWRkcjtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTUwMT1zdGF0aWMgdm9pZCB1YmxrX3VucGluX3JhbmdlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgYmFzZV9wZm4sXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1MjgtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTUyOTpzdHJ1Y3QgdWJsa191bnBpbl9yYW5nZSB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTUzMC1cdHVuc2lnbmVkIGxvbmcgYmFzZV9wZm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MDM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgdWJsayBNb2R1bGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNvcmUgZnVuY3Rpb25zIGFuZCB0aGVpciByZWxhdGlvbnNoaXBzIHdpdGhpbiB0aGUgYHVibGtgIG1vZHVsZS4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbWFwIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4gRmlyc3QsIEkgaGF2ZSB0aGVzZSBrZXkgZnVuY3Rpb25zIEkmIzM5O20gdHJhY2tpbmc6IGB1YmxrX2N0cmxfdXJpbmdfY21kYCwgYHVibGtfY3RybF91bnJlZ19idWZgLCBgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCwgYW5kIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuCgpBaGEsIGhvbGQgb24uIEkgc2VlIGB1YmxrX2N0cmxfdXJpbmdfY21kYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaW5pdGlhbGx5IG1hZGUgbWUgcGF1c2UuIEJ1dCB0aGVuIEkgbm90aWNlZCBpdCYjMzk7cyBjb3JyZWN0bHkgYXNzaWduZWQgdG8gYHVibGtfY3RsX2ZvcHMudXJpbmdfY21kYC4gWWVzLCB0aGF04oCZcyBwZXJmZWN0bHkgbGVnaXRpbWF0ZSwgdGhlIHN0YXRpYyBzY29wZSBkb2VzbiYjMzk7dCBjYXVzZSBhbnkgY29uZmxpY3RzIGhlcmUsIHRoZSBmdW5jdGlvbiBpcyBzdGlsbCBhY2Nlc3NpYmxlIGFzIGV4cGVjdGVkIHdpdGhpbiBpdHMgaW50ZW5kZWQgc2NvcGUuIE9rYXksIHRoYXQgY2hlY2tzIG91dC4gTm8gaW1tZWRpYXRlIHJlZCBmbGFncyB0aGVyZS4KCk5vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYmVjYXVzZSBJIGFsd2F5cyBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzLCBJIHdhbnQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGNvbnRyb2xzIHRoaXMgbW9kdWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYEJMS19ERVZfVUJMS2AgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgZWxzZSB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBXaGVyZSBpcyBpdCBkZWZpbmVkPyBSaWdodCwgaXQmIzM5O3MgZGVmaW5lZCBpbiB0aGUgY29kZSBpbiBgZHJpdmVycy9ibG9jay91YmxrX2Rydi5jYC4gT2theSwgbGV0IG1lIGdvIGNoZWNrIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gdGhhdCBgQkxLX0RFVl9VQkxLYCBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnkgb3RoZXIgZGVwZW5kZW50IG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX1VCTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTMxNT1jb25maWcgQkxLX0RFVl9SQkRcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI3LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMyODpjb25maWcgQkxLX0RFVl9VQkxLXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI5LVx0dHJpc3RhdGUgXCYjMzQ7VXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjY2NAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IHF1ZXN0aW9uOgoKKipEZWNvbnN0cnVjdGluZyBEZXBlbmRlbmNpZXMgb2YgQkxLXF9ERVZcX1VCTEsqKgoKT2theSwgc28gYEJMS19ERVZfVUJMS2AuLi4gcmlnaHQsIHRoYXQmIzM5O3MgdGhlIHVzZXItc3BhY2UgYmxvY2sgZGV2aWNlIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCB3aGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG9yIGZ1bmN0aW9uYWxpdGllcyBpcyBpdCBkZXBlbmRlbnQgb24/IExldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIHB1cnBvc2Ugb2YgYEJMS19ERVZfVUJMS2AuIEl0IHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciB1c2VyLXNwYWNlIHByb2dyYW1zIHRvIGVtdWxhdGUgYmxvY2sgZGV2aWNlcy4gU28sIGluaGVyZW50bHksIGl0IHJlbGllcyBvbiB0aGUga2VybmVsJiMzOTtzIGJsb2NrIGxheWVyIOKAkyB0aGF0JiMzOTtzIGEgZ2l2ZW4uIEkmIzM5O20gdGhpbmtpbmcsIHNwZWNpZmljYWxseSwgdGhlIGNvcmUgYmxvY2sgSS9PIGluZnJhc3RydWN0dXJlLCBxdWV1ZSBtYW5hZ2VtZW50LCByZXF1ZXN0IGhhbmRsaW5nLCBhbmQgdGhlIGdlbmVyaWMgYmxvY2sgZGV2aWNlIGludGVyZmFjZXMgKGBnZW5kaXNrYCwgYHJlcXVlc3RfcXVldWVgLCBldGMuKS4gV2l0aG91dCB0aG9zZSwgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGhvb2sgYSB1c2VyLXNwYWNlIGRyaXZlciBpbnRvIHRoZSBibG9jayBsYXllci4KCk5leHQsIGl0IGhhcyB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgdXNlciBzcGFjZSBzb21laG93LiBUaGlzIHByb2JhYmx5IGludm9sdmVzIHRoaW5ncyBsaWtlIGNoYXJhY3RlciBkZXZpY2Ugbm9kZXMgKGAvZGV2L3VibGtYYCkgYW5kIHN5c3RlbSBjYWxscyBmb3IgcGFzc2luZyBkYXRhIGFuZCBjb250cm9sIG1lc3NhZ2VzIGJhY2sgYW5kIGZvcnRoLiBUaGF0IHN1Z2dlc3RzIGRlcGVuZGVuY2llcyBvbiBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlciBpbmZyYXN0cnVjdHVyZSBhbmQgcG9zc2libHkgZXZlbiBzb21lIHNvcnQgb2YgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbXMsIHRob3VnaCBtYXliZSBqdXN0IHN0YW5kYXJkIGZpbGUgb3BlcmF0aW9ucy4KCk1vcmUgYnJvYWRseSwgSSBiZXQgaXQgcmVsaWVzIG9uIHRoZSBrZXJuZWwmIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQsIGJlY2F1c2UgaXQmIzM5O3MgbW92aW5nIGRhdGEgYmV0d2VlbiB1c2VyIHNwYWNlIGFuZCBrZXJuZWwgc3BhY2UuIFBvaW50ZXJzLCBtZW1vcnkgYWxsb2NhdGlvbiwgYW5kIGNvcHkgb3BlcmF0aW9ucyB3aWxsIGJlIGNyaXRpY2FsLiBJdCBwcm9iYWJseSBpbnRlcmFjdHMgd2l0aCBzb21lIGtpbmQgb2YgbG9ja2luZyBwcmltaXRpdmVzIGFzIHdlbGwsIGJlY2F1c2UgbXVsdGktdGhyZWFkZWQgdXNlci1zcGFjZSBwcm9ncmFtcyBjb3VsZCBiZSBhY2Nlc3NpbmcgdGhlIGRldmljZSBpbiBhIGNvbmN1cnJlbnQgbWFubmVyLiBUaGlzIGxpa2VseSBlbnRhaWxzIHNwaW5sb2NrcyBvciBtdXRleGVzIHdpdGhpbiB0aGUga2VybmVsLgoKRmluYWxseSwgd2hpbGUgaXQmIzM5O3MgcHJvYmFibHkgbm90IGEgZGlyZWN0IGRlcGVuZGVuY3ksIGBCTEtfREVWX1VCTEtgJiMzOTtzIHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsaXR5IG9mdGVuIHJlbHkgb24gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgKGV2ZW4gaWYgdmlydHVhbGl6ZWQpLiBJZiBpdCYjMzk7cyB1c2VkIHdpdGggdGhpbmdzIGxpa2UgbmV0d29yayBibG9jayBkZXZpY2VzLCB0aGVuIG5ldHdvcmsgcHJvdG9jb2xzIG9yIGRyaXZlcnMgY291bGQgY29tZSBpbnRvIHBsYXkgKGluZGlyZWN0bHksIG9mIGNvdXJzZSkuCgpTbywgaW4gc3VtbWFyeTogSSYjMzk7bSB0aGlua2luZyBpdCYjMzk7cyBhIG11bHRpLWxheWVyZWQgZGVwZW5kZW5jeS4gQ29yZSBibG9jayBsYXllciAocXVldWUgbWFuYWdlbWVudCwgZ2VuZXJpYyBibG9jayBkZXZpY2UgaW50ZXJmYWNlcyksIGNoYXJhY3RlciBkZXZpY2UgZnJhbWV3b3JrLCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGFyZSBkZWZpbml0ZWx5IG9uIHRoZSBsaXN0LiBQb3NzaWJseSBhbHNvIHNvbWUgbmV0d29ya2luZyBjb21wb25lbnRzLCBkZXBlbmRpbmcgb24gaG93IGBCTEtfREVWX1VCTEtgIGlzIGltcGxlbWVudGVkIGFuZCB1c2VkLiBJIHdvdWxkIHByb2JhYmx5IGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRvIGNvbmZpcm0gdGhlIGNvbmNyZXRlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9Nj1tZW51Y29uZmlnIEJMS19ERVZcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtCbG9jayBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6ODpcdGRlcGVuZHMgb24gQkxPQ0tcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTIyPWNvbmZpZyBCTEtfREVWX0ZEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtOb3JtYWwgZmxvcHB5IGRpc2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI0Olx0ZGVwZW5kcyBvbiBBUkNIX01BWV9IQVZFX1BDX0ZEQ1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zNz1jb25maWcgQkxLX0RFVl9GRF9SQVdDTURcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgcmF3IGZsb3BweSBkaXNrIGNvbW1hbmRzIChERVBSRUNBVEVEKVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjM5Olx0ZGVwZW5kcyBvbiBCTEtfREVWX0ZEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNDAtXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTUzPWNvbmZpZyBBTUlHQV9GTE9QUFlcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O0FtaWdhIGZsb3BweSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NTU6XHRkZXBlbmRzIG9uIEFNSUdBXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNTYtXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9NTc9Y29uZmlnIEFUQVJJX0ZMT1BQWVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTU4LVx0dHJpc3RhdGUgXCYjMzQ7QXRhcmkgZmxvcHB5IHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo1OTpcdGRlcGVuZHMgb24gQVRBUklcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy02MC1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02MT1jb25maWcgTUFDX0ZMT1BQWVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgUG93ZXJNYWMgZmxvcHB5XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NjM6XHRkZXBlbmRzIG9uIFBQQ19QTUFDIFx1MDAyNlx1MDAyNiAhUFBDX1BNQUM2NFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTY0LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02OD1jb25maWcgQkxLX0RFVl9TV0lNXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNjktXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBTV0lNIE1hY2ludG9zaCBmbG9wcHlcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo3MDpcdGRlcGVuZHMgb24gTTY4SyBcdTAwMjZcdTAwMjYgTUFDIFx1MDAyNlx1MDAyNiAhSElHSE1FTVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTcxLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz03NT1jb25maWcgQU1JR0FfWjJSQU1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03Ni1cdHRyaXN0YXRlIFwmIzM0O0FtaWdhIFpvcnJvIElJIHJhbWRpc2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBaT1JST1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTc4LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz04Nj1jb25maWcgTjY0Q0FSVFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg3LVx0Ym9vbCBcJiMzNDtONjQgY2FydCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6ODg6XHRkZXBlbmRzIG9uIE1BQ0hfTklOVEVORE82NFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz05NT1jb25maWcgR0RST01cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05Ni1cdHRyaXN0YXRlIFwmIzM0O1NFR0EgRHJlYW1jYXN0IEdELVJPTSBkcml2ZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjk3Olx0ZGVwZW5kcyBvbiBTSF9EUkVBTUNBU1RcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05OC1cdHNlbGVjdCBDRFJPTVxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xMTE9Y29uZmlnIEJMS19ERVZfVUJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTEyLVx0Ym9vbCBcJiMzNDtWaXJ0dWFsIGJsb2NrIGRldmljZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjExMzpcdGRlcGVuZHMgb24gVU1MXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTE0LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xMjA9Y29uZmlnIEJMS19ERVZfVUJEX1NZTkNcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xMjEtXHRib29sIFwmIzM0O0Fsd2F5cyBkbyBzeW5jaHJvbm91cyBkaXNrIElPIGZvciBVQkRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxMjI6XHRkZXBlbmRzIG9uIEJMS19ERVZfVUJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xNzk9Y29uZmlnIEJMS19ERVZfTE9PUF9NSU5fQ09VTlRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xODAtXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGxvb3AgZGV2aWNlcyB0byBwcmUtY3JlYXRlIGF0IGluaXQgdGltZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjE4MTpcdGRlcGVuZHMgb24gQkxLX0RFVl9MT09QXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTgyLVx0ZGVmYXVsdCA4XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTE5Nj1jb25maWcgQkxLX0RFVl9OQkRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTctXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGJsb2NrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk4Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTktXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI0Mz1jb25maWcgQkxLX0RFVl9SQU1fQ09VTlRcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjQ1LVx0ZGVmYXVsdCBcJiMzNDsxNlwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI0NjpcdGRlcGVuZHMgb24gQkxLX0RFVl9SQU1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNDctXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI1Mj1jb25maWcgQkxLX0RFVl9SQU1fU0laRVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1My1cdGludCBcJiMzNDtEZWZhdWx0IFJBTSBkaXNrIHNpemUgKGtieXRlcylcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNTQ6XHRkZXBlbmRzIG9uIEJMS19ERVZfUkFNXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjU1LVx0ZGVmYXVsdCBcJiMzNDs0MDk2XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI2MD1jb25maWcgQVRBX09WRVJfRVRIXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYxLVx0dHJpc3RhdGUgXCYjMzQ7QVRBIG92ZXIgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI2MjpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYzLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yNjc9Y29uZmlnIFNVTlZEQ1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI2OC1cdHRyaXN0YXRlIFwmIzM0O1N1biBWaXJ0dWFsIERpc2sgQ2xpZW50IHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNjk6XHRkZXBlbmRzIG9uIFNVTl9MRE9NU1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3MC1cdGhlbHBcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9Mjc2PWNvbmZpZyBYRU5fQkxLREVWX0ZST05URU5EXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjc3LVx0dHJpc3RhdGUgXCYjMzQ7WGVuIHZpcnR1YWwgYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNzg6XHRkZXBlbmRzIG9uIFhFTlxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3OS1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yODY9Y29uZmlnIFhFTl9CTEtERVZfQkFDS0VORFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI4Ny1cdHRyaXN0YXRlIFwmIzM0O1hlbiBibG9jay1kZXZpY2UgYmFja2VuZCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyODg6XHRkZXBlbmRzIG9uIFhFTl9CQUNLRU5EXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjg5LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMDc9Y29uZmlnIFZJUlRJT19CTEtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMDgtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gYmxvY2sgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzA5Olx0ZGVwZW5kcyBvbiBWSVJUSU9cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMTAtXHRzZWxlY3QgU0dfUE9PTFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMTU9Y29uZmlnIEJMS19ERVZfUkJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzE2LVx0dHJpc3RhdGUgXCYjMzQ7UmFkb3MgYmxvY2sgZGV2aWNlIChSQkQpXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzE3Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBCTE9DS1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTMxOC1cdHNlbGVjdCBDRVBIX0xJQlxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMzc9Y29uZmlnIEJMS0RFVl9VQkxLX0xFR0FDWV9PUENPREVTXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzM4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGxlZ2FjeSBjb21tYW5kIG9wY29kZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjMzOTpcdGRlcGVuZHMgb24gQkxLX0RFVl9VQkxLXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzQwLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTM1Nj1jb25maWcgQkxLX0RFVl9aT05FRF9MT09QXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzU3LVx0dHJpc3RhdGUgXCYjMzQ7Wm9uZWQgbG9vcGJhY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozNTg6XHRkZXBlbmRzIG9uIEJMS19ERVZfWk9ORURcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNTktXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDY3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBCTEtfREVWX1VCTEsgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYEJMS19ERVZfVUJMS2AuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgb24gdGhlIHN1cmZhY2Ug4oCTIGl0IGRvZXNuJiMzOTt0IGV4cGxpY2l0bHkgYGRlcGVuZCBvbmAgYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgYmFzZSByZXF1aXJlbWVudHMgd2UmIzM5O2QgZXhwZWN0OiBgQkxLX0RFVmAgYW5kIGBCTE9DS2AuIFRoYXQmIzM5O3MgYSBjb21tb24gcGF0dGVybiwgYW5kIHVzdWFsbHkgYSBzaWduIG9mIGEgd2VsbC1kZWZpbmVkLCBtb2R1bGFyIGNvbXBvbmVudC4KCkJ1dCB3YWl0IGEgbWludXRlLCBiZWZvcmUgSSBtb3ZlIG9uLCBJIHNob3VsZCBhbHdheXMgYmUgbWV0aWN1bG91cyBhYm91dCB0aGlzIHN0dWZmLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgQkxLX0RFVl9VQkxLYCBkZWZpbml0aW9uIGFnYWluLiBJdCYjMzk7cyBlYXN5IHRvIG1pc3MgYSBzdWJ0bGV0eSBvciBhbiBpbmRpcmVjdCBkZXBlbmRlbmN5IGluIHRoZXNlIGNvbmZpZ3VyYXRpb25zLCBhbmQgYXNzdW1wdGlvbnMgY2FuIGJlIGRhbmdlcm91cy4gTmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUmIzM5O3Mgbm8gaGlkZGVuIGNvbm5lY3Rpb24gSSYjMzk7bSBtaXNzaW5nLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkgZGlkbiYjMzk7dCBtaXNzIHNvbWV0aGluZy4gT2theSwgbGV0IG1lIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX1VCTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTMxNT1jb25maWcgQkxLX0RFVl9SQkRcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI3LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMyODpjb25maWcgQkxLX0RFVl9VQkxLXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI5LVx0dHJpc3RhdGUgXCYjMzQ7VXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQzNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGxpbmVzIGFyb3VuZCBgY29uZmlnIEJMS19ERVZfVUJMS2AsIGRpc3RpbGxlZCB0aHJvdWdoIGFuIGV4cGVydCBsZW5zOgoKKipEaXZpbmcgaW50byB0aGUgdWJsayBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBCTEtfREVWX1VCTEtgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGlzIHBhcnRpY3VsYXIgc2V0dGluZyBiZWNhdXNlIGl0JiMzOTtzIHRoZSBVc2VyLVNwYWNlIEJsb2NrIExheWVyIChVQkxLKSwgYSBwcmV0dHkgaW50ZXJlc3RpbmcgaW50ZXJmYWNlLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIgYmxvY2sgZGV2aWNlIHN1YnN5c3RlbS4gSSYjMzk7bSBsaWtlbHkgd2FudGluZyB0byBrbm93IGl0cyBkZXBlbmRlbmN5IG9uIG90aGVyIGJsb2NrIGRldmljZSBjb21wb25lbnRzLCBzdWNoIGFzIHRoZSBnZW5lcmljIGJsb2NrIGxheWVyIGFuZCBhbnkgc3BlY2lmaWMgSS9PIHNjaGVkdWxlciBzZXR1cHMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIEkgbmVlZCB0byBlbnN1cmUgYXJlIHNldCBmb3IgdWJsayB0byBmdW5jdGlvbiBhcyBpbnRlbmRlZD8gSSYjMzk7bSBjaGVja2luZyBpZiB0aGlzIGlzIGp1c3QgdGhlICplbmFibGUqIGZsYWcsIG9yIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBvcHRpb25zIGxpa2UgbnVtYmVyIG9mIHF1ZXVlcywgZmVhdHVyZXMsIG9yIHRoZSBkZWZhdWx0IHNpemVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW50ZXJmYWNlLiBJJiMzOTtsbCBsaWtlbHkgbmVlZCB0byBxdWlja2x5IHJldmlldyB0aGUga2VybmVsIGRvY3VtZW50YXRpb24gb3IgY29tbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3B0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBmb3IgZGV2aWNlIG1hbmFnZW1lbnQgYW5kIGhvdyBpdCBpbXBhY3RzIHN5c3RlbSByZXNvdXJjZSB1dGlsaXphdGlvbi4gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyBhbnkgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgYXJvdW5kIGFsbG93aW5nIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGRpcmVjdGx5IGludGVyYWN0IHdpdGggYmxvY2sgZGV2aWNlcywgYW5kIHRodXMgYW55IGFzc29jaWF0ZWQga2VybmVsIGhhcmRlbmluZyBvcHRpb25zIHRoYXQgSSBzaG91bGQgYmUgbG9va2luZyBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMjU6XHRcbiAzMjY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAzMjc6XHRcbiAzMjg6XHRjb25maWcgQkxLX0RFVl9VQkxLXG4gMzI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXCYjMzQ7XG4gMzMwOlx0XHRzZWxlY3QgSU9fVVJJTkdcbiAzMzE6XHRcdGhlbHBcbiAzMzI6XHRcdCAgaW9fdXJpbmcgYmFzZWQgdXNlcnNwYWNlIGJsb2NrIGRyaXZlci4gVG9nZXRoZXIgd2l0aCB1YmxrIHNlcnZlciwgdWJsa1xuIDMzMzpcdFx0ICBoYXMgYmVlbiB3b3JraW5nIHdlbGwsIGJ1dCBpbnRlcmZhY2Ugd2l0aCB1c2Vyc3BhY2Ugb3IgY29tbWFuZCBkYXRhXG4gMzM0Olx0XHQgIGRlZmluaXRpb24gaXNuJiMzOTt0IGZpbmFsaXplZCB5ZXQsIGFuZCBtaWdodCBjaGFuZ2UgYWNjb3JkaW5nIHRvIGZ1dHVyZVxuIDMzNTpcdFx0ICByZXF1aXJlbWVudCwgc28gbWFyayBpcyBhcyBleHBlcmltZW50YWwgbm93LlxuIDMzNjpcdFxuIDMzNzpcdGNvbmZpZyBCTEtERVZfVUJMS19MRUdBQ1lfT1BDT0RFU1xuIDMzODpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGxlZ2FjeSBjb21tYW5kIG9wY29kZVwmIzM0O1xuIDMzOTpcdFx0ZGVwZW5kcyBvbiBCTEtfREVWX1VCTEtcbiAzNDA6XHRcdGRlZmF1bHQgeVxuIDM0MTpcdFx0aGVscFxuIDM0MjpcdFx0ICB1YmxrIGRyaXZlciBzdGFydGVkIHRvIHRha2UgcGxhaW4gY29tbWFuZCBlbmNvZGluZywgd2hpY2ggdHVybnMgb3V0XG4gMzQzOlx0XHQgIG9uZSBiYWQgd2F5LiBUaGUgdHJhZGl0aW9uYWwgaW9jdGwgY29tbWFuZCBvcGNvZGUgZW5jb2RlcyBtb3JlXG4gMzQ0Olx0XHQgIGluZm8gYW5kIGJhc2ljYWxseSBkZWZpbmVzIGVhY2ggY29kZSB1bmlxdWVseSwgc28gb3Bjb2RlIGNvbmZsaWN0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDcxCgkJCQkJCQlvdXRwdXQ6IDE5NAoJCQkJCQkJdGhvdWdodHM6IDgwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgVUJMSyBTaG1lbSBSZW1vdmFsIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBkZXBlbmRlbmN5IHN0YW5kcG9pbnQsIGBCTEtfREVWX1VCTEtgIHNlZW1zIHRvIGJlIHRoZSBrZXksIGFuZCBpdCBkaXJlY3RseSBzZWxlY3RzIGBJT19VUklOR2AuIFNpbmNlIHRoZXJlIGFyZSBubyBvdGhlciBvYnZpb3VzIGRlcGVuZGVuY2llcyBiZXlvbmQgYEJMT0NLYCwgYEJMS19ERVZfVUJMS2Agc2hvdWxkIHN1ZmZpY2UgZm9yIHRlc3RpbmcgdGhpcyBwYXRjaC4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIGNsZWFyIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW5zaWRlIGEgc3BpbmxvY2ssIHdoaWNoIGlzIGdlbmVyYWxseSBhIGdvb2QgcHJhY3RpY2UgZm9yIHBlcmZvcm1hbmNlIGFuZCBhdm9pZGluZyBwb3RlbnRpYWwgZGVhZGxvY2tzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCwgYSBmdW5jdGlvbiByZWFjaGVkIHRocm91Z2ggdGhlc2UgcGF0aHM6IGB1YmxrX2N0cmxfdXJpbmdfY21kYCAtJmd0OyBgdWJsa19jdHJsX3VucmVnX2J1ZmAgLSZndDsgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgLSZndDsgYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCwgYXMgd2VsbCBhcyBgdWJsa19idWZfY2xlYW51cGAgLSZndDsgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgLSZndDsgYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYC4gVGhlIHNlY29uZCBwYXRoIGludm9sdmVzIGB1YmxrX2J1Zl9jbGVhbnVwYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHVibGtfY2Rldl9yZWxgLCB0aGUgcmVsZWFzZSBmdW5jdGlvbiBmb3IgdGhlIGNoYXJhY3RlciBkZXZpY2UuCgpCYXNlZCBvbiB0aGlzLCBJJiMzOTttIG1hcmtpbmcgaXQgZm9yIGZ1enppbmcgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYHVibGtfY3RybF91cmluZ19jbWRgLCBgdWJsa19jdHJsX3VucmVnX2J1ZmAsIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCBhbmQgYHVibGtfYnVmX2NsZWFudXBgLiBJIHdpbGwgZW5hYmxlIHRoZSBgQkxLX0RFVl9VQkxLYCBjb25maWd1cmF0aW9uIG9wdGlvbi4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIHRoZSBpb191cmluZyBjb21tYW5kIGhhbmRsZXJzLiBJdCBsb29rcyBsaWtlIGB1YmxrX2N0cmxfdXJpbmdfY21kYCBpcyB0aGUgcHJpbWFyeSBoYW5kbGVyIHZpYSBgdWJsa19jdGxfZm9wcy51cmluZ19jbWQgPSB1YmxrX2N0cmxfdXJpbmdfY21kYC4gVGhlcmUmIzM5O3MgYWxzbyBgdWJsa19jaF91cmluZ19jbWRgIGZvciB0aGUgY2hhbm5lbCBkZXZpY2UsIGJ1dCB0aGUgcGF0Y2ggaXMgdGFyZ2V0aW5nIHRoZSBmb3JtZXIuIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgaXMgY2FsbGVkIGJ5IGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBib3RoIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCAod2hpY2ggY29tZXMgZnJvbSBgdWJsa19jdHJsX3VyaW5nX2NtZGApIGFuZCBgdWJsa19idWZfY2xlYW51cGAgKGZyb20gdGhlIGNoYXJhY3RlciBkZXZpY2UgcmVsZWFzZSkuCgpPa2F5LCBldmVyeXRoaW5nIHNlZW1zIGNvbnNpc3RlbnQgYW5kIHdlbGwtdW5kZXJzdG9vZC4gSSYjMzk7bSByZWFkeSB0byBwcm9jZWVkIHdpdGggdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTM6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfY3RybF91cmluZ19jbWQmIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3VucmVnX2J1ZiYjMzQ7LAogICAgJiMzNDt1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7X191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7dWJsa19idWZfY2xlYW51cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhbiB4YXJyYXkgd2l0aCBhIGZpeGVkLXNpemUgYXJyYXkgaW4gYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCB0byBhdm9pZCBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHVibGsgZHJpdmVyLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyAoYHVibGtfY3RybF91cmluZ19jbWRgIC1cdTAwM2UgYHVibGtfY3RybF91bnJlZ19idWZgKSBhbmQgZGV2aWNlIGNsZWFudXAgKGB1YmxrX2NkZXZfcmVsYCAtXHUwMDNlIGB1YmxrX2J1Zl9jbGVhbnVwYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfY3RybF91cmluZ19jbWQmIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3VucmVnX2J1ZiYjMzQ7LAogICAgJiMzNDt1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7X191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7dWJsa19idWZfY2xlYW51cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhbiB4YXJyYXkgd2l0aCBhIGZpeGVkLXNpemUgYXJyYXkgaW4gYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCB0byBhdm9pZCBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHVibGsgZHJpdmVyLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyAoYHVibGtfY3RybF91cmluZ19jbWRgIC1cdTAwM2UgYHVibGtfY3RybF91bnJlZ19idWZgKSBhbmQgZGV2aWNlIGNsZWFudXAgKGB1YmxrX2NkZXZfcmVsYCAtXHUwMDNlIGB1YmxrX2J1Zl9jbGVhbnVwYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozNzo0Mi4xNDc5MDUxMTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDMyODE4NzM2MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9VQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWJsa19jdHJsX3VyaW5nX2NtZFwiLFxuICAgIFwidWJsa19jdHJsX3VucmVnX2J1ZlwiLFxuICAgIFwidWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzXCIsXG4gICAgXCJfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc1wiLFxuICAgIFwidWJsa19idWZfY2xlYW51cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIHhhcnJheSB3aXRoIGEgZml4ZWQtc2l6ZSBhcnJheSBpbiBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIHRvIGF2b2lkIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdWJsayBkcml2ZXIuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGlvX3VyaW5nIGNvbW1hbmRzIChgdWJsa19jdHJsX3VyaW5nX2NtZGAgLVxcdTAwM2UgYHVibGtfY3RybF91bnJlZ19idWZgKSBhbmQgZGV2aWNlIGNsZWFudXAgKGB1YmxrX2NkZXZfcmVsYCAtXFx1MDAzZSBgdWJsa19idWZfY2xlYW51cGApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozNzo0Mi4xNDc5MTAzMzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MTI5MzI1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIyNDViZWRhOTYzNTFjOWI0MzA1MmE4OWYxNjY1MDYwY2IyOGM2OGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMzozNzo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcXG5pbmRleCA2NmYxMGE0OTUwOWYyLi4wMGE2NjExNDYyNDNkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xcbkBAIC01NTE5LDM5ICs1NTE5LDM2IEBAIHN0YXRpYyB2b2lkIHVibGtfdW5waW5fcmFuZ2VfcGFnZXModW5zaWduZWQgbG9uZyBiYXNlX3BmbixcXG4gXFxuIC8qXFxuICAqIElubmVyIGxvb3A6IGVyYXNlIHVwIHRvIFVCTEtfUkVNT1ZFX0JBVENIIG1hdGNoaW5nIHJhbmdlcyB1bmRlclxcbi0gKiBtYXNfbG9jaywgY29sbGVjdGluZyB0aGVtIGludG8gYW4geGFycmF5LiBUaGVuIGRyb3AgdGhlIGxvY2sgYW5kXFxuLSAqIHVucGluIHBhZ2VzICsgZnJlZSByYW5nZXMgb3V0c2lkZSBzcGlubG9jayBjb250ZXh0LlxcbisgKiBtYXNfbG9jaywgY29sbGVjdGluZyB0aGUgcGFnZSByYW5nZXMgaW4gYSBmaXhlZC1zaXplIGFycmF5LiBUaGVuXFxuKyAqIGRyb3AgdGhlIGxvY2sgYW5kIHVucGluIHBhZ2VzICsgZnJlZSByYW5nZXMgb3V0c2lkZSBzcGlubG9jayBjb250ZXh0LlxcbiAgKlxcbiAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHRyZWUgd2FsayBjb21wbGV0ZWQsIGZhbHNlIGlmIG1vcmUgcmFuZ2VzIHJlbWFpbi5cXG4tICogWGFycmF5IGtleSBpcyB0aGUgYmFzZSBQRk4sIHZhbHVlIGVuY29kZXMgbnJfcGFnZXMgdmlhIHhhX21rX3ZhbHVlKCkuXFxuICAqL1xcbiAjZGVmaW5lIFVCTEtfUkVNT1ZFX0JBVENIXFx0NjRcXG4gXFxuK3N0cnVjdCB1YmxrX3VucGluX3JhbmdlIHtcXG4rXFx0dW5zaWduZWQgbG9uZyBiYXNlX3BmbjtcXG4rXFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcztcXG4rfTtcXG4rXFxuIHN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuIFxcdFxcdFxcdFxcdFxcdGludCBidWZfaW5kZXgsIGludCAqcmV0KVxcbiB7XFxuIFxcdE1BX1NUQVRFKG1hcywgXFx1MDAyNnViLVxcdTAwM2VidWZfdHJlZSwgMCwgVUxPTkdfTUFYKTtcXG4gXFx0c3RydWN0IHVibGtfYnVmX3JhbmdlICpyYW5nZTtcXG4tXFx0c3RydWN0IHhhcnJheSB0b191bnBpbjtcXG4tXFx0dW5zaWduZWQgbG9uZyBpZHg7XFxuK1xcdHN0cnVjdCB1YmxrX3VucGluX3JhbmdlIHRvX3VucGluW1VCTEtfUkVNT1ZFX0JBVENIXTtcXG4gXFx0dW5zaWduZWQgaW50IGNvdW50ID0gMDtcXG4rXFx0dW5zaWduZWQgaW50IGk7XFxuIFxcdGJvb2wgZG9uZSA9IGZhbHNlO1xcbi1cXHR2b2lkICplbnRyeTtcXG4tXFxuLVxcdHhhX2luaXQoXFx1MDAyNnRvX3VucGluKTtcXG4gXFxuIFxcdG1hc19sb2NrKFxcdTAwMjZtYXMpO1xcbiBcXHRtYXNfZm9yX2VhY2goXFx1MDAyNm1hcywgcmFuZ2UsIFVMT05HX01BWCkge1xcbi1cXHRcXHR1bnNpZ25lZCBsb25nIG5yO1xcbi1cXG4gXFx0XFx0aWYgKGJ1Zl9pbmRleCBcXHUwMDNlPSAwIFxcdTAwMjZcXHUwMDI2IHJhbmdlLVxcdTAwM2VidWZfaW5kZXggIT0gYnVmX2luZGV4KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdCpyZXQgPSAwO1xcbi1cXHRcXHRuciA9IG1hcy5sYXN0IC0gbWFzLmluZGV4ICsgMTtcXG4tXFx0XFx0aWYgKHhhX2Vycih4YV9zdG9yZShcXHUwMDI2dG9fdW5waW4sIG1hcy5pbmRleCxcXG4tXFx0XFx0XFx0XFx0ICAgIHhhX21rX3ZhbHVlKG5yKSwgR0ZQX0FUT01JQykpKVxcbi1cXHRcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0XFx0dG9fdW5waW5bY291bnRdLmJhc2VfcGZuID0gbWFzLmluZGV4O1xcbitcXHRcXHR0b191bnBpbltjb3VudF0ubnJfcGFnZXMgPSBtYXMubGFzdCAtIG1hcy5pbmRleCArIDE7XFxuIFxcdFxcdG1hc19lcmFzZShcXHUwMDI2bWFzKTtcXG4gXFx0XFx0a2ZyZWUocmFuZ2UpO1xcbiBcXHRcXHRpZiAoKytjb3VudCBcXHUwMDNlPSBVQkxLX1JFTU9WRV9CQVRDSClcXG5AQCAtNTU2MSw5ICs1NTU4LDkgQEAgc3RhdGljIGJvb2wgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4gdW5sb2NrOlxcbiBcXHRtYXNfdW5sb2NrKFxcdTAwMjZtYXMpO1xcbiBcXG4tXFx0eGFfZm9yX2VhY2goXFx1MDAyNnRvX3VucGluLCBpZHgsIGVudHJ5KVxcbi1cXHRcXHR1YmxrX3VucGluX3JhbmdlX3BhZ2VzKGlkeCwgeGFfdG9fdmFsdWUoZW50cnkpKTtcXG4tXFx0eGFfZGVzdHJveShcXHUwMDI2dG9fdW5waW4pO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgY291bnQ7IGkrKylcXG4rXFx0XFx0dWJsa191bnBpbl9yYW5nZV9wYWdlcyh0b191bnBpbltpXS5iYXNlX3BmbixcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHRvX3VucGluW2ldLm5yX3BhZ2VzKTtcXG4gXFxuIFxcdHJldHVybiBkb25lO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM3OjQyLjUzOTk3OTI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQyODg5NzkwODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfVUJMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVibGtfY3RybF91cmluZ19jbWRcIixcbiAgICBcInVibGtfY3RybF91bnJlZ19idWZcIixcbiAgICBcInVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc1wiLFxuICAgIFwiX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNcIixcbiAgICBcInVibGtfYnVmX2NsZWFudXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBhbiB4YXJyYXkgd2l0aCBhIGZpeGVkLXNpemUgYXJyYXkgaW4gYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCB0byBhdm9pZCBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHVibGsgZHJpdmVyLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyAoYHVibGtfY3RybF91cmluZ19jbWRgIC1cXHUwMDNlIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCkgYW5kIGRldmljZSBjbGVhbnVwIChgdWJsa19jZGV2X3JlbGAgLVxcdTAwM2UgYHVibGtfYnVmX2NsZWFudXBgKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjI0NWJlZGE5NjM1MWM5YjQzMDUyYTg5ZjE2NjUwNjBjYjI4YzY4ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTM6Mzc6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbmluZGV4IDY2ZjEwYTQ5NTA5ZjIuLjAwYTY2MTE0NjI0M2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbisrKyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xuQEAgLTU1MTksMzkgKzU1MTksMzYgQEAgc3RhdGljIHZvaWQgdWJsa191bnBpbl9yYW5nZV9wYWdlcyh1bnNpZ25lZCBsb25nIGJhc2VfcGZuLFxuIFxuIC8qXG4gICogSW5uZXIgbG9vcDogZXJhc2UgdXAgdG8gVUJMS19SRU1PVkVfQkFUQ0ggbWF0Y2hpbmcgcmFuZ2VzIHVuZGVyXG4tICogbWFzX2xvY2ssIGNvbGxlY3RpbmcgdGhlbSBpbnRvIGFuIHhhcnJheS4gVGhlbiBkcm9wIHRoZSBsb2NrIGFuZFxuLSAqIHVucGluIHBhZ2VzICsgZnJlZSByYW5nZXMgb3V0c2lkZSBzcGlubG9jayBjb250ZXh0LlxuKyAqIG1hc19sb2NrLCBjb2xsZWN0aW5nIHRoZSBwYWdlIHJhbmdlcyBpbiBhIGZpeGVkLXNpemUgYXJyYXkuIFRoZW5cbisgKiBkcm9wIHRoZSBsb2NrIGFuZCB1bnBpbiBwYWdlcyArIGZyZWUgcmFuZ2VzIG91dHNpZGUgc3BpbmxvY2sgY29udGV4dC5cbiAgKlxuICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHJlZSB3YWxrIGNvbXBsZXRlZCwgZmFsc2UgaWYgbW9yZSByYW5nZXMgcmVtYWluLlxuLSAqIFhhcnJheSBrZXkgaXMgdGhlIGJhc2UgUEZOLCB2YWx1ZSBlbmNvZGVzIG5yX3BhZ2VzIHZpYSB4YV9ta192YWx1ZSgpLlxuICAqL1xuICNkZWZpbmUgVUJMS19SRU1PVkVfQkFUQ0hcdDY0XG4gXG4rc3RydWN0IHVibGtfdW5waW5fcmFuZ2Uge1xuK1x0dW5zaWduZWQgbG9uZyBiYXNlX3BmbjtcbitcdHVuc2lnbmVkIGxvbmcgbnJfcGFnZXM7XG4rfTtcbitcbiBzdGF0aWMgYm9vbCBfX3VibGtfc2htZW1fcmVtb3ZlX3JhbmdlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuIFx0XHRcdFx0XHRpbnQgYnVmX2luZGV4LCBpbnQgKnJldClcbiB7XG4gXHRNQV9TVEFURShtYXMsIFx1MDAyNnViLVx1MDAzZWJ1Zl90cmVlLCAwLCBVTE9OR19NQVgpO1xuIFx0c3RydWN0IHVibGtfYnVmX3JhbmdlICpyYW5nZTtcbi1cdHN0cnVjdCB4YXJyYXkgdG9fdW5waW47XG4tXHR1bnNpZ25lZCBsb25nIGlkeDtcbitcdHN0cnVjdCB1YmxrX3VucGluX3JhbmdlIHRvX3VucGluW1VCTEtfUkVNT1ZFX0JBVENIXTtcbiBcdHVuc2lnbmVkIGludCBjb3VudCA9IDA7XG4rXHR1bnNpZ25lZCBpbnQgaTtcbiBcdGJvb2wgZG9uZSA9IGZhbHNlO1xuLVx0dm9pZCAqZW50cnk7XG4tXG4tXHR4YV9pbml0KFx1MDAyNnRvX3VucGluKTtcbiBcbiBcdG1hc19sb2NrKFx1MDAyNm1hcyk7XG4gXHRtYXNfZm9yX2VhY2goXHUwMDI2bWFzLCByYW5nZSwgVUxPTkdfTUFYKSB7XG4tXHRcdHVuc2lnbmVkIGxvbmcgbnI7XG4tXG4gXHRcdGlmIChidWZfaW5kZXggXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiByYW5nZS1cdTAwM2VidWZfaW5kZXggIT0gYnVmX2luZGV4KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHQqcmV0ID0gMDtcbi1cdFx0bnIgPSBtYXMubGFzdCAtIG1hcy5pbmRleCArIDE7XG4tXHRcdGlmICh4YV9lcnIoeGFfc3RvcmUoXHUwMDI2dG9fdW5waW4sIG1hcy5pbmRleCxcbi1cdFx0XHRcdCAgICB4YV9ta192YWx1ZShuciksIEdGUF9BVE9NSUMpKSlcbi1cdFx0XHRnb3RvIHVubG9jaztcbitcdFx0dG9fdW5waW5bY291bnRdLmJhc2VfcGZuID0gbWFzLmluZGV4O1xuK1x0XHR0b191bnBpbltjb3VudF0ubnJfcGFnZXMgPSBtYXMubGFzdCAtIG1hcy5pbmRleCArIDE7XG4gXHRcdG1hc19lcmFzZShcdTAwMjZtYXMpO1xuIFx0XHRrZnJlZShyYW5nZSk7XG4gXHRcdGlmICgrK2NvdW50IFx1MDAzZT0gVUJMS19SRU1PVkVfQkFUQ0gpXG5AQCAtNTU2MSw5ICs1NTU4LDkgQEAgc3RhdGljIGJvb2wgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbiB1bmxvY2s6XG4gXHRtYXNfdW5sb2NrKFx1MDAyNm1hcyk7XG4gXG4tXHR4YV9mb3JfZWFjaChcdTAwMjZ0b191bnBpbiwgaWR4LCBlbnRyeSlcbi1cdFx0dWJsa191bnBpbl9yYW5nZV9wYWdlcyhpZHgsIHhhX3RvX3ZhbHVlKGVudHJ5KSk7XG4tXHR4YV9kZXN0cm95KFx1MDAyNnRvX3VucGluKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGNvdW50OyBpKyspXG4rXHRcdHVibGtfdW5waW5fcmFuZ2VfcGFnZXModG9fdW5waW5baV0uYmFzZV9wZm4sXG4rXHRcdFx0XHQgICAgICAgdG9fdW5waW5baV0ubnJfcGFnZXMpO1xuIFxuIFx0cmV0dXJuIGRvbmU7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzc6NDIuNTM5OTgwMzNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODE4Mzg0NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgdWJsa19kcnYuYyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNgLCBzcGVjaWZpY2FsbHkgaG93IHRoZXkncmUgaGFuZGxpbmcgdW5waW5uaW5nIHJhbmdlcy4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIHJlcGxhY2VkIGFuIGB4YXJyYXlgIHdpdGggYSBmaXhlZC1zaXplIGFycmF5LCBgc3RydWN0IHVibGtfdW5waW5fcmFuZ2UgdG9fdW5waW5bVUJMS19SRU1PVkVfQkFUQ0hdYCwgd2l0aGluIHRoZSBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIG1vdGl2YXRpb246IHRoZXkncmUgZ2V0dGluZyByaWQgb2YgdGhlIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gdXNpbmcgYHhhX3N0b3JlYCB3aXRoIGBHRlBfQVRPTUlDYCAqaW5zaWRlIGEgc3BpbmxvY2sqLiBUaGF0J3MgYSBjbGFzc2ljIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSBpc3N1ZSwgYSBwb3RlbnRpYWwgZGVhZGxvY2sgc2NlbmFyaW8gaWYgaXQgZmFpbHMgb3IgYmVjb21lcyBjb250ZW5kZWQuIEdvb2QgbW92ZS5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGB1YmxrX2Rydi5jYC4gU2luY2UgaXQncyBhIHVzZXJzcGFjZSBibG9jayBkcml2ZXIsIEknbSBwcmV0dHkgc3VyZSBpdCdzIGNvbnRyb2xsZWQgYnkgYEJMS19ERVZfVUJMS2AsIHdoaWNoIGlzIHdoYXQgSSdkIGV4cGVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwNywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM3OjUwLjM1ODM2Nzg5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc4OTUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCTEtfREVWX1VCTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTMxNT1jb25maWcgQkxLX0RFVl9SQkRcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjctXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMyODpjb25maWcgQkxLX0RFVl9VQkxLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyOS1cXHR0cmlzdGF0ZSBcXFwiVXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMzc9Y29uZmlnIEJMS0RFVl9VQkxLX0xFR0FDWV9PUENPREVTXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMzOC1cXHRib29sIFxcXCJTdXBwb3J0IGxlZ2FjeSBjb21tYW5kIG9wY29kZVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzM5OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9VQkxLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTM0MC1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvYmxvY2svTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSArPSBybnVsbC9cXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlLTM5LVxcbmRyaXZlcnMvYmxvY2svTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX0JMS19ERVZfVUJMSylcXHRcXHRcXHQrPSB1YmxrX2Rydi5vXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZS00MS1vYmotJChDT05GSUdfQkxLX0RFVl9aT05FRF9MT09QKSArPSB6bG9vcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM3OjUwLjQwNDE2NDM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY2MjMzODExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBidWlsdCB3aXRoIGBCTEtfREVWX1VCTEtgLCB3aGljaCBpcyBpbXBvcnRhbnQgY29udGV4dC4gTXkgZm9jdXMgaXMgdGhlIGZ1bmN0aW9uIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgaXQgZXZlbiByZWFjaGFibGU/IElmIHNvLCB3aGF0IGFyZSB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cz8gSSdtIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBhbmQgdHJhY2VzIHRvIG1hcCBvdXQgdGhlIGNhbGwgcGF0aHMgdGhhdCBsZWFkIHRvIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuIFVuZGVyc3RhbmRpbmcgaXRzIHJlYWNoYWJpbGl0eSBpcyBjcnVjaWFsIGZvciBhc3Nlc3NpbmcgaXRzIGltcGFjdCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgb3IgbW9kaWZpY2F0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlcXVpcmVkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozNzo1Ny4wNjY1MDQ5MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNjAxMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTI5PXN0cnVjdCB1YmxrX3VucGluX3JhbmdlIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTMzLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTM0OnN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1MzUtXFx0XFx0XFx0XFx0XFx0aW50IGJ1Zl9pbmRleCwgaW50ICpyZXQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTU3ND1zdGF0aWMgaW50IHVibGtfc2htZW1fcmVtb3ZlX3JhbmdlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBpbnQgYnVmX2luZGV4KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzctXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1Nzg6XFx0d2hpbGUgKCFfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlcyh1YiwgYnVmX2luZGV4LCBcXHUwMDI2cmV0KSlcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3OS1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzc6NTcuMTEyNTY5NzA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzNzkzMzg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbCBIaWVyYXJjaHk6IGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgKipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbnRvIHRoaXMgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgZnVuY3Rpb24uIEkgc2VlIGl0J3MgY2FsbGVkIGJ5IGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIGl0c2VsZi4uLiBhIGJpdCBvZiBhIGNpcmN1bGFyIHJlZmVyZW5jZSEgU2VlbXMgcmVkdW5kYW50Li4uIG9yIHBvdGVudGlhbGx5IGEgY2x1ZSB0byBhIGxvb3A/IEVpdGhlciB3YXksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSAqKnByaW1hcnkqKiBwb2ludHMgd2hlcmUgdGhpcyBmdW5jdGlvbiBnZXRzIGludm9rZWQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBlbnRyeSBwb2ludC4gTGV0J3Mgc2VlIHdoZXJlIHRoZSBvcmlnaW5hbCBjYWxsZXJzIG9mIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIHJlc2lkZS4gS25vd2luZyB0aGUgY2FsbCBjaGFpbiBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgaW50ZW5kZWQgcHVycG9zZSBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuIFNvLCB0aW1lIHRvIGRvIHNvbWUgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM4OjAxLjM1MDUwNzIxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzYyMTE3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTI5PXN0cnVjdCB1YmxrX3VucGluX3JhbmdlIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTMzLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTM0OnN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1MzUtXFx0XFx0XFx0XFx0XFx0aW50IGJ1Zl9pbmRleCwgaW50ICpyZXQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3My0gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTU3NDpzdGF0aWMgaW50IHVibGtfc2htZW1fcmVtb3ZlX3JhbmdlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBpbnQgYnVmX2luZGV4KVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTc1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTc3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTc4OlxcdHdoaWxlICghX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXModWIsIGJ1Zl9pbmRleCwgXFx1MDAyNnJldCkpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzktXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTU4Mz1zdGF0aWMgaW50IHVibGtfY3RybF91bnJlZ19idWYoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTk3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTk4OlxcdHJldCA9IHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlcyh1YiwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTk5LVxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU2MDY9c3RhdGljIHZvaWQgdWJsa19idWZfY2xlYW51cChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjA3LXtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTYwODpcXHR1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXModWIsIC0xKTtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTYwOS1cXHRtdHJlZV9kZXN0cm95KFxcdTAwMjZ1Yi1cXHUwMDNlYnVmX3RyZWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODowMS4zOTQxMzM0NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTA3MjM0NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBVYmxrIEJ1ZmZlciBVbnJlZ2lzdHJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIHVucmVnaXN0cmF0aW9uIHByb2Nlc3MgZm9yIFVibGsgYnVmZmVycy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgdWJsa19jdHJsX3VucmVnX2J1ZmAsIGB1YmxrX2J1Zl9jbGVhbnVwYCwgYW5kIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLiBJIHNlZSB0aG9zZSBmdW5jdGlvbnMgYXJlIGludGVydHdpbmVkLCBhbmQgdGhhdCdzIHRoZSBrZXkuIEtub3dpbmcgdGhhdCwgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgYHVibGtfY3RybF91bnJlZ19idWZgIGJlaW5nIGNhbGxlZD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBmb3IgdGhpcyBmdW5jdGlvbiB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBidWZmZXIgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgaW4gVWJsay4gVGhhdCdzIHRoZSBmaXJzdCBwbGFjZSB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYzMCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM4OjEwLjUwMTM3MDQ2MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2NTIxNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWJsa19jdHJsX3VucmVnX2J1ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU1NzQ9c3RhdGljIGludCB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgaW50IGJ1Zl9pbmRleClcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTgyLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTgzOnN0YXRpYyBpbnQgdWJsa19jdHJsX3VucmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTg0LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU3NjA9c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01ODU0LVxcdGNhc2UgVUJMS19DTURfVU5SRUdfQlVGOlxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1ODU1OlxcdFxcdHJldCA9IHVibGtfY3RybF91bnJlZ19idWYodWIsIFxcdTAwMjZoZWFkZXIpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01ODU2LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODoxMC41NDkwMjgwMjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY0MTcyNjc2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB1YmxrX2N0cmxfdXJpbmdfY21kIENvbW1hbmQgSGFuZGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB1YmxrX2N0cmxfdXJpbmdfY21kYCwgd2hpY2ggaGFuZGxlcyBpb191cmluZyBjb21tYW5kcyBmb3IgdGhlIHVibGsgY29udHJvbCBkZXZpY2UuIFRoaXMgaXMgdGhlIGVudHJ5IHBvaW50LCBzbyBpdCdzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLiBUaGUgY29kZSBjbGVhcmx5IHNob3dzIHRoYXQgaXQgaXMgcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLCBmcm9tIGEgZnVuY3Rpb25hbGl0eSBzdGFuZHBvaW50LlxuXG5Ob3csIHRoaXMgcGF0Y2ggSSdtIHJldmlld2luZyByZXBsYWNlcyBhbiB4YXJyYXkgd2l0aCBhIGZpeGVkLXNpemUgYXJyYXkuIFRoZSBnb2FsIGhlcmUgaXMgcHJldHR5IGNsZWFyOiBlbGltaW5hdGUgbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIGEgc3BpbmxvY2suIFRoYXQncyBhIHNvbGlkIG9wdGltaXphdGlvbiwgYXMgbG9ja2luZyBjYW4gaW50cm9kdWNlIGxhdGVuY3kgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGxvY2sgY29udGVudGlvbiBpc3N1ZXMuIEl0J3MgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZSwgc28gSSBuZWVkIHRvIHZlcmlmeSBpdHMgaW1wYWN0IHRob3JvdWdobHkuXG5cbkhtbSwgSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGNyaXRpY2FsIGVudHJ5IHBvaW50cyB0byBjb25zaWRlci4gSSBhbSBnb2luZyB0byBoYXZlIGEgbG9vayBhdCBgdWJsa19idWZfY2xlYW51cGAuIEkgYmVsaWV2ZSBpdCdzIGNhbGxlZCBmcm9tIGB1YmxrX3JlbW92ZWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBzbyBJIHNob3VsZCBjaGVjayB0aGlzIGNvZGUgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODoyNi45NjYyOTk1OTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MTEyODk4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1YmxrX2J1Zl9jbGVhbnVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzU5PXN0YXRpYyBib29sIHVibGtfdHJ5X2J1Zl9tYXRjaChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2MC1cXHRcXHRcXHRcXHQgIHUzMiAqYnVmX2lkeCwgdTMyICpidWZfb2ZmKTtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzYxOnN0YXRpYyB2b2lkIHVibGtfYnVmX2NsZWFudXAoc3RydWN0IHVibGtfZGV2aWNlICp1Yik7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2Mi1zdGF0aWMgdm9pZCB1YmxrX2Fib3J0X3F1ZXVlKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEpO1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQzMjI9c3RhdGljIHZvaWQgdWJsa19jZGV2X3JlbChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDMyNS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDMyNjpcXHR1YmxrX2J1Zl9jbGVhbnVwKHViKTtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDMyNy1cXHRibGtfbXFfZnJlZV90YWdfc2V0KFxcdTAwMjZ1Yi1cXHUwMDNldGFnX3NldCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTU4Mz1zdGF0aWMgaW50IHVibGtfY3RybF91bnJlZ19idWYoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjA1LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NjA2OnN0YXRpYyB2b2lkIHVibGtfYnVmX2NsZWFudXAoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTYwNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM4OjI3LjMxNzQzMzYyNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQ0OTQyOTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgQ29udHJvbCBEZXZpY2UgRW50cnkgUG9pbnQqKlxuXG5Pa2F5LCBzbyBJJ20gemVyb2luZyBpbiBvbiBgdWJsa19jdHJsX3VyaW5nX2NtZGAgYXMgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IGhlcmUuIFRoYXQncyB3aGVyZSB0aGUgY29udHJvbCBwbGFuZSBpbnRlcmFjdGlvbnMgd2lsbCBiZS4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBjb25maXJtIGlzIGl0cyBzY29wZS4gQWxyaWdodCwgaXQncyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggcHJvYmFibHkgbWVhbnMgaXQncyBsaW1pdGVkIGluIHNjb3BlIGFuZCBvbmx5IHVzZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBtb2R1bGUuIFdhaXQgYSBzZWNvbmQuLi4gaXQncyB0aGUgYC51cmluZ19jbWRgIGNhbGxiYWNrLiBHb3QgaXQsIHRoYXQncyB0aGUgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHJlcXVlc3RzIGNvbWluZyBpbiB2aWEgdGhlIGlvX3VyaW5nIGludGVyZmFjZSBmb3IgdGhlIGNvbnRyb2wgZGV2aWNlLiBUaGF0IGNsYXJpZmllcyBpdHMgcHVycG9zZSBzaWduaWZpY2FudGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODgwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzg6MzEuNjYyMzc5NjU3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc4NDc5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1YmxrX2N0cmxfdXJpbmdfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTYxND1zdGF0aWMgYm9vbCB1YmxrX3RyeV9idWZfbWF0Y2goc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjY3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NjY4OnN0YXRpYyBpbnQgdWJsa19jdHJsX3VyaW5nX2NtZF9wZXJtaXNzaW9uKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU2NjktXFx0XFx0dTMyIGNtZF9vcCwgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzQ2LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NzQ3OnN0YXRpYyBib29sIHVibGtfY3RybF91cmluZ19jbWRfbWF5X3NsZWVwKHUzMiBjbWRfb3ApXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NDgte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NTktXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU3NjA6c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTc2MS1cXHRcXHR1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTc3MC1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTc3MTpcXHRpZiAodWJsa19jdHJsX3VyaW5nX2NtZF9tYXlfc2xlZXAoY21kX29wKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzcyLVxcdCAgICBpc3N1ZV9mbGFncyBcXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTgwMC1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTgwMTpcXHRcXHRyZXQgPSB1YmxrX2N0cmxfdXJpbmdfY21kX3Blcm1pc3Npb24odWIsIGNtZF9vcCwgXFx1MDAyNmhlYWRlcik7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU4MDItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01ODcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVibGtfY3RsX2ZvcHMgPSB7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU4NzItXFx0Lm9wZW5cXHRcXHQ9IG5vbnNlZWthYmxlX29wZW4sXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU4NzM6XFx0LnVyaW5nX2NtZCAgICAgID0gdWJsa19jdHJsX3VyaW5nX2NtZCxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTg3NC1cXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODozMS43MDgxNjkxNTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA1MDE2Mjk4MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVYmxrIERyaXZlciBDYWxsYmFja3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYHVibGtfY3RybF91cmluZ19jbWRgIGZ1bmN0aW9uLCBhbmQgeWVzLCB0aGF0J3MgZGVmaW5pdGVseSB0aGUgYC51cmluZ19jbWRgIGNhbGxiYWNrLiBJJ20gbm90aW5nIHRoYXQgaXQncyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaXMgYSBrZXkgZGV0YWlsLiBUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IHdlIGNhbid0IGRpcmVjdGx5IGFjY2VzcyBpdCBvdXRzaWRlIG9mIGl0cyBjb21waWxhdGlvbiB1bml0LCBhbHRob3VnaCB3ZSBhcmUgZWZmZWN0aXZlbHkgdXNpbmcgaXQgYXMgYW4gZW50cnkgcG9pbnQuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIGFsdGVybmF0aXZlczogaXMgdGhlcmUgYSBub24tc3RhdGljLCBtb3JlIGFjY2Vzc2libGUgZnVuY3Rpb24gd2UgY291bGQgdXRpbGl6ZSBpbnN0ZWFkPyBJZGVhbGx5LCB3ZSdkIHByZWZlciBzb21ldGhpbmcgbGVzcyByZXN0cmljdGl2ZS5cblxuTGV0J3Mgc2VlLi4uaWYgdGhlcmUgaXNuJ3QgYSBub24tc3RhdGljIHZhcmlhbnQgcmVhZGlseSBhdmFpbGFibGUgd2l0aGluIHRoZSByZWxldmFudCBwYXJ0cyBvZiB0aGUgY29kZSwgdGhlbiwgd29yc3QgY2FzZSwgd2UnbGwganVzdCBoYXZlIHRvIGRlYWwgd2l0aCB0aGUgc3RhdGljIG5hdHVyZSBvZiBgdWJsa19jdHJsX3VyaW5nX2NtZGAgb3IgcGVyaGFwcyBjb25zaWRlciBgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCBvciBldmVuIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLlxuXG5BaCwgYnV0IGhvbGQgb24sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjbGVhcjogKmB1YmxrX2N0cmxfdXJpbmdfY21kYCBpcyBzdGF0aWMqISBJJ20gY29uZmlybWluZyB0aGF0IGJlY2F1c2UgaXQncyBnb2luZyB0byBkcml2ZSBvdXIgZGVzaWduIGRlY2lzaW9ucyBpbiB0aGlzIGFyZWEuXG5cblNvLCBJIHRoaW5rIEknbGwgZ28gY2hlY2sgdGhlIGZpbGUgYGRyaXZlcnMvYmxvY2svdWJsa19kcnYuY2AgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYSBub24tc3RhdGljIGNhbmRpZGF0ZSB0aGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcxNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODo0Mi4yMDk4MDE3NjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTk1MzE0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IHVibGtfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzg6NDIuMjYzODA0MjIxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NDYxOTc5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ29uc2lkZXJpbmcgU3RhdGljIFZhcmlhYmxlIE5hbWluZyBpbiBhIFNwZWNpZmljIENvbnRleHQqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IG5hbWluZyBhIHN0YXRpYyBpbnRlZ2VyIHZhcmlhYmxlLCBsaWtlbHkgd2l0aGluIHRoZSBjb25maW5lcyBvZiBhIGtlcm5lbCBtb2R1bGUgb3Igc29tZSBzaW1pbGFyIGxvdy1sZXZlbCBjb2RlLiBJJ20gbGVhbmluZyB0b3dhcmQgYSBuYW1lIHRoYXQgaW5kaWNhdGVzIHNvbWUgbGV2ZWwgb2YgbG9jYWwgc2NvcGUgYW5kIHBlcnNpc3RlbmNlLiBcIlN0YXRpY1wiIGlzIHRoZSBrZXkgaGVyZS4gSSBuZWVkIHNvbWV0aGluZyB0aGF0J3MgY2xlYXJseSByZXByZXNlbnRhdGl2ZSBvZiB0aGUgZGF0YSwgdGhlIHVzZSBjYXNlLCBvciBpdHMgcHVycG9zZSB3aXRoaW4gdGhpcyBtb2R1bGUgb3Igc2VjdGlvbi4gSSdtIHF1aWNrbHkgZmlsdGVyaW5nIHRocm91Z2ggdGhlIG9idmlvdXMgY2hvaWNlcywgYW5kIEkndmUgYXJyaXZlZCBhdCB0aGUgdGhvdWdodCBvZiB1c2luZyBgXnN0YXRpYyBpbnQgdWJsa19gIG9yIGEgc2ltaWxhciBmb3JtYXQuIFRoZSBwcmVmaXggYHVibGtfYCBsaWtlbHkgcmVmZXJzIHRvIGEgc3BlY2lmaWMgc3Vic3lzdGVtIG9yIGZ1bmN0aW9uYWxpdHkuIFRoYXQga2luZCBvZiBuYW1pbmcgY29udmVudGlvbiBoYXMgaXRzIG1lcml0cyDigJMgaXQgaGVscHMgd2l0aCBzY29waW5nLCBhdm9pZGluZyBjb2xsaXNpb25zLCBhbmQgcXVpY2sgaWRlbnRpZmljYXRpb24gd2hlbiBkZWJ1Z2dpbmcgb3IgdHJhY2luZyB0aHJvdWdoIHRoZSBjb2RlLiBJIGFtIGNvbnNpZGVyaW5nIGBzdGF0aWNgIHRvIGVuc3VyZSB0aGF0IHRoZXJlIGlzIG5vIGNvbmZsaWN0cyBvciB2aXNpYmlsaXR5IGlzc3Vlcy4gVGhpcyBhbGxvd3MgbWUgdG8gdXNlIHRoZSBuYW1lIHdpdGhvdXQgYW55IHdvcnJpZXMgb2YgdW5pbnRlbmRlZCBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayBmb3IgZXhpc3RpbmcgY29udmVudGlvbnMgYW5kIHNlZSB3aGF0IG1ha2VzIHNlbnNlIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzIwOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM4OjQ5LjkxMDAwNTE1OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNzYxMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgdWJsa19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01Mzg9c3RhdGljIERFRklORV9YQVJSQVkodWJsa196b25lZF9yZXBvcnRfZGVzY3MpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MzktXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU0MDpzdGF0aWMgaW50IHVibGtfem9uZWRfaW5zZXJ0X3JlcG9ydF9kZXNjKGNvbnN0IHN0cnVjdCByZXF1ZXN0ICpyZXEsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU0MS1cXHRcXHRzdHJ1Y3QgdWJsa196b25lZF9yZXBvcnRfZGVzYyAqZGVzYylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTM9c3RhdGljIHN0cnVjdCB1YmxrX3pvbmVkX3JlcG9ydF9kZXNjICp1YmxrX3pvbmVkX2dldF9yZXBvcnRfZGVzYyhcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTgtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1OTpzdGF0aWMgaW50IHVibGtfZ2V0X25yX3pvbmVzKGNvbnN0IHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU2MC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY2LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1Njc6c3RhdGljIGludCB1YmxrX3JldmFsaWRhdGVfZGlza196b25lcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01Njgte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3MS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTcyOnN0YXRpYyBpbnQgdWJsa19kZXZfcGFyYW1fem9uZWRfdmFsaWRhdGUoY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTczLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz02MDA9c3RhdGljIHZvaWQgKnVibGtfYWxsb2NfcmVwb3J0X2J1ZmZlcihzdHJ1Y3QgdWJsa19kZXZpY2UgKnVibGssXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNjI2LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo2Mjc6c3RhdGljIGludCB1YmxrX3JlcG9ydF96b25lcyhzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc2VjdG9yX3Qgc2VjdG9yLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy02MjgtXFx0XFx0ICAgICAgdW5zaWduZWQgaW50IG5yX3pvbmVzLCBzdHJ1Y3QgYmxrX3JlcG9ydF96b25lc19hcmdzICphcmdzKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTcyND1zdGF0aWMgdm9pZCB1YmxrX3NldHVwX2lvZF96b25lZChzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTc2NC1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NzY1OnN0YXRpYyBpbnQgdWJsa19kZXZfcGFyYW1fem9uZWRfdmFsaWRhdGUoY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNzY2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz03NzA9c3RhdGljIHZvaWQgdWJsa19kZXZfcGFyYW1fem9uZWRfYXBwbHkoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy03NzMtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjc3NDpzdGF0aWMgaW50IHVibGtfcmV2YWxpZGF0ZV9kaXNrX3pvbmVzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTc3NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9ODMxPXN0YXRpYyB2b2lkIHVibGtfYmF0Y2hfZGVpbml0X2ZldGNoX2J1ZihzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTg0NS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6ODQ2OnN0YXRpYyBpbnQgdWJsa19iYXRjaF9mZXRjaF9wb3N0X2NxZShzdHJ1Y3QgdWJsa19iYXRjaF9mZXRjaF9jbWQgKmZjbWQsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTg0Ny1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpb19icl9zZWwgKnNlbCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz04OTQ9c3RhdGljIHZvaWQgdWJsa19kZXZfcGFyYW1fYmFzaWNfYXBwbHkoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy05MDMtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjkwNDpzdGF0aWMgaW50IHVibGtfaW50ZWdyaXR5X2ZsYWdzKHUzMiBmbGFncylcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtOTA1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy05MTgtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjkxOTpzdGF0aWMgaW50IHVibGtfaW50ZWdyaXR5X3BpX3R1cGxlX3NpemUodTggY3N1bV90eXBlKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy05MjAte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTkzND1zdGF0aWMgZW51bSBibGtfaW50ZWdyaXR5X2NoZWNrc3VtIHVibGtfaW50ZWdyaXR5X2NzdW1fdHlwZSh1OCBjc3VtX3R5cGUpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtOTUwLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo5NTE6c3RhdGljIGludCB1YmxrX3ZhbGlkYXRlX3BhcmFtcyhjb25zdCBzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy05NTIte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTEzMjc9c3RhdGljIHZvaWQgdWJsa19zdG9yZV9vd25lcl91aWRfZ2lkKHVuc2lnbmVkIGludCAqb3duZXJfdWlkLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTEzMzgtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjEzMzk6c3RhdGljIGludCB1YmxrX29wZW4oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGJsa19tb2RlX3QgbW9kZSlcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMTM0MC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MjMwOT1zdGF0aWMgdm9pZCB1YmxrX2JhdGNoX3F1ZXVlX3JxcyhzdHJ1Y3QgcnFfbGlzdCAqcnFsaXN0KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTIzMzQtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjIzMzU6c3RhdGljIGludCB1YmxrX2luaXRfaGN0eChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgdm9pZCAqZHJpdmVyX2RhdGEsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTIzMzYtXFx0XFx0dW5zaWduZWQgaW50IGhjdHhfaWR4KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTIzNjA9c3RhdGljIHZvaWQgdWJsa19xdWV1ZV9yZWluaXQoc3RydWN0IHVibGtfZGV2aWNlICp1Yiwgc3RydWN0IHVibGtfcXVldWUgKnVicSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMzkyLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoyMzkzOnN0YXRpYyBpbnQgdWJsa19jaF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMzk0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0yNTE2PXN0YXRpYyB2b2lkIHVibGtfY2hfcmVsZWFzZV93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNjE3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoyNjE4OnN0YXRpYyBpbnQgdWJsa19jaF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNjE5LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNjMzLS8qIG1hcCBwcmUtYWxsb2NhdGVkIHBlci1xdWV1ZSBjbWQgYnVmZmVyIHRvIHVibGtzcnYgZGFlbW9uICovXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjI2MzQ6c3RhdGljIGludCB1YmxrX2NoX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNjM1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zMTYzPXN0YXRpYyB2b2lkIHVibGtfaW9fcmVsZWFzZSh2b2lkICpwcml2KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMxNzgtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjMxNzk6c3RhdGljIGludCB1YmxrX3JlZ2lzdGVyX2lvX2J1ZihzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMxODAtXFx0XFx0XFx0XFx0c3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zMjA2PXVibGtfZGFlbW9uX3JlZ2lzdGVyX2lvX2J1ZihzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzIzNS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzIzNjpzdGF0aWMgaW50IHVibGtfdW5yZWdpc3Rlcl9pb19idWYoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMjM3LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMjQ1LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMjQ2OnN0YXRpYyBpbnQgdWJsa19jaGVja19mZXRjaF9idWYoY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1YiwgX191NjQgYnVmX2FkZHIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMyNDcte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTMyNjI9c3RhdGljIGludCBfX3VibGtfZmV0Y2goc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCBzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMyODQtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjMyODU6c3RhdGljIGludCB1YmxrX2ZldGNoKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzI4Ni1cXHRcXHQgICAgICBzdHJ1Y3QgdWJsa19pbyAqaW8sIF9fdTY0IGJ1Zl9hZGRyLCB1MTYgcV9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMzA3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMzA4OnN0YXRpYyBpbnQgdWJsa19jaGVja19jb21taXRfYW5kX2ZldGNoKGNvbnN0IHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMzMDktXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB1YmxrX2lvICppbywgX191NjQgYnVmX2FkZHIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzM0MD1zdGF0aWMgYm9vbCB1YmxrX2dldF9kYXRhKGNvbnN0IHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsIHN0cnVjdCB1YmxrX2lvICppbyxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMzU3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMzU4OnN0YXRpYyBpbnQgdWJsa19jaF91cmluZ19jbWRfbG9jYWwoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMzU5LVxcdFxcdHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zNTIxPXN0YXRpYyB2b2lkIHVibGtfY2hfdXJpbmdfY21kX2NiKHN0cnVjdCBpb190d19yZXEgdHdfcmVxLCBpb190d190b2tlbl90IHR3KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM1MzItXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM1MzM6c3RhdGljIGludCB1YmxrX2NoX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzUzNC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzU5OD1fX3VibGtfd2Fsa19jbWRfYnVmKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzYyNi1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzYyNzpzdGF0aWMgaW50IHVibGtfd2Fsa19jbWRfYnVmKHN0cnVjdCB1YmxrX2JhdGNoX2lvX2l0ZXIgKml0ZXIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2MjgtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2NTQtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM2NTU6c3RhdGljIGludCB1YmxrX2JhdGNoX3VucHJlcF9pbyhzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNjU2LVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvX2RhdGEgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzY4MD1zdGF0aWMgdm9pZCB1YmxrX2JhdGNoX3JldmVydF9wcmVwX2NtZChzdHJ1Y3QgdWJsa19iYXRjaF9pb19pdGVyICppdGVyLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2OTItXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM2OTM6c3RhdGljIGludCB1YmxrX2JhdGNoX3ByZXBfaW8oc3RydWN0IHVibGtfcXVldWUgKnVicSxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzY5NC1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM3MjMtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM3MjQ6c3RhdGljIGludCB1YmxrX2hhbmRsZV9iYXRjaF9wcmVwX2NtZChjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNzI1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNzUwLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozNzUxOnN0YXRpYyBpbnQgdWJsa19iYXRjaF9jb21taXRfaW9fY2hlY2soY29uc3Qgc3RydWN0IHVibGtfcXVldWUgKnVicSxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzc1Mi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdWJsa19pbyAqaW8sXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzc2My1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6Mzc2NDpzdGF0aWMgaW50IHVibGtfYmF0Y2hfY29tbWl0X2lvKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM3NjUtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODExLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozODEyOnN0YXRpYyBpbnQgdWJsa19oYW5kbGVfYmF0Y2hfY29tbWl0X2NtZChzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODEzLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODMyLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozODMzOnN0YXRpYyBpbnQgdWJsa19jaGVja19iYXRjaF9jbWRfZmxhZ3MoY29uc3Qgc3RydWN0IHVibGtfYmF0Y2hfaW8gKnVjKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODM0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODUxLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozODUyOnN0YXRpYyBpbnQgdWJsa19jaGVja19iYXRjaF9jbWQoY29uc3Qgc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSlcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzg1My17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzg3Ni1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6Mzg3NzpzdGF0aWMgaW50IHVibGtfYmF0Y2hfYXR0YWNoKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM4NzgtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM5MjItXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM5MjM6c3RhdGljIGludCB1YmxrX2hhbmRsZV9iYXRjaF9mZXRjaF9jbWQoc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSlcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzkyNC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzkzMy1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzkzNDpzdGF0aWMgaW50IHVibGtfdmFsaWRhdGVfYmF0Y2hfZmV0Y2hfY21kKHN0cnVjdCB1YmxrX2JhdGNoX2lvX2RhdGEgKmRhdGEpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM5MzUte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM5NTItXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM5NTM6c3RhdGljIGludCB1YmxrX2hhbmRsZV9ub25fYmF0Y2hfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzk1NC1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTgyLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozOTgzOnN0YXRpYyBpbnQgdWJsa19jaF9iYXRjaF9pb191cmluZ19jbWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTg0LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDE4OD1zdGF0aWMgdm9pZCB1YmxrX2RlaW5pdF9xdWV1ZShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCB1MTYgcV9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MTk4LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0MTk5OnN0YXRpYyBpbnQgdWJsa19nZXRfcXVldWVfbnVtYV9ub2RlKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHUxNiBxX2lkKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MjAwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MjExLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0MjEyOnN0YXRpYyBpbnQgdWJsa19pbml0X3F1ZXVlKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHUxNiBxX2lkKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MjEzLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00MjY1PXN0YXRpYyB2b2lkIHVibGtfZGVpbml0X3F1ZXVlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyNzItXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQyNzM6c3RhdGljIGludCB1YmxrX2luaXRfcXVldWVzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyNzQte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyOTAtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQyOTE6c3RhdGljIGludCB1YmxrX2FsbG9jX2Rldl9udW1iZXIoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgaW50IGlkeClcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDI5Mi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDMyMj1zdGF0aWMgdm9pZCB1YmxrX2NkZXZfcmVsKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MzM0LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0MzM1OnN0YXRpYyBpbnQgdWJsa19hZGRfY2hkZXYoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDMzNi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDM2OD1zdGF0aWMgdm9pZCB1YmxrX2FsaWduX21heF9pb19zaXplKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDM3NS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDM3NjpzdGF0aWMgaW50IHVibGtfYWRkX3RhZ19zZXQoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDM3Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDQxOD1zdGF0aWMgYm9vbCB1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHBpZF90IHVibGtzcnZfcGlkKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0MzItICovXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQ0MzM6c3RhdGljIGludCB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0MzQte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0NDYtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQ0NDc6c3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0NDgtXFx0XFx0Y29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NjA1LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0NjA2OnN0YXRpYyBpbnQgdWJsa19jdHJsX2dldF9xdWV1ZV9hZmZpbml0eShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NjA3LVxcdFxcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDY0OT1zdGF0aWMgaW5saW5lIHZvaWQgdWJsa19kdW1wX2Rldl9pbmZvKHN0cnVjdCB1Ymxrc3J2X2N0cmxfZGV2X2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDY1Ni1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDY1NzpzdGF0aWMgaW50IHVibGtfY3RybF9hZGRfZGV2KGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ2NTgte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQ4NzE9c3RhdGljIGlubGluZSBib29sIHVibGtfaWRyX2ZyZWVkKGludCBpZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00ODgxLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0ODgyOnN0YXRpYyBpbnQgdWJsa19jdHJsX2RlbF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICoqcF91YiwgYm9vbCB3YWl0KVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00ODgzLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00OTI5PXN0YXRpYyB2b2lkIHVibGtfY3RybF9zdG9wX2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5MzMtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQ5MzQ6c3RhdGljIGludCB1YmxrX2N0cmxfdHJ5X3N0b3BfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5MzUte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5NjEtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQ5NjI6c3RhdGljIGludCB1YmxrX2N0cmxfZ2V0X2Rldl9pbmZvKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5NjMtXFx0XFx0Y29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00OTk3PXN0YXRpYyB2b2lkIHVibGtfY3RybF9maWxsX3BhcmFtc19kZXZ0KHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTAxMS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTAxMjpzdGF0aWMgaW50IHVibGtfY3RybF9nZXRfcGFyYW1zKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUwMTMtXFx0XFx0Y29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MDQxLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1MDQyOnN0YXRpYyBpbnQgdWJsa19jdHJsX3NldF9wYXJhbXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTA0My1cXHRcXHRjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUwODMtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUwODQ6c3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfcmVjb3Zlcnkoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTA4NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTExOS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTEyMDpzdGF0aWMgaW50IHVibGtfY3RybF9lbmRfcmVjb3Zlcnkoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTEyMS1cXHRcXHRjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxNTctXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUxNTg6c3RhdGljIGludCB1YmxrX2N0cmxfZ2V0X2ZlYXR1cmVzKGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxNTkte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxNzEtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUxNzI6c3RhdGljIGludCB1YmxrX2N0cmxfc2V0X3NpemUoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgY29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTE3My17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTIwNT1zdGF0aWMgYm9vbCB1YnFfaGFzX2lkbGVfaW8oY29uc3Qgc3RydWN0IHVibGtfcXVldWUgKnVicSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MjE1LS8qIFdhaXQgdW50aWwgZWFjaCBodyBxdWV1ZSBoYXMgYXQgbGVhc3Qgb25lIGlkbGUgSU8gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTIxNjpzdGF0aWMgaW50IHVibGtfd2FpdF9mb3JfaWRsZV9pbyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MjE3LVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgdGltZW91dF9tcylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MjU4LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1MjU5OnN0YXRpYyBpbnQgdWJsa19jdHJsX3F1aWVzY2VfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNjAtXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTMwNy0gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTMwODpzdGF0aWMgaW50IHVibGtfY2hhcl9kZXZfcGVybWlzc2lvbihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MzA5LVxcdFxcdGNvbnN0IGNoYXIgKmRldl9wYXRoLCBpbnQgbWFzaylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01Mzc2PXN0YXRpYyBpbnQgX191YmxrX2N0cmxfcmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU0MjEtICovXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU0MjI6c3RhdGljIGludCB1YmxrX2N0cmxfcmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NDIzLVxcdFxcdFxcdCAgICAgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTM0PXN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3My0gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTU3NDpzdGF0aWMgaW50IHVibGtfc2htZW1fcmVtb3ZlX3JhbmdlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBpbnQgYnVmX2luZGV4KVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTc1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTgyLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTgzOnN0YXRpYyBpbnQgdWJsa19jdHJsX3VucmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTg0LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU2MTQ9c3RhdGljIGJvb2wgdWJsa190cnlfYnVmX21hdGNoKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY2Ny1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTY2ODpzdGF0aWMgaW50IHVibGtfY3RybF91cmluZ19jbWRfcGVybWlzc2lvbihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjY5LVxcdFxcdHUzMiBjbWRfb3AsIHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTc0Nz1zdGF0aWMgYm9vbCB1YmxrX2N0cmxfdXJpbmdfY21kX21heV9zbGVlcCh1MzIgY21kX29wKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NTktXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU3NjA6c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTc2MS1cXHRcXHR1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTkzNz1tb2R1bGVfZXhpdCh1YmxrX2V4aXQpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01OTM4LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1OTM5OnN0YXRpYyBpbnQgdWJsa19zZXRfbWF4X3VucHJpdmlsZWdlZF91Ymxrcyhjb25zdCBjaGFyICpidWYsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU5NDAtXFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTk0NC1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTk0NTpzdGF0aWMgaW50IHVibGtfZ2V0X21heF91bnByaXZpbGVnZWRfdWJsa3MoY2hhciAqYnVmLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01OTQ2LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODo0OS45NTYyODcxMzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA5MDg2NTc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdWJsayBDb250cm9sIFBhdGggZm9yIEZ1enppbmcgRW50cnlwb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBgdWJsa2AgY29udHJvbCBwYXRoIHRvIGlkZW50aWZ5IGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZyBlbnRyeXBvaW50cy4gSSBzZWUgdGhhdCBgdWJsa19jdHJsX3VyaW5nX2NtZGAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHJvYWRibG9jay4gSXQgY2FsbHMgYHVibGtfY3RybF91bnJlZ19idWZgLCB3aGljaCB0aGVuIGNhbGxzIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLiBUaGVzZSBhcmUgYWxzbyBzdGF0aWMsIHdoaWNoIG1ha2VzIHRoaXMgdHJpY2t5LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHNpbXBseSBsaXN0IHRob3NlIGFzIGZvY3VzIHN5bWJvbHMsIGJ1dCB0aGUgc3RhdGljIG5hdHVyZSBpcyB0aHJvd2luZyBhIHdyZW5jaCBpbiB0aGUgd29ya3MuXG5cbkkgbmVlZCB0byByZW1lbWJlciB0aGUgZ3VpZGFuY2Ug4oCTIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGUgY29tcGlsZXIgb2Z0ZW4gaW5saW5lcyBzdGF0aWMgaGVscGVycywgcmVtb3ZpbmcgdGhlaXIgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcywgYW5kIHRoZXJlZm9yZSBtYWtpbmcgdGhlbSBsZXNzIGF0dHJhY3RpdmUgZm9yIGZ1enppbmcgZGlyZWN0bHkuIFNvLCBJIG5lZWQgdG8gcmV0aGluayB0aGlzLiBJZiBldmVyeXRoaW5nIGlzIHN0YXRpYywgc2hvdWxkIEkganVzdCBiaXRlIHRoZSBidWxsZXQgYW5kIGxpc3QgdGhlIHN0YXRpYyBmdW5jdGlvbnMgYW55d2F5LCBob3BpbmcgU3l6a2FsbGVyIGNhbiBzdGlsbCByZWFjaCB0aGVtPyBTaW5jZSB0aGV5IGFyZSBub3QgaW5saW5lZCwgaXQgaXMgcG9zc2libGUuXG5cbldhaXQsIGxldCBtZSBjb25maXJtLiBZZXMsIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCBhbmQgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgYXJlIHN0YXRpYywgYW5kIHNvIGlzIGB1YmxrX2N0cmxfdXJpbmdfY21kYC4gTm93LCBJJ20gY2hlY2tpbmcgaWYgYHVibGtfY3RybF91bnJlZ19idWZgIGlzIGlubGluZWQsIGJlY2F1c2UgdGhhdCBpcyBhIGtleSBjb25zaWRlcmF0aW9uLiBMb29raW5nIGF0IHdoZXJlIGl0J3MgY2FsbGVkLCBpdCdzIGluc2lkZSBhIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aGluIGB1YmxrX2N0cmxfdXJpbmdfY21kYC4gVGhhdCBzdWdnZXN0cyBpdCdzICpwcm9iYWJseSogbm90IGlubGluZWQsIGdpdmVuIGl0cyBzaXplIGFuZCB0aGUgY2FsbCBzaXRlIHN0cnVjdHVyZS5cblxuTm93LCBteSBtaW5kIHNoaWZ0cyB0byBvdGhlciBwb3RlbnRpYWwgZW50cnlwb2ludHMsIGdpdmVuIHRoZSBwcmluY2lwbGUgb2YgcHJlZmVycmluZyB0aGUgbm9uLXN0YXRpYyBvbmVzLiBJIGNvdWxkIGNvbnNpZGVyIHRoZSBzeXNjYWxscyB0aGF0ICp0cmlnZ2VyKiB0aGlzIHBhdGgsIGxpa2UgYGlvX3VyaW5nX2VudGVyYC4gQnV0IGBpb191cmluZ19lbnRlcmAgaXMgdG9vIGdlbmVyaWMgYW5kIEkgYW0gdHJ5aW5nIHRvIG5hcnJvdyB0aGUgc2NvcGUuIFNvLCBJIHdpbGwgbG9vayBmb3Igb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGB1YmxrX2Rydi5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGJldHRlciBjYW5kaWRhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDIzNCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODo1OC4wNDcxNTU4NjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzczNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHVibGtfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMTEzLS8qIHVibGsgYmF0Y2ggZmV0Y2ggdXJpbmdfY21kICovXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjExNDpzdHJ1Y3QgdWJsa19iYXRjaF9mZXRjaF9jbWQge1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMTUtXFx0c3RydWN0IGxpc3RfaGVhZCBub2RlO1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTExOS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MTIwOnN0cnVjdCB1YmxrX3VyaW5nX2NtZF9wZHUge1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMjEtXFx0LypcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xNDUtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjE0NjpzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhIHtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMTQ3LVxcdHN0cnVjdCB1YmxrX2RldmljZSAqdWI7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjAzLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoyMDQ6dW5pb24gdWJsa19pb19idWYge1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMDUtXFx0X191NjRcXHRhZGRyO1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTIwOC1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MjA5OnN0cnVjdCB1YmxrX2lvIHtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjEwLVxcdHVuaW9uIHVibGtfaW9fYnVmIGJ1ZjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNDEtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjI0MjpzdHJ1Y3QgdWJsa19xdWV1ZSB7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI0My1cXHR1MTYgcV9pZDtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMDQtLyogTWFwbGUgdHJlZSB2YWx1ZTogbWFwcyBhIFBGTiByYW5nZSB0byBidWZmZXIgbG9jYXRpb24gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzA1OnN0cnVjdCB1YmxrX2J1Zl9yYW5nZSB7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMwNi1cXHR1bnNpZ25lZCBzaG9ydCBidWZfaW5kZXg7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzEwLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMTE6c3RydWN0IHVibGtfZGV2aWNlIHtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzEyLVxcdHN0cnVjdCBnZW5kaXNrXFx0XFx0KnViX2Rpc2s7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzUxLS8qIGhlYWRlciBvZiB1YmxrX3BhcmFtcyAqL1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozNTI6c3RydWN0IHVibGtfcGFyYW1zX2hlYWRlciB7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM1My1cXHRfX3UzMlxcdGxlbjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01MDY9c3RhdGljIHZvaWQgdWJsa19pbml0X2lvZChzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUzMi1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTMzOnN0cnVjdCB1YmxrX3pvbmVkX3JlcG9ydF9kZXNjIHtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTM0LVxcdF9fdTY0IHNlY3RvcjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zNTcxPXVibGtfYmF0Y2hfYXV0b19idWZfcmVnKGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvICp1YyxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNTg3LSNkZWZpbmUgVUJMS19DTURfQkFUQ0hfVE1QX0JVRl9TWiAgKDQ4ICogMTApXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM1ODg6c3RydWN0IHVibGtfYmF0Y2hfaW9faXRlciB7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM1ODktXFx0dm9pZCBfX3VzZXIgKnVhZGRyO1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU1MDE9c3RhdGljIHZvaWQgdWJsa191bnBpbl9yYW5nZV9wYWdlcyh1bnNpZ25lZCBsb25nIGJhc2VfcGZuLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1MjgtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1Mjk6c3RydWN0IHVibGtfdW5waW5fcmFuZ2Uge1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTMwLVxcdHVuc2lnbmVkIGxvbmcgYmFzZV9wZm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM4OjU4LjA5MzkzMzUxNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjkzMTkwOTIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIHVibGsgTW9kdWxlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyByaWdodCBub3cgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgY29yZSBmdW5jdGlvbnMgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcHMgd2l0aGluIHRoZSBgdWJsa2AgbW9kdWxlLiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBtYXAgb2Ygd2hhdCdzIGdvaW5nIG9uIGhlcmUuIEZpcnN0LCBJIGhhdmUgdGhlc2Uga2V5IGZ1bmN0aW9ucyBJJ20gdHJhY2tpbmc6IGB1YmxrX2N0cmxfdXJpbmdfY21kYCwgYHVibGtfY3RybF91bnJlZ19idWZgLCBgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCwgYW5kIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuXG5cbkFoYSwgaG9sZCBvbi4gSSBzZWUgYHVibGtfY3RybF91cmluZ19jbWRgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpbml0aWFsbHkgbWFkZSBtZSBwYXVzZS4gQnV0IHRoZW4gSSBub3RpY2VkIGl0J3MgY29ycmVjdGx5IGFzc2lnbmVkIHRvIGB1YmxrX2N0bF9mb3BzLnVyaW5nX2NtZGAuIFllcywgdGhhdOKAmXMgcGVyZmVjdGx5IGxlZ2l0aW1hdGUsIHRoZSBzdGF0aWMgc2NvcGUgZG9lc24ndCBjYXVzZSBhbnkgY29uZmxpY3RzIGhlcmUsIHRoZSBmdW5jdGlvbiBpcyBzdGlsbCBhY2Nlc3NpYmxlIGFzIGV4cGVjdGVkIHdpdGhpbiBpdHMgaW50ZW5kZWQgc2NvcGUuIE9rYXksIHRoYXQgY2hlY2tzIG91dC4gTm8gaW1tZWRpYXRlIHJlZCBmbGFncyB0aGVyZS5cblxuTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBiZWNhdXNlIEkgYWx3YXlzIGRvdWJsZS1jaGVjayB0aGVzZSB0aGluZ3MsIEkgd2FudCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgY29udHJvbHMgdGhpcyBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyBgQkxLX0RFVl9VQkxLYCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGVsc2UgdGhhdCBtaWdodCBiZSByZWxldmFudC4gV2hlcmUgaXMgaXQgZGVmaW5lZD8gUmlnaHQsIGl0J3MgZGVmaW5lZCBpbiB0aGUgY29kZSBpbiBgZHJpdmVycy9ibG9jay91YmxrX2Rydi5jYC4gT2theSwgbGV0IG1lIGdvIGNoZWNrIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gdGhhdCBgQkxLX0RFVl9VQkxLYCBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBvdmVybG9va2VkIGFueSBvdGhlciBkZXBlbmRlbnQgb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwMzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzk6MTEuMDI1ODQ2NjQ3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTE4ODg0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9VQkxLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyNy1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzI4OmNvbmZpZyBCTEtfREVWX1VCTEtcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI5LVxcdHRyaXN0YXRlIFxcXCJVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozOToxMS4wNzEwNDA1MjNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQ3MTUyNzIzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IHF1ZXN0aW9uOlxuXG4qKkRlY29uc3RydWN0aW5nIERlcGVuZGVuY2llcyBvZiBCTEtcXF9ERVZcXF9VQkxLKipcblxuT2theSwgc28gYEJMS19ERVZfVUJMS2AuLi4gcmlnaHQsIHRoYXQncyB0aGUgdXNlci1zcGFjZSBibG9jayBkZXZpY2UgZHJpdmVyLiBUaGUgcXVlc3Rpb24gaXMsIHdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgZnVuY3Rpb25hbGl0aWVzIGlzIGl0IGRlcGVuZGVudCBvbj8gTGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIHB1cnBvc2Ugb2YgYEJMS19ERVZfVUJMS2AuIEl0IHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciB1c2VyLXNwYWNlIHByb2dyYW1zIHRvIGVtdWxhdGUgYmxvY2sgZGV2aWNlcy4gU28sIGluaGVyZW50bHksIGl0IHJlbGllcyBvbiB0aGUga2VybmVsJ3MgYmxvY2sgbGF5ZXIg4oCTIHRoYXQncyBhIGdpdmVuLiBJJ20gdGhpbmtpbmcsIHNwZWNpZmljYWxseSwgdGhlIGNvcmUgYmxvY2sgSS9PIGluZnJhc3RydWN0dXJlLCBxdWV1ZSBtYW5hZ2VtZW50LCByZXF1ZXN0IGhhbmRsaW5nLCBhbmQgdGhlIGdlbmVyaWMgYmxvY2sgZGV2aWNlIGludGVyZmFjZXMgKGBnZW5kaXNrYCwgYHJlcXVlc3RfcXVldWVgLCBldGMuKS4gV2l0aG91dCB0aG9zZSwgdGhlcmUncyBubyB3YXkgdG8gaG9vayBhIHVzZXItc3BhY2UgZHJpdmVyIGludG8gdGhlIGJsb2NrIGxheWVyLlxuXG5OZXh0LCBpdCBoYXMgdG8gaW50ZXJmYWNlIHdpdGggdGhlIHVzZXIgc3BhY2Ugc29tZWhvdy4gVGhpcyBwcm9iYWJseSBpbnZvbHZlcyB0aGluZ3MgbGlrZSBjaGFyYWN0ZXIgZGV2aWNlIG5vZGVzIChgL2Rldi91YmxrWGApIGFuZCBzeXN0ZW0gY2FsbHMgZm9yIHBhc3NpbmcgZGF0YSBhbmQgY29udHJvbCBtZXNzYWdlcyBiYWNrIGFuZCBmb3J0aC4gVGhhdCBzdWdnZXN0cyBkZXBlbmRlbmNpZXMgb24gY2hhcmFjdGVyIGRldmljZSBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmUgYW5kIHBvc3NpYmx5IGV2ZW4gc29tZSBzb3J0IG9mIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBtZWNoYW5pc21zLCB0aG91Z2ggbWF5YmUganVzdCBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMuXG5cbk1vcmUgYnJvYWRseSwgSSBiZXQgaXQgcmVsaWVzIG9uIHRoZSBrZXJuZWwncyBtZW1vcnkgbWFuYWdlbWVudCwgYmVjYXVzZSBpdCdzIG1vdmluZyBkYXRhIGJldHdlZW4gdXNlciBzcGFjZSBhbmQga2VybmVsIHNwYWNlLiBQb2ludGVycywgbWVtb3J5IGFsbG9jYXRpb24sIGFuZCBjb3B5IG9wZXJhdGlvbnMgd2lsbCBiZSBjcml0aWNhbC4gSXQgcHJvYmFibHkgaW50ZXJhY3RzIHdpdGggc29tZSBraW5kIG9mIGxvY2tpbmcgcHJpbWl0aXZlcyBhcyB3ZWxsLCBiZWNhdXNlIG11bHRpLXRocmVhZGVkIHVzZXItc3BhY2UgcHJvZ3JhbXMgY291bGQgYmUgYWNjZXNzaW5nIHRoZSBkZXZpY2UgaW4gYSBjb25jdXJyZW50IG1hbm5lci4gVGhpcyBsaWtlbHkgZW50YWlscyBzcGlubG9ja3Mgb3IgbXV0ZXhlcyB3aXRoaW4gdGhlIGtlcm5lbC5cblxuRmluYWxseSwgd2hpbGUgaXQncyBwcm9iYWJseSBub3QgYSBkaXJlY3QgZGVwZW5kZW5jeSwgYEJMS19ERVZfVUJMS2AncyBwZXJmb3JtYW5jZSBhbmQgZnVuY3Rpb25hbGl0eSBvZnRlbiByZWx5IG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIChldmVuIGlmIHZpcnR1YWxpemVkKS4gSWYgaXQncyB1c2VkIHdpdGggdGhpbmdzIGxpa2UgbmV0d29yayBibG9jayBkZXZpY2VzLCB0aGVuIG5ldHdvcmsgcHJvdG9jb2xzIG9yIGRyaXZlcnMgY291bGQgY29tZSBpbnRvIHBsYXkgKGluZGlyZWN0bHksIG9mIGNvdXJzZSkuXG5cblNvLCBpbiBzdW1tYXJ5OiBJJ20gdGhpbmtpbmcgaXQncyBhIG11bHRpLWxheWVyZWQgZGVwZW5kZW5jeS4gQ29yZSBibG9jayBsYXllciAocXVldWUgbWFuYWdlbWVudCwgZ2VuZXJpYyBibG9jayBkZXZpY2UgaW50ZXJmYWNlcyksIGNoYXJhY3RlciBkZXZpY2UgZnJhbWV3b3JrLCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGFyZSBkZWZpbml0ZWx5IG9uIHRoZSBsaXN0LiBQb3NzaWJseSBhbHNvIHNvbWUgbmV0d29ya2luZyBjb21wb25lbnRzLCBkZXBlbmRpbmcgb24gaG93IGBCTEtfREVWX1VCTEtgIGlzIGltcGxlbWVudGVkIGFuZCB1c2VkLiBJIHdvdWxkIHByb2JhYmx5IGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRvIGNvbmZpcm0gdGhlIGNvbmNyZXRlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NjQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozOToyMC41NDI1NzA3MTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDQ2ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZz02PW1lbnVjb25maWcgQkxLX0RFVlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03LVxcdGJvb2wgXFxcIkJsb2NrIGRldmljZXNcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTIyPWNvbmZpZyBCTEtfREVWX0ZEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJOb3JtYWwgZmxvcHB5IGRpc2sgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBBUkNIX01BWV9IQVZFX1BDX0ZEQ1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9Mzc9Y29uZmlnIEJMS19ERVZfRkRfUkFXQ01EXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTM4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHJhdyBmbG9wcHkgZGlzayBjb21tYW5kcyAoREVQUkVDQVRFRClcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjM5OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9GRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy00MC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9NTM9Y29uZmlnIEFNSUdBX0ZMT1BQWVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiQW1pZ2EgZmxvcHB5IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjU1OlxcdGRlcGVuZHMgb24gQU1JR0FcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNTYtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTU3PWNvbmZpZyBBVEFSSV9GTE9QUFlcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNTgtXFx0dHJpc3RhdGUgXFxcIkF0YXJpIGZsb3BweSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo1OTpcXHRkZXBlbmRzIG9uIEFUQVJJXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTYwLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02MT1jb25maWcgTUFDX0ZMT1BQWVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgUG93ZXJNYWMgZmxvcHB5XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo2MzpcXHRkZXBlbmRzIG9uIFBQQ19QTUFDIFxcdTAwMjZcXHUwMDI2ICFQUENfUE1BQzY0XFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTY0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02OD1jb25maWcgQkxLX0RFVl9TV0lNXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTY5LVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBTV0lNIE1hY2ludG9zaCBmbG9wcHlcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjcwOlxcdGRlcGVuZHMgb24gTTY4SyBcXHUwMDI2XFx1MDAyNiBNQUMgXFx1MDAyNlxcdTAwMjYgIUhJR0hNRU1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNzEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTc1PWNvbmZpZyBBTUlHQV9aMlJBTVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03Ni1cXHR0cmlzdGF0ZSBcXFwiQW1pZ2EgWm9ycm8gSUkgcmFtZGlzayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo3NzpcXHRkZXBlbmRzIG9uIFpPUlJPXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTc4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz04Nj1jb25maWcgTjY0Q0FSVFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy04Ny1cXHRib29sIFxcXCJONjQgY2FydCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo4ODpcXHRkZXBlbmRzIG9uIE1BQ0hfTklOVEVORE82NFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy04OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9OTU9Y29uZmlnIEdEUk9NXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTk2LVxcdHRyaXN0YXRlIFxcXCJTRUdBIERyZWFtY2FzdCBHRC1ST00gZHJpdmVcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjk3OlxcdGRlcGVuZHMgb24gU0hfRFJFQU1DQVNUXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTk4LVxcdHNlbGVjdCBDRFJPTVxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTExMT1jb25maWcgQkxLX0RFVl9VQkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTEyLVxcdGJvb2wgXFxcIlZpcnR1YWwgYmxvY2sgZGV2aWNlXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxMTM6XFx0ZGVwZW5kcyBvbiBVTUxcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTE0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xMjA9Y29uZmlnIEJMS19ERVZfVUJEX1NZTkNcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTIxLVxcdGJvb2wgXFxcIkFsd2F5cyBkbyBzeW5jaHJvbm91cyBkaXNrIElPIGZvciBVQkRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjEyMjpcXHRkZXBlbmRzIG9uIEJMS19ERVZfVUJEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTEyMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MTc5PWNvbmZpZyBCTEtfREVWX0xPT1BfTUlOX0NPVU5UXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4MC1cXHRpbnQgXFxcIk51bWJlciBvZiBsb29wIGRldmljZXMgdG8gcHJlLWNyZWF0ZSBhdCBpbml0IHRpbWVcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE4MTpcXHRkZXBlbmRzIG9uIEJMS19ERVZfTE9PUFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xODItXFx0ZGVmYXVsdCA4XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MTk2PWNvbmZpZyBCTEtfREVWX05CRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTctXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5ODpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI0Mz1jb25maWcgQkxLX0RFVl9SQU1fQ09VTlRcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNDUtXFx0ZGVmYXVsdCBcXFwiMTZcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjI0NjpcXHRkZXBlbmRzIG9uIEJMS19ERVZfUkFNXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI0Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MjUyPWNvbmZpZyBCTEtfREVWX1JBTV9TSVpFXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1My1cXHRpbnQgXFxcIkRlZmF1bHQgUkFNIGRpc2sgc2l6ZSAoa2J5dGVzKVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MjU0OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9SQU1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjU1LVxcdGRlZmF1bHQgXFxcIjQwOTZcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MjYwPWNvbmZpZyBBVEFfT1ZFUl9FVEhcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYxLVxcdHRyaXN0YXRlIFxcXCJBVEEgb3ZlciBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNjI6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yNjc9Y29uZmlnIFNVTlZEQ1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNjgtXFx0dHJpc3RhdGUgXFxcIlN1biBWaXJ0dWFsIERpc2sgQ2xpZW50IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjI2OTpcXHRkZXBlbmRzIG9uIFNVTl9MRE9NU1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI3Nj1jb25maWcgWEVOX0JMS0RFVl9GUk9OVEVORFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNzctXFx0dHJpc3RhdGUgXFxcIlhlbiB2aXJ0dWFsIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNzg6XFx0ZGVwZW5kcyBvbiBYRU5cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjc5LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI4Nj1jb25maWcgWEVOX0JMS0RFVl9CQUNLRU5EXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI4Ny1cXHR0cmlzdGF0ZSBcXFwiWGVuIGJsb2NrLWRldmljZSBiYWNrZW5kIGRyaXZlclxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6Mjg4OlxcdGRlcGVuZHMgb24gWEVOX0JBQ0tFTkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjg5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMDc9Y29uZmlnIFZJUlRJT19CTEtcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzA4LVxcdHRyaXN0YXRlIFxcXCJWaXJ0aW8gYmxvY2sgZHJpdmVyXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozMDk6XFx0ZGVwZW5kcyBvbiBWSVJUSU9cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzEwLVxcdHNlbGVjdCBTR19QT09MXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMTYtXFx0dHJpc3RhdGUgXFxcIlJhZG9zIGJsb2NrIGRldmljZSAoUkJEKVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzE3OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBCTE9DS1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMTgtXFx0c2VsZWN0IENFUEhfTElCXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MzM3PWNvbmZpZyBCTEtERVZfVUJMS19MRUdBQ1lfT1BDT0RFU1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMzgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBsZWdhY3kgY29tbWFuZCBvcGNvZGVcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMzOTpcXHRkZXBlbmRzIG9uIEJMS19ERVZfVUJMS1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNDAtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MzU2PWNvbmZpZyBCTEtfREVWX1pPTkVEX0xPT1BcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzU3LVxcdHRyaXN0YXRlIFxcXCJab25lZCBsb29wYmFjayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzU4OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9aT05FRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNTktXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozOToyMC41ODk2MjMxOTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM2NDg3NTU0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBCTEtfREVWX1VCTEsgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBCTEtfREVWX1VCTEtgLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uIHRoZSBzdXJmYWNlIOKAkyBpdCBkb2Vzbid0IGV4cGxpY2l0bHkgYGRlcGVuZCBvbmAgYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgYmFzZSByZXF1aXJlbWVudHMgd2UnZCBleHBlY3Q6IGBCTEtfREVWYCBhbmQgYEJMT0NLYC4gVGhhdCdzIGEgY29tbW9uIHBhdHRlcm4sIGFuZCB1c3VhbGx5IGEgc2lnbiBvZiBhIHdlbGwtZGVmaW5lZCwgbW9kdWxhciBjb21wb25lbnQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBiZWZvcmUgSSBtb3ZlIG9uLCBJIHNob3VsZCBhbHdheXMgYmUgbWV0aWN1bG91cyBhYm91dCB0aGlzIHN0dWZmLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgQkxLX0RFVl9VQkxLYCBkZWZpbml0aW9uIGFnYWluLiBJdCdzIGVhc3kgdG8gbWlzcyBhIHN1YnRsZXR5IG9yIGFuIGluZGlyZWN0IGRlcGVuZGVuY3kgaW4gdGhlc2UgY29uZmlndXJhdGlvbnMsIGFuZCBhc3N1bXB0aW9ucyBjYW4gYmUgZGFuZ2Vyb3VzLiBOZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGVyZSdzIG5vIGhpZGRlbiBjb25uZWN0aW9uIEknbSBtaXNzaW5nLiBMZXQncyBtYWtlIHN1cmUgSSBkaWRuJ3QgbWlzcyBzb21ldGhpbmcuIE9rYXksIGxldCBtZSBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTA2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM5OjI2Ljk1NDUwMTg3MloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2OTIyODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfVUJMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTMxNT1jb25maWcgQkxLX0RFVl9SQkRcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjctXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMyODpjb25maWcgQkxLX0RFVl9VQkxLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyOS1cXHR0cmlzdGF0ZSBcXFwiVXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzk6MjcuMDAxMTk5MzQ3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MTUyOTE1NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgbGluZXMgYXJvdW5kIGBjb25maWcgQkxLX0RFVl9VQkxLYCwgZGlzdGlsbGVkIHRocm91Z2ggYW4gZXhwZXJ0IGxlbnM6XG5cbioqRGl2aW5nIGludG8gdGhlIHVibGsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNwZWNpZmljYWxseSBhcm91bmQgYEJMS19ERVZfVUJMS2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoaXMgcGFydGljdWxhciBzZXR0aW5nIGJlY2F1c2UgaXQncyB0aGUgVXNlci1TcGFjZSBCbG9jayBMYXllciAoVUJMSyksIGEgcHJldHR5IGludGVyZXN0aW5nIGludGVyZmFjZS4gSSdtIGltbWVkaWF0ZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIgYmxvY2sgZGV2aWNlIHN1YnN5c3RlbS4gSSdtIGxpa2VseSB3YW50aW5nIHRvIGtub3cgaXRzIGRlcGVuZGVuY3kgb24gb3RoZXIgYmxvY2sgZGV2aWNlIGNvbXBvbmVudHMsIHN1Y2ggYXMgdGhlIGdlbmVyaWMgYmxvY2sgbGF5ZXIgYW5kIGFueSBzcGVjaWZpYyBJL08gc2NoZWR1bGVyIHNldHVwcy4gQXJlIHRoZXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgSSBuZWVkIHRvIGVuc3VyZSBhcmUgc2V0IGZvciB1YmxrIHRvIGZ1bmN0aW9uIGFzIGludGVuZGVkPyBJJ20gY2hlY2tpbmcgaWYgdGhpcyBpcyBqdXN0IHRoZSAqZW5hYmxlKiBmbGFnLCBvciBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgb3B0aW9ucyBsaWtlIG51bWJlciBvZiBxdWV1ZXMsIGZlYXR1cmVzLCBvciB0aGUgZGVmYXVsdCBzaXplcyBhc3NvY2lhdGVkIHdpdGggdGhlIGludGVyZmFjZS4gSSdsbCBsaWtlbHkgbmVlZCB0byBxdWlja2x5IHJldmlldyB0aGUga2VybmVsIGRvY3VtZW50YXRpb24gb3IgY29tbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3B0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBmb3IgZGV2aWNlIG1hbmFnZW1lbnQgYW5kIGhvdyBpdCBpbXBhY3RzIHN5c3RlbSByZXNvdXJjZSB1dGlsaXphdGlvbi4gSSdtIGFsc28gYW50aWNpcGF0aW5nIGFueSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBhcm91bmQgYWxsb3dpbmcgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgdG8gZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCBibG9jayBkZXZpY2VzLCBhbmQgdGh1cyBhbnkgYXNzb2NpYXRlZCBrZXJuZWwgaGFyZGVuaW5nIG9wdGlvbnMgdGhhdCBJIHNob3VsZCBiZSBsb29raW5nIGZvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0MzcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozOTo1My4xNTQxMTY5NzFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMyNTpcXHRcXG4gMzI2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMzI3OlxcdFxcbiAzMjg6XFx0Y29uZmlnIEJMS19ERVZfVUJMS1xcbiAzMjk6XFx0XFx0dHJpc3RhdGUgXFxcIlVzZXJzcGFjZSBibG9jayBkcml2ZXIgKEV4cGVyaW1lbnRhbClcXFwiXFxuIDMzMDpcXHRcXHRzZWxlY3QgSU9fVVJJTkdcXG4gMzMxOlxcdFxcdGhlbHBcXG4gMzMyOlxcdFxcdCAgaW9fdXJpbmcgYmFzZWQgdXNlcnNwYWNlIGJsb2NrIGRyaXZlci4gVG9nZXRoZXIgd2l0aCB1YmxrIHNlcnZlciwgdWJsa1xcbiAzMzM6XFx0XFx0ICBoYXMgYmVlbiB3b3JraW5nIHdlbGwsIGJ1dCBpbnRlcmZhY2Ugd2l0aCB1c2Vyc3BhY2Ugb3IgY29tbWFuZCBkYXRhXFxuIDMzNDpcXHRcXHQgIGRlZmluaXRpb24gaXNuJ3QgZmluYWxpemVkIHlldCwgYW5kIG1pZ2h0IGNoYW5nZSBhY2NvcmRpbmcgdG8gZnV0dXJlXFxuIDMzNTpcXHRcXHQgIHJlcXVpcmVtZW50LCBzbyBtYXJrIGlzIGFzIGV4cGVyaW1lbnRhbCBub3cuXFxuIDMzNjpcXHRcXG4gMzM3OlxcdGNvbmZpZyBCTEtERVZfVUJMS19MRUdBQ1lfT1BDT0RFU1xcbiAzMzg6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBsZWdhY3kgY29tbWFuZCBvcGNvZGVcXFwiXFxuIDMzOTpcXHRcXHRkZXBlbmRzIG9uIEJMS19ERVZfVUJMS1xcbiAzNDA6XFx0XFx0ZGVmYXVsdCB5XFxuIDM0MTpcXHRcXHRoZWxwXFxuIDM0MjpcXHRcXHQgIHVibGsgZHJpdmVyIHN0YXJ0ZWQgdG8gdGFrZSBwbGFpbiBjb21tYW5kIGVuY29kaW5nLCB3aGljaCB0dXJucyBvdXRcXG4gMzQzOlxcdFxcdCAgb25lIGJhZCB3YXkuIFRoZSB0cmFkaXRpb25hbCBpb2N0bCBjb21tYW5kIG9wY29kZSBlbmNvZGVzIG1vcmVcXG4gMzQ0OlxcdFxcdCAgaW5mbyBhbmQgYmFzaWNhbGx5IGRlZmluZXMgZWFjaCBjb2RlIHVuaXF1ZWx5LCBzbyBvcGNvZGUgY29uZmxpY3RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzk6NTMuMTU0MTkwNTgxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMTk0MzI4Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBVQkxLIFNobWVtIFJlbW92YWwgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBkZXBlbmRlbmN5IHN0YW5kcG9pbnQsIGBCTEtfREVWX1VCTEtgIHNlZW1zIHRvIGJlIHRoZSBrZXksIGFuZCBpdCBkaXJlY3RseSBzZWxlY3RzIGBJT19VUklOR2AuIFNpbmNlIHRoZXJlIGFyZSBubyBvdGhlciBvYnZpb3VzIGRlcGVuZGVuY2llcyBiZXlvbmQgYEJMT0NLYCwgYEJMS19ERVZfVUJMS2Agc2hvdWxkIHN1ZmZpY2UgZm9yIHRlc3RpbmcgdGhpcyBwYXRjaC5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQncyBjbGVhciB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBnb2FsIGlzIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGluc2lkZSBhIHNwaW5sb2NrLCB3aGljaCBpcyBnZW5lcmFsbHkgYSBnb29kIHByYWN0aWNlIGZvciBwZXJmb3JtYW5jZSBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIGRlYWRsb2Nrcy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AsIGEgZnVuY3Rpb24gcmVhY2hlZCB0aHJvdWdoIHRoZXNlIHBhdGhzOiBgdWJsa19jdHJsX3VyaW5nX2NtZGAgLVx1MDAzZSBgdWJsa19jdHJsX3VucmVnX2J1ZmAgLVx1MDAzZSBgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCAtXHUwMDNlIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AsIGFzIHdlbGwgYXMgYHVibGtfYnVmX2NsZWFudXBgIC1cdTAwM2UgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgLVx1MDAzZSBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLiBUaGUgc2Vjb25kIHBhdGggaW52b2x2ZXMgYHVibGtfYnVmX2NsZWFudXBgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgdWJsa19jZGV2X3JlbGAsIHRoZSByZWxlYXNlIGZ1bmN0aW9uIGZvciB0aGUgY2hhcmFjdGVyIGRldmljZS5cblxuQmFzZWQgb24gdGhpcywgSSdtIG1hcmtpbmcgaXQgZm9yIGZ1enppbmcgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYHVibGtfY3RybF91cmluZ19jbWRgLCBgdWJsa19jdHJsX3VucmVnX2J1ZmAsIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCBhbmQgYHVibGtfYnVmX2NsZWFudXBgLiBJIHdpbGwgZW5hYmxlIHRoZSBgQkxLX0RFVl9VQkxLYCBjb25maWd1cmF0aW9uIG9wdGlvbi5cblxuSSdtIGRvdWJsZS1jaGVja2luZyB0aGUgaW9fdXJpbmcgY29tbWFuZCBoYW5kbGVycy4gSXQgbG9va3MgbGlrZSBgdWJsa19jdHJsX3VyaW5nX2NtZGAgaXMgdGhlIHByaW1hcnkgaGFuZGxlciB2aWEgYHVibGtfY3RsX2ZvcHMudXJpbmdfY21kID0gdWJsa19jdHJsX3VyaW5nX2NtZGAuIFRoZXJlJ3MgYWxzbyBgdWJsa19jaF91cmluZ19jbWRgIGZvciB0aGUgY2hhbm5lbCBkZXZpY2UsIGJ1dCB0aGUgcGF0Y2ggaXMgdGFyZ2V0aW5nIHRoZSBmb3JtZXIuIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgaXMgY2FsbGVkIGJ5IGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBib3RoIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCAod2hpY2ggY29tZXMgZnJvbSBgdWJsa19jdHJsX3VyaW5nX2NtZGApIGFuZCBgdWJsa19idWZfY2xlYW51cGAgKGZyb20gdGhlIGNoYXJhY3RlciBkZXZpY2UgcmVsZWFzZSkuXG5cbk9rYXksIGV2ZXJ5dGhpbmcgc2VlbXMgY29uc2lzdGVudCBhbmQgd2VsbC11bmRlcnN0b29kLiBJJ20gcmVhZHkgdG8gcHJvY2VlZCB3aXRoIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDcxLCJPdXRwdXRUb2tlbnMiOjE5NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjQwOjA1LjM0ODUyMTY5OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjQ1NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX1VCTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1YmxrX2N0cmxfdXJpbmdfY21kXCIsXG4gICAgXCJ1YmxrX2N0cmxfdW5yZWdfYnVmXCIsXG4gICAgXCJ1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNcIixcbiAgICBcIl9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzXCIsXG4gICAgXCJ1YmxrX2J1Zl9jbGVhbnVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYW4geGFycmF5IHdpdGggYSBmaXhlZC1zaXplIGFycmF5IGluIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgdG8gYXZvaWQgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiB3aXRoaW4gYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB1YmxrIGRyaXZlci4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgaW9fdXJpbmcgY29tbWFuZHMgKGB1YmxrX2N0cmxfdXJpbmdfY21kYCAtXFx1MDAzZSBgdWJsa19jdHJsX3VucmVnX2J1ZmApIGFuZCBkZXZpY2UgY2xlYW51cCAoYHVibGtfY2Rldl9yZWxgIC1cXHUwMDNlIGB1YmxrX2J1Zl9jbGVhbnVwYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9VQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWJsa19jdHJsX3VyaW5nX2NtZFwiLFxuICAgIFwidWJsa19jdHJsX3VucmVnX2J1ZlwiLFxuICAgIFwidWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzXCIsXG4gICAgXCJfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc1wiLFxuICAgIFwidWJsa19idWZfY2xlYW51cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIHhhcnJheSB3aXRoIGEgZml4ZWQtc2l6ZSBhcnJheSBpbiBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIHRvIGF2b2lkIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdWJsayBkcml2ZXIuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGlvX3VyaW5nIGNvbW1hbmRzIChgdWJsa19jdHJsX3VyaW5nX2NtZGAgLVxcdTAwM2UgYHVibGtfY3RybF91bnJlZ19idWZgKSBhbmQgZGV2aWNlIGNsZWFudXAgKGB1YmxrX2NkZXZfcmVsYCAtXFx1MDAzZSBgdWJsa19idWZfY2xlYW51cGApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbbnsb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 13:11:41 +0000 UTC FinishedAt: 2026-08-04 13:40:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_UBLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_UBLK" ], "series_id": "fc7f2a32-2f94-4dcc-adbf-abbb3098d25a" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ublk_ctrl_uring_cmd", "ublk_ctrl_unreg_buf", "ublk_shmem_remove_ranges", "__ublk_shmem_remove_ranges", "ublk_buf_cleanup" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfY3RybF91cmluZ19jbWQmIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3VucmVnX2J1ZiYjMzQ7LAogICAgJiMzNDt1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7X191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7dWJsa19idWZfY2xlYW51cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhbiB4YXJyYXkgd2l0aCBhIGZpeGVkLXNpemUgYXJyYXkgaW4gYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCB0byBhdm9pZCBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHVibGsgZHJpdmVyLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyAoYHVibGtfY3RybF91cmluZ19jbWRgIC1cdTAwM2UgYHVibGtfY3RybF91bnJlZ19idWZgKSBhbmQgZGV2aWNlIGNsZWFudXAgKGB1YmxrX2NkZXZfcmVsYCAtXHUwMDNlIGB1YmxrX2J1Zl9jbGVhbnVwYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTM6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiMjQ1YmVkYTk2MzUxYzliNDMwNTJhODlmMTY2NTA2MGNiMjhjNjhmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMzozNzo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbmluZGV4IDY2ZjEwYTQ5NTA5ZjIuLjAwYTY2MTE0NjI0M2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xuQEAgLTU1MTksMzkgJiM0Mzs1NTE5LDM2IEBAIHN0YXRpYyB2b2lkIHVibGtfdW5waW5fcmFuZ2VfcGFnZXModW5zaWduZWQgbG9uZyBiYXNlX3BmbixcbiBcbiAvKlxuICAqIElubmVyIGxvb3A6IGVyYXNlIHVwIHRvIFVCTEtfUkVNT1ZFX0JBVENIIG1hdGNoaW5nIHJhbmdlcyB1bmRlclxuLSAqIG1hc19sb2NrLCBjb2xsZWN0aW5nIHRoZW0gaW50byBhbiB4YXJyYXkuIFRoZW4gZHJvcCB0aGUgbG9jayBhbmRcbi0gKiB1bnBpbiBwYWdlcyAmIzQzOyBmcmVlIHJhbmdlcyBvdXRzaWRlIHNwaW5sb2NrIGNvbnRleHQuXG4mIzQzOyAqIG1hc19sb2NrLCBjb2xsZWN0aW5nIHRoZSBwYWdlIHJhbmdlcyBpbiBhIGZpeGVkLXNpemUgYXJyYXkuIFRoZW5cbiYjNDM7ICogZHJvcCB0aGUgbG9jayBhbmQgdW5waW4gcGFnZXMgJiM0MzsgZnJlZSByYW5nZXMgb3V0c2lkZSBzcGlubG9jayBjb250ZXh0LlxuICAqXG4gICogUmV0dXJucyB0cnVlIGlmIHRoZSB0cmVlIHdhbGsgY29tcGxldGVkLCBmYWxzZSBpZiBtb3JlIHJhbmdlcyByZW1haW4uXG4tICogWGFycmF5IGtleSBpcyB0aGUgYmFzZSBQRk4sIHZhbHVlIGVuY29kZXMgbnJfcGFnZXMgdmlhIHhhX21rX3ZhbHVlKCkuXG4gICovXG4gI2RlZmluZSBVQkxLX1JFTU9WRV9CQVRDSFx0NjRcbiBcbiYjNDM7c3RydWN0IHVibGtfdW5waW5fcmFuZ2Uge1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgYmFzZV9wZm47XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBucl9wYWdlcztcbiYjNDM7fTtcbiYjNDM7XG4gc3RhdGljIGJvb2wgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbiBcdFx0XHRcdFx0aW50IGJ1Zl9pbmRleCwgaW50ICpyZXQpXG4ge1xuIFx0TUFfU1RBVEUobWFzLCBcdTAwMjZ1Yi1cdTAwM2VidWZfdHJlZSwgMCwgVUxPTkdfTUFYKTtcbiBcdHN0cnVjdCB1YmxrX2J1Zl9yYW5nZSAqcmFuZ2U7XG4tXHRzdHJ1Y3QgeGFycmF5IHRvX3VucGluO1xuLVx0dW5zaWduZWQgbG9uZyBpZHg7XG4mIzQzO1x0c3RydWN0IHVibGtfdW5waW5fcmFuZ2UgdG9fdW5waW5bVUJMS19SRU1PVkVfQkFUQ0hdO1xuIFx0dW5zaWduZWQgaW50IGNvdW50ID0gMDtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgaTtcbiBcdGJvb2wgZG9uZSA9IGZhbHNlO1xuLVx0dm9pZCAqZW50cnk7XG4tXG4tXHR4YV9pbml0KFx1MDAyNnRvX3VucGluKTtcbiBcbiBcdG1hc19sb2NrKFx1MDAyNm1hcyk7XG4gXHRtYXNfZm9yX2VhY2goXHUwMDI2bWFzLCByYW5nZSwgVUxPTkdfTUFYKSB7XG4tXHRcdHVuc2lnbmVkIGxvbmcgbnI7XG4tXG4gXHRcdGlmIChidWZfaW5kZXggXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiByYW5nZS1cdTAwM2VidWZfaW5kZXggIT0gYnVmX2luZGV4KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHQqcmV0ID0gMDtcbi1cdFx0bnIgPSBtYXMubGFzdCAtIG1hcy5pbmRleCAmIzQzOyAxO1xuLVx0XHRpZiAoeGFfZXJyKHhhX3N0b3JlKFx1MDAyNnRvX3VucGluLCBtYXMuaW5kZXgsXG4tXHRcdFx0XHQgICAgeGFfbWtfdmFsdWUobnIpLCBHRlBfQVRPTUlDKSkpXG4tXHRcdFx0Z290byB1bmxvY2s7XG4mIzQzO1x0XHR0b191bnBpbltjb3VudF0uYmFzZV9wZm4gPSBtYXMuaW5kZXg7XG4mIzQzO1x0XHR0b191bnBpbltjb3VudF0ubnJfcGFnZXMgPSBtYXMubGFzdCAtIG1hcy5pbmRleCAmIzQzOyAxO1xuIFx0XHRtYXNfZXJhc2UoXHUwMDI2bWFzKTtcbiBcdFx0a2ZyZWUocmFuZ2UpO1xuIFx0XHRpZiAoJiM0MzsmIzQzO2NvdW50IFx1MDAzZT0gVUJMS19SRU1PVkVfQkFUQ0gpXG5AQCAtNTU2MSw5ICYjNDM7NTU1OCw5IEBAIHN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4gdW5sb2NrOlxuIFx0bWFzX3VubG9jayhcdTAwMjZtYXMpO1xuIFxuLVx0eGFfZm9yX2VhY2goXHUwMDI2dG9fdW5waW4sIGlkeCwgZW50cnkpXG4tXHRcdHVibGtfdW5waW5fcmFuZ2VfcGFnZXMoaWR4LCB4YV90b192YWx1ZShlbnRyeSkpO1xuLVx0eGFfZGVzdHJveShcdTAwMjZ0b191bnBpbik7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgY291bnQ7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0dWJsa191bnBpbl9yYW5nZV9wYWdlcyh0b191bnBpbltpXS5iYXNlX3BmbixcbiYjNDM7XHRcdFx0XHQgICAgICAgdG9fdW5waW5baV0ubnJfcGFnZXMpO1xuIFxuIFx0cmV0dXJuIGRvbmU7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX1VCTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1YmxrX2N0cmxfdXJpbmdfY21kJiMzNDssCiAgICAmIzM0O3VibGtfY3RybF91bnJlZ19idWYmIzM0OywKICAgICYjMzQ7dWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzJiMzNDssCiAgICAmIzM0O19fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzJiMzNDssCiAgICAmIzM0O3VibGtfYnVmX2NsZWFudXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYW4geGFycmF5IHdpdGggYSBmaXhlZC1zaXplIGFycmF5IGluIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgdG8gYXZvaWQgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiB3aXRoaW4gYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB1YmxrIGRyaXZlci4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgaW9fdXJpbmcgY29tbWFuZHMgKGB1YmxrX2N0cmxfdXJpbmdfY21kYCAtXHUwMDNlIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCkgYW5kIGRldmljZSBjbGVhbnVwIChgdWJsa19jZGV2X3JlbGAgLVx1MDAzZSBgdWJsa19idWZfY2xlYW51cGApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjI0NWJlZGE5NjM1MWM5YjQzMDUyYTg5ZjE2NjUwNjBjYjI4YzY4ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMTM6Mzc6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMKaW5kZXggNjZmMTBhNDk1MDlmMi4uMDBhNjYxMTQ2MjQzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay91YmxrX2Rydi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYwpAQCAtNTUxOSwzOSAmIzQzOzU1MTksMzYgQEAgc3RhdGljIHZvaWQgdWJsa191bnBpbl9yYW5nZV9wYWdlcyh1bnNpZ25lZCBsb25nIGJhc2VfcGZuLAogCiAvKgogICogSW5uZXIgbG9vcDogZXJhc2UgdXAgdG8gVUJMS19SRU1PVkVfQkFUQ0ggbWF0Y2hpbmcgcmFuZ2VzIHVuZGVyCi0gKiBtYXNfbG9jaywgY29sbGVjdGluZyB0aGVtIGludG8gYW4geGFycmF5LiBUaGVuIGRyb3AgdGhlIGxvY2sgYW5kCi0gKiB1bnBpbiBwYWdlcyAmIzQzOyBmcmVlIHJhbmdlcyBvdXRzaWRlIHNwaW5sb2NrIGNvbnRleHQuCiYjNDM7ICogbWFzX2xvY2ssIGNvbGxlY3RpbmcgdGhlIHBhZ2UgcmFuZ2VzIGluIGEgZml4ZWQtc2l6ZSBhcnJheS4gVGhlbgomIzQzOyAqIGRyb3AgdGhlIGxvY2sgYW5kIHVucGluIHBhZ2VzICYjNDM7IGZyZWUgcmFuZ2VzIG91dHNpZGUgc3BpbmxvY2sgY29udGV4dC4KICAqCiAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHRyZWUgd2FsayBjb21wbGV0ZWQsIGZhbHNlIGlmIG1vcmUgcmFuZ2VzIHJlbWFpbi4KLSAqIFhhcnJheSBrZXkgaXMgdGhlIGJhc2UgUEZOLCB2YWx1ZSBlbmNvZGVzIG5yX3BhZ2VzIHZpYSB4YV9ta192YWx1ZSgpLgogICovCiAjZGVmaW5lIFVCTEtfUkVNT1ZFX0JBVENICTY0CiAKJiM0MztzdHJ1Y3QgdWJsa191bnBpbl9yYW5nZSB7CiYjNDM7CXVuc2lnbmVkIGxvbmcgYmFzZV9wZm47CiYjNDM7CXVuc2lnbmVkIGxvbmcgbnJfcGFnZXM7CiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsCiAJCQkJCWludCBidWZfaW5kZXgsIGludCAqcmV0KQogewogCU1BX1NUQVRFKG1hcywgJmFtcDt1Yi0mZ3Q7YnVmX3RyZWUsIDAsIFVMT05HX01BWCk7CiAJc3RydWN0IHVibGtfYnVmX3JhbmdlICpyYW5nZTsKLQlzdHJ1Y3QgeGFycmF5IHRvX3VucGluOwotCXVuc2lnbmVkIGxvbmcgaWR4OwomIzQzOwlzdHJ1Y3QgdWJsa191bnBpbl9yYW5nZSB0b191bnBpbltVQkxLX1JFTU9WRV9CQVRDSF07CiAJdW5zaWduZWQgaW50IGNvdW50ID0gMDsKJiM0MzsJdW5zaWduZWQgaW50IGk7CiAJYm9vbCBkb25lID0gZmFsc2U7Ci0Jdm9pZCAqZW50cnk7Ci0KLQl4YV9pbml0KCZhbXA7dG9fdW5waW4pOwogCiAJbWFzX2xvY2soJmFtcDttYXMpOwogCW1hc19mb3JfZWFjaCgmYW1wO21hcywgcmFuZ2UsIFVMT05HX01BWCkgewotCQl1bnNpZ25lZCBsb25nIG5yOwotCiAJCWlmIChidWZfaW5kZXggJmd0Oz0gMCAmYW1wOyZhbXA7IHJhbmdlLSZndDtidWZfaW5kZXggIT0gYnVmX2luZGV4KQogCQkJY29udGludWU7CiAKIAkJKnJldCA9IDA7Ci0JCW5yID0gbWFzLmxhc3QgLSBtYXMuaW5kZXggJiM0MzsgMTsKLQkJaWYgKHhhX2Vycih4YV9zdG9yZSgmYW1wO3RvX3VucGluLCBtYXMuaW5kZXgsCi0JCQkJICAgIHhhX21rX3ZhbHVlKG5yKSwgR0ZQX0FUT01JQykpKQotCQkJZ290byB1bmxvY2s7CiYjNDM7CQl0b191bnBpbltjb3VudF0uYmFzZV9wZm4gPSBtYXMuaW5kZXg7CiYjNDM7CQl0b191bnBpbltjb3VudF0ubnJfcGFnZXMgPSBtYXMubGFzdCAtIG1hcy5pbmRleCAmIzQzOyAxOwogCQltYXNfZXJhc2UoJmFtcDttYXMpOwogCQlrZnJlZShyYW5nZSk7CiAJCWlmICgmIzQzOyYjNDM7Y291bnQgJmd0Oz0gVUJMS19SRU1PVkVfQkFUQ0gpCkBAIC01NTYxLDkgJiM0Mzs1NTU4LDkgQEAgc3RhdGljIGJvb2wgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YiwKIHVubG9jazoKIAltYXNfdW5sb2NrKCZhbXA7bWFzKTsKIAotCXhhX2Zvcl9lYWNoKCZhbXA7dG9fdW5waW4sIGlkeCwgZW50cnkpCi0JCXVibGtfdW5waW5fcmFuZ2VfcGFnZXMoaWR4LCB4YV90b192YWx1ZShlbnRyeSkpOwotCXhhX2Rlc3Ryb3koJmFtcDt0b191bnBpbik7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBjb3VudDsgaSYjNDM7JiM0MzspCiYjNDM7CQl1YmxrX3VucGluX3JhbmdlX3BhZ2VzKHRvX3VucGluW2ldLmJhc2VfcGZuLAomIzQzOwkJCQkgICAgICAgdG9fdW5waW5baV0ubnJfcGFnZXMpOwogCiAJcmV0dXJuIGRvbmU7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB1YmxrX2Rydi5jIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9ibG9jay91YmxrX2Rydi5jYCwgc3BlY2lmaWNhbGx5IGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyB1bnBpbm5pbmcgcmFuZ2VzLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIHJlcGxhY2VkIGFuIGB4YXJyYXlgIHdpdGggYSBmaXhlZC1zaXplIGFycmF5LCBgc3RydWN0IHVibGtfdW5waW5fcmFuZ2UgdG9fdW5waW5bVUJMS19SRU1PVkVfQkFUQ0hdYCwgd2l0aGluIHRoZSBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIG1vdGl2YXRpb246IHRoZXkmIzM5O3JlIGdldHRpbmcgcmlkIG9mIHRoZSBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHVzaW5nIGB4YV9zdG9yZWAgd2l0aCBgR0ZQX0FUT01JQ2AgKmluc2lkZSBhIHNwaW5sb2NrKi4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcGVyZm9ybWFuY2UgYW5kIHJlbGlhYmlsaXR5IGlzc3VlLCBhIHBvdGVudGlhbCBkZWFkbG9jayBzY2VuYXJpbyBpZiBpdCBmYWlscyBvciBiZWNvbWVzIGNvbnRlbmRlZC4gR29vZCBtb3ZlLgoKTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIGZvciBgdWJsa19kcnYuY2AuIFNpbmNlIGl0JiMzOTtzIGEgdXNlcnNwYWNlIGJsb2NrIGRyaXZlciwgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyBjb250cm9sbGVkIGJ5IGBCTEtfREVWX1VCTEtgLCB3aGljaCBpcyB3aGF0IEkmIzM5O2QgZXhwZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZz0zMTU9Y29uZmlnIEJMS19ERVZfUkJEXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyNy1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozMjg6Y29uZmlnIEJMS19ERVZfVUJMS1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyOS1cdHRyaXN0YXRlIFwmIzM0O1VzZXJzcGFjZSBibG9jayBkcml2ZXIgKEV4cGVyaW1lbnRhbClcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MzM3PWNvbmZpZyBCTEtERVZfVUJMS19MRUdBQ1lfT1BDT0RFU1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTMzOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBsZWdhY3kgY29tbWFuZCBvcGNvZGVcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozMzk6XHRkZXBlbmRzIG9uIEJMS19ERVZfVUJMS1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTM0MC1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvYmxvY2svTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSAmIzQzOz0gcm51bGwvXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlLTM5LVxuZHJpdmVycy9ibG9jay9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfQkxLX0RFVl9VQkxLKVx0XHRcdCYjNDM7PSB1YmxrX2Rydi5vXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlLTQxLW9iai0kKENPTkZJR19CTEtfREVWX1pPTkVEX0xPT1ApICYjNDM7PSB6bG9vcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTM6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM3NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AqKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBidWlsdCB3aXRoIGBCTEtfREVWX1VCTEtgLCB3aGljaCBpcyBpbXBvcnRhbnQgY29udGV4dC4gTXkgZm9jdXMgaXMgdGhlIGZ1bmN0aW9uIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgaXQgZXZlbiByZWFjaGFibGU/IElmIHNvLCB3aGF0IGFyZSB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cz8gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIHRyYWNlcyB0byBtYXAgb3V0IHRoZSBjYWxsIHBhdGhzIHRoYXQgbGVhZCB0byBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLiBVbmRlcnN0YW5kaW5nIGl0cyByZWFjaGFiaWxpdHkgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIGl0cyBpbXBhY3QgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIG9yIG1vZGlmaWNhdGlvbnMgdGhhdCBtaWdodCBiZSByZXF1aXJlZCBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTI5PXN0cnVjdCB1YmxrX3VucGluX3JhbmdlIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTUzMy1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTM0OnN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTUzNS1cdFx0XHRcdFx0aW50IGJ1Zl9pbmRleCwgaW50ICpyZXQpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU1NzQ9c3RhdGljIGludCB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgaW50IGJ1Zl9pbmRleClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3Ny1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTc4Olx0d2hpbGUgKCFfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlcyh1YiwgYnVmX2luZGV4LCBcdTAwMjZyZXQpKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzktXHRcdGNvbmRfcmVzY2hlZCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDYWxsIEhpZXJhcmNoeTogYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AqKgoKQWxyaWdodCwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIGZ1bmN0aW9uLiBJIHNlZSBpdCYjMzk7cyBjYWxsZWQgYnkgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgaXRzZWxmLi4uIGEgYml0IG9mIGEgY2lyY3VsYXIgcmVmZXJlbmNlISBTZWVtcyByZWR1bmRhbnQuLi4gb3IgcG90ZW50aWFsbHkgYSBjbHVlIHRvIGEgbG9vcD8gRWl0aGVyIHdheSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlICoqcHJpbWFyeSoqIHBvaW50cyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGdldHMgaW52b2tlZC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGVudHJ5IHBvaW50LiBMZXQmIzM5O3Mgc2VlIHdoZXJlIHRoZSBvcmlnaW5hbCBjYWxsZXJzIG9mIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIHJlc2lkZS4gS25vd2luZyB0aGUgY2FsbCBjaGFpbiBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgaW50ZW5kZWQgcHVycG9zZSBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuIFNvLCB0aW1lIHRvIGRvIHNvbWUgZGlnZ2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU1Mjk9c3RydWN0IHVibGtfdW5waW5fcmFuZ2Uge1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTMzLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1MzQ6c3RhdGljIGJvb2wgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTM1LVx0XHRcdFx0XHRpbnQgYnVmX2luZGV4LCBpbnQgKnJldClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3My0gKi9cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTc0OnN0YXRpYyBpbnQgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIGludCBidWZfaW5kZXgpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3NS17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzctXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTU3ODpcdHdoaWxlICghX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXModWIsIGJ1Zl9pbmRleCwgXHUwMDI2cmV0KSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTc5LVx0XHRjb25kX3Jlc2NoZWQoKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTU4Mz1zdGF0aWMgaW50IHVibGtfY3RybF91bnJlZ19idWYoc3RydWN0IHVibGtfZGV2aWNlICp1Yixcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU5Ny1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTk4Olx0cmV0ID0gdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHViLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU5OS1cdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NjA2PXN0YXRpYyB2b2lkIHVibGtfYnVmX2NsZWFudXAoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjA3LXtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NjA4Olx0dWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHViLCAtMSk7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTYwOS1cdG10cmVlX2Rlc3Ryb3koXHUwMDI2dWItXHUwMDNlYnVmX3RyZWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MzAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nLCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOgoKKipEZWNvbnN0cnVjdGluZyBVYmxrIEJ1ZmZlciBVbnJlZ2lzdHJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgdW5yZWdpc3RyYXRpb24gcHJvY2VzcyBmb3IgVWJsayBidWZmZXJzLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCwgYHVibGtfYnVmX2NsZWFudXBgLCBhbmQgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuIEkgc2VlIHRob3NlIGZ1bmN0aW9ucyBhcmUgaW50ZXJ0d2luZWQsIGFuZCB0aGF0JiMzOTtzIHRoZSBrZXkuIEtub3dpbmcgdGhhdCwgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgYHVibGtfY3RybF91bnJlZ19idWZgIGJlaW5nIGNhbGxlZD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBmb3IgdGhpcyBmdW5jdGlvbiB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBidWZmZXIgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgaW4gVWJsay4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VibGtfY3RybF91bnJlZ19idWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU1NzQ9c3RhdGljIGludCB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgaW50IGJ1Zl9pbmRleClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU4Mi1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTgzOnN0YXRpYyBpbnQgdWJsa19jdHJsX3VucmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1ODQtXHRcdFx0ICAgICAgIHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU3NjA9c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTg1NC1cdGNhc2UgVUJMS19DTURfVU5SRUdfQlVGOlxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU4NTU6XHRcdHJldCA9IHVibGtfY3RybF91bnJlZ19idWYodWIsIFx1MDAyNmhlYWRlcik7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTg1Ni1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB1YmxrX2N0cmxfdXJpbmdfY21kIENvbW1hbmQgSGFuZGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHVibGtfY3RybF91cmluZ19jbWRgLCB3aGljaCBoYW5kbGVzIGlvX3VyaW5nIGNvbW1hbmRzIGZvciB0aGUgdWJsayBjb250cm9sIGRldmljZS4gVGhpcyBpcyB0aGUgZW50cnkgcG9pbnQsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLiBUaGUgY29kZSBjbGVhcmx5IHNob3dzIHRoYXQgaXQgaXMgcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLCBmcm9tIGEgZnVuY3Rpb25hbGl0eSBzdGFuZHBvaW50LgoKTm93LCB0aGlzIHBhdGNoIEkmIzM5O20gcmV2aWV3aW5nIHJlcGxhY2VzIGFuIHhhcnJheSB3aXRoIGEgZml4ZWQtc2l6ZSBhcnJheS4gVGhlIGdvYWwgaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGVsaW1pbmF0ZSBtZW1vcnkgYWxsb2NhdGlvbiB3aXRoaW4gYSBzcGlubG9jay4gVGhhdCYjMzk7cyBhIHNvbGlkIG9wdGltaXphdGlvbiwgYXMgbG9ja2luZyBjYW4gaW50cm9kdWNlIGxhdGVuY3kgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGxvY2sgY29udGVudGlvbiBpc3N1ZXMuIEl0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGltcGFjdCB0aG9yb3VnaGx5LgoKSG1tLCBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIGNvbnNpZGVyLiBJIGFtIGdvaW5nIHRvIGhhdmUgYSBsb29rIGF0IGB1YmxrX2J1Zl9jbGVhbnVwYC4gSSBiZWxpZXZlIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGB1YmxrX3JlbW92ZWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBzbyBJIHNob3VsZCBjaGVjayB0aGlzIGNvZGUgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTM6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWJsa19idWZfY2xlYW51cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzU5PXN0YXRpYyBib29sIHVibGtfdHJ5X2J1Zl9tYXRjaChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzYwLVx0XHRcdFx0ICB1MzIgKmJ1Zl9pZHgsIHUzMiAqYnVmX29mZik7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzYxOnN0YXRpYyB2b2lkIHVibGtfYnVmX2NsZWFudXAoc3RydWN0IHVibGtfZGV2aWNlICp1Yik7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzYyLXN0YXRpYyB2b2lkIHVibGtfYWJvcnRfcXVldWUoc3RydWN0IHVibGtfZGV2aWNlICp1Yiwgc3RydWN0IHVibGtfcXVldWUgKnVicSk7XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQzMjI9c3RhdGljIHZvaWQgdWJsa19jZGV2X3JlbChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQzMjUtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDMyNjpcdHVibGtfYnVmX2NsZWFudXAodWIpO1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQzMjctXHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnViLVx1MDAzZXRhZ19zZXQpO1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTgzPXN0YXRpYyBpbnQgdWJsa19jdHJsX3VucmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjA1LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU2MDY6c3RhdGljIHZvaWQgdWJsa19idWZfY2xlYW51cChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU2MDcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODgwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIENvbnRyb2wgRGV2aWNlIEVudHJ5IFBvaW50KioKCk9rYXksIHNvIEkmIzM5O20gemVyb2luZyBpbiBvbiBgdWJsa19jdHJsX3VyaW5nX2NtZGAgYXMgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IGhlcmUuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvbnRyb2wgcGxhbmUgaW50ZXJhY3Rpb25zIHdpbGwgYmUuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gY29uZmlybSBpcyBpdHMgc2NvcGUuIEFscmlnaHQsIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBwcm9iYWJseSBtZWFucyBpdCYjMzk7cyBsaW1pdGVkIGluIHNjb3BlIGFuZCBvbmx5IHVzZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBtb2R1bGUuIFdhaXQgYSBzZWNvbmQuLi4gaXQmIzM5O3MgdGhlIGAudXJpbmdfY21kYCBjYWxsYmFjay4gR290IGl0LCB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgcmVxdWVzdHMgY29taW5nIGluIHZpYSB0aGUgaW9fdXJpbmcgaW50ZXJmYWNlIGZvciB0aGUgY29udHJvbCBkZXZpY2UuIFRoYXQgY2xhcmlmaWVzIGl0cyBwdXJwb3NlIHNpZ25pZmljYW50bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VibGtfY3RybF91cmluZ19jbWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU2MTQ9c3RhdGljIGJvb2wgdWJsa190cnlfYnVmX21hdGNoKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU2NjctXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTY2ODpzdGF0aWMgaW50IHVibGtfY3RybF91cmluZ19jbWRfcGVybWlzc2lvbihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU2NjktXHRcdHUzMiBjbWRfb3AsIHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NDYtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTc0NzpzdGF0aWMgYm9vbCB1YmxrX2N0cmxfdXJpbmdfY21kX21heV9zbGVlcCh1MzIgY21kX29wKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NDgte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzU5LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU3NjA6c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzYxLVx0XHR1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NzAtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTc3MTpcdGlmICh1YmxrX2N0cmxfdXJpbmdfY21kX21heV9zbGVlcChjbWRfb3ApIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NzItXHQgICAgaXNzdWVfZmxhZ3MgXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU4MDAtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTgwMTpcdFx0cmV0ID0gdWJsa19jdHJsX3VyaW5nX2NtZF9wZXJtaXNzaW9uKHViLCBjbWRfb3AsIFx1MDAyNmhlYWRlcik7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTgwMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTg3MT1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1YmxrX2N0bF9mb3BzID0ge1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU4NzItXHQub3Blblx0XHQ9IG5vbnNlZWthYmxlX29wZW4sXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTg3MzpcdC51cmluZ19jbWQgICAgICA9IHVibGtfY3RybF91cmluZ19jbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTg3NC1cdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzE3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVWJsayBEcml2ZXIgQ2FsbGJhY2tzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYHVibGtfY3RybF91cmluZ19jbWRgIGZ1bmN0aW9uLCBhbmQgeWVzLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgdGhlIGAudXJpbmdfY21kYCBjYWxsYmFjay4gSSYjMzk7bSBub3RpbmcgdGhhdCBpdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaXMgYSBrZXkgZGV0YWlsLiBUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IHdlIGNhbiYjMzk7dCBkaXJlY3RseSBhY2Nlc3MgaXQgb3V0c2lkZSBvZiBpdHMgY29tcGlsYXRpb24gdW5pdCwgYWx0aG91Z2ggd2UgYXJlIGVmZmVjdGl2ZWx5IHVzaW5nIGl0IGFzIGFuIGVudHJ5IHBvaW50LgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY29uc2lkZXIgYWx0ZXJuYXRpdmVzOiBpcyB0aGVyZSBhIG5vbi1zdGF0aWMsIG1vcmUgYWNjZXNzaWJsZSBmdW5jdGlvbiB3ZSBjb3VsZCB1dGlsaXplIGluc3RlYWQ/IElkZWFsbHksIHdlJiMzOTtkIHByZWZlciBzb21ldGhpbmcgbGVzcyByZXN0cmljdGl2ZS4KCkxldCYjMzk7cyBzZWUuLi5pZiB0aGVyZSBpc24mIzM5O3QgYSBub24tc3RhdGljIHZhcmlhbnQgcmVhZGlseSBhdmFpbGFibGUgd2l0aGluIHRoZSByZWxldmFudCBwYXJ0cyBvZiB0aGUgY29kZSwgdGhlbiwgd29yc3QgY2FzZSwgd2UmIzM5O2xsIGp1c3QgaGF2ZSB0byBkZWFsIHdpdGggdGhlIHN0YXRpYyBuYXR1cmUgb2YgYHVibGtfY3RybF91cmluZ19jbWRgIG9yIHBlcmhhcHMgY29uc2lkZXIgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2Agb3IgZXZlbiB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYC4KCkFoLCBidXQgaG9sZCBvbiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyOiAqYHVibGtfY3RybF91cmluZ19jbWRgIGlzIHN0YXRpYyohIEkmIzM5O20gY29uZmlybWluZyB0aGF0IGJlY2F1c2UgaXQmIzM5O3MgZ29pbmcgdG8gZHJpdmUgb3VyIGRlc2lnbiBkZWNpc2lvbnMgaW4gdGhpcyBhcmVhLgoKU28sIEkgdGhpbmsgSSYjMzk7bGwgZ28gY2hlY2sgdGhlIGZpbGUgYGRyaXZlcnMvYmxvY2svdWJsa19kcnYuY2AgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYSBub24tc3RhdGljIGNhbmRpZGF0ZSB0aGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCB1YmxrXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMDgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNvbnNpZGVyaW5nIFN0YXRpYyBWYXJpYWJsZSBOYW1pbmcgaW4gYSBTcGVjaWZpYyBDb250ZXh0KioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IG5hbWluZyBhIHN0YXRpYyBpbnRlZ2VyIHZhcmlhYmxlLCBsaWtlbHkgd2l0aGluIHRoZSBjb25maW5lcyBvZiBhIGtlcm5lbCBtb2R1bGUgb3Igc29tZSBzaW1pbGFyIGxvdy1sZXZlbCBjb2RlLiBJJiMzOTttIGxlYW5pbmcgdG93YXJkIGEgbmFtZSB0aGF0IGluZGljYXRlcyBzb21lIGxldmVsIG9mIGxvY2FsIHNjb3BlIGFuZCBwZXJzaXN0ZW5jZS4gJiMzNDtTdGF0aWMmIzM0OyBpcyB0aGUga2V5IGhlcmUuIEkgbmVlZCBzb21ldGhpbmcgdGhhdCYjMzk7cyBjbGVhcmx5IHJlcHJlc2VudGF0aXZlIG9mIHRoZSBkYXRhLCB0aGUgdXNlIGNhc2UsIG9yIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGlzIG1vZHVsZSBvciBzZWN0aW9uLiBJJiMzOTttIHF1aWNrbHkgZmlsdGVyaW5nIHRocm91Z2ggdGhlIG9idmlvdXMgY2hvaWNlcywgYW5kIEkmIzM5O3ZlIGFycml2ZWQgYXQgdGhlIHRob3VnaHQgb2YgdXNpbmcgYF5zdGF0aWMgaW50IHVibGtfYCBvciBhIHNpbWlsYXIgZm9ybWF0LiBUaGUgcHJlZml4IGB1YmxrX2AgbGlrZWx5IHJlZmVycyB0byBhIHNwZWNpZmljIHN1YnN5c3RlbSBvciBmdW5jdGlvbmFsaXR5LiBUaGF0IGtpbmQgb2YgbmFtaW5nIGNvbnZlbnRpb24gaGFzIGl0cyBtZXJpdHMg4oCTIGl0IGhlbHBzIHdpdGggc2NvcGluZywgYXZvaWRpbmcgY29sbGlzaW9ucywgYW5kIHF1aWNrIGlkZW50aWZpY2F0aW9uIHdoZW4gZGVidWdnaW5nIG9yIHRyYWNpbmcgdGhyb3VnaCB0aGUgY29kZS4gSSBhbSBjb25zaWRlcmluZyBgc3RhdGljYCB0byBlbnN1cmUgdGhhdCB0aGVyZSBpcyBubyBjb25mbGljdHMgb3IgdmlzaWJpbGl0eSBpc3N1ZXMuIFRoaXMgYWxsb3dzIG1lIHRvIHVzZSB0aGUgbmFtZSB3aXRob3V0IGFueSB3b3JyaWVzIG9mIHVuaW50ZW5kZWQgaW50ZXJhY3Rpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGNoZWNrIGZvciBleGlzdGluZyBjb252ZW50aW9ucyBhbmQgc2VlIHdoYXQgbWFrZXMgc2Vuc2UgaW4gdGhpcyBzcGVjaWZpYyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljIGludCB1YmxrXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTM4PXN0YXRpYyBERUZJTkVfWEFSUkFZKHVibGtfem9uZWRfcmVwb3J0X2Rlc2NzKTtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MzktXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTQwOnN0YXRpYyBpbnQgdWJsa196b25lZF9pbnNlcnRfcmVwb3J0X2Rlc2MoY29uc3Qgc3RydWN0IHJlcXVlc3QgKnJlcSxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NDEtXHRcdHN0cnVjdCB1YmxrX3pvbmVkX3JlcG9ydF9kZXNjICpkZXNjKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTM9c3RhdGljIHN0cnVjdCB1YmxrX3pvbmVkX3JlcG9ydF9kZXNjICp1YmxrX3pvbmVkX2dldF9yZXBvcnRfZGVzYyhcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1OTpzdGF0aWMgaW50IHVibGtfZ2V0X25yX3pvbmVzKGNvbnN0IHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTYwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY2LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU2NzpzdGF0aWMgaW50IHVibGtfcmV2YWxpZGF0ZV9kaXNrX3pvbmVzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTcxLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU3MjpzdGF0aWMgaW50IHVibGtfZGV2X3BhcmFtX3pvbmVkX3ZhbGlkYXRlKGNvbnN0IHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTczLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NjAwPXN0YXRpYyB2b2lkICp1YmxrX2FsbG9jX3JlcG9ydF9idWZmZXIoc3RydWN0IHVibGtfZGV2aWNlICp1YmxrLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy02MjYtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NjI3OnN0YXRpYyBpbnQgdWJsa19yZXBvcnRfem9uZXMoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHNlY3Rvcl90IHNlY3RvcixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy02MjgtXHRcdCAgICAgIHVuc2lnbmVkIGludCBucl96b25lcywgc3RydWN0IGJsa19yZXBvcnRfem9uZXNfYXJncyAqYXJncylcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NzI0PXN0YXRpYyB2b2lkIHVibGtfc2V0dXBfaW9kX3pvbmVkKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsIHN0cnVjdCByZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTc2NC1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo3NjU6c3RhdGljIGludCB1YmxrX2Rldl9wYXJhbV96b25lZF92YWxpZGF0ZShjb25zdCBzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTc2Ni17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTc3MD1zdGF0aWMgdm9pZCB1YmxrX2Rldl9wYXJhbV96b25lZF9hcHBseShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy03NzMtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6Nzc0OnN0YXRpYyBpbnQgdWJsa19yZXZhbGlkYXRlX2Rpc2tfem9uZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy03NzUte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz04MzE9c3RhdGljIHZvaWQgdWJsa19iYXRjaF9kZWluaXRfZmV0Y2hfYnVmKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTg0NS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo4NDY6c3RhdGljIGludCB1YmxrX2JhdGNoX2ZldGNoX3Bvc3RfY3FlKHN0cnVjdCB1YmxrX2JhdGNoX2ZldGNoX2NtZCAqZmNtZCxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy04NDctXHRcdFx0XHQgICAgIHN0cnVjdCBpb19icl9zZWwgKnNlbCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9ODk0PXN0YXRpYyB2b2lkIHVibGtfZGV2X3BhcmFtX2Jhc2ljX2FwcGx5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTkwMy1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo5MDQ6c3RhdGljIGludCB1YmxrX2ludGVncml0eV9mbGFncyh1MzIgZmxhZ3MpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtOTA1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtOTE4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjkxOTpzdGF0aWMgaW50IHVibGtfaW50ZWdyaXR5X3BpX3R1cGxlX3NpemUodTggY3N1bV90eXBlKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTkyMC17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTkzND1zdGF0aWMgZW51bSBibGtfaW50ZWdyaXR5X2NoZWNrc3VtIHVibGtfaW50ZWdyaXR5X2NzdW1fdHlwZSh1OCBjc3VtX3R5cGUpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTk1MC1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo5NTE6c3RhdGljIGludCB1YmxrX3ZhbGlkYXRlX3BhcmFtcyhjb25zdCBzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTk1Mi17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTEzMjc9c3RhdGljIHZvaWQgdWJsa19zdG9yZV9vd25lcl91aWRfZ2lkKHVuc2lnbmVkIGludCAqb3duZXJfdWlkLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMzM4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjEzMzk6c3RhdGljIGludCB1YmxrX29wZW4oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGJsa19tb2RlX3QgbW9kZSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMzQwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MjMwOT1zdGF0aWMgdm9pZCB1YmxrX2JhdGNoX3F1ZXVlX3JxcyhzdHJ1Y3QgcnFfbGlzdCAqcnFsaXN0KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMzM0LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjIzMzU6c3RhdGljIGludCB1YmxrX2luaXRfaGN0eChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgdm9pZCAqZHJpdmVyX2RhdGEsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjMzNi1cdFx0dW5zaWduZWQgaW50IGhjdHhfaWR4KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0yMzYwPXN0YXRpYyB2b2lkIHVibGtfcXVldWVfcmVpbml0KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTIzOTItXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MjM5MzpzdGF0aWMgaW50IHVibGtfY2hfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscClcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMzk0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MjUxNj1zdGF0aWMgdm9pZCB1YmxrX2NoX3JlbGVhc2Vfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI2MTctXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MjYxODpzdGF0aWMgaW50IHVibGtfY2hfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscClcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNjE5LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjYzMy0vKiBtYXAgcHJlLWFsbG9jYXRlZCBwZXItcXVldWUgY21kIGJ1ZmZlciB0byB1Ymxrc3J2IGRhZW1vbiAqL1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjI2MzQ6c3RhdGljIGludCB1YmxrX2NoX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI2MzUte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zMTYzPXN0YXRpYyB2b2lkIHVibGtfaW9fcmVsZWFzZSh2b2lkICpwcml2KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMTc4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjMxNzk6c3RhdGljIGludCB1YmxrX3JlZ2lzdGVyX2lvX2J1ZihzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzE4MC1cdFx0XHRcdHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTMyMDY9dWJsa19kYWVtb25fcmVnaXN0ZXJfaW9fYnVmKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzIzNS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMjM2OnN0YXRpYyBpbnQgdWJsa191bnJlZ2lzdGVyX2lvX2J1ZihzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzIzNy1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1Yixcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzI0NS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMjQ2OnN0YXRpYyBpbnQgdWJsa19jaGVja19mZXRjaF9idWYoY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1YiwgX191NjQgYnVmX2FkZHIpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzI0Ny17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTMyNjI9c3RhdGljIGludCBfX3VibGtfZmV0Y2goc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCBzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMjg0LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjMyODU6c3RhdGljIGludCB1YmxrX2ZldGNoKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgc3RydWN0IHVibGtfZGV2aWNlICp1YixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMjg2LVx0XHQgICAgICBzdHJ1Y3QgdWJsa19pbyAqaW8sIF9fdTY0IGJ1Zl9hZGRyLCB1MTYgcV9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzMwNy1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMzA4OnN0YXRpYyBpbnQgdWJsa19jaGVja19jb21taXRfYW5kX2ZldGNoKGNvbnN0IHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzMwOS1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgdWJsa19pbyAqaW8sIF9fdTY0IGJ1Zl9hZGRyKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zMzQwPXN0YXRpYyBib29sIHVibGtfZ2V0X2RhdGEoY29uc3Qgc3RydWN0IHVibGtfcXVldWUgKnVicSwgc3RydWN0IHVibGtfaW8gKmlvLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMzU3LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjMzNTg6c3RhdGljIGludCB1YmxrX2NoX3VyaW5nX2NtZF9sb2NhbChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzM1OS1cdFx0dW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zNTIxPXN0YXRpYyB2b2lkIHVibGtfY2hfdXJpbmdfY21kX2NiKHN0cnVjdCBpb190d19yZXEgdHdfcmVxLCBpb190d190b2tlbl90IHR3KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNTMyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM1MzM6c3RhdGljIGludCB1YmxrX2NoX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNTM0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzU5OD1fX3VibGtfd2Fsa19jbWRfYnVmKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2MjYtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzYyNzpzdGF0aWMgaW50IHVibGtfd2Fsa19jbWRfYnVmKHN0cnVjdCB1YmxrX2JhdGNoX2lvX2l0ZXIgKml0ZXIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzYyOC1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvX2RhdGEgKmRhdGEsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2NTQtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzY1NTpzdGF0aWMgaW50IHVibGtfYmF0Y2hfdW5wcmVwX2lvKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzY1Ni1cdFx0XHRcdGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvX2RhdGEgKmRhdGEsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTM2ODA9c3RhdGljIHZvaWQgdWJsa19iYXRjaF9yZXZlcnRfcHJlcF9jbWQoc3RydWN0IHVibGtfYmF0Y2hfaW9faXRlciAqaXRlcixcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzY5Mi1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozNjkzOnN0YXRpYyBpbnQgdWJsa19iYXRjaF9wcmVwX2lvKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzY5NC1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNzIzLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM3MjQ6c3RhdGljIGludCB1YmxrX2hhbmRsZV9iYXRjaF9wcmVwX2NtZChjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM3MjUte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNzUwLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM3NTE6c3RhdGljIGludCB1YmxrX2JhdGNoX2NvbW1pdF9pb19jaGVjayhjb25zdCBzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM3NTItXHRcdFx0XHQgICAgICBzdHJ1Y3QgdWJsa19pbyAqaW8sXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM3NjMtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6Mzc2NDpzdGF0aWMgaW50IHVibGtfYmF0Y2hfY29tbWl0X2lvKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzc2NS1cdFx0XHRcdGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvX2RhdGEgKmRhdGEsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM4MTEtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzgxMjpzdGF0aWMgaW50IHVibGtfaGFuZGxlX2JhdGNoX2NvbW1pdF9jbWQoc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODEzLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzgzMi1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozODMzOnN0YXRpYyBpbnQgdWJsa19jaGVja19iYXRjaF9jbWRfZmxhZ3MoY29uc3Qgc3RydWN0IHVibGtfYmF0Y2hfaW8gKnVjKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM4MzQte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODUxLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM4NTI6c3RhdGljIGludCB1YmxrX2NoZWNrX2JhdGNoX2NtZChjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM4NTMte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODc2LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM4Nzc6c3RhdGljIGludCB1YmxrX2JhdGNoX2F0dGFjaChzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM4NzgtXHRcdFx0ICAgICBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTIyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM5MjM6c3RhdGljIGludCB1YmxrX2hhbmRsZV9iYXRjaF9mZXRjaF9jbWQoc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTI0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzkzMy1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozOTM0OnN0YXRpYyBpbnQgdWJsa192YWxpZGF0ZV9iYXRjaF9mZXRjaF9jbWQoc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSlcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTM1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzk1Mi1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozOTUzOnN0YXRpYyBpbnQgdWJsa19oYW5kbGVfbm9uX2JhdGNoX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzk1NC1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTgyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM5ODM6c3RhdGljIGludCB1YmxrX2NoX2JhdGNoX2lvX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzk4NC1cdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQxODg9c3RhdGljIHZvaWQgdWJsa19kZWluaXRfcXVldWUoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgdTE2IHFfaWQpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQxOTgtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDE5OTpzdGF0aWMgaW50IHVibGtfZ2V0X3F1ZXVlX251bWFfbm9kZShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCB1MTYgcV9pZClcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MjAwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDIxMS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0MjEyOnN0YXRpYyBpbnQgdWJsa19pbml0X3F1ZXVlKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHUxNiBxX2lkKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyMTMte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00MjY1PXN0YXRpYyB2b2lkIHVibGtfZGVpbml0X3F1ZXVlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MjcyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQyNzM6c3RhdGljIGludCB1YmxrX2luaXRfcXVldWVzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDI3NC17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyOTAtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDI5MTpzdGF0aWMgaW50IHVibGtfYWxsb2NfZGV2X251bWJlcihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBpbnQgaWR4KVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyOTIte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00MzIyPXN0YXRpYyB2b2lkIHVibGtfY2Rldl9yZWwoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MzM0LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQzMzU6c3RhdGljIGludCB1YmxrX2FkZF9jaGRldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQzMzYte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00MzY4PXN0YXRpYyB2b2lkIHVibGtfYWxpZ25fbWF4X2lvX3NpemUoc3RydWN0IHVibGtfZGV2aWNlICp1Yilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDM3NS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0Mzc2OnN0YXRpYyBpbnQgdWJsa19hZGRfdGFnX3NldChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQzNzcte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00NDE4PXN0YXRpYyBib29sIHVibGtfdmFsaWRhdGVfdXNlcl9waWQoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgcGlkX3QgdWJsa3Nydl9waWQpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0MzItICovXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDQzMzpzdGF0aWMgaW50IHVibGtfd2FpdF9kZXZfcmVhZHlfYW5kX2xvY2soc3RydWN0IHVibGtfZGV2aWNlICp1YilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NDM0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDQ0Ni1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0NDQ3OnN0YXRpYyBpbnQgdWJsa19jdHJsX3N0YXJ0X2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0NDgtXHRcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ2MDUtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDYwNjpzdGF0aWMgaW50IHVibGtfY3RybF9nZXRfcXVldWVfYWZmaW5pdHkoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NjA3LVx0XHRjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00NjQ5PXN0YXRpYyBpbmxpbmUgdm9pZCB1YmxrX2R1bXBfZGV2X2luZm8oc3RydWN0IHVibGtzcnZfY3RybF9kZXZfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDY1Ni1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0NjU3OnN0YXRpYyBpbnQgdWJsa19jdHJsX2FkZF9kZXYoY29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NjU4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDg3MT1zdGF0aWMgaW5saW5lIGJvb2wgdWJsa19pZHJfZnJlZWQoaW50IGlkKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00ODgxLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQ4ODI6c3RhdGljIGludCB1YmxrX2N0cmxfZGVsX2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKipwX3ViLCBib29sIHdhaXQpXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDg4My17XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQ5Mjk9c3RhdGljIHZvaWQgdWJsa19jdHJsX3N0b3BfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5MzMtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDkzNDpzdGF0aWMgaW50IHVibGtfY3RybF90cnlfc3RvcF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICp1YilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00OTM1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDk2MS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0OTYyOnN0YXRpYyBpbnQgdWJsa19jdHJsX2dldF9kZXZfaW5mbyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5NjMtXHRcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQ5OTc9c3RhdGljIHZvaWQgdWJsa19jdHJsX2ZpbGxfcGFyYW1zX2RldnQoc3RydWN0IHVibGtfZGV2aWNlICp1Yilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTAxMS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1MDEyOnN0YXRpYyBpbnQgdWJsa19jdHJsX2dldF9wYXJhbXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MDEzLVx0XHRjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MDQxLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUwNDI6c3RhdGljIGludCB1YmxrX2N0cmxfc2V0X3BhcmFtcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUwNDMtXHRcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUwODMtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTA4NDpzdGF0aWMgaW50IHVibGtfY3RybF9zdGFydF9yZWNvdmVyeShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUwODUte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MTE5LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUxMjA6c3RhdGljIGludCB1YmxrX2N0cmxfZW5kX3JlY292ZXJ5KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTEyMS1cdFx0Y29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTE1Ny1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1MTU4OnN0YXRpYyBpbnQgdWJsa19jdHJsX2dldF9mZWF0dXJlcyhjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxNTkte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MTcxLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUxNzI6c3RhdGljIGludCB1YmxrX2N0cmxfc2V0X3NpemUoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgY29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MTczLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTIwNT1zdGF0aWMgYm9vbCB1YnFfaGFzX2lkbGVfaW8oY29uc3Qgc3RydWN0IHVibGtfcXVldWUgKnVicSlcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTIxNS0vKiBXYWl0IHVudGlsIGVhY2ggaHcgcXVldWUgaGFzIGF0IGxlYXN0IG9uZSBpZGxlIElPICovXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTIxNjpzdGF0aWMgaW50IHVibGtfd2FpdF9mb3JfaWRsZV9pbyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyMTctXHRcdFx0XHQgdW5zaWduZWQgaW50IHRpbWVvdXRfbXMpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNTgtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTI1OTpzdGF0aWMgaW50IHVibGtfY3RybF9xdWllc2NlX2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNjAtXHRcdFx0XHQgY29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTMwNy0gKi9cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1MzA4OnN0YXRpYyBpbnQgdWJsa19jaGFyX2Rldl9wZXJtaXNzaW9uKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTMwOS1cdFx0Y29uc3QgY2hhciAqZGV2X3BhdGgsIGludCBtYXNrKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01Mzc2PXN0YXRpYyBpbnQgX191YmxrX2N0cmxfcmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NDIxLSAqL1xuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU0MjI6c3RhdGljIGludCB1YmxrX2N0cmxfcmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU0MjMtXHRcdFx0ICAgICBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTM0PXN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzMtICovXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTU3NDpzdGF0aWMgaW50IHVibGtfc2htZW1fcmVtb3ZlX3JhbmdlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBpbnQgYnVmX2luZGV4KVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzUte1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTgyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1ODM6c3RhdGljIGludCB1YmxrX2N0cmxfdW5yZWdfYnVmKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU4NC1cdFx0XHQgICAgICAgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTYxND1zdGF0aWMgYm9vbCB1YmxrX3RyeV9idWZfbWF0Y2goc3RydWN0IHVibGtfZGV2aWNlICp1Yixcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY2Ny1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NjY4OnN0YXRpYyBpbnQgdWJsa19jdHJsX3VyaW5nX2NtZF9wZXJtaXNzaW9uKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY2OS1cdFx0dTMyIGNtZF9vcCwgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTc0Nz1zdGF0aWMgYm9vbCB1YmxrX2N0cmxfdXJpbmdfY21kX21heV9zbGVlcCh1MzIgY21kX29wKVxuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzU5LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU3NjA6c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzYxLVx0XHR1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU5Mzc9bW9kdWxlX2V4aXQodWJsa19leGl0KTtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01OTM4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU5Mzk6c3RhdGljIGludCB1YmxrX3NldF9tYXhfdW5wcml2aWxlZ2VkX3VibGtzKGNvbnN0IGNoYXIgKmJ1ZixcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01OTQwLVx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTk0NC1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1OTQ1OnN0YXRpYyBpbnQgdWJsa19nZXRfbWF4X3VucHJpdmlsZWdlZF91YmxrcyhjaGFyICpidWYsXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTk0Ni1cdFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MjM0CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMzMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB1YmxrIENvbnRyb2wgUGF0aCBmb3IgRnV6emluZyBFbnRyeXBvaW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgYHVibGtgIGNvbnRyb2wgcGF0aCB0byBpZGVudGlmeSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgZW50cnlwb2ludHMuIEkgc2VlIHRoYXQgYHVibGtfY3RybF91cmluZ19jbWRgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBiaXQgb2YgYSByb2FkYmxvY2suIEl0IGNhbGxzIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCwgd2hpY2ggdGhlbiBjYWxscyBgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYC4gVGhlc2UgYXJlIGFsc28gc3RhdGljLCB3aGljaCBtYWtlcyB0aGlzIHRyaWNreS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBzaW1wbHkgbGlzdCB0aG9zZSBhcyBmb2N1cyBzeW1ib2xzLCBidXQgdGhlIHN0YXRpYyBuYXR1cmUgaXMgdGhyb3dpbmcgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLgoKSSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBndWlkYW5jZSDigJMgcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoZSBjb21waWxlciBvZnRlbiBpbmxpbmVzIHN0YXRpYyBoZWxwZXJzLCByZW1vdmluZyB0aGVpciBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLCBhbmQgdGhlcmVmb3JlIG1ha2luZyB0aGVtIGxlc3MgYXR0cmFjdGl2ZSBmb3IgZnV6emluZyBkaXJlY3RseS4gU28sIEkgbmVlZCB0byByZXRoaW5rIHRoaXMuIElmIGV2ZXJ5dGhpbmcgaXMgc3RhdGljLCBzaG91bGQgSSBqdXN0IGJpdGUgdGhlIGJ1bGxldCBhbmQgbGlzdCB0aGUgc3RhdGljIGZ1bmN0aW9ucyBhbnl3YXksIGhvcGluZyBTeXprYWxsZXIgY2FuIHN0aWxsIHJlYWNoIHRoZW0/IFNpbmNlIHRoZXkgYXJlIG5vdCBpbmxpbmVkLCBpdCBpcyBwb3NzaWJsZS4KCldhaXQsIGxldCBtZSBjb25maXJtLiBZZXMsIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCBhbmQgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgYXJlIHN0YXRpYywgYW5kIHNvIGlzIGB1YmxrX2N0cmxfdXJpbmdfY21kYC4gTm93LCBJJiMzOTttIGNoZWNraW5nIGlmIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCBpcyBpbmxpbmVkLCBiZWNhdXNlIHRoYXQgaXMgYSBrZXkgY29uc2lkZXJhdGlvbi4gTG9va2luZyBhdCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQsIGl0JiMzOTtzIGluc2lkZSBhIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aGluIGB1YmxrX2N0cmxfdXJpbmdfY21kYC4gVGhhdCBzdWdnZXN0cyBpdCYjMzk7cyAqcHJvYmFibHkqIG5vdCBpbmxpbmVkLCBnaXZlbiBpdHMgc2l6ZSBhbmQgdGhlIGNhbGwgc2l0ZSBzdHJ1Y3R1cmUuCgpOb3csIG15IG1pbmQgc2hpZnRzIHRvIG90aGVyIHBvdGVudGlhbCBlbnRyeXBvaW50cywgZ2l2ZW4gdGhlIHByaW5jaXBsZSBvZiBwcmVmZXJyaW5nIHRoZSBub24tc3RhdGljIG9uZXMuIEkgY291bGQgY29uc2lkZXIgdGhlIHN5c2NhbGxzIHRoYXQgKnRyaWdnZXIqIHRoaXMgcGF0aCwgbGlrZSBgaW9fdXJpbmdfZW50ZXJgLiBCdXQgYGlvX3VyaW5nX2VudGVyYCBpcyB0b28gZ2VuZXJpYyBhbmQgSSBhbSB0cnlpbmcgdG8gbmFycm93IHRoZSBzY29wZS4gU28sIEkgd2lsbCBsb29rIGZvciBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYHVibGtfZHJ2LmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYmV0dGVyIGNhbmRpZGF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX11bYS16QS1aMC05X10qIHVibGtfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay91YmxrX2Rydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMTMtLyogdWJsayBiYXRjaCBmZXRjaCB1cmluZ19jbWQgKi9cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoxMTQ6c3RydWN0IHVibGtfYmF0Y2hfZmV0Y2hfY21kIHtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMTUtXHRzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTExOS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoxMjA6c3RydWN0IHVibGtfdXJpbmdfY21kX3BkdSB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMTIxLVx0Lypcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMTQ1LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjE0NjpzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhIHtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xNDctXHRzdHJ1Y3QgdWJsa19kZXZpY2UgKnViO1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMDMtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MjA0OnVuaW9uIHVibGtfaW9fYnVmIHtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMDUtXHRfX3U2NFx0YWRkcjtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjA4LVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjIwOTpzdHJ1Y3QgdWJsa19pbyB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjEwLVx0dW5pb24gdWJsa19pb19idWYgYnVmO1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNDEtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MjQyOnN0cnVjdCB1YmxrX3F1ZXVlIHtcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNDMtXHR1MTYgcV9pZDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzA0LS8qIE1hcGxlIHRyZWUgdmFsdWU6IG1hcHMgYSBQRk4gcmFuZ2UgdG8gYnVmZmVyIGxvY2F0aW9uICovXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzA1OnN0cnVjdCB1YmxrX2J1Zl9yYW5nZSB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzA2LVx0dW5zaWduZWQgc2hvcnQgYnVmX2luZGV4O1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMTAtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzExOnN0cnVjdCB1YmxrX2RldmljZSB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzEyLVx0c3RydWN0IGdlbmRpc2tcdFx0KnViX2Rpc2s7XG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM1MS0vKiBoZWFkZXIgb2YgdWJsa19wYXJhbXMgKi9cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozNTI6c3RydWN0IHVibGtfcGFyYW1zX2hlYWRlciB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzUzLVx0X191MzJcdGxlbjtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTA2PXN0YXRpYyB2b2lkIHVibGtfaW5pdF9pb2Qoc3RydWN0IHVibGtfcXVldWUgKnVicSwgc3RydWN0IHJlcXVlc3QgKnJlcSxcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTMyLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUzMzpzdHJ1Y3QgdWJsa196b25lZF9yZXBvcnRfZGVzYyB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTM0LVx0X191NjQgc2VjdG9yO1xuLS1cbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zNTcxPXVibGtfYmF0Y2hfYXV0b19idWZfcmVnKGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvICp1Yyxcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzU4Ny0jZGVmaW5lIFVCTEtfQ01EX0JBVENIX1RNUF9CVUZfU1ogICg0OCAqIDEwKVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM1ODg6c3RydWN0IHVibGtfYmF0Y2hfaW9faXRlciB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzU4OS1cdHZvaWQgX191c2VyICp1YWRkcjtcbi0tXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTUwMT1zdGF0aWMgdm9pZCB1YmxrX3VucGluX3JhbmdlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgYmFzZV9wZm4sXG4tLVxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1MjgtXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTUyOTpzdHJ1Y3QgdWJsa191bnBpbl9yYW5nZSB7XG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTUzMC1cdHVuc2lnbmVkIGxvbmcgYmFzZV9wZm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MDM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgdWJsayBNb2R1bGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNvcmUgZnVuY3Rpb25zIGFuZCB0aGVpciByZWxhdGlvbnNoaXBzIHdpdGhpbiB0aGUgYHVibGtgIG1vZHVsZS4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbWFwIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4gRmlyc3QsIEkgaGF2ZSB0aGVzZSBrZXkgZnVuY3Rpb25zIEkmIzM5O20gdHJhY2tpbmc6IGB1YmxrX2N0cmxfdXJpbmdfY21kYCwgYHVibGtfY3RybF91bnJlZ19idWZgLCBgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCwgYW5kIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuCgpBaGEsIGhvbGQgb24uIEkgc2VlIGB1YmxrX2N0cmxfdXJpbmdfY21kYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaW5pdGlhbGx5IG1hZGUgbWUgcGF1c2UuIEJ1dCB0aGVuIEkgbm90aWNlZCBpdCYjMzk7cyBjb3JyZWN0bHkgYXNzaWduZWQgdG8gYHVibGtfY3RsX2ZvcHMudXJpbmdfY21kYC4gWWVzLCB0aGF04oCZcyBwZXJmZWN0bHkgbGVnaXRpbWF0ZSwgdGhlIHN0YXRpYyBzY29wZSBkb2VzbiYjMzk7dCBjYXVzZSBhbnkgY29uZmxpY3RzIGhlcmUsIHRoZSBmdW5jdGlvbiBpcyBzdGlsbCBhY2Nlc3NpYmxlIGFzIGV4cGVjdGVkIHdpdGhpbiBpdHMgaW50ZW5kZWQgc2NvcGUuIE9rYXksIHRoYXQgY2hlY2tzIG91dC4gTm8gaW1tZWRpYXRlIHJlZCBmbGFncyB0aGVyZS4KCk5vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgYmVjYXVzZSBJIGFsd2F5cyBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzLCBJIHdhbnQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGNvbnRyb2xzIHRoaXMgbW9kdWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYEJMS19ERVZfVUJMS2AgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgZWxzZSB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBXaGVyZSBpcyBpdCBkZWZpbmVkPyBSaWdodCwgaXQmIzM5O3MgZGVmaW5lZCBpbiB0aGUgY29kZSBpbiBgZHJpdmVycy9ibG9jay91YmxrX2Rydi5jYC4gT2theSwgbGV0IG1lIGdvIGNoZWNrIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gdGhhdCBgQkxLX0RFVl9VQkxLYCBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnkgb3RoZXIgZGVwZW5kZW50IG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX1VCTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTMxNT1jb25maWcgQkxLX0RFVl9SQkRcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI3LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMyODpjb25maWcgQkxLX0RFVl9VQkxLXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI5LVx0dHJpc3RhdGUgXCYjMzQ7VXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjY2NAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IHF1ZXN0aW9uOgoKKipEZWNvbnN0cnVjdGluZyBEZXBlbmRlbmNpZXMgb2YgQkxLXF9ERVZcX1VCTEsqKgoKT2theSwgc28gYEJMS19ERVZfVUJMS2AuLi4gcmlnaHQsIHRoYXQmIzM5O3MgdGhlIHVzZXItc3BhY2UgYmxvY2sgZGV2aWNlIGRyaXZlci4gVGhlIHF1ZXN0aW9uIGlzLCB3aGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG9yIGZ1bmN0aW9uYWxpdGllcyBpcyBpdCBkZXBlbmRlbnQgb24/IExldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIHB1cnBvc2Ugb2YgYEJMS19ERVZfVUJMS2AuIEl0IHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciB1c2VyLXNwYWNlIHByb2dyYW1zIHRvIGVtdWxhdGUgYmxvY2sgZGV2aWNlcy4gU28sIGluaGVyZW50bHksIGl0IHJlbGllcyBvbiB0aGUga2VybmVsJiMzOTtzIGJsb2NrIGxheWVyIOKAkyB0aGF0JiMzOTtzIGEgZ2l2ZW4uIEkmIzM5O20gdGhpbmtpbmcsIHNwZWNpZmljYWxseSwgdGhlIGNvcmUgYmxvY2sgSS9PIGluZnJhc3RydWN0dXJlLCBxdWV1ZSBtYW5hZ2VtZW50LCByZXF1ZXN0IGhhbmRsaW5nLCBhbmQgdGhlIGdlbmVyaWMgYmxvY2sgZGV2aWNlIGludGVyZmFjZXMgKGBnZW5kaXNrYCwgYHJlcXVlc3RfcXVldWVgLCBldGMuKS4gV2l0aG91dCB0aG9zZSwgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGhvb2sgYSB1c2VyLXNwYWNlIGRyaXZlciBpbnRvIHRoZSBibG9jayBsYXllci4KCk5leHQsIGl0IGhhcyB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgdXNlciBzcGFjZSBzb21laG93LiBUaGlzIHByb2JhYmx5IGludm9sdmVzIHRoaW5ncyBsaWtlIGNoYXJhY3RlciBkZXZpY2Ugbm9kZXMgKGAvZGV2L3VibGtYYCkgYW5kIHN5c3RlbSBjYWxscyBmb3IgcGFzc2luZyBkYXRhIGFuZCBjb250cm9sIG1lc3NhZ2VzIGJhY2sgYW5kIGZvcnRoLiBUaGF0IHN1Z2dlc3RzIGRlcGVuZGVuY2llcyBvbiBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlciBpbmZyYXN0cnVjdHVyZSBhbmQgcG9zc2libHkgZXZlbiBzb21lIHNvcnQgb2YgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbXMsIHRob3VnaCBtYXliZSBqdXN0IHN0YW5kYXJkIGZpbGUgb3BlcmF0aW9ucy4KCk1vcmUgYnJvYWRseSwgSSBiZXQgaXQgcmVsaWVzIG9uIHRoZSBrZXJuZWwmIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQsIGJlY2F1c2UgaXQmIzM5O3MgbW92aW5nIGRhdGEgYmV0d2VlbiB1c2VyIHNwYWNlIGFuZCBrZXJuZWwgc3BhY2UuIFBvaW50ZXJzLCBtZW1vcnkgYWxsb2NhdGlvbiwgYW5kIGNvcHkgb3BlcmF0aW9ucyB3aWxsIGJlIGNyaXRpY2FsLiBJdCBwcm9iYWJseSBpbnRlcmFjdHMgd2l0aCBzb21lIGtpbmQgb2YgbG9ja2luZyBwcmltaXRpdmVzIGFzIHdlbGwsIGJlY2F1c2UgbXVsdGktdGhyZWFkZWQgdXNlci1zcGFjZSBwcm9ncmFtcyBjb3VsZCBiZSBhY2Nlc3NpbmcgdGhlIGRldmljZSBpbiBhIGNvbmN1cnJlbnQgbWFubmVyLiBUaGlzIGxpa2VseSBlbnRhaWxzIHNwaW5sb2NrcyBvciBtdXRleGVzIHdpdGhpbiB0aGUga2VybmVsLgoKRmluYWxseSwgd2hpbGUgaXQmIzM5O3MgcHJvYmFibHkgbm90IGEgZGlyZWN0IGRlcGVuZGVuY3ksIGBCTEtfREVWX1VCTEtgJiMzOTtzIHBlcmZvcm1hbmNlIGFuZCBmdW5jdGlvbmFsaXR5IG9mdGVuIHJlbHkgb24gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgKGV2ZW4gaWYgdmlydHVhbGl6ZWQpLiBJZiBpdCYjMzk7cyB1c2VkIHdpdGggdGhpbmdzIGxpa2UgbmV0d29yayBibG9jayBkZXZpY2VzLCB0aGVuIG5ldHdvcmsgcHJvdG9jb2xzIG9yIGRyaXZlcnMgY291bGQgY29tZSBpbnRvIHBsYXkgKGluZGlyZWN0bHksIG9mIGNvdXJzZSkuCgpTbywgaW4gc3VtbWFyeTogSSYjMzk7bSB0aGlua2luZyBpdCYjMzk7cyBhIG11bHRpLWxheWVyZWQgZGVwZW5kZW5jeS4gQ29yZSBibG9jayBsYXllciAocXVldWUgbWFuYWdlbWVudCwgZ2VuZXJpYyBibG9jayBkZXZpY2UgaW50ZXJmYWNlcyksIGNoYXJhY3RlciBkZXZpY2UgZnJhbWV3b3JrLCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGFyZSBkZWZpbml0ZWx5IG9uIHRoZSBsaXN0LiBQb3NzaWJseSBhbHNvIHNvbWUgbmV0d29ya2luZyBjb21wb25lbnRzLCBkZXBlbmRpbmcgb24gaG93IGBCTEtfREVWX1VCTEtgIGlzIGltcGxlbWVudGVkIGFuZCB1c2VkLiBJIHdvdWxkIHByb2JhYmx5IGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRvIGNvbmZpcm0gdGhlIGNvbmNyZXRlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9Nj1tZW51Y29uZmlnIEJMS19ERVZcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtCbG9jayBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6ODpcdGRlcGVuZHMgb24gQkxPQ0tcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTIyPWNvbmZpZyBCTEtfREVWX0ZEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtOb3JtYWwgZmxvcHB5IGRpc2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI0Olx0ZGVwZW5kcyBvbiBBUkNIX01BWV9IQVZFX1BDX0ZEQ1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zNz1jb25maWcgQkxLX0RFVl9GRF9SQVdDTURcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgcmF3IGZsb3BweSBkaXNrIGNvbW1hbmRzIChERVBSRUNBVEVEKVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjM5Olx0ZGVwZW5kcyBvbiBCTEtfREVWX0ZEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNDAtXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTUzPWNvbmZpZyBBTUlHQV9GTE9QUFlcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O0FtaWdhIGZsb3BweSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NTU6XHRkZXBlbmRzIG9uIEFNSUdBXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNTYtXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9NTc9Y29uZmlnIEFUQVJJX0ZMT1BQWVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTU4LVx0dHJpc3RhdGUgXCYjMzQ7QXRhcmkgZmxvcHB5IHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo1OTpcdGRlcGVuZHMgb24gQVRBUklcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy02MC1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02MT1jb25maWcgTUFDX0ZMT1BQWVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTYyLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgUG93ZXJNYWMgZmxvcHB5XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6NjM6XHRkZXBlbmRzIG9uIFBQQ19QTUFDIFx1MDAyNlx1MDAyNiAhUFBDX1BNQUM2NFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTY0LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02OD1jb25maWcgQkxLX0RFVl9TV0lNXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNjktXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBTV0lNIE1hY2ludG9zaCBmbG9wcHlcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo3MDpcdGRlcGVuZHMgb24gTTY4SyBcdTAwMjZcdTAwMjYgTUFDIFx1MDAyNlx1MDAyNiAhSElHSE1FTVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTcxLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz03NT1jb25maWcgQU1JR0FfWjJSQU1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03Ni1cdHRyaXN0YXRlIFwmIzM0O0FtaWdhIFpvcnJvIElJIHJhbWRpc2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBaT1JST1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTc4LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz04Nj1jb25maWcgTjY0Q0FSVFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg3LVx0Ym9vbCBcJiMzNDtONjQgY2FydCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6ODg6XHRkZXBlbmRzIG9uIE1BQ0hfTklOVEVORE82NFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz05NT1jb25maWcgR0RST01cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05Ni1cdHRyaXN0YXRlIFwmIzM0O1NFR0EgRHJlYW1jYXN0IEdELVJPTSBkcml2ZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjk3Olx0ZGVwZW5kcyBvbiBTSF9EUkVBTUNBU1RcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05OC1cdHNlbGVjdCBDRFJPTVxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xMTE9Y29uZmlnIEJMS19ERVZfVUJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTEyLVx0Ym9vbCBcJiMzNDtWaXJ0dWFsIGJsb2NrIGRldmljZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjExMzpcdGRlcGVuZHMgb24gVU1MXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTE0LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xMjA9Y29uZmlnIEJMS19ERVZfVUJEX1NZTkNcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xMjEtXHRib29sIFwmIzM0O0Fsd2F5cyBkbyBzeW5jaHJvbm91cyBkaXNrIElPIGZvciBVQkRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxMjI6XHRkZXBlbmRzIG9uIEJMS19ERVZfVUJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xNzk9Y29uZmlnIEJMS19ERVZfTE9PUF9NSU5fQ09VTlRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xODAtXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGxvb3AgZGV2aWNlcyB0byBwcmUtY3JlYXRlIGF0IGluaXQgdGltZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjE4MTpcdGRlcGVuZHMgb24gQkxLX0RFVl9MT09QXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTgyLVx0ZGVmYXVsdCA4XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTE5Nj1jb25maWcgQkxLX0RFVl9OQkRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTctXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGJsb2NrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk4Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTktXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI0Mz1jb25maWcgQkxLX0RFVl9SQU1fQ09VTlRcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjQ1LVx0ZGVmYXVsdCBcJiMzNDsxNlwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI0NjpcdGRlcGVuZHMgb24gQkxLX0RFVl9SQU1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNDctXHRoZWxwXG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI1Mj1jb25maWcgQkxLX0RFVl9SQU1fU0laRVxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1My1cdGludCBcJiMzNDtEZWZhdWx0IFJBTSBkaXNrIHNpemUgKGtieXRlcylcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNTQ6XHRkZXBlbmRzIG9uIEJMS19ERVZfUkFNXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjU1LVx0ZGVmYXVsdCBcJiMzNDs0MDk2XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI2MD1jb25maWcgQVRBX09WRVJfRVRIXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYxLVx0dHJpc3RhdGUgXCYjMzQ7QVRBIG92ZXIgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjI2MjpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYzLVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yNjc9Y29uZmlnIFNVTlZEQ1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI2OC1cdHRyaXN0YXRlIFwmIzM0O1N1biBWaXJ0dWFsIERpc2sgQ2xpZW50IHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNjk6XHRkZXBlbmRzIG9uIFNVTl9MRE9NU1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3MC1cdGhlbHBcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9Mjc2PWNvbmZpZyBYRU5fQkxLREVWX0ZST05URU5EXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjc3LVx0dHJpc3RhdGUgXCYjMzQ7WGVuIHZpcnR1YWwgYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNzg6XHRkZXBlbmRzIG9uIFhFTlxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI3OS1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yODY9Y29uZmlnIFhFTl9CTEtERVZfQkFDS0VORFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI4Ny1cdHRyaXN0YXRlIFwmIzM0O1hlbiBibG9jay1kZXZpY2UgYmFja2VuZCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyODg6XHRkZXBlbmRzIG9uIFhFTl9CQUNLRU5EXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjg5LVx0aGVscFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMDc9Y29uZmlnIFZJUlRJT19CTEtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMDgtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gYmxvY2sgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzA5Olx0ZGVwZW5kcyBvbiBWSVJUSU9cbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMTAtXHRzZWxlY3QgU0dfUE9PTFxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMTU9Y29uZmlnIEJMS19ERVZfUkJEXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzE2LVx0dHJpc3RhdGUgXCYjMzQ7UmFkb3MgYmxvY2sgZGV2aWNlIChSQkQpXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzE3Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBCTE9DS1xuZHJpdmVycy9ibG9jay9LY29uZmlnLTMxOC1cdHNlbGVjdCBDRVBIX0xJQlxuLS1cbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMzc9Y29uZmlnIEJMS0RFVl9VQkxLX0xFR0FDWV9PUENPREVTXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzM4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGxlZ2FjeSBjb21tYW5kIG9wY29kZVwmIzM0O1xuZHJpdmVycy9ibG9jay9LY29uZmlnOjMzOTpcdGRlcGVuZHMgb24gQkxLX0RFVl9VQkxLXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzQwLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9ibG9jay9LY29uZmlnPTM1Nj1jb25maWcgQkxLX0RFVl9aT05FRF9MT09QXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzU3LVx0dHJpc3RhdGUgXCYjMzQ7Wm9uZWQgbG9vcGJhY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozNTg6XHRkZXBlbmRzIG9uIEJMS19ERVZfWk9ORURcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNTktXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDY3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBCTEtfREVWX1VCTEsgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYEJMS19ERVZfVUJMS2AuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQgb24gdGhlIHN1cmZhY2Ug4oCTIGl0IGRvZXNuJiMzOTt0IGV4cGxpY2l0bHkgYGRlcGVuZCBvbmAgYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgYmFzZSByZXF1aXJlbWVudHMgd2UmIzM5O2QgZXhwZWN0OiBgQkxLX0RFVmAgYW5kIGBCTE9DS2AuIFRoYXQmIzM5O3MgYSBjb21tb24gcGF0dGVybiwgYW5kIHVzdWFsbHkgYSBzaWduIG9mIGEgd2VsbC1kZWZpbmVkLCBtb2R1bGFyIGNvbXBvbmVudC4KCkJ1dCB3YWl0IGEgbWludXRlLCBiZWZvcmUgSSBtb3ZlIG9uLCBJIHNob3VsZCBhbHdheXMgYmUgbWV0aWN1bG91cyBhYm91dCB0aGlzIHN0dWZmLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgQkxLX0RFVl9VQkxLYCBkZWZpbml0aW9uIGFnYWluLiBJdCYjMzk7cyBlYXN5IHRvIG1pc3MgYSBzdWJ0bGV0eSBvciBhbiBpbmRpcmVjdCBkZXBlbmRlbmN5IGluIHRoZXNlIGNvbmZpZ3VyYXRpb25zLCBhbmQgYXNzdW1wdGlvbnMgY2FuIGJlIGRhbmdlcm91cy4gTmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUmIzM5O3Mgbm8gaGlkZGVuIGNvbm5lY3Rpb24gSSYjMzk7bSBtaXNzaW5nLiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkgZGlkbiYjMzk7dCBtaXNzIHNvbWV0aGluZy4gT2theSwgbGV0IG1lIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX1VCTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTMxNT1jb25maWcgQkxLX0RFVl9SQkRcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI3LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMyODpjb25maWcgQkxLX0RFVl9VQkxLXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI5LVx0dHJpc3RhdGUgXCYjMzQ7VXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQzNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGxpbmVzIGFyb3VuZCBgY29uZmlnIEJMS19ERVZfVUJMS2AsIGRpc3RpbGxlZCB0aHJvdWdoIGFuIGV4cGVydCBsZW5zOgoKKipEaXZpbmcgaW50byB0aGUgdWJsayBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBCTEtfREVWX1VCTEtgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGlzIHBhcnRpY3VsYXIgc2V0dGluZyBiZWNhdXNlIGl0JiMzOTtzIHRoZSBVc2VyLVNwYWNlIEJsb2NrIExheWVyIChVQkxLKSwgYSBwcmV0dHkgaW50ZXJlc3RpbmcgaW50ZXJmYWNlLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIgYmxvY2sgZGV2aWNlIHN1YnN5c3RlbS4gSSYjMzk7bSBsaWtlbHkgd2FudGluZyB0byBrbm93IGl0cyBkZXBlbmRlbmN5IG9uIG90aGVyIGJsb2NrIGRldmljZSBjb21wb25lbnRzLCBzdWNoIGFzIHRoZSBnZW5lcmljIGJsb2NrIGxheWVyIGFuZCBhbnkgc3BlY2lmaWMgSS9PIHNjaGVkdWxlciBzZXR1cHMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIEkgbmVlZCB0byBlbnN1cmUgYXJlIHNldCBmb3IgdWJsayB0byBmdW5jdGlvbiBhcyBpbnRlbmRlZD8gSSYjMzk7bSBjaGVja2luZyBpZiB0aGlzIGlzIGp1c3QgdGhlICplbmFibGUqIGZsYWcsIG9yIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBvcHRpb25zIGxpa2UgbnVtYmVyIG9mIHF1ZXVlcywgZmVhdHVyZXMsIG9yIHRoZSBkZWZhdWx0IHNpemVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW50ZXJmYWNlLiBJJiMzOTtsbCBsaWtlbHkgbmVlZCB0byBxdWlja2x5IHJldmlldyB0aGUga2VybmVsIGRvY3VtZW50YXRpb24gb3IgY29tbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3B0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBmb3IgZGV2aWNlIG1hbmFnZW1lbnQgYW5kIGhvdyBpdCBpbXBhY3RzIHN5c3RlbSByZXNvdXJjZSB1dGlsaXphdGlvbi4gSSYjMzk7bSBhbHNvIGFudGljaXBhdGluZyBhbnkgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgYXJvdW5kIGFsbG93aW5nIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGRpcmVjdGx5IGludGVyYWN0IHdpdGggYmxvY2sgZGV2aWNlcywgYW5kIHRodXMgYW55IGFzc29jaWF0ZWQga2VybmVsIGhhcmRlbmluZyBvcHRpb25zIHRoYXQgSSBzaG91bGQgYmUgbG9va2luZyBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMjU6XHRcbiAzMjY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAzMjc6XHRcbiAzMjg6XHRjb25maWcgQkxLX0RFVl9VQkxLXG4gMzI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXCYjMzQ7XG4gMzMwOlx0XHRzZWxlY3QgSU9fVVJJTkdcbiAzMzE6XHRcdGhlbHBcbiAzMzI6XHRcdCAgaW9fdXJpbmcgYmFzZWQgdXNlcnNwYWNlIGJsb2NrIGRyaXZlci4gVG9nZXRoZXIgd2l0aCB1YmxrIHNlcnZlciwgdWJsa1xuIDMzMzpcdFx0ICBoYXMgYmVlbiB3b3JraW5nIHdlbGwsIGJ1dCBpbnRlcmZhY2Ugd2l0aCB1c2Vyc3BhY2Ugb3IgY29tbWFuZCBkYXRhXG4gMzM0Olx0XHQgIGRlZmluaXRpb24gaXNuJiMzOTt0IGZpbmFsaXplZCB5ZXQsIGFuZCBtaWdodCBjaGFuZ2UgYWNjb3JkaW5nIHRvIGZ1dHVyZVxuIDMzNTpcdFx0ICByZXF1aXJlbWVudCwgc28gbWFyayBpcyBhcyBleHBlcmltZW50YWwgbm93LlxuIDMzNjpcdFxuIDMzNzpcdGNvbmZpZyBCTEtERVZfVUJMS19MRUdBQ1lfT1BDT0RFU1xuIDMzODpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGxlZ2FjeSBjb21tYW5kIG9wY29kZVwmIzM0O1xuIDMzOTpcdFx0ZGVwZW5kcyBvbiBCTEtfREVWX1VCTEtcbiAzNDA6XHRcdGRlZmF1bHQgeVxuIDM0MTpcdFx0aGVscFxuIDM0MjpcdFx0ICB1YmxrIGRyaXZlciBzdGFydGVkIHRvIHRha2UgcGxhaW4gY29tbWFuZCBlbmNvZGluZywgd2hpY2ggdHVybnMgb3V0XG4gMzQzOlx0XHQgIG9uZSBiYWQgd2F5LiBUaGUgdHJhZGl0aW9uYWwgaW9jdGwgY29tbWFuZCBvcGNvZGUgZW5jb2RlcyBtb3JlXG4gMzQ0Olx0XHQgIGluZm8gYW5kIGJhc2ljYWxseSBkZWZpbmVzIGVhY2ggY29kZSB1bmlxdWVseSwgc28gb3Bjb2RlIGNvbmZsaWN0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEzOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDcxCgkJCQkJCQlvdXRwdXQ6IDE5NAoJCQkJCQkJdGhvdWdodHM6IDgwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgVUJMSyBTaG1lbSBSZW1vdmFsIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBkZXBlbmRlbmN5IHN0YW5kcG9pbnQsIGBCTEtfREVWX1VCTEtgIHNlZW1zIHRvIGJlIHRoZSBrZXksIGFuZCBpdCBkaXJlY3RseSBzZWxlY3RzIGBJT19VUklOR2AuIFNpbmNlIHRoZXJlIGFyZSBubyBvdGhlciBvYnZpb3VzIGRlcGVuZGVuY2llcyBiZXlvbmQgYEJMT0NLYCwgYEJMS19ERVZfVUJMS2Agc2hvdWxkIHN1ZmZpY2UgZm9yIHRlc3RpbmcgdGhpcyBwYXRjaC4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIGNsZWFyIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW5zaWRlIGEgc3BpbmxvY2ssIHdoaWNoIGlzIGdlbmVyYWxseSBhIGdvb2QgcHJhY3RpY2UgZm9yIHBlcmZvcm1hbmNlIGFuZCBhdm9pZGluZyBwb3RlbnRpYWwgZGVhZGxvY2tzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCwgYSBmdW5jdGlvbiByZWFjaGVkIHRocm91Z2ggdGhlc2UgcGF0aHM6IGB1YmxrX2N0cmxfdXJpbmdfY21kYCAtJmd0OyBgdWJsa19jdHJsX3VucmVnX2J1ZmAgLSZndDsgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgLSZndDsgYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCwgYXMgd2VsbCBhcyBgdWJsa19idWZfY2xlYW51cGAgLSZndDsgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgLSZndDsgYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYC4gVGhlIHNlY29uZCBwYXRoIGludm9sdmVzIGB1YmxrX2J1Zl9jbGVhbnVwYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHVibGtfY2Rldl9yZWxgLCB0aGUgcmVsZWFzZSBmdW5jdGlvbiBmb3IgdGhlIGNoYXJhY3RlciBkZXZpY2UuCgpCYXNlZCBvbiB0aGlzLCBJJiMzOTttIG1hcmtpbmcgaXQgZm9yIGZ1enppbmcgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYHVibGtfY3RybF91cmluZ19jbWRgLCBgdWJsa19jdHJsX3VucmVnX2J1ZmAsIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCBhbmQgYHVibGtfYnVmX2NsZWFudXBgLiBJIHdpbGwgZW5hYmxlIHRoZSBgQkxLX0RFVl9VQkxLYCBjb25maWd1cmF0aW9uIG9wdGlvbi4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIHRoZSBpb191cmluZyBjb21tYW5kIGhhbmRsZXJzLiBJdCBsb29rcyBsaWtlIGB1YmxrX2N0cmxfdXJpbmdfY21kYCBpcyB0aGUgcHJpbWFyeSBoYW5kbGVyIHZpYSBgdWJsa19jdGxfZm9wcy51cmluZ19jbWQgPSB1YmxrX2N0cmxfdXJpbmdfY21kYC4gVGhlcmUmIzM5O3MgYWxzbyBgdWJsa19jaF91cmluZ19jbWRgIGZvciB0aGUgY2hhbm5lbCBkZXZpY2UsIGJ1dCB0aGUgcGF0Y2ggaXMgdGFyZ2V0aW5nIHRoZSBmb3JtZXIuIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgaXMgY2FsbGVkIGJ5IGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBib3RoIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCAod2hpY2ggY29tZXMgZnJvbSBgdWJsa19jdHJsX3VyaW5nX2NtZGApIGFuZCBgdWJsa19idWZfY2xlYW51cGAgKGZyb20gdGhlIGNoYXJhY3RlciBkZXZpY2UgcmVsZWFzZSkuCgpPa2F5LCBldmVyeXRoaW5nIHNlZW1zIGNvbnNpc3RlbnQgYW5kIHdlbGwtdW5kZXJzdG9vZC4gSSYjMzk7bSByZWFkeSB0byBwcm9jZWVkIHdpdGggdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTM6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfY3RybF91cmluZ19jbWQmIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3VucmVnX2J1ZiYjMzQ7LAogICAgJiMzNDt1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7X191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7dWJsa19idWZfY2xlYW51cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhbiB4YXJyYXkgd2l0aCBhIGZpeGVkLXNpemUgYXJyYXkgaW4gYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCB0byBhdm9pZCBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHVibGsgZHJpdmVyLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyAoYHVibGtfY3RybF91cmluZ19jbWRgIC1cdTAwM2UgYHVibGtfY3RybF91bnJlZ19idWZgKSBhbmQgZGV2aWNlIGNsZWFudXAgKGB1YmxrX2NkZXZfcmVsYCAtXHUwMDNlIGB1YmxrX2J1Zl9jbGVhbnVwYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfVUJMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VibGtfY3RybF91cmluZ19jbWQmIzM0OywKICAgICYjMzQ7dWJsa19jdHJsX3VucmVnX2J1ZiYjMzQ7LAogICAgJiMzNDt1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7X191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMmIzM0OywKICAgICYjMzQ7dWJsa19idWZfY2xlYW51cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhbiB4YXJyYXkgd2l0aCBhIGZpeGVkLXNpemUgYXJyYXkgaW4gYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCB0byBhdm9pZCBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHVibGsgZHJpdmVyLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyAoYHVibGtfY3RybF91cmluZ19jbWRgIC1cdTAwM2UgYHVibGtfY3RybF91bnJlZ19idWZgKSBhbmQgZGV2aWNlIGNsZWFudXAgKGB1YmxrX2NkZXZfcmVsYCAtXHUwMDNlIGB1YmxrX2J1Zl9jbGVhbnVwYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozNzo0Mi4xNDc5MDUxMTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDMyODE4NzM2MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9VQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWJsa19jdHJsX3VyaW5nX2NtZFwiLFxuICAgIFwidWJsa19jdHJsX3VucmVnX2J1ZlwiLFxuICAgIFwidWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzXCIsXG4gICAgXCJfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc1wiLFxuICAgIFwidWJsa19idWZfY2xlYW51cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIHhhcnJheSB3aXRoIGEgZml4ZWQtc2l6ZSBhcnJheSBpbiBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIHRvIGF2b2lkIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdWJsayBkcml2ZXIuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGlvX3VyaW5nIGNvbW1hbmRzIChgdWJsa19jdHJsX3VyaW5nX2NtZGAgLVxcdTAwM2UgYHVibGtfY3RybF91bnJlZ19idWZgKSBhbmQgZGV2aWNlIGNsZWFudXAgKGB1YmxrX2NkZXZfcmVsYCAtXFx1MDAzZSBgdWJsa19idWZfY2xlYW51cGApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozNzo0Mi4xNDc5MTAzMzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MTI5MzI1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIyNDViZWRhOTYzNTFjOWI0MzA1MmE4OWYxNjY1MDYwY2IyOGM2OGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMzozNzo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcXG5pbmRleCA2NmYxMGE0OTUwOWYyLi4wMGE2NjExNDYyNDNkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xcbkBAIC01NTE5LDM5ICs1NTE5LDM2IEBAIHN0YXRpYyB2b2lkIHVibGtfdW5waW5fcmFuZ2VfcGFnZXModW5zaWduZWQgbG9uZyBiYXNlX3BmbixcXG4gXFxuIC8qXFxuICAqIElubmVyIGxvb3A6IGVyYXNlIHVwIHRvIFVCTEtfUkVNT1ZFX0JBVENIIG1hdGNoaW5nIHJhbmdlcyB1bmRlclxcbi0gKiBtYXNfbG9jaywgY29sbGVjdGluZyB0aGVtIGludG8gYW4geGFycmF5LiBUaGVuIGRyb3AgdGhlIGxvY2sgYW5kXFxuLSAqIHVucGluIHBhZ2VzICsgZnJlZSByYW5nZXMgb3V0c2lkZSBzcGlubG9jayBjb250ZXh0LlxcbisgKiBtYXNfbG9jaywgY29sbGVjdGluZyB0aGUgcGFnZSByYW5nZXMgaW4gYSBmaXhlZC1zaXplIGFycmF5LiBUaGVuXFxuKyAqIGRyb3AgdGhlIGxvY2sgYW5kIHVucGluIHBhZ2VzICsgZnJlZSByYW5nZXMgb3V0c2lkZSBzcGlubG9jayBjb250ZXh0LlxcbiAgKlxcbiAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHRyZWUgd2FsayBjb21wbGV0ZWQsIGZhbHNlIGlmIG1vcmUgcmFuZ2VzIHJlbWFpbi5cXG4tICogWGFycmF5IGtleSBpcyB0aGUgYmFzZSBQRk4sIHZhbHVlIGVuY29kZXMgbnJfcGFnZXMgdmlhIHhhX21rX3ZhbHVlKCkuXFxuICAqL1xcbiAjZGVmaW5lIFVCTEtfUkVNT1ZFX0JBVENIXFx0NjRcXG4gXFxuK3N0cnVjdCB1YmxrX3VucGluX3JhbmdlIHtcXG4rXFx0dW5zaWduZWQgbG9uZyBiYXNlX3BmbjtcXG4rXFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcztcXG4rfTtcXG4rXFxuIHN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuIFxcdFxcdFxcdFxcdFxcdGludCBidWZfaW5kZXgsIGludCAqcmV0KVxcbiB7XFxuIFxcdE1BX1NUQVRFKG1hcywgXFx1MDAyNnViLVxcdTAwM2VidWZfdHJlZSwgMCwgVUxPTkdfTUFYKTtcXG4gXFx0c3RydWN0IHVibGtfYnVmX3JhbmdlICpyYW5nZTtcXG4tXFx0c3RydWN0IHhhcnJheSB0b191bnBpbjtcXG4tXFx0dW5zaWduZWQgbG9uZyBpZHg7XFxuK1xcdHN0cnVjdCB1YmxrX3VucGluX3JhbmdlIHRvX3VucGluW1VCTEtfUkVNT1ZFX0JBVENIXTtcXG4gXFx0dW5zaWduZWQgaW50IGNvdW50ID0gMDtcXG4rXFx0dW5zaWduZWQgaW50IGk7XFxuIFxcdGJvb2wgZG9uZSA9IGZhbHNlO1xcbi1cXHR2b2lkICplbnRyeTtcXG4tXFxuLVxcdHhhX2luaXQoXFx1MDAyNnRvX3VucGluKTtcXG4gXFxuIFxcdG1hc19sb2NrKFxcdTAwMjZtYXMpO1xcbiBcXHRtYXNfZm9yX2VhY2goXFx1MDAyNm1hcywgcmFuZ2UsIFVMT05HX01BWCkge1xcbi1cXHRcXHR1bnNpZ25lZCBsb25nIG5yO1xcbi1cXG4gXFx0XFx0aWYgKGJ1Zl9pbmRleCBcXHUwMDNlPSAwIFxcdTAwMjZcXHUwMDI2IHJhbmdlLVxcdTAwM2VidWZfaW5kZXggIT0gYnVmX2luZGV4KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdCpyZXQgPSAwO1xcbi1cXHRcXHRuciA9IG1hcy5sYXN0IC0gbWFzLmluZGV4ICsgMTtcXG4tXFx0XFx0aWYgKHhhX2Vycih4YV9zdG9yZShcXHUwMDI2dG9fdW5waW4sIG1hcy5pbmRleCxcXG4tXFx0XFx0XFx0XFx0ICAgIHhhX21rX3ZhbHVlKG5yKSwgR0ZQX0FUT01JQykpKVxcbi1cXHRcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0XFx0dG9fdW5waW5bY291bnRdLmJhc2VfcGZuID0gbWFzLmluZGV4O1xcbitcXHRcXHR0b191bnBpbltjb3VudF0ubnJfcGFnZXMgPSBtYXMubGFzdCAtIG1hcy5pbmRleCArIDE7XFxuIFxcdFxcdG1hc19lcmFzZShcXHUwMDI2bWFzKTtcXG4gXFx0XFx0a2ZyZWUocmFuZ2UpO1xcbiBcXHRcXHRpZiAoKytjb3VudCBcXHUwMDNlPSBVQkxLX1JFTU9WRV9CQVRDSClcXG5AQCAtNTU2MSw5ICs1NTU4LDkgQEAgc3RhdGljIGJvb2wgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4gdW5sb2NrOlxcbiBcXHRtYXNfdW5sb2NrKFxcdTAwMjZtYXMpO1xcbiBcXG4tXFx0eGFfZm9yX2VhY2goXFx1MDAyNnRvX3VucGluLCBpZHgsIGVudHJ5KVxcbi1cXHRcXHR1YmxrX3VucGluX3JhbmdlX3BhZ2VzKGlkeCwgeGFfdG9fdmFsdWUoZW50cnkpKTtcXG4tXFx0eGFfZGVzdHJveShcXHUwMDI2dG9fdW5waW4pO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgY291bnQ7IGkrKylcXG4rXFx0XFx0dWJsa191bnBpbl9yYW5nZV9wYWdlcyh0b191bnBpbltpXS5iYXNlX3BmbixcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHRvX3VucGluW2ldLm5yX3BhZ2VzKTtcXG4gXFxuIFxcdHJldHVybiBkb25lO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM3OjQyLjUzOTk3OTI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQyODg5NzkwODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfVUJMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVibGtfY3RybF91cmluZ19jbWRcIixcbiAgICBcInVibGtfY3RybF91bnJlZ19idWZcIixcbiAgICBcInVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc1wiLFxuICAgIFwiX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNcIixcbiAgICBcInVibGtfYnVmX2NsZWFudXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBhbiB4YXJyYXkgd2l0aCBhIGZpeGVkLXNpemUgYXJyYXkgaW4gYF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCB0byBhdm9pZCBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiBhIHNwaW5sb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHVibGsgZHJpdmVyLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBpb191cmluZyBjb21tYW5kcyAoYHVibGtfY3RybF91cmluZ19jbWRgIC1cXHUwMDNlIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCkgYW5kIGRldmljZSBjbGVhbnVwIChgdWJsa19jZGV2X3JlbGAgLVxcdTAwM2UgYHVibGtfYnVmX2NsZWFudXBgKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjI0NWJlZGE5NjM1MWM5YjQzMDUyYTg5ZjE2NjUwNjBjYjI4YzY4ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTM6Mzc6NDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbmluZGV4IDY2ZjEwYTQ5NTA5ZjIuLjAwYTY2MTE0NjI0M2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcbisrKyBiL2RyaXZlcnMvYmxvY2svdWJsa19kcnYuY1xuQEAgLTU1MTksMzkgKzU1MTksMzYgQEAgc3RhdGljIHZvaWQgdWJsa191bnBpbl9yYW5nZV9wYWdlcyh1bnNpZ25lZCBsb25nIGJhc2VfcGZuLFxuIFxuIC8qXG4gICogSW5uZXIgbG9vcDogZXJhc2UgdXAgdG8gVUJMS19SRU1PVkVfQkFUQ0ggbWF0Y2hpbmcgcmFuZ2VzIHVuZGVyXG4tICogbWFzX2xvY2ssIGNvbGxlY3RpbmcgdGhlbSBpbnRvIGFuIHhhcnJheS4gVGhlbiBkcm9wIHRoZSBsb2NrIGFuZFxuLSAqIHVucGluIHBhZ2VzICsgZnJlZSByYW5nZXMgb3V0c2lkZSBzcGlubG9jayBjb250ZXh0LlxuKyAqIG1hc19sb2NrLCBjb2xsZWN0aW5nIHRoZSBwYWdlIHJhbmdlcyBpbiBhIGZpeGVkLXNpemUgYXJyYXkuIFRoZW5cbisgKiBkcm9wIHRoZSBsb2NrIGFuZCB1bnBpbiBwYWdlcyArIGZyZWUgcmFuZ2VzIG91dHNpZGUgc3BpbmxvY2sgY29udGV4dC5cbiAgKlxuICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHJlZSB3YWxrIGNvbXBsZXRlZCwgZmFsc2UgaWYgbW9yZSByYW5nZXMgcmVtYWluLlxuLSAqIFhhcnJheSBrZXkgaXMgdGhlIGJhc2UgUEZOLCB2YWx1ZSBlbmNvZGVzIG5yX3BhZ2VzIHZpYSB4YV9ta192YWx1ZSgpLlxuICAqL1xuICNkZWZpbmUgVUJMS19SRU1PVkVfQkFUQ0hcdDY0XG4gXG4rc3RydWN0IHVibGtfdW5waW5fcmFuZ2Uge1xuK1x0dW5zaWduZWQgbG9uZyBiYXNlX3BmbjtcbitcdHVuc2lnbmVkIGxvbmcgbnJfcGFnZXM7XG4rfTtcbitcbiBzdGF0aWMgYm9vbCBfX3VibGtfc2htZW1fcmVtb3ZlX3JhbmdlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxuIFx0XHRcdFx0XHRpbnQgYnVmX2luZGV4LCBpbnQgKnJldClcbiB7XG4gXHRNQV9TVEFURShtYXMsIFx1MDAyNnViLVx1MDAzZWJ1Zl90cmVlLCAwLCBVTE9OR19NQVgpO1xuIFx0c3RydWN0IHVibGtfYnVmX3JhbmdlICpyYW5nZTtcbi1cdHN0cnVjdCB4YXJyYXkgdG9fdW5waW47XG4tXHR1bnNpZ25lZCBsb25nIGlkeDtcbitcdHN0cnVjdCB1YmxrX3VucGluX3JhbmdlIHRvX3VucGluW1VCTEtfUkVNT1ZFX0JBVENIXTtcbiBcdHVuc2lnbmVkIGludCBjb3VudCA9IDA7XG4rXHR1bnNpZ25lZCBpbnQgaTtcbiBcdGJvb2wgZG9uZSA9IGZhbHNlO1xuLVx0dm9pZCAqZW50cnk7XG4tXG4tXHR4YV9pbml0KFx1MDAyNnRvX3VucGluKTtcbiBcbiBcdG1hc19sb2NrKFx1MDAyNm1hcyk7XG4gXHRtYXNfZm9yX2VhY2goXHUwMDI2bWFzLCByYW5nZSwgVUxPTkdfTUFYKSB7XG4tXHRcdHVuc2lnbmVkIGxvbmcgbnI7XG4tXG4gXHRcdGlmIChidWZfaW5kZXggXHUwMDNlPSAwIFx1MDAyNlx1MDAyNiByYW5nZS1cdTAwM2VidWZfaW5kZXggIT0gYnVmX2luZGV4KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHQqcmV0ID0gMDtcbi1cdFx0bnIgPSBtYXMubGFzdCAtIG1hcy5pbmRleCArIDE7XG4tXHRcdGlmICh4YV9lcnIoeGFfc3RvcmUoXHUwMDI2dG9fdW5waW4sIG1hcy5pbmRleCxcbi1cdFx0XHRcdCAgICB4YV9ta192YWx1ZShuciksIEdGUF9BVE9NSUMpKSlcbi1cdFx0XHRnb3RvIHVubG9jaztcbitcdFx0dG9fdW5waW5bY291bnRdLmJhc2VfcGZuID0gbWFzLmluZGV4O1xuK1x0XHR0b191bnBpbltjb3VudF0ubnJfcGFnZXMgPSBtYXMubGFzdCAtIG1hcy5pbmRleCArIDE7XG4gXHRcdG1hc19lcmFzZShcdTAwMjZtYXMpO1xuIFx0XHRrZnJlZShyYW5nZSk7XG4gXHRcdGlmICgrK2NvdW50IFx1MDAzZT0gVUJMS19SRU1PVkVfQkFUQ0gpXG5AQCAtNTU2MSw5ICs1NTU4LDkgQEAgc3RhdGljIGJvb2wgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcbiB1bmxvY2s6XG4gXHRtYXNfdW5sb2NrKFx1MDAyNm1hcyk7XG4gXG4tXHR4YV9mb3JfZWFjaChcdTAwMjZ0b191bnBpbiwgaWR4LCBlbnRyeSlcbi1cdFx0dWJsa191bnBpbl9yYW5nZV9wYWdlcyhpZHgsIHhhX3RvX3ZhbHVlKGVudHJ5KSk7XG4tXHR4YV9kZXN0cm95KFx1MDAyNnRvX3VucGluKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGNvdW50OyBpKyspXG4rXHRcdHVibGtfdW5waW5fcmFuZ2VfcGFnZXModG9fdW5waW5baV0uYmFzZV9wZm4sXG4rXHRcdFx0XHQgICAgICAgdG9fdW5waW5baV0ubnJfcGFnZXMpO1xuIFxuIFx0cmV0dXJuIGRvbmU7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzc6NDIuNTM5OTgwMzNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODE4Mzg0NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgdWJsa19kcnYuYyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNgLCBzcGVjaWZpY2FsbHkgaG93IHRoZXkncmUgaGFuZGxpbmcgdW5waW5uaW5nIHJhbmdlcy4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIHJlcGxhY2VkIGFuIGB4YXJyYXlgIHdpdGggYSBmaXhlZC1zaXplIGFycmF5LCBgc3RydWN0IHVibGtfdW5waW5fcmFuZ2UgdG9fdW5waW5bVUJMS19SRU1PVkVfQkFUQ0hdYCwgd2l0aGluIHRoZSBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIG1vdGl2YXRpb246IHRoZXkncmUgZ2V0dGluZyByaWQgb2YgdGhlIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gdXNpbmcgYHhhX3N0b3JlYCB3aXRoIGBHRlBfQVRPTUlDYCAqaW5zaWRlIGEgc3BpbmxvY2sqLiBUaGF0J3MgYSBjbGFzc2ljIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSBpc3N1ZSwgYSBwb3RlbnRpYWwgZGVhZGxvY2sgc2NlbmFyaW8gaWYgaXQgZmFpbHMgb3IgYmVjb21lcyBjb250ZW5kZWQuIEdvb2QgbW92ZS5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGB1YmxrX2Rydi5jYC4gU2luY2UgaXQncyBhIHVzZXJzcGFjZSBibG9jayBkcml2ZXIsIEknbSBwcmV0dHkgc3VyZSBpdCdzIGNvbnRyb2xsZWQgYnkgYEJMS19ERVZfVUJMS2AsIHdoaWNoIGlzIHdoYXQgSSdkIGV4cGVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwNywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM3OjUwLjM1ODM2Nzg5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc4OTUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCTEtfREVWX1VCTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTMxNT1jb25maWcgQkxLX0RFVl9SQkRcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjctXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMyODpjb25maWcgQkxLX0RFVl9VQkxLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyOS1cXHR0cmlzdGF0ZSBcXFwiVXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMzc9Y29uZmlnIEJMS0RFVl9VQkxLX0xFR0FDWV9PUENPREVTXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMzOC1cXHRib29sIFxcXCJTdXBwb3J0IGxlZ2FjeSBjb21tYW5kIG9wY29kZVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzM5OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9VQkxLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTM0MC1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvYmxvY2svTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSArPSBybnVsbC9cXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlLTM5LVxcbmRyaXZlcnMvYmxvY2svTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX0JMS19ERVZfVUJMSylcXHRcXHRcXHQrPSB1YmxrX2Rydi5vXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZS00MS1vYmotJChDT05GSUdfQkxLX0RFVl9aT05FRF9MT09QKSArPSB6bG9vcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM3OjUwLjQwNDE2NDM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY2MjMzODExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBidWlsdCB3aXRoIGBCTEtfREVWX1VCTEtgLCB3aGljaCBpcyBpbXBvcnRhbnQgY29udGV4dC4gTXkgZm9jdXMgaXMgdGhlIGZ1bmN0aW9uIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICp1c2VkKiB3aXRoaW4gdGhlIHN5c3RlbS4gSXMgaXQgZXZlbiByZWFjaGFibGU/IElmIHNvLCB3aGF0IGFyZSB0aGUgcG90ZW50aWFsIGVudHJ5IHBvaW50cz8gSSdtIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBhbmQgdHJhY2VzIHRvIG1hcCBvdXQgdGhlIGNhbGwgcGF0aHMgdGhhdCBsZWFkIHRvIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuIFVuZGVyc3RhbmRpbmcgaXRzIHJlYWNoYWJpbGl0eSBpcyBjcnVjaWFsIGZvciBhc3Nlc3NpbmcgaXRzIGltcGFjdCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgb3IgbW9kaWZpY2F0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlcXVpcmVkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzQsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozNzo1Ny4wNjY1MDQ5MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNjAxMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTI5PXN0cnVjdCB1YmxrX3VucGluX3JhbmdlIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTMzLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTM0OnN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1MzUtXFx0XFx0XFx0XFx0XFx0aW50IGJ1Zl9pbmRleCwgaW50ICpyZXQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTU3ND1zdGF0aWMgaW50IHVibGtfc2htZW1fcmVtb3ZlX3JhbmdlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBpbnQgYnVmX2luZGV4KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzctXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1Nzg6XFx0d2hpbGUgKCFfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlcyh1YiwgYnVmX2luZGV4LCBcXHUwMDI2cmV0KSlcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3OS1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzc6NTcuMTEyNTY5NzA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzNzkzMzg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ2FsbCBIaWVyYXJjaHk6IGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgKipcblxuQWxyaWdodCwgSSdtIGRpdmluZyBpbnRvIHRoaXMgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgZnVuY3Rpb24uIEkgc2VlIGl0J3MgY2FsbGVkIGJ5IGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIGl0c2VsZi4uLiBhIGJpdCBvZiBhIGNpcmN1bGFyIHJlZmVyZW5jZSEgU2VlbXMgcmVkdW5kYW50Li4uIG9yIHBvdGVudGlhbGx5IGEgY2x1ZSB0byBhIGxvb3A/IEVpdGhlciB3YXksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSAqKnByaW1hcnkqKiBwb2ludHMgd2hlcmUgdGhpcyBmdW5jdGlvbiBnZXRzIGludm9rZWQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBlbnRyeSBwb2ludC4gTGV0J3Mgc2VlIHdoZXJlIHRoZSBvcmlnaW5hbCBjYWxsZXJzIG9mIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIHJlc2lkZS4gS25vd2luZyB0aGUgY2FsbCBjaGFpbiBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgaW50ZW5kZWQgcHVycG9zZSBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuIFNvLCB0aW1lIHRvIGRvIHNvbWUgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM4OjAxLjM1MDUwNzIxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzYyMTE3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTI5PXN0cnVjdCB1YmxrX3VucGluX3JhbmdlIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTMzLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTM0OnN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1MzUtXFx0XFx0XFx0XFx0XFx0aW50IGJ1Zl9pbmRleCwgaW50ICpyZXQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3My0gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTU3NDpzdGF0aWMgaW50IHVibGtfc2htZW1fcmVtb3ZlX3JhbmdlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBpbnQgYnVmX2luZGV4KVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTc1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTc3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTc4OlxcdHdoaWxlICghX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXModWIsIGJ1Zl9pbmRleCwgXFx1MDAyNnJldCkpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1NzktXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTU4Mz1zdGF0aWMgaW50IHVibGtfY3RybF91bnJlZ19idWYoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTk3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTk4OlxcdHJldCA9IHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlcyh1YiwgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTk5LVxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU2MDY9c3RhdGljIHZvaWQgdWJsa19idWZfY2xlYW51cChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjA3LXtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTYwODpcXHR1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXModWIsIC0xKTtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTYwOS1cXHRtdHJlZV9kZXN0cm95KFxcdTAwMjZ1Yi1cXHUwMDNlYnVmX3RyZWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODowMS4zOTQxMzM0NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTA3MjM0NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBVYmxrIEJ1ZmZlciBVbnJlZ2lzdHJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIHVucmVnaXN0cmF0aW9uIHByb2Nlc3MgZm9yIFVibGsgYnVmZmVycy4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgdWJsa19jdHJsX3VucmVnX2J1ZmAsIGB1YmxrX2J1Zl9jbGVhbnVwYCwgYW5kIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLiBJIHNlZSB0aG9zZSBmdW5jdGlvbnMgYXJlIGludGVydHdpbmVkLCBhbmQgdGhhdCdzIHRoZSBrZXkuIEtub3dpbmcgdGhhdCwgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgYHVibGtfY3RybF91bnJlZ19idWZgIGJlaW5nIGNhbGxlZD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBmb3IgdGhpcyBmdW5jdGlvbiB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBidWZmZXIgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgaW4gVWJsay4gVGhhdCdzIHRoZSBmaXJzdCBwbGFjZSB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYzMCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM4OjEwLjUwMTM3MDQ2MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2NTIxNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWJsa19jdHJsX3VucmVnX2J1ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU1NzQ9c3RhdGljIGludCB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXMoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgaW50IGJ1Zl9pbmRleClcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTgyLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTgzOnN0YXRpYyBpbnQgdWJsa19jdHJsX3VucmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTg0LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU3NjA9c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01ODU0LVxcdGNhc2UgVUJMS19DTURfVU5SRUdfQlVGOlxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1ODU1OlxcdFxcdHJldCA9IHVibGtfY3RybF91bnJlZ19idWYodWIsIFxcdTAwMjZoZWFkZXIpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01ODU2LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODoxMC41NDkwMjgwMjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY0MTcyNjc2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB1YmxrX2N0cmxfdXJpbmdfY21kIENvbW1hbmQgSGFuZGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB1YmxrX2N0cmxfdXJpbmdfY21kYCwgd2hpY2ggaGFuZGxlcyBpb191cmluZyBjb21tYW5kcyBmb3IgdGhlIHVibGsgY29udHJvbCBkZXZpY2UuIFRoaXMgaXMgdGhlIGVudHJ5IHBvaW50LCBzbyBpdCdzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLiBUaGUgY29kZSBjbGVhcmx5IHNob3dzIHRoYXQgaXQgaXMgcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLCBmcm9tIGEgZnVuY3Rpb25hbGl0eSBzdGFuZHBvaW50LlxuXG5Ob3csIHRoaXMgcGF0Y2ggSSdtIHJldmlld2luZyByZXBsYWNlcyBhbiB4YXJyYXkgd2l0aCBhIGZpeGVkLXNpemUgYXJyYXkuIFRoZSBnb2FsIGhlcmUgaXMgcHJldHR5IGNsZWFyOiBlbGltaW5hdGUgbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIGEgc3BpbmxvY2suIFRoYXQncyBhIHNvbGlkIG9wdGltaXphdGlvbiwgYXMgbG9ja2luZyBjYW4gaW50cm9kdWNlIGxhdGVuY3kgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGxvY2sgY29udGVudGlvbiBpc3N1ZXMuIEl0J3MgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZSwgc28gSSBuZWVkIHRvIHZlcmlmeSBpdHMgaW1wYWN0IHRob3JvdWdobHkuXG5cbkhtbSwgSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGNyaXRpY2FsIGVudHJ5IHBvaW50cyB0byBjb25zaWRlci4gSSBhbSBnb2luZyB0byBoYXZlIGEgbG9vayBhdCBgdWJsa19idWZfY2xlYW51cGAuIEkgYmVsaWV2ZSBpdCdzIGNhbGxlZCBmcm9tIGB1YmxrX3JlbW92ZWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBzbyBJIHNob3VsZCBjaGVjayB0aGlzIGNvZGUgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODoyNi45NjYyOTk1OTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MTEyODk4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1YmxrX2J1Zl9jbGVhbnVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzU5PXN0YXRpYyBib29sIHVibGtfdHJ5X2J1Zl9tYXRjaChzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2MC1cXHRcXHRcXHRcXHQgIHUzMiAqYnVmX2lkeCwgdTMyICpidWZfb2ZmKTtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzYxOnN0YXRpYyB2b2lkIHVibGtfYnVmX2NsZWFudXAoc3RydWN0IHVibGtfZGV2aWNlICp1Yik7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2Mi1zdGF0aWMgdm9pZCB1YmxrX2Fib3J0X3F1ZXVlKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEpO1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQzMjI9c3RhdGljIHZvaWQgdWJsa19jZGV2X3JlbChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDMyNS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDMyNjpcXHR1YmxrX2J1Zl9jbGVhbnVwKHViKTtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDMyNy1cXHRibGtfbXFfZnJlZV90YWdfc2V0KFxcdTAwMjZ1Yi1cXHUwMDNldGFnX3NldCk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTU4Mz1zdGF0aWMgaW50IHVibGtfY3RybF91bnJlZ19idWYoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjA1LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NjA2OnN0YXRpYyB2b2lkIHVibGtfYnVmX2NsZWFudXAoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTYwNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM4OjI3LjMxNzQzMzYyNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQ0OTQyOTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipEZWNvbnN0cnVjdGluZyB0aGUgQ29udHJvbCBEZXZpY2UgRW50cnkgUG9pbnQqKlxuXG5Pa2F5LCBzbyBJJ20gemVyb2luZyBpbiBvbiBgdWJsa19jdHJsX3VyaW5nX2NtZGAgYXMgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50IGhlcmUuIFRoYXQncyB3aGVyZSB0aGUgY29udHJvbCBwbGFuZSBpbnRlcmFjdGlvbnMgd2lsbCBiZS4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBjb25maXJtIGlzIGl0cyBzY29wZS4gQWxyaWdodCwgaXQncyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggcHJvYmFibHkgbWVhbnMgaXQncyBsaW1pdGVkIGluIHNjb3BlIGFuZCBvbmx5IHVzZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBtb2R1bGUuIFdhaXQgYSBzZWNvbmQuLi4gaXQncyB0aGUgYC51cmluZ19jbWRgIGNhbGxiYWNrLiBHb3QgaXQsIHRoYXQncyB0aGUgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHJlcXVlc3RzIGNvbWluZyBpbiB2aWEgdGhlIGlvX3VyaW5nIGludGVyZmFjZSBmb3IgdGhlIGNvbnRyb2wgZGV2aWNlLiBUaGF0IGNsYXJpZmllcyBpdHMgcHVycG9zZSBzaWduaWZpY2FudGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODgwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzg6MzEuNjYyMzc5NjU3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc4NDc5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1YmxrX2N0cmxfdXJpbmdfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTYxND1zdGF0aWMgYm9vbCB1YmxrX3RyeV9idWZfbWF0Y2goc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjY3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NjY4OnN0YXRpYyBpbnQgdWJsa19jdHJsX3VyaW5nX2NtZF9wZXJtaXNzaW9uKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU2NjktXFx0XFx0dTMyIGNtZF9vcCwgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzQ2LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NzQ3OnN0YXRpYyBib29sIHVibGtfY3RybF91cmluZ19jbWRfbWF5X3NsZWVwKHUzMiBjbWRfb3ApXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NDgte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NTktXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU3NjA6c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTc2MS1cXHRcXHR1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTc3MC1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTc3MTpcXHRpZiAodWJsa19jdHJsX3VyaW5nX2NtZF9tYXlfc2xlZXAoY21kX29wKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NzcyLVxcdCAgICBpc3N1ZV9mbGFncyBcXHUwMDI2IElPX1VSSU5HX0ZfTk9OQkxPQ0spXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTgwMC1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTgwMTpcXHRcXHRyZXQgPSB1YmxrX2N0cmxfdXJpbmdfY21kX3Blcm1pc3Npb24odWIsIGNtZF9vcCwgXFx1MDAyNmhlYWRlcik7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU4MDItXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01ODcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVibGtfY3RsX2ZvcHMgPSB7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU4NzItXFx0Lm9wZW5cXHRcXHQ9IG5vbnNlZWthYmxlX29wZW4sXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU4NzM6XFx0LnVyaW5nX2NtZCAgICAgID0gdWJsa19jdHJsX3VyaW5nX2NtZCxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTg3NC1cXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODozMS43MDgxNjkxNTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA1MDE2Mjk4MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVYmxrIERyaXZlciBDYWxsYmFja3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYHVibGtfY3RybF91cmluZ19jbWRgIGZ1bmN0aW9uLCBhbmQgeWVzLCB0aGF0J3MgZGVmaW5pdGVseSB0aGUgYC51cmluZ19jbWRgIGNhbGxiYWNrLiBJJ20gbm90aW5nIHRoYXQgaXQncyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaXMgYSBrZXkgZGV0YWlsLiBUaGUgaW1wbGljYXRpb24gaGVyZSBpcyB0aGF0IHdlIGNhbid0IGRpcmVjdGx5IGFjY2VzcyBpdCBvdXRzaWRlIG9mIGl0cyBjb21waWxhdGlvbiB1bml0LCBhbHRob3VnaCB3ZSBhcmUgZWZmZWN0aXZlbHkgdXNpbmcgaXQgYXMgYW4gZW50cnkgcG9pbnQuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIGFsdGVybmF0aXZlczogaXMgdGhlcmUgYSBub24tc3RhdGljLCBtb3JlIGFjY2Vzc2libGUgZnVuY3Rpb24gd2UgY291bGQgdXRpbGl6ZSBpbnN0ZWFkPyBJZGVhbGx5LCB3ZSdkIHByZWZlciBzb21ldGhpbmcgbGVzcyByZXN0cmljdGl2ZS5cblxuTGV0J3Mgc2VlLi4uaWYgdGhlcmUgaXNuJ3QgYSBub24tc3RhdGljIHZhcmlhbnQgcmVhZGlseSBhdmFpbGFibGUgd2l0aGluIHRoZSByZWxldmFudCBwYXJ0cyBvZiB0aGUgY29kZSwgdGhlbiwgd29yc3QgY2FzZSwgd2UnbGwganVzdCBoYXZlIHRvIGRlYWwgd2l0aCB0aGUgc3RhdGljIG5hdHVyZSBvZiBgdWJsa19jdHJsX3VyaW5nX2NtZGAgb3IgcGVyaGFwcyBjb25zaWRlciBgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCBvciBldmVuIHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLlxuXG5BaCwgYnV0IGhvbGQgb24sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjbGVhcjogKmB1YmxrX2N0cmxfdXJpbmdfY21kYCBpcyBzdGF0aWMqISBJJ20gY29uZmlybWluZyB0aGF0IGJlY2F1c2UgaXQncyBnb2luZyB0byBkcml2ZSBvdXIgZGVzaWduIGRlY2lzaW9ucyBpbiB0aGlzIGFyZWEuXG5cblNvLCBJIHRoaW5rIEknbGwgZ28gY2hlY2sgdGhlIGZpbGUgYGRyaXZlcnMvYmxvY2svdWJsa19kcnYuY2AgdG8gc2VlIGlmIEkgY2FuIGZpbmQgYSBub24tc3RhdGljIGNhbmRpZGF0ZSB0aGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcxNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODo0Mi4yMDk4MDE3NjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTk1MzE0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IHVibGtfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzg6NDIuMjYzODA0MjIxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NDYxOTc5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ29uc2lkZXJpbmcgU3RhdGljIFZhcmlhYmxlIE5hbWluZyBpbiBhIFNwZWNpZmljIENvbnRleHQqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IG5hbWluZyBhIHN0YXRpYyBpbnRlZ2VyIHZhcmlhYmxlLCBsaWtlbHkgd2l0aGluIHRoZSBjb25maW5lcyBvZiBhIGtlcm5lbCBtb2R1bGUgb3Igc29tZSBzaW1pbGFyIGxvdy1sZXZlbCBjb2RlLiBJJ20gbGVhbmluZyB0b3dhcmQgYSBuYW1lIHRoYXQgaW5kaWNhdGVzIHNvbWUgbGV2ZWwgb2YgbG9jYWwgc2NvcGUgYW5kIHBlcnNpc3RlbmNlLiBcIlN0YXRpY1wiIGlzIHRoZSBrZXkgaGVyZS4gSSBuZWVkIHNvbWV0aGluZyB0aGF0J3MgY2xlYXJseSByZXByZXNlbnRhdGl2ZSBvZiB0aGUgZGF0YSwgdGhlIHVzZSBjYXNlLCBvciBpdHMgcHVycG9zZSB3aXRoaW4gdGhpcyBtb2R1bGUgb3Igc2VjdGlvbi4gSSdtIHF1aWNrbHkgZmlsdGVyaW5nIHRocm91Z2ggdGhlIG9idmlvdXMgY2hvaWNlcywgYW5kIEkndmUgYXJyaXZlZCBhdCB0aGUgdGhvdWdodCBvZiB1c2luZyBgXnN0YXRpYyBpbnQgdWJsa19gIG9yIGEgc2ltaWxhciBmb3JtYXQuIFRoZSBwcmVmaXggYHVibGtfYCBsaWtlbHkgcmVmZXJzIHRvIGEgc3BlY2lmaWMgc3Vic3lzdGVtIG9yIGZ1bmN0aW9uYWxpdHkuIFRoYXQga2luZCBvZiBuYW1pbmcgY29udmVudGlvbiBoYXMgaXRzIG1lcml0cyDigJMgaXQgaGVscHMgd2l0aCBzY29waW5nLCBhdm9pZGluZyBjb2xsaXNpb25zLCBhbmQgcXVpY2sgaWRlbnRpZmljYXRpb24gd2hlbiBkZWJ1Z2dpbmcgb3IgdHJhY2luZyB0aHJvdWdoIHRoZSBjb2RlLiBJIGFtIGNvbnNpZGVyaW5nIGBzdGF0aWNgIHRvIGVuc3VyZSB0aGF0IHRoZXJlIGlzIG5vIGNvbmZsaWN0cyBvciB2aXNpYmlsaXR5IGlzc3Vlcy4gVGhpcyBhbGxvd3MgbWUgdG8gdXNlIHRoZSBuYW1lIHdpdGhvdXQgYW55IHdvcnJpZXMgb2YgdW5pbnRlbmRlZCBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayBmb3IgZXhpc3RpbmcgY29udmVudGlvbnMgYW5kIHNlZSB3aGF0IG1ha2VzIHNlbnNlIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzIwOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM4OjQ5LjkxMDAwNTE1OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNzYxMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBpbnQgdWJsa19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay91YmxrX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01Mzg9c3RhdGljIERFRklORV9YQVJSQVkodWJsa196b25lZF9yZXBvcnRfZGVzY3MpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MzktXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU0MDpzdGF0aWMgaW50IHVibGtfem9uZWRfaW5zZXJ0X3JlcG9ydF9kZXNjKGNvbnN0IHN0cnVjdCByZXF1ZXN0ICpyZXEsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU0MS1cXHRcXHRzdHJ1Y3QgdWJsa196b25lZF9yZXBvcnRfZGVzYyAqZGVzYylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTM9c3RhdGljIHN0cnVjdCB1YmxrX3pvbmVkX3JlcG9ydF9kZXNjICp1YmxrX3pvbmVkX2dldF9yZXBvcnRfZGVzYyhcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTgtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1OTpzdGF0aWMgaW50IHVibGtfZ2V0X25yX3pvbmVzKGNvbnN0IHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU2MC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY2LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1Njc6c3RhdGljIGludCB1YmxrX3JldmFsaWRhdGVfZGlza196b25lcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01Njgte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3MS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTcyOnN0YXRpYyBpbnQgdWJsa19kZXZfcGFyYW1fem9uZWRfdmFsaWRhdGUoY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTczLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz02MDA9c3RhdGljIHZvaWQgKnVibGtfYWxsb2NfcmVwb3J0X2J1ZmZlcihzdHJ1Y3QgdWJsa19kZXZpY2UgKnVibGssXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNjI2LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo2Mjc6c3RhdGljIGludCB1YmxrX3JlcG9ydF96b25lcyhzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgc2VjdG9yX3Qgc2VjdG9yLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy02MjgtXFx0XFx0ICAgICAgdW5zaWduZWQgaW50IG5yX3pvbmVzLCBzdHJ1Y3QgYmxrX3JlcG9ydF96b25lc19hcmdzICphcmdzKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTcyND1zdGF0aWMgdm9pZCB1YmxrX3NldHVwX2lvZF96b25lZChzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTc2NC1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NzY1OnN0YXRpYyBpbnQgdWJsa19kZXZfcGFyYW1fem9uZWRfdmFsaWRhdGUoY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNzY2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz03NzA9c3RhdGljIHZvaWQgdWJsa19kZXZfcGFyYW1fem9uZWRfYXBwbHkoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy03NzMtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjc3NDpzdGF0aWMgaW50IHVibGtfcmV2YWxpZGF0ZV9kaXNrX3pvbmVzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTc3NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9ODMxPXN0YXRpYyB2b2lkIHVibGtfYmF0Y2hfZGVpbml0X2ZldGNoX2J1ZihzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTg0NS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6ODQ2OnN0YXRpYyBpbnQgdWJsa19iYXRjaF9mZXRjaF9wb3N0X2NxZShzdHJ1Y3QgdWJsa19iYXRjaF9mZXRjaF9jbWQgKmZjbWQsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTg0Ny1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBpb19icl9zZWwgKnNlbCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz04OTQ9c3RhdGljIHZvaWQgdWJsa19kZXZfcGFyYW1fYmFzaWNfYXBwbHkoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy05MDMtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjkwNDpzdGF0aWMgaW50IHVibGtfaW50ZWdyaXR5X2ZsYWdzKHUzMiBmbGFncylcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtOTA1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy05MTgtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjkxOTpzdGF0aWMgaW50IHVibGtfaW50ZWdyaXR5X3BpX3R1cGxlX3NpemUodTggY3N1bV90eXBlKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy05MjAte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTkzND1zdGF0aWMgZW51bSBibGtfaW50ZWdyaXR5X2NoZWNrc3VtIHVibGtfaW50ZWdyaXR5X2NzdW1fdHlwZSh1OCBjc3VtX3R5cGUpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtOTUwLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo5NTE6c3RhdGljIGludCB1YmxrX3ZhbGlkYXRlX3BhcmFtcyhjb25zdCBzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy05NTIte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTEzMjc9c3RhdGljIHZvaWQgdWJsa19zdG9yZV9vd25lcl91aWRfZ2lkKHVuc2lnbmVkIGludCAqb3duZXJfdWlkLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTEzMzgtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjEzMzk6c3RhdGljIGludCB1YmxrX29wZW4oc3RydWN0IGdlbmRpc2sgKmRpc2ssIGJsa19tb2RlX3QgbW9kZSlcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMTM0MC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MjMwOT1zdGF0aWMgdm9pZCB1YmxrX2JhdGNoX3F1ZXVlX3JxcyhzdHJ1Y3QgcnFfbGlzdCAqcnFsaXN0KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTIzMzQtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjIzMzU6c3RhdGljIGludCB1YmxrX2luaXRfaGN0eChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgdm9pZCAqZHJpdmVyX2RhdGEsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTIzMzYtXFx0XFx0dW5zaWduZWQgaW50IGhjdHhfaWR4KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTIzNjA9c3RhdGljIHZvaWQgdWJsa19xdWV1ZV9yZWluaXQoc3RydWN0IHVibGtfZGV2aWNlICp1Yiwgc3RydWN0IHVibGtfcXVldWUgKnVicSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMzkyLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoyMzkzOnN0YXRpYyBpbnQgdWJsa19jaF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMzk0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0yNTE2PXN0YXRpYyB2b2lkIHVibGtfY2hfcmVsZWFzZV93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNjE3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoyNjE4OnN0YXRpYyBpbnQgdWJsa19jaF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNjE5LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNjMzLS8qIG1hcCBwcmUtYWxsb2NhdGVkIHBlci1xdWV1ZSBjbWQgYnVmZmVyIHRvIHVibGtzcnYgZGFlbW9uICovXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjI2MzQ6c3RhdGljIGludCB1YmxrX2NoX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNjM1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zMTYzPXN0YXRpYyB2b2lkIHVibGtfaW9fcmVsZWFzZSh2b2lkICpwcml2KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMxNzgtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjMxNzk6c3RhdGljIGludCB1YmxrX3JlZ2lzdGVyX2lvX2J1ZihzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMxODAtXFx0XFx0XFx0XFx0c3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zMjA2PXVibGtfZGFlbW9uX3JlZ2lzdGVyX2lvX2J1ZihzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzIzNS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzIzNjpzdGF0aWMgaW50IHVibGtfdW5yZWdpc3Rlcl9pb19idWYoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMjM3LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMjQ1LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMjQ2OnN0YXRpYyBpbnQgdWJsa19jaGVja19mZXRjaF9idWYoY29uc3Qgc3RydWN0IHVibGtfZGV2aWNlICp1YiwgX191NjQgYnVmX2FkZHIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMyNDcte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTMyNjI9c3RhdGljIGludCBfX3VibGtfZmV0Y2goc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCBzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMyODQtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjMyODU6c3RhdGljIGludCB1YmxrX2ZldGNoKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzI4Ni1cXHRcXHQgICAgICBzdHJ1Y3QgdWJsa19pbyAqaW8sIF9fdTY0IGJ1Zl9hZGRyLCB1MTYgcV9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMzA3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMzA4OnN0YXRpYyBpbnQgdWJsa19jaGVja19jb21taXRfYW5kX2ZldGNoKGNvbnN0IHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMzMDktXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB1YmxrX2lvICppbywgX191NjQgYnVmX2FkZHIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzM0MD1zdGF0aWMgYm9vbCB1YmxrX2dldF9kYXRhKGNvbnN0IHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsIHN0cnVjdCB1YmxrX2lvICppbyxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMzU3LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMzU4OnN0YXRpYyBpbnQgdWJsa19jaF91cmluZ19jbWRfbG9jYWwoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMzU5LVxcdFxcdHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zNTIxPXN0YXRpYyB2b2lkIHVibGtfY2hfdXJpbmdfY21kX2NiKHN0cnVjdCBpb190d19yZXEgdHdfcmVxLCBpb190d190b2tlbl90IHR3KVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM1MzItXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM1MzM6c3RhdGljIGludCB1YmxrX2NoX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzUzNC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzU5OD1fX3VibGtfd2Fsa19jbWRfYnVmKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzYyNi1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzYyNzpzdGF0aWMgaW50IHVibGtfd2Fsa19jbWRfYnVmKHN0cnVjdCB1YmxrX2JhdGNoX2lvX2l0ZXIgKml0ZXIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2MjgtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2NTQtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM2NTU6c3RhdGljIGludCB1YmxrX2JhdGNoX3VucHJlcF9pbyhzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNjU2LVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvX2RhdGEgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9MzY4MD1zdGF0aWMgdm9pZCB1YmxrX2JhdGNoX3JldmVydF9wcmVwX2NtZChzdHJ1Y3QgdWJsa19iYXRjaF9pb19pdGVyICppdGVyLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM2OTItXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM2OTM6c3RhdGljIGludCB1YmxrX2JhdGNoX3ByZXBfaW8oc3RydWN0IHVibGtfcXVldWUgKnVicSxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzY5NC1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM3MjMtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM3MjQ6c3RhdGljIGludCB1YmxrX2hhbmRsZV9iYXRjaF9wcmVwX2NtZChjb25zdCBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNzI1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNzUwLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozNzUxOnN0YXRpYyBpbnQgdWJsa19iYXRjaF9jb21taXRfaW9fY2hlY2soY29uc3Qgc3RydWN0IHVibGtfcXVldWUgKnVicSxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzc1Mi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdWJsa19pbyAqaW8sXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzc2My1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6Mzc2NDpzdGF0aWMgaW50IHVibGtfYmF0Y2hfY29tbWl0X2lvKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM3NjUtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODExLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozODEyOnN0YXRpYyBpbnQgdWJsa19oYW5kbGVfYmF0Y2hfY29tbWl0X2NtZChzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODEzLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODMyLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozODMzOnN0YXRpYyBpbnQgdWJsa19jaGVja19iYXRjaF9jbWRfZmxhZ3MoY29uc3Qgc3RydWN0IHVibGtfYmF0Y2hfaW8gKnVjKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODM0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zODUxLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozODUyOnN0YXRpYyBpbnQgdWJsa19jaGVja19iYXRjaF9jbWQoY29uc3Qgc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSlcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzg1My17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzg3Ni1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6Mzg3NzpzdGF0aWMgaW50IHVibGtfYmF0Y2hfYXR0YWNoKHN0cnVjdCB1YmxrX3F1ZXVlICp1YnEsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM4NzgtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM5MjItXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM5MjM6c3RhdGljIGludCB1YmxrX2hhbmRsZV9iYXRjaF9mZXRjaF9jbWQoc3RydWN0IHVibGtfYmF0Y2hfaW9fZGF0YSAqZGF0YSlcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzkyNC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzkzMy1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzkzNDpzdGF0aWMgaW50IHVibGtfdmFsaWRhdGVfYmF0Y2hfZmV0Y2hfY21kKHN0cnVjdCB1YmxrX2JhdGNoX2lvX2RhdGEgKmRhdGEpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM5MzUte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM5NTItXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM5NTM6c3RhdGljIGludCB1YmxrX2hhbmRsZV9ub25fYmF0Y2hfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzk1NC1cXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTgyLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozOTgzOnN0YXRpYyBpbnQgdWJsa19jaF9iYXRjaF9pb191cmluZ19jbWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zOTg0LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDE4OD1zdGF0aWMgdm9pZCB1YmxrX2RlaW5pdF9xdWV1ZShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCB1MTYgcV9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MTk4LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0MTk5OnN0YXRpYyBpbnQgdWJsa19nZXRfcXVldWVfbnVtYV9ub2RlKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHUxNiBxX2lkKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MjAwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MjExLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0MjEyOnN0YXRpYyBpbnQgdWJsa19pbml0X3F1ZXVlKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHUxNiBxX2lkKVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MjEzLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00MjY1PXN0YXRpYyB2b2lkIHVibGtfZGVpbml0X3F1ZXVlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyNzItXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQyNzM6c3RhdGljIGludCB1YmxrX2luaXRfcXVldWVzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyNzQte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQyOTAtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQyOTE6c3RhdGljIGludCB1YmxrX2FsbG9jX2Rldl9udW1iZXIoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgaW50IGlkeClcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDI5Mi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDMyMj1zdGF0aWMgdm9pZCB1YmxrX2NkZXZfcmVsKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00MzM0LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0MzM1OnN0YXRpYyBpbnQgdWJsa19hZGRfY2hkZXYoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDMzNi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDM2OD1zdGF0aWMgdm9pZCB1YmxrX2FsaWduX21heF9pb19zaXplKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDM3NS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDM3NjpzdGF0aWMgaW50IHVibGtfYWRkX3RhZ19zZXQoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDM3Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDQxOD1zdGF0aWMgYm9vbCB1YmxrX3ZhbGlkYXRlX3VzZXJfcGlkKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsIHBpZF90IHVibGtzcnZfcGlkKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0MzItICovXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQ0MzM6c3RhdGljIGludCB1YmxrX3dhaXRfZGV2X3JlYWR5X2FuZF9sb2NrKHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0MzQte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0NDYtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQ0NDc6c3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ0NDgtXFx0XFx0Y29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NjA1LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0NjA2OnN0YXRpYyBpbnQgdWJsa19jdHJsX2dldF9xdWV1ZV9hZmZpbml0eShzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00NjA3LVxcdFxcdGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NDY0OT1zdGF0aWMgaW5saW5lIHZvaWQgdWJsa19kdW1wX2Rldl9pbmZvKHN0cnVjdCB1Ymxrc3J2X2N0cmxfZGV2X2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNDY1Ni1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NDY1NzpzdGF0aWMgaW50IHVibGtfY3RybF9hZGRfZGV2KGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ2NTgte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTQ4NzE9c3RhdGljIGlubGluZSBib29sIHVibGtfaWRyX2ZyZWVkKGludCBpZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00ODgxLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo0ODgyOnN0YXRpYyBpbnQgdWJsa19jdHJsX2RlbF9kZXYoc3RydWN0IHVibGtfZGV2aWNlICoqcF91YiwgYm9vbCB3YWl0KVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy00ODgzLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00OTI5PXN0YXRpYyB2b2lkIHVibGtfY3RybF9zdG9wX2RldihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5MzMtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQ5MzQ6c3RhdGljIGludCB1YmxrX2N0cmxfdHJ5X3N0b3BfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5MzUte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5NjEtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjQ5NjI6c3RhdGljIGludCB1YmxrX2N0cmxfZ2V0X2Rldl9pbmZvKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTQ5NjMtXFx0XFx0Y29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz00OTk3PXN0YXRpYyB2b2lkIHVibGtfY3RybF9maWxsX3BhcmFtc19kZXZ0KHN0cnVjdCB1YmxrX2RldmljZSAqdWIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTAxMS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTAxMjpzdGF0aWMgaW50IHVibGtfY3RybF9nZXRfcGFyYW1zKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUwMTMtXFx0XFx0Y29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MDQxLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1MDQyOnN0YXRpYyBpbnQgdWJsa19jdHJsX3NldF9wYXJhbXMoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTA0My1cXHRcXHRjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUwODMtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUwODQ6c3RhdGljIGludCB1YmxrX2N0cmxfc3RhcnRfcmVjb3Zlcnkoc3RydWN0IHVibGtfZGV2aWNlICp1YilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTA4NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTExOS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTEyMDpzdGF0aWMgaW50IHVibGtfY3RybF9lbmRfcmVjb3Zlcnkoc3RydWN0IHVibGtfZGV2aWNlICp1YixcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTEyMS1cXHRcXHRjb25zdCBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxNTctXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUxNTg6c3RhdGljIGludCB1YmxrX2N0cmxfZ2V0X2ZlYXR1cmVzKGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxNTkte1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUxNzEtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjUxNzI6c3RhdGljIGludCB1YmxrX2N0cmxfc2V0X3NpemUoc3RydWN0IHVibGtfZGV2aWNlICp1YiwgY29uc3Qgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTE3My17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTIwNT1zdGF0aWMgYm9vbCB1YnFfaGFzX2lkbGVfaW8oY29uc3Qgc3RydWN0IHVibGtfcXVldWUgKnVicSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MjE1LS8qIFdhaXQgdW50aWwgZWFjaCBodyBxdWV1ZSBoYXMgYXQgbGVhc3Qgb25lIGlkbGUgSU8gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTIxNjpzdGF0aWMgaW50IHVibGtfd2FpdF9mb3JfaWRsZV9pbyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MjE3LVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgdGltZW91dF9tcylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MjU4LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1MjU5OnN0YXRpYyBpbnQgdWJsa19jdHJsX3F1aWVzY2VfZGV2KHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUyNjAtXFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTMwNy0gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTMwODpzdGF0aWMgaW50IHVibGtfY2hhcl9kZXZfcGVybWlzc2lvbihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01MzA5LVxcdFxcdGNvbnN0IGNoYXIgKmRldl9wYXRoLCBpbnQgbWFzaylcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01Mzc2PXN0YXRpYyBpbnQgX191YmxrX2N0cmxfcmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU0MjEtICovXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU0MjI6c3RhdGljIGludCB1YmxrX2N0cmxfcmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NDIzLVxcdFxcdFxcdCAgICAgc3RydWN0IHVibGtzcnZfY3RybF9jbWQgKmhlYWRlcilcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01NTM0PXN0YXRpYyBib29sIF9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTU3My0gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTU3NDpzdGF0aWMgaW50IHVibGtfc2htZW1fcmVtb3ZlX3JhbmdlcyhzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLCBpbnQgYnVmX2luZGV4KVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTc1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTgyLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1NTgzOnN0YXRpYyBpbnQgdWJsa19jdHJsX3VucmVnX2J1ZihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTg0LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgdWJsa3Nydl9jdHJsX2NtZCAqaGVhZGVyKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU2MTQ9c3RhdGljIGJvb2wgdWJsa190cnlfYnVmX21hdGNoKHN0cnVjdCB1YmxrX2RldmljZSAqdWIsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTY2Ny1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTY2ODpzdGF0aWMgaW50IHVibGtfY3RybF91cmluZ19jbWRfcGVybWlzc2lvbihzdHJ1Y3QgdWJsa19kZXZpY2UgKnViLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NjY5LVxcdFxcdHUzMiBjbWRfb3AsIHN0cnVjdCB1Ymxrc3J2X2N0cmxfY21kICpoZWFkZXIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTc0Nz1zdGF0aWMgYm9vbCB1YmxrX2N0cmxfdXJpbmdfY21kX21heV9zbGVlcCh1MzIgY21kX29wKVxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU3NTktXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU3NjA6c3RhdGljIGludCB1YmxrX2N0cmxfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCxcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTc2MS1cXHRcXHR1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM9NTkzNz1tb2R1bGVfZXhpdCh1YmxrX2V4aXQpO1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01OTM4LVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzo1OTM5OnN0YXRpYyBpbnQgdWJsa19zZXRfbWF4X3VucHJpdmlsZWdlZF91Ymxrcyhjb25zdCBjaGFyICpidWYsXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU5NDAtXFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTk0NC1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTk0NTpzdGF0aWMgaW50IHVibGtfZ2V0X21heF91bnByaXZpbGVnZWRfdWJsa3MoY2hhciAqYnVmLFxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01OTQ2LVxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODo0OS45NTYyODcxMzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA5MDg2NTc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdWJsayBDb250cm9sIFBhdGggZm9yIEZ1enppbmcgRW50cnlwb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBgdWJsa2AgY29udHJvbCBwYXRoIHRvIGlkZW50aWZ5IGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZyBlbnRyeXBvaW50cy4gSSBzZWUgdGhhdCBgdWJsa19jdHJsX3VyaW5nX2NtZGAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGJpdCBvZiBhIHJvYWRibG9jay4gSXQgY2FsbHMgYHVibGtfY3RybF91bnJlZ19idWZgLCB3aGljaCB0aGVuIGNhbGxzIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLiBUaGVzZSBhcmUgYWxzbyBzdGF0aWMsIHdoaWNoIG1ha2VzIHRoaXMgdHJpY2t5LiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHNpbXBseSBsaXN0IHRob3NlIGFzIGZvY3VzIHN5bWJvbHMsIGJ1dCB0aGUgc3RhdGljIG5hdHVyZSBpcyB0aHJvd2luZyBhIHdyZW5jaCBpbiB0aGUgd29ya3MuXG5cbkkgbmVlZCB0byByZW1lbWJlciB0aGUgZ3VpZGFuY2Ug4oCTIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGUgY29tcGlsZXIgb2Z0ZW4gaW5saW5lcyBzdGF0aWMgaGVscGVycywgcmVtb3ZpbmcgdGhlaXIgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcywgYW5kIHRoZXJlZm9yZSBtYWtpbmcgdGhlbSBsZXNzIGF0dHJhY3RpdmUgZm9yIGZ1enppbmcgZGlyZWN0bHkuIFNvLCBJIG5lZWQgdG8gcmV0aGluayB0aGlzLiBJZiBldmVyeXRoaW5nIGlzIHN0YXRpYywgc2hvdWxkIEkganVzdCBiaXRlIHRoZSBidWxsZXQgYW5kIGxpc3QgdGhlIHN0YXRpYyBmdW5jdGlvbnMgYW55d2F5LCBob3BpbmcgU3l6a2FsbGVyIGNhbiBzdGlsbCByZWFjaCB0aGVtPyBTaW5jZSB0aGV5IGFyZSBub3QgaW5saW5lZCwgaXQgaXMgcG9zc2libGUuXG5cbldhaXQsIGxldCBtZSBjb25maXJtLiBZZXMsIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCBhbmQgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgYXJlIHN0YXRpYywgYW5kIHNvIGlzIGB1YmxrX2N0cmxfdXJpbmdfY21kYC4gTm93LCBJJ20gY2hlY2tpbmcgaWYgYHVibGtfY3RybF91bnJlZ19idWZgIGlzIGlubGluZWQsIGJlY2F1c2UgdGhhdCBpcyBhIGtleSBjb25zaWRlcmF0aW9uLiBMb29raW5nIGF0IHdoZXJlIGl0J3MgY2FsbGVkLCBpdCdzIGluc2lkZSBhIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aGluIGB1YmxrX2N0cmxfdXJpbmdfY21kYC4gVGhhdCBzdWdnZXN0cyBpdCdzICpwcm9iYWJseSogbm90IGlubGluZWQsIGdpdmVuIGl0cyBzaXplIGFuZCB0aGUgY2FsbCBzaXRlIHN0cnVjdHVyZS5cblxuTm93LCBteSBtaW5kIHNoaWZ0cyB0byBvdGhlciBwb3RlbnRpYWwgZW50cnlwb2ludHMsIGdpdmVuIHRoZSBwcmluY2lwbGUgb2YgcHJlZmVycmluZyB0aGUgbm9uLXN0YXRpYyBvbmVzLiBJIGNvdWxkIGNvbnNpZGVyIHRoZSBzeXNjYWxscyB0aGF0ICp0cmlnZ2VyKiB0aGlzIHBhdGgsIGxpa2UgYGlvX3VyaW5nX2VudGVyYC4gQnV0IGBpb191cmluZ19lbnRlcmAgaXMgdG9vIGdlbmVyaWMgYW5kIEkgYW0gdHJ5aW5nIHRvIG5hcnJvdyB0aGUgc2NvcGUuIFNvLCBJIHdpbGwgbG9vayBmb3Igb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGB1YmxrX2Rydi5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGJldHRlciBjYW5kaWRhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDIzNCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozODo1OC4wNDcxNTU4NjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzczNDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIHVibGtfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svdWJsa19kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMTEzLS8qIHVibGsgYmF0Y2ggZmV0Y2ggdXJpbmdfY21kICovXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjExNDpzdHJ1Y3QgdWJsa19iYXRjaF9mZXRjaF9jbWQge1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMTUtXFx0c3RydWN0IGxpc3RfaGVhZCBub2RlO1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTExOS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MTIwOnN0cnVjdCB1YmxrX3VyaW5nX2NtZF9wZHUge1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xMjEtXFx0LypcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0xNDUtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjE0NjpzdHJ1Y3QgdWJsa19iYXRjaF9pb19kYXRhIHtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMTQ3LVxcdHN0cnVjdCB1YmxrX2RldmljZSAqdWI7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjAzLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzoyMDQ6dW5pb24gdWJsa19pb19idWYge1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yMDUtXFx0X191NjRcXHRhZGRyO1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTIwOC1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MjA5OnN0cnVjdCB1YmxrX2lvIHtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMjEwLVxcdHVuaW9uIHVibGtfaW9fYnVmIGJ1ZjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0yNDEtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjI0MjpzdHJ1Y3QgdWJsa19xdWV1ZSB7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTI0My1cXHR1MTYgcV9pZDtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zMDQtLyogTWFwbGUgdHJlZSB2YWx1ZTogbWFwcyBhIFBGTiByYW5nZSB0byBidWZmZXIgbG9jYXRpb24gKi9cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6MzA1OnN0cnVjdCB1YmxrX2J1Zl9yYW5nZSB7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTMwNi1cXHR1bnNpZ25lZCBzaG9ydCBidWZfaW5kZXg7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzEwLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozMTE6c3RydWN0IHVibGtfZGV2aWNlIHtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzEyLVxcdHN0cnVjdCBnZW5kaXNrXFx0XFx0KnViX2Rpc2s7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtMzUxLS8qIGhlYWRlciBvZiB1YmxrX3BhcmFtcyAqL1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYzozNTI6c3RydWN0IHVibGtfcGFyYW1zX2hlYWRlciB7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM1My1cXHRfX3UzMlxcdGxlbjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz01MDY9c3RhdGljIHZvaWQgdWJsa19pbml0X2lvZChzdHJ1Y3QgdWJsa19xdWV1ZSAqdWJxLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTUzMi1cXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmM6NTMzOnN0cnVjdCB1YmxrX3pvbmVkX3JlcG9ydF9kZXNjIHtcXG5kcml2ZXJzL2Jsb2NrL3VibGtfZHJ2LmMtNTM0LVxcdF9fdTY0IHNlY3RvcjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYz0zNTcxPXVibGtfYmF0Y2hfYXV0b19idWZfcmVnKGNvbnN0IHN0cnVjdCB1YmxrX2JhdGNoX2lvICp1YyxcXG4tLVxcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy0zNTg3LSNkZWZpbmUgVUJMS19DTURfQkFUQ0hfVE1QX0JVRl9TWiAgKDQ4ICogMTApXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjM1ODg6c3RydWN0IHVibGtfYmF0Y2hfaW9faXRlciB7XFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTM1ODktXFx0dm9pZCBfX3VzZXIgKnVhZGRyO1xcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jPTU1MDE9c3RhdGljIHZvaWQgdWJsa191bnBpbl9yYW5nZV9wYWdlcyh1bnNpZ25lZCBsb25nIGJhc2VfcGZuLFxcbi0tXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jLTU1MjgtXFxuZHJpdmVycy9ibG9jay91YmxrX2Rydi5jOjU1Mjk6c3RydWN0IHVibGtfdW5waW5fcmFuZ2Uge1xcbmRyaXZlcnMvYmxvY2svdWJsa19kcnYuYy01NTMwLVxcdHVuc2lnbmVkIGxvbmcgYmFzZV9wZm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM4OjU4LjA5MzkzMzUxNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjkzMTkwOTIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIHVibGsgTW9kdWxlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyByaWdodCBub3cgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgY29yZSBmdW5jdGlvbnMgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcHMgd2l0aGluIHRoZSBgdWJsa2AgbW9kdWxlLiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBtYXAgb2Ygd2hhdCdzIGdvaW5nIG9uIGhlcmUuIEZpcnN0LCBJIGhhdmUgdGhlc2Uga2V5IGZ1bmN0aW9ucyBJJ20gdHJhY2tpbmc6IGB1YmxrX2N0cmxfdXJpbmdfY21kYCwgYHVibGtfY3RybF91bnJlZ19idWZgLCBgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCwgYW5kIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AuXG5cbkFoYSwgaG9sZCBvbi4gSSBzZWUgYHVibGtfY3RybF91cmluZ19jbWRgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpbml0aWFsbHkgbWFkZSBtZSBwYXVzZS4gQnV0IHRoZW4gSSBub3RpY2VkIGl0J3MgY29ycmVjdGx5IGFzc2lnbmVkIHRvIGB1YmxrX2N0bF9mb3BzLnVyaW5nX2NtZGAuIFllcywgdGhhdOKAmXMgcGVyZmVjdGx5IGxlZ2l0aW1hdGUsIHRoZSBzdGF0aWMgc2NvcGUgZG9lc24ndCBjYXVzZSBhbnkgY29uZmxpY3RzIGhlcmUsIHRoZSBmdW5jdGlvbiBpcyBzdGlsbCBhY2Nlc3NpYmxlIGFzIGV4cGVjdGVkIHdpdGhpbiBpdHMgaW50ZW5kZWQgc2NvcGUuIE9rYXksIHRoYXQgY2hlY2tzIG91dC4gTm8gaW1tZWRpYXRlIHJlZCBmbGFncyB0aGVyZS5cblxuTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBiZWNhdXNlIEkgYWx3YXlzIGRvdWJsZS1jaGVjayB0aGVzZSB0aGluZ3MsIEkgd2FudCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgY29udHJvbHMgdGhpcyBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyBgQkxLX0RFVl9VQkxLYCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGVsc2UgdGhhdCBtaWdodCBiZSByZWxldmFudC4gV2hlcmUgaXMgaXQgZGVmaW5lZD8gUmlnaHQsIGl0J3MgZGVmaW5lZCBpbiB0aGUgY29kZSBpbiBgZHJpdmVycy9ibG9jay91YmxrX2Rydi5jYC4gT2theSwgbGV0IG1lIGdvIGNoZWNrIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gdGhhdCBgQkxLX0RFVl9VQkxLYCBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBvdmVybG9va2VkIGFueSBvdGhlciBkZXBlbmRlbnQgb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwMzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzk6MTEuMDI1ODQ2NjQ3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTE4ODg0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9VQkxLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyNy1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzI4OmNvbmZpZyBCTEtfREVWX1VCTEtcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzI5LVxcdHRyaXN0YXRlIFxcXCJVc2Vyc3BhY2UgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozOToxMS4wNzEwNDA1MjNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTQ3MTUyNzIzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IHF1ZXN0aW9uOlxuXG4qKkRlY29uc3RydWN0aW5nIERlcGVuZGVuY2llcyBvZiBCTEtcXF9ERVZcXF9VQkxLKipcblxuT2theSwgc28gYEJMS19ERVZfVUJMS2AuLi4gcmlnaHQsIHRoYXQncyB0aGUgdXNlci1zcGFjZSBibG9jayBkZXZpY2UgZHJpdmVyLiBUaGUgcXVlc3Rpb24gaXMsIHdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgZnVuY3Rpb25hbGl0aWVzIGlzIGl0IGRlcGVuZGVudCBvbj8gTGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIHB1cnBvc2Ugb2YgYEJMS19ERVZfVUJMS2AuIEl0IHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciB1c2VyLXNwYWNlIHByb2dyYW1zIHRvIGVtdWxhdGUgYmxvY2sgZGV2aWNlcy4gU28sIGluaGVyZW50bHksIGl0IHJlbGllcyBvbiB0aGUga2VybmVsJ3MgYmxvY2sgbGF5ZXIg4oCTIHRoYXQncyBhIGdpdmVuLiBJJ20gdGhpbmtpbmcsIHNwZWNpZmljYWxseSwgdGhlIGNvcmUgYmxvY2sgSS9PIGluZnJhc3RydWN0dXJlLCBxdWV1ZSBtYW5hZ2VtZW50LCByZXF1ZXN0IGhhbmRsaW5nLCBhbmQgdGhlIGdlbmVyaWMgYmxvY2sgZGV2aWNlIGludGVyZmFjZXMgKGBnZW5kaXNrYCwgYHJlcXVlc3RfcXVldWVgLCBldGMuKS4gV2l0aG91dCB0aG9zZSwgdGhlcmUncyBubyB3YXkgdG8gaG9vayBhIHVzZXItc3BhY2UgZHJpdmVyIGludG8gdGhlIGJsb2NrIGxheWVyLlxuXG5OZXh0LCBpdCBoYXMgdG8gaW50ZXJmYWNlIHdpdGggdGhlIHVzZXIgc3BhY2Ugc29tZWhvdy4gVGhpcyBwcm9iYWJseSBpbnZvbHZlcyB0aGluZ3MgbGlrZSBjaGFyYWN0ZXIgZGV2aWNlIG5vZGVzIChgL2Rldi91YmxrWGApIGFuZCBzeXN0ZW0gY2FsbHMgZm9yIHBhc3NpbmcgZGF0YSBhbmQgY29udHJvbCBtZXNzYWdlcyBiYWNrIGFuZCBmb3J0aC4gVGhhdCBzdWdnZXN0cyBkZXBlbmRlbmNpZXMgb24gY2hhcmFjdGVyIGRldmljZSBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmUgYW5kIHBvc3NpYmx5IGV2ZW4gc29tZSBzb3J0IG9mIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBtZWNoYW5pc21zLCB0aG91Z2ggbWF5YmUganVzdCBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMuXG5cbk1vcmUgYnJvYWRseSwgSSBiZXQgaXQgcmVsaWVzIG9uIHRoZSBrZXJuZWwncyBtZW1vcnkgbWFuYWdlbWVudCwgYmVjYXVzZSBpdCdzIG1vdmluZyBkYXRhIGJldHdlZW4gdXNlciBzcGFjZSBhbmQga2VybmVsIHNwYWNlLiBQb2ludGVycywgbWVtb3J5IGFsbG9jYXRpb24sIGFuZCBjb3B5IG9wZXJhdGlvbnMgd2lsbCBiZSBjcml0aWNhbC4gSXQgcHJvYmFibHkgaW50ZXJhY3RzIHdpdGggc29tZSBraW5kIG9mIGxvY2tpbmcgcHJpbWl0aXZlcyBhcyB3ZWxsLCBiZWNhdXNlIG11bHRpLXRocmVhZGVkIHVzZXItc3BhY2UgcHJvZ3JhbXMgY291bGQgYmUgYWNjZXNzaW5nIHRoZSBkZXZpY2UgaW4gYSBjb25jdXJyZW50IG1hbm5lci4gVGhpcyBsaWtlbHkgZW50YWlscyBzcGlubG9ja3Mgb3IgbXV0ZXhlcyB3aXRoaW4gdGhlIGtlcm5lbC5cblxuRmluYWxseSwgd2hpbGUgaXQncyBwcm9iYWJseSBub3QgYSBkaXJlY3QgZGVwZW5kZW5jeSwgYEJMS19ERVZfVUJMS2AncyBwZXJmb3JtYW5jZSBhbmQgZnVuY3Rpb25hbGl0eSBvZnRlbiByZWx5IG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIChldmVuIGlmIHZpcnR1YWxpemVkKS4gSWYgaXQncyB1c2VkIHdpdGggdGhpbmdzIGxpa2UgbmV0d29yayBibG9jayBkZXZpY2VzLCB0aGVuIG5ldHdvcmsgcHJvdG9jb2xzIG9yIGRyaXZlcnMgY291bGQgY29tZSBpbnRvIHBsYXkgKGluZGlyZWN0bHksIG9mIGNvdXJzZSkuXG5cblNvLCBpbiBzdW1tYXJ5OiBJJ20gdGhpbmtpbmcgaXQncyBhIG11bHRpLWxheWVyZWQgZGVwZW5kZW5jeS4gQ29yZSBibG9jayBsYXllciAocXVldWUgbWFuYWdlbWVudCwgZ2VuZXJpYyBibG9jayBkZXZpY2UgaW50ZXJmYWNlcyksIGNoYXJhY3RlciBkZXZpY2UgZnJhbWV3b3JrLCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGFyZSBkZWZpbml0ZWx5IG9uIHRoZSBsaXN0LiBQb3NzaWJseSBhbHNvIHNvbWUgbmV0d29ya2luZyBjb21wb25lbnRzLCBkZXBlbmRpbmcgb24gaG93IGBCTEtfREVWX1VCTEtgIGlzIGltcGxlbWVudGVkIGFuZCB1c2VkLiBJIHdvdWxkIHByb2JhYmx5IGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRvIGNvbmZpcm0gdGhlIGNvbmNyZXRlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NjQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozOToyMC41NDI1NzA3MTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDQ2ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZz02PW1lbnVjb25maWcgQkxLX0RFVlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03LVxcdGJvb2wgXFxcIkJsb2NrIGRldmljZXNcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy05LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTIyPWNvbmZpZyBCTEtfREVWX0ZEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJOb3JtYWwgZmxvcHB5IGRpc2sgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBBUkNIX01BWV9IQVZFX1BDX0ZEQ1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9Mzc9Y29uZmlnIEJMS19ERVZfRkRfUkFXQ01EXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTM4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHJhdyBmbG9wcHkgZGlzayBjb21tYW5kcyAoREVQUkVDQVRFRClcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjM5OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9GRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy00MC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9NTM9Y29uZmlnIEFNSUdBX0ZMT1BQWVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiQW1pZ2EgZmxvcHB5IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjU1OlxcdGRlcGVuZHMgb24gQU1JR0FcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNTYtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTU3PWNvbmZpZyBBVEFSSV9GTE9QUFlcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNTgtXFx0dHJpc3RhdGUgXFxcIkF0YXJpIGZsb3BweSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo1OTpcXHRkZXBlbmRzIG9uIEFUQVJJXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTYwLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02MT1jb25maWcgTUFDX0ZMT1BQWVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgUG93ZXJNYWMgZmxvcHB5XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo2MzpcXHRkZXBlbmRzIG9uIFBQQ19QTUFDIFxcdTAwMjZcXHUwMDI2ICFQUENfUE1BQzY0XFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTY0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz02OD1jb25maWcgQkxLX0RFVl9TV0lNXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTY5LVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBTV0lNIE1hY2ludG9zaCBmbG9wcHlcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjcwOlxcdGRlcGVuZHMgb24gTTY4SyBcXHUwMDI2XFx1MDAyNiBNQUMgXFx1MDAyNlxcdTAwMjYgIUhJR0hNRU1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctNzEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTc1PWNvbmZpZyBBTUlHQV9aMlJBTVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy03Ni1cXHR0cmlzdGF0ZSBcXFwiQW1pZ2EgWm9ycm8gSUkgcmFtZGlzayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo3NzpcXHRkZXBlbmRzIG9uIFpPUlJPXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTc4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz04Nj1jb25maWcgTjY0Q0FSVFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy04Ny1cXHRib29sIFxcXCJONjQgY2FydCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzo4ODpcXHRkZXBlbmRzIG9uIE1BQ0hfTklOVEVORE82NFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy04OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9OTU9Y29uZmlnIEdEUk9NXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTk2LVxcdHRyaXN0YXRlIFxcXCJTRUdBIERyZWFtY2FzdCBHRC1ST00gZHJpdmVcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjk3OlxcdGRlcGVuZHMgb24gU0hfRFJFQU1DQVNUXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTk4LVxcdHNlbGVjdCBDRFJPTVxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTExMT1jb25maWcgQkxLX0RFVl9VQkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTEyLVxcdGJvb2wgXFxcIlZpcnR1YWwgYmxvY2sgZGV2aWNlXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxMTM6XFx0ZGVwZW5kcyBvbiBVTUxcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTE0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0xMjA9Y29uZmlnIEJMS19ERVZfVUJEX1NZTkNcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTIxLVxcdGJvb2wgXFxcIkFsd2F5cyBkbyBzeW5jaHJvbm91cyBkaXNrIElPIGZvciBVQkRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjEyMjpcXHRkZXBlbmRzIG9uIEJMS19ERVZfVUJEXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTEyMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MTc5PWNvbmZpZyBCTEtfREVWX0xPT1BfTUlOX0NPVU5UXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4MC1cXHRpbnQgXFxcIk51bWJlciBvZiBsb29wIGRldmljZXMgdG8gcHJlLWNyZWF0ZSBhdCBpbml0IHRpbWVcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE4MTpcXHRkZXBlbmRzIG9uIEJMS19ERVZfTE9PUFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xODItXFx0ZGVmYXVsdCA4XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MTk2PWNvbmZpZyBCTEtfREVWX05CRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTctXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5ODpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI0Mz1jb25maWcgQkxLX0RFVl9SQU1fQ09VTlRcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNDUtXFx0ZGVmYXVsdCBcXFwiMTZcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjI0NjpcXHRkZXBlbmRzIG9uIEJMS19ERVZfUkFNXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI0Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MjUyPWNvbmZpZyBCTEtfREVWX1JBTV9TSVpFXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI1My1cXHRpbnQgXFxcIkRlZmF1bHQgUkFNIGRpc2sgc2l6ZSAoa2J5dGVzKVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MjU0OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9SQU1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjU1LVxcdGRlZmF1bHQgXFxcIjQwOTZcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MjYwPWNvbmZpZyBBVEFfT1ZFUl9FVEhcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYxLVxcdHRyaXN0YXRlIFxcXCJBVEEgb3ZlciBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNjI6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjYzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0yNjc9Y29uZmlnIFNVTlZEQ1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNjgtXFx0dHJpc3RhdGUgXFxcIlN1biBWaXJ0dWFsIERpc2sgQ2xpZW50IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjI2OTpcXHRkZXBlbmRzIG9uIFNVTl9MRE9NU1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI3Nj1jb25maWcgWEVOX0JMS0RFVl9GUk9OVEVORFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yNzctXFx0dHJpc3RhdGUgXFxcIlhlbiB2aXJ0dWFsIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyNzg6XFx0ZGVwZW5kcyBvbiBYRU5cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjc5LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnPTI4Nj1jb25maWcgWEVOX0JMS0RFVl9CQUNLRU5EXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTI4Ny1cXHR0cmlzdGF0ZSBcXFwiWGVuIGJsb2NrLWRldmljZSBiYWNrZW5kIGRyaXZlclxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6Mjg4OlxcdGRlcGVuZHMgb24gWEVOX0JBQ0tFTkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjg5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZz0zMDc9Y29uZmlnIFZJUlRJT19CTEtcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzA4LVxcdHRyaXN0YXRlIFxcXCJWaXJ0aW8gYmxvY2sgZHJpdmVyXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzozMDk6XFx0ZGVwZW5kcyBvbiBWSVJUSU9cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzEwLVxcdHNlbGVjdCBTR19QT09MXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MzE1PWNvbmZpZyBCTEtfREVWX1JCRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMTYtXFx0dHJpc3RhdGUgXFxcIlJhZG9zIGJsb2NrIGRldmljZSAoUkJEKVxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzE3OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBCTE9DS1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMTgtXFx0c2VsZWN0IENFUEhfTElCXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MzM3PWNvbmZpZyBCTEtERVZfVUJMS19MRUdBQ1lfT1BDT0RFU1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMzgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBsZWdhY3kgY29tbWFuZCBvcGNvZGVcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMzOTpcXHRkZXBlbmRzIG9uIEJMS19ERVZfVUJMS1xcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNDAtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc9MzU2PWNvbmZpZyBCTEtfREVWX1pPTkVEX0xPT1BcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMzU3LVxcdHRyaXN0YXRlIFxcXCJab25lZCBsb29wYmFjayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MzU4OlxcdGRlcGVuZHMgb24gQkxLX0RFVl9aT05FRFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zNTktXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozOToyMC41ODk2MjMxOTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM2NDg3NTU0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBCTEtfREVWX1VCTEsgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBCTEtfREVWX1VCTEtgLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIG9uIHRoZSBzdXJmYWNlIOKAkyBpdCBkb2Vzbid0IGV4cGxpY2l0bHkgYGRlcGVuZCBvbmAgYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgYmFzZSByZXF1aXJlbWVudHMgd2UnZCBleHBlY3Q6IGBCTEtfREVWYCBhbmQgYEJMT0NLYC4gVGhhdCdzIGEgY29tbW9uIHBhdHRlcm4sIGFuZCB1c3VhbGx5IGEgc2lnbiBvZiBhIHdlbGwtZGVmaW5lZCwgbW9kdWxhciBjb21wb25lbnQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBiZWZvcmUgSSBtb3ZlIG9uLCBJIHNob3VsZCBhbHdheXMgYmUgbWV0aWN1bG91cyBhYm91dCB0aGlzIHN0dWZmLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgQkxLX0RFVl9VQkxLYCBkZWZpbml0aW9uIGFnYWluLiBJdCdzIGVhc3kgdG8gbWlzcyBhIHN1YnRsZXR5IG9yIGFuIGluZGlyZWN0IGRlcGVuZGVuY3kgaW4gdGhlc2UgY29uZmlndXJhdGlvbnMsIGFuZCBhc3N1bXB0aW9ucyBjYW4gYmUgZGFuZ2Vyb3VzLiBOZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGVyZSdzIG5vIGhpZGRlbiBjb25uZWN0aW9uIEknbSBtaXNzaW5nLiBMZXQncyBtYWtlIHN1cmUgSSBkaWRuJ3QgbWlzcyBzb21ldGhpbmcuIE9rYXksIGxldCBtZSBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTA2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjM5OjI2Ljk1NDUwMTg3MloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2OTIyODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfVUJMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTMxNT1jb25maWcgQkxLX0RFVl9SQkRcXG4tLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0zMjctXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjMyODpjb25maWcgQkxLX0RFVl9VQkxLXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTMyOS1cXHR0cmlzdGF0ZSBcXFwiVXNlcnNwYWNlIGJsb2NrIGRyaXZlciAoRXhwZXJpbWVudGFsKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzk6MjcuMDAxMTk5MzQ3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MTUyOTE1NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgbGluZXMgYXJvdW5kIGBjb25maWcgQkxLX0RFVl9VQkxLYCwgZGlzdGlsbGVkIHRocm91Z2ggYW4gZXhwZXJ0IGxlbnM6XG5cbioqRGl2aW5nIGludG8gdGhlIHVibGsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNwZWNpZmljYWxseSBhcm91bmQgYEJMS19ERVZfVUJMS2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoaXMgcGFydGljdWxhciBzZXR0aW5nIGJlY2F1c2UgaXQncyB0aGUgVXNlci1TcGFjZSBCbG9jayBMYXllciAoVUJMSyksIGEgcHJldHR5IGludGVyZXN0aW5nIGludGVyZmFjZS4gSSdtIGltbWVkaWF0ZWx5IHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBwbGFjZSB3aXRoaW4gdGhlIGJyb2FkZXIgYmxvY2sgZGV2aWNlIHN1YnN5c3RlbS4gSSdtIGxpa2VseSB3YW50aW5nIHRvIGtub3cgaXRzIGRlcGVuZGVuY3kgb24gb3RoZXIgYmxvY2sgZGV2aWNlIGNvbXBvbmVudHMsIHN1Y2ggYXMgdGhlIGdlbmVyaWMgYmxvY2sgbGF5ZXIgYW5kIGFueSBzcGVjaWZpYyBJL08gc2NoZWR1bGVyIHNldHVwcy4gQXJlIHRoZXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgSSBuZWVkIHRvIGVuc3VyZSBhcmUgc2V0IGZvciB1YmxrIHRvIGZ1bmN0aW9uIGFzIGludGVuZGVkPyBJJ20gY2hlY2tpbmcgaWYgdGhpcyBpcyBqdXN0IHRoZSAqZW5hYmxlKiBmbGFnLCBvciBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgb3B0aW9ucyBsaWtlIG51bWJlciBvZiBxdWV1ZXMsIGZlYXR1cmVzLCBvciB0aGUgZGVmYXVsdCBzaXplcyBhc3NvY2lhdGVkIHdpdGggdGhlIGludGVyZmFjZS4gSSdsbCBsaWtlbHkgbmVlZCB0byBxdWlja2x5IHJldmlldyB0aGUga2VybmVsIGRvY3VtZW50YXRpb24gb3IgY29tbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3B0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBmb3IgZGV2aWNlIG1hbmFnZW1lbnQgYW5kIGhvdyBpdCBpbXBhY3RzIHN5c3RlbSByZXNvdXJjZSB1dGlsaXphdGlvbi4gSSdtIGFsc28gYW50aWNpcGF0aW5nIGFueSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBhcm91bmQgYWxsb3dpbmcgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgdG8gZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCBibG9jayBkZXZpY2VzLCBhbmQgdGh1cyBhbnkgYXNzb2NpYXRlZCBrZXJuZWwgaGFyZGVuaW5nIG9wdGlvbnMgdGhhdCBJIHNob3VsZCBiZSBsb29raW5nIGZvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0MzcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMzozOTo1My4xNTQxMTY5NzFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMyNTpcXHRcXG4gMzI2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMzI3OlxcdFxcbiAzMjg6XFx0Y29uZmlnIEJMS19ERVZfVUJMS1xcbiAzMjk6XFx0XFx0dHJpc3RhdGUgXFxcIlVzZXJzcGFjZSBibG9jayBkcml2ZXIgKEV4cGVyaW1lbnRhbClcXFwiXFxuIDMzMDpcXHRcXHRzZWxlY3QgSU9fVVJJTkdcXG4gMzMxOlxcdFxcdGhlbHBcXG4gMzMyOlxcdFxcdCAgaW9fdXJpbmcgYmFzZWQgdXNlcnNwYWNlIGJsb2NrIGRyaXZlci4gVG9nZXRoZXIgd2l0aCB1YmxrIHNlcnZlciwgdWJsa1xcbiAzMzM6XFx0XFx0ICBoYXMgYmVlbiB3b3JraW5nIHdlbGwsIGJ1dCBpbnRlcmZhY2Ugd2l0aCB1c2Vyc3BhY2Ugb3IgY29tbWFuZCBkYXRhXFxuIDMzNDpcXHRcXHQgIGRlZmluaXRpb24gaXNuJ3QgZmluYWxpemVkIHlldCwgYW5kIG1pZ2h0IGNoYW5nZSBhY2NvcmRpbmcgdG8gZnV0dXJlXFxuIDMzNTpcXHRcXHQgIHJlcXVpcmVtZW50LCBzbyBtYXJrIGlzIGFzIGV4cGVyaW1lbnRhbCBub3cuXFxuIDMzNjpcXHRcXG4gMzM3OlxcdGNvbmZpZyBCTEtERVZfVUJMS19MRUdBQ1lfT1BDT0RFU1xcbiAzMzg6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBsZWdhY3kgY29tbWFuZCBvcGNvZGVcXFwiXFxuIDMzOTpcXHRcXHRkZXBlbmRzIG9uIEJMS19ERVZfVUJMS1xcbiAzNDA6XFx0XFx0ZGVmYXVsdCB5XFxuIDM0MTpcXHRcXHRoZWxwXFxuIDM0MjpcXHRcXHQgIHVibGsgZHJpdmVyIHN0YXJ0ZWQgdG8gdGFrZSBwbGFpbiBjb21tYW5kIGVuY29kaW5nLCB3aGljaCB0dXJucyBvdXRcXG4gMzQzOlxcdFxcdCAgb25lIGJhZCB3YXkuIFRoZSB0cmFkaXRpb25hbCBpb2N0bCBjb21tYW5kIG9wY29kZSBlbmNvZGVzIG1vcmVcXG4gMzQ0OlxcdFxcdCAgaW5mbyBhbmQgYmFzaWNhbGx5IGRlZmluZXMgZWFjaCBjb2RlIHVuaXF1ZWx5LCBzbyBvcGNvZGUgY29uZmxpY3RcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTM6Mzk6NTMuMTU0MTkwNTgxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMTk0MzI4Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBVQkxLIFNobWVtIFJlbW92YWwgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBkZXBlbmRlbmN5IHN0YW5kcG9pbnQsIGBCTEtfREVWX1VCTEtgIHNlZW1zIHRvIGJlIHRoZSBrZXksIGFuZCBpdCBkaXJlY3RseSBzZWxlY3RzIGBJT19VUklOR2AuIFNpbmNlIHRoZXJlIGFyZSBubyBvdGhlciBvYnZpb3VzIGRlcGVuZGVuY2llcyBiZXlvbmQgYEJMT0NLYCwgYEJMS19ERVZfVUJMS2Agc2hvdWxkIHN1ZmZpY2UgZm9yIHRlc3RpbmcgdGhpcyBwYXRjaC5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQncyBjbGVhciB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBnb2FsIGlzIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGluc2lkZSBhIHNwaW5sb2NrLCB3aGljaCBpcyBnZW5lcmFsbHkgYSBnb29kIHByYWN0aWNlIGZvciBwZXJmb3JtYW5jZSBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIGRlYWRsb2Nrcy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AsIGEgZnVuY3Rpb24gcmVhY2hlZCB0aHJvdWdoIHRoZXNlIHBhdGhzOiBgdWJsa19jdHJsX3VyaW5nX2NtZGAgLVx1MDAzZSBgdWJsa19jdHJsX3VucmVnX2J1ZmAgLVx1MDAzZSBgdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzYCAtXHUwMDNlIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AsIGFzIHdlbGwgYXMgYHVibGtfYnVmX2NsZWFudXBgIC1cdTAwM2UgYHVibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgLVx1MDAzZSBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLiBUaGUgc2Vjb25kIHBhdGggaW52b2x2ZXMgYHVibGtfYnVmX2NsZWFudXBgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgdWJsa19jZGV2X3JlbGAsIHRoZSByZWxlYXNlIGZ1bmN0aW9uIGZvciB0aGUgY2hhcmFjdGVyIGRldmljZS5cblxuQmFzZWQgb24gdGhpcywgSSdtIG1hcmtpbmcgaXQgZm9yIGZ1enppbmcgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBmb2xsb3dpbmcgc3ltYm9sczogYHVibGtfY3RybF91cmluZ19jbWRgLCBgdWJsa19jdHJsX3VucmVnX2J1ZmAsIGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCBhbmQgYHVibGtfYnVmX2NsZWFudXBgLiBJIHdpbGwgZW5hYmxlIHRoZSBgQkxLX0RFVl9VQkxLYCBjb25maWd1cmF0aW9uIG9wdGlvbi5cblxuSSdtIGRvdWJsZS1jaGVja2luZyB0aGUgaW9fdXJpbmcgY29tbWFuZCBoYW5kbGVycy4gSXQgbG9va3MgbGlrZSBgdWJsa19jdHJsX3VyaW5nX2NtZGAgaXMgdGhlIHByaW1hcnkgaGFuZGxlciB2aWEgYHVibGtfY3RsX2ZvcHMudXJpbmdfY21kID0gdWJsa19jdHJsX3VyaW5nX2NtZGAuIFRoZXJlJ3MgYWxzbyBgdWJsa19jaF91cmluZ19jbWRgIGZvciB0aGUgY2hhbm5lbCBkZXZpY2UsIGJ1dCB0aGUgcGF0Y2ggaXMgdGFyZ2V0aW5nIHRoZSBmb3JtZXIuIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgaXMgY2FsbGVkIGJ5IGB1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBib3RoIGB1YmxrX2N0cmxfdW5yZWdfYnVmYCAod2hpY2ggY29tZXMgZnJvbSBgdWJsa19jdHJsX3VyaW5nX2NtZGApIGFuZCBgdWJsa19idWZfY2xlYW51cGAgKGZyb20gdGhlIGNoYXJhY3RlciBkZXZpY2UgcmVsZWFzZSkuXG5cbk9rYXksIGV2ZXJ5dGhpbmcgc2VlbXMgY29uc2lzdGVudCBhbmQgd2VsbC11bmRlcnN0b29kLiBJJ20gcmVhZHkgdG8gcHJvY2VlZCB3aXRoIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDcxLCJPdXRwdXRUb2tlbnMiOjE5NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEzOjQwOjA1LjM0ODUyMTY5OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjQ1NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX1VCTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1YmxrX2N0cmxfdXJpbmdfY21kXCIsXG4gICAgXCJ1YmxrX2N0cmxfdW5yZWdfYnVmXCIsXG4gICAgXCJ1YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNcIixcbiAgICBcIl9fdWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzXCIsXG4gICAgXCJ1YmxrX2J1Zl9jbGVhbnVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYW4geGFycmF5IHdpdGggYSBmaXhlZC1zaXplIGFycmF5IGluIGBfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc2AgdG8gYXZvaWQgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiB3aXRoaW4gYSBzcGlubG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB1YmxrIGRyaXZlci4gVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgaW9fdXJpbmcgY29tbWFuZHMgKGB1YmxrX2N0cmxfdXJpbmdfY21kYCAtXFx1MDAzZSBgdWJsa19jdHJsX3VucmVnX2J1ZmApIGFuZCBkZXZpY2UgY2xlYW51cCAoYHVibGtfY2Rldl9yZWxgIC1cXHUwMDNlIGB1YmxrX2J1Zl9jbGVhbnVwYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9VQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWJsa19jdHJsX3VyaW5nX2NtZFwiLFxuICAgIFwidWJsa19jdHJsX3VucmVnX2J1ZlwiLFxuICAgIFwidWJsa19zaG1lbV9yZW1vdmVfcmFuZ2VzXCIsXG4gICAgXCJfX3VibGtfc2htZW1fcmVtb3ZlX3Jhbmdlc1wiLFxuICAgIFwidWJsa19idWZfY2xlYW51cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGFuIHhhcnJheSB3aXRoIGEgZml4ZWQtc2l6ZSBhcnJheSBpbiBgX191YmxrX3NobWVtX3JlbW92ZV9yYW5nZXNgIHRvIGF2b2lkIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIGEgc3BpbmxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdWJsayBkcml2ZXIuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGlvX3VyaW5nIGNvbW1hbmRzIChgdWJsa19jdHJsX3VyaW5nX2NtZGAgLVxcdTAwM2UgYHVibGtfY3RybF91bnJlZ19idWZgKSBhbmQgZGV2aWNlIGNsZWFudXAgKGB1YmxrX2NkZXZfcmVsYCAtXFx1MDAzZSBgdWJsa19idWZfY2xlYW51cGApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbbnsb[1] Phase: Succeeded StartedAt: 2026-08-04 13:40:16 +0000 UTC FinishedAt: 2026-08-04 13:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 13:40:16 +0000 UTC FinishedAt: 2026-08-04 13:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2] Phase: Succeeded StartedAt: 2026-08-04 13:40:16 +0000 UTC FinishedAt: 2026-08-04 15:06:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 13:40:16 +0000 UTC FinishedAt: 2026-08-04 15:06:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 13:40:16 +0000 UTC FinishedAt: 2026-08-04 13:40:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 13:40:16 +0000 UTC FinishedAt: 2026-08-04 13:40:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowbbnsb/series-workflowbbnsb-convert-artifact-2674067596/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 13:40:27 +0000 UTC FinishedAt: 2026-08-04 13:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 13:40:27 +0000 UTC FinishedAt: 2026-08-04 13:56:53 +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:*0b504396-7fce-4fe3-83e4-e774c9ab9252,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-workflowbbnsb/series-workflowbbnsb-convert-artifact-2674067596/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": "9e35b01e-294a-4628-aa4b-15be4133e249", "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-workflowbbnsb/series-workflowbbnsb-build-action-3053571770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 13:40:27 +0000 UTC FinishedAt: 2026-08-04 13:56:43 +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:*0b504396-7fce-4fe3-83e4-e774c9ab9252,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-workflowbbnsb/series-workflowbbnsb-convert-artifact-2674067596/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": "9e35b01e-294a-4628-aa4b-15be4133e249", "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-workflowbbnsb/series-workflowbbnsb-build-action-3053571770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 13:56:53 +0000 UTC FinishedAt: 2026-08-04 13:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 13:56:53 +0000 UTC FinishedAt: 2026-08-04 13:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 13:56:53 +0000 UTC FinishedAt: 2026-08-04 13:57:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 13:56:53 +0000 UTC FinishedAt: 2026-08-04 13:56:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowbbnsb/series-workflowbbnsb-convert-artifact-1579603147/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 13:57:03 +0000 UTC FinishedAt: 2026-08-04 13:59:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 13:57:03 +0000 UTC FinishedAt: 2026-08-04 13:58:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9e35b01e-294a-4628-aa4b-15be4133e249,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-workflowbbnsb/series-workflowbbnsb-build-action-3053571770/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-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 13:59:08 +0000 UTC FinishedAt: 2026-08-04 13:59:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 13:59:08 +0000 UTC FinishedAt: 2026-08-04 13:59:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 13:59:08 +0000 UTC FinishedAt: 2026-08-04 14:15:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 13:59:08 +0000 UTC FinishedAt: 2026-08-04 14:15:34 +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:*0b504396-7fce-4fe3-83e4-e774c9ab9252,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-workflowbbnsb/series-workflowbbnsb-convert-artifact-1579603147/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": "df11cf1a-102b-4310-82ce-84521bb772ab", "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-workflowbbnsb/series-workflowbbnsb-build-action-161806703/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 13:59:08 +0000 UTC FinishedAt: 2026-08-04 14:15:24 +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:*0b504396-7fce-4fe3-83e4-e774c9ab9252,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-workflowbbnsb/series-workflowbbnsb-convert-artifact-1579603147/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": "df11cf1a-102b-4310-82ce-84521bb772ab", "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-workflowbbnsb/series-workflowbbnsb-build-action-161806703/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 14:15:34 +0000 UTC FinishedAt: 2026-08-04 14:15:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 14:15:34 +0000 UTC FinishedAt: 2026-08-04 14:15:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 14:15:34 +0000 UTC FinishedAt: 2026-08-04 14:17:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 14:15:34 +0000 UTC FinishedAt: 2026-08-04 14:17:28 +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:*df11cf1a-102b-4310-82ce-84521bb772ab,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-workflowbbnsb/series-workflowbbnsb-build-action-161806703/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-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 14:17:36 +0000 UTC FinishedAt: 2026-08-04 15:06:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 14:17:36 +0000 UTC FinishedAt: 2026-08-04 15:06:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*9e35b01e-294a-4628-aa4b-15be4133e249,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*df11cf1a-102b-4310-82ce-84521bb772ab,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-workflowbbnsb/series-workflowbbnsb-build-action-3053571770/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-workflowbbnsb/series-workflowbbnsb-build-action-161806703/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 14:17:36 +0000 UTC FinishedAt: 2026-08-04 14:17:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 14:17:36 +0000 UTC FinishedAt: 2026-08-04 14:17:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbbnsb/series-workflowbbnsb-convert-artifact-1577883748/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 14:17:36 +0000 UTC FinishedAt: 2026-08-04 14:17:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 14:17:36 +0000 UTC FinishedAt: 2026-08-04 14:17:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 14:17:36 +0000 UTC FinishedAt: 2026-08-04 14:17:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 14:17:46 +0000 UTC FinishedAt: 2026-08-04 15:06:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbbnsb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ublk_ctrl_uring_cmd","ublk_ctrl_unreg_buf","ublk_shmem_remove_ranges","__ublk_shmem_remove_ranges","ublk_buf_cleanup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ef8dd9ee6dd9ff9b22d0ea23e5dbbf78a321359","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_UBLK"],"series_id":"fc7f2a32-2f94-4dcc-adbf-abbb3098d25a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 14:17:46 +0000 UTC FinishedAt: 2026-08-04 15:06:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9e35b01e-294a-4628-aa4b-15be4133e249,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*df11cf1a-102b-4310-82ce-84521bb772ab,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-workflowbbnsb/series-workflowbbnsb-build-action-3053571770/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-workflowbbnsb/series-workflowbbnsb-build-action-161806703/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-workflowbbnsb/series-workflowbbnsb-convert-artifact-1577883748/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,}