Name: series-workflowdg9gz Phase: Succeeded StartedAt: 2026-08-21 18:41:36 +0000 UTC FinishedAt: 2026-08-21 22:27:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[0] Phase: Succeeded StartedAt: 2026-08-21 18:41:36 +0000 UTC FinishedAt: 2026-08-21 18:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 18:41:36 +0000 UTC FinishedAt: 2026-08-21 18:44:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "746fc0787f616da418ffc04a110296fe95d53491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "746fc0787f616da418ffc04a110296fe95d53491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "7e3dcdfd-5d59-4778-94bb-b4289aaa5ded" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "do_tcp_getsockopt" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb190Y3BfZ2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0KClgIHdoZW4gYWNjZXNzaW5nIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lYCBvciBjYWxsaW5nIGBjYV9vcHMtXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXG5cblRoZSBsb2NhbCBidWZmZXIgYGNhX25hbWVgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZCAoYD0ge31gKSBhbmQgdGhlbiBmdWxseSBwb3B1bGF0ZWQgdmlhIGBtZW1jcHkoKWAgZnJvbSB0aGUgYG5hbWVgIGZpZWxkIG9mIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgKHdoaWNoIGFyZSB0eXBpY2FsbHkgc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIGZ1bGx5IGluaXRpYWxpemVkIGdsb2JhbCBzdHJ1Y3RzKS4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGUgYnVnIGJlaW5nIGFkZHJlc3NlZCBpcyBhIHVzZS1hZnRlci1mcmVlL3JhY2UgY29uZGl0aW9uLCB3aGljaCBpcyB3ZWxsIHdpdGhpbiB0aGUgZGV0ZWN0aW9uIGNhcGFiaWxpdGllcyBvZiBLQVNBTi4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIFJDVSByZWFkIGxvY2tzIGFyb3VuZCBhY2Nlc3NlcyB0byBgaWNzay1cdTAwM2VpY3NrX2NhX29wc2AgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0YCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIHJlYWRpbmcgVENQIGNvbmdlc3Rpb24gY29udHJvbCBpbmZvIG9yIG5hbWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTg6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkYjdkMmRlYzQ0OGY5MWFhYzU3ZWRkODY0ZTNlNDNmMzZiMmVkN2NjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTg6NDM6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggYjQyMzdkMGU5OTRkNi4uNDNjY2QyZDM3ZjljNyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTQ1NjIsOSAmIzQzOzQ1NjIsMTEgQEAgaW50IGRvX3RjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLFxuIFx0XHRpZiAoY29weV9mcm9tX3NvY2twdHIoXHUwMDI2bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcbiYjNDM7XHRcdHJjdV9yZWFkX2xvY2soKTtcbiBcdFx0Y2Ffb3BzID0gaWNzay1cdTAwM2VpY3NrX2NhX29wcztcbiBcdFx0aWYgKGNhX29wcyBcdTAwMjZcdTAwMjYgY2Ffb3BzLVx1MDAzZWdldF9pbmZvKVxuIFx0XHRcdHN6ID0gY2Ffb3BzLVx1MDAzZWdldF9pbmZvKHNrLCB+MFUsIFx1MDAyNmF0dHIsIFx1MDAyNmluZm8pO1xuJiM0MztcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4gXHRcdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgbGVuLCBzeik7XG4gXHRcdGlmIChjb3B5X3RvX3NvY2twdHIob3B0bGVuLCBcdTAwMjZsZW4sIHNpemVvZihpbnQpKSlcbkBAIC00NTc3LDE2ICYjNDM7NDU3OSwyMyBAQCBpbnQgZG9fdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsXG4gXHRcdHZhbCA9ICFpbmV0X2Nza19pbl9waW5ncG9uZ19tb2RlKHNrKTtcbiBcdFx0YnJlYWs7XG4gXG4tXHRjYXNlIFRDUF9DT05HRVNUSU9OOlxuJiM0MztcdGNhc2UgVENQX0NPTkdFU1RJT046IHtcbiYjNDM7XHRcdGNoYXIgY2FfbmFtZVtUQ1BfQ0FfTkFNRV9NQVhdID0ge307XG4mIzQzO1xuIFx0XHRpZiAoY29weV9mcm9tX3NvY2twdHIoXHUwMDI2bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sIFRDUF9DQV9OQU1FX01BWCk7XG4gXHRcdGlmIChjb3B5X3RvX3NvY2twdHIob3B0bGVuLCBcdTAwMjZsZW4sIHNpemVvZihpbnQpKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbi1cdFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGljc2stXHUwMDNlaWNza19jYV9vcHMtXHUwMDNlbmFtZSwgbGVuKSlcbiYjNDM7XG4mIzQzO1x0XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0XHRtZW1jcHkoY2FfbmFtZSwgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lLCBzaXplb2YoY2FfbmFtZSkpO1xuJiM0MztcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGNhX25hbWUsIGxlbikpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHRcdHJldHVybiAwO1xuLVxuJiM0MztcdH1cbiBcdGNhc2UgVENQX1VMUDpcbiBcdFx0aWYgKGNvcHlfZnJvbV9zb2NrcHRyKFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTg6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb190Y3BfZ2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIFJDVSByZWFkIGxvY2tzIGFyb3VuZCBhY2Nlc3NlcyB0byBgaWNzay1cdTAwM2VpY3NrX2NhX29wc2AgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0YCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIHJlYWRpbmcgVENQIGNvbmdlc3Rpb24gY29udHJvbCBpbmZvIG9yIG5hbWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkYjdkMmRlYzQ0OGY5MWFhYzU3ZWRkODY0ZTNlNDNmMzZiMmVkN2NjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTg6NDM6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3AuYyBiL25ldC9pcHY0L3RjcC5jCmluZGV4IGI0MjM3ZDBlOTk0ZDYuLjQzY2NkMmQzN2Y5YzcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcC5jCkBAIC00NTYyLDkgJiM0Mzs0NTYyLDExIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwKIAkJaWYgKGNvcHlfZnJvbV9zb2NrcHRyKCZhbXA7bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSkKIAkJCXJldHVybiAtRUZBVUxUOwogCiYjNDM7CQlyY3VfcmVhZF9sb2NrKCk7CiAJCWNhX29wcyA9IGljc2stJmd0O2ljc2tfY2Ffb3BzOwogCQlpZiAoY2Ffb3BzICZhbXA7JmFtcDsgY2Ffb3BzLSZndDtnZXRfaW5mbykKIAkJCXN6ID0gY2Ffb3BzLSZndDtnZXRfaW5mbyhzaywgfjBVLCAmYW1wO2F0dHIsICZhbXA7aW5mbyk7CiYjNDM7CQlyY3VfcmVhZF91bmxvY2soKTsKIAogCQlsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwgc3opOwogCQlpZiAoY29weV90b19zb2NrcHRyKG9wdGxlbiwgJmFtcDtsZW4sIHNpemVvZihpbnQpKSkKQEAgLTQ1NzcsMTYgJiM0Mzs0NTc5LDIzIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwKIAkJdmFsID0gIWluZXRfY3NrX2luX3Bpbmdwb25nX21vZGUoc2spOwogCQlicmVhazsKIAotCWNhc2UgVENQX0NPTkdFU1RJT046CiYjNDM7CWNhc2UgVENQX0NPTkdFU1RJT046IHsKJiM0MzsJCWNoYXIgY2FfbmFtZVtUQ1BfQ0FfTkFNRV9NQVhdID0ge307CiYjNDM7CiAJCWlmIChjb3B5X2Zyb21fc29ja3B0cigmYW1wO2xlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJbGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sIFRDUF9DQV9OQU1FX01BWCk7CiAJCWlmIChjb3B5X3RvX3NvY2twdHIob3B0bGVuLCAmYW1wO2xlbiwgc2l6ZW9mKGludCkpKQogCQkJcmV0dXJuIC1FRkFVTFQ7Ci0JCWlmIChjb3B5X3RvX3NvY2twdHIob3B0dmFsLCBpY3NrLSZndDtpY3NrX2NhX29wcy0mZ3Q7bmFtZSwgbGVuKSkKJiM0MzsKJiM0MzsJCXJjdV9yZWFkX2xvY2soKTsKJiM0MzsJCW1lbWNweShjYV9uYW1lLCBpY3NrLSZndDtpY3NrX2NhX29wcy0mZ3Q7bmFtZSwgc2l6ZW9mKGNhX25hbWUpKTsKJiM0MzsJCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwomIzQzOwkJaWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGNhX25hbWUsIGxlbikpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJcmV0dXJuIDA7Ci0KJiM0MzsJfQogCWNhc2UgVENQX1VMUDoKIAkJaWYgKGNvcHlfZnJvbV9zb2NrcHRyKCZhbXA7bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSkKIAkJCXJldHVybiAtRUZBVUxUOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzg5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRDUCBDb25nZXN0aW9uIENvbnRyb2wgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBtYWtpbmcgY2hhbmdlcyBpbiBgbmV0L2lwdjQvdGNwLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSB3cmFwcGluZyBhY2Nlc3NlcyB0byBgaWNzay0mZ3Q7aWNza19jYV9vcHNgIHdpdGhpbiBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYHJjdV9yZWFkX3VubG9jaygpYCBjYWxscyBpbnNpZGUgYGRvX3RjcF9nZXRzb2Nrb3B0YC4gVGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgYFRDUF9DQ19JTkZPYCBhbmQgYFRDUF9DT05HRVNUSU9OYCBvcHRpb25zLCB3aGljaCBpbW1lZGlhdGVseSBzaWduYWxzIGEgcG90ZW50aWFsIFJDVS1yZWxhdGVkIGlzc3VlIG9yIGEgcmFjZSBjb25kaXRpb24gZml4IHJlbGF0ZWQgdG8gY29uZ2VzdGlvbiBjb250cm9sIG9wZXJhdGlvbnMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHNpZ24gb2Ygc29tZW9uZSBwYXRjaGluZyBhIGNvbmN1cnJlbmN5IHByb2JsZW0uCgpUaGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYGRvX3RjcF9nZXRzb2Nrb3B0YCwgYW5kIG15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gR2l2ZW4gdGhlIGxvY2F0aW9uLCBhbmQgc2luY2UgaXQgaXMgaW4gYG5ldC9pcHY0L3RjcC5jYCwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiBgZG9fdGNwX2dldHNvY2tvcHRgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19JTkVUYCBpcyBlbmFibGVkLiBUaW1lIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBzb3VyY2UgdG8gZW5zdXJlIG5vIG90aGVyIGNvbmZpZ3MgYXJlIG5lZWRlZCwgYW5kIHRvIGdldCBhIGJyb2FkZXIgdmlldyBvZiB0aGUgc2NvcGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9fdGNwX2dldHNvY2tvcHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3AuYz00NDEwPXN0cnVjdCBza19idWZmICp0Y3BfZ2V0X3RpbWVzdGFtcGluZ19vcHRfc3RhdHMoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcC5jLTQ0ODEtXG5uZXQvaXB2NC90Y3AuYzo0NDgyOmludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCxcbm5ldC9pcHY0L3RjcC5jLTQ0ODMtXHRcdCAgICAgIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLCBzb2NrcHRyX3Qgb3B0bGVuKVxuLS1cbm5ldC9pcHY0L3RjcC5jPTQ4NTY9Ym9vbCB0Y3BfYnBmX2J5cGFzc19nZXRzb2Nrb3B0KGludCBsZXZlbCwgaW50IG9wdG5hbWUpXG5uZXQvaXB2NC90Y3AuYy00ODU3LXtcbm5ldC9pcHY0L3RjcC5jOjQ4NTg6XHQvKiBUQ1AgZG9fdGNwX2dldHNvY2tvcHQgaGFzIG9wdGltaXplZCBnZXRzb2Nrb3B0IGltcGxlbWVudGF0aW9uXG5uZXQvaXB2NC90Y3AuYy00ODU5LVx0ICogdG8gYXZvaWQgZXh0cmEgc29ja2V0IGxvY2sgZm9yIFRDUF9aRVJPQ09QWV9SRUNFSVZFLlxuLS1cbm5ldC9pcHY0L3RjcC5jPTQ4Njc9aW50IHRjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgY2hhciBfX3VzZXIgKm9wdHZhbCxcbi0tXG5uZXQvaXB2NC90Y3AuYy00ODc1LVx0XHRcdFx0XHRcdFx0XHRvcHR2YWwsIG9wdGxlbik7XG5uZXQvaXB2NC90Y3AuYzo0ODc2Olx0cmV0dXJuIGRvX3RjcF9nZXRzb2Nrb3B0KHNrLCBsZXZlbCwgb3B0bmFtZSwgVVNFUl9TT0NLUFRSKG9wdHZhbCksXG5uZXQvaXB2NC90Y3AuYy00ODc3LVx0XHRcdFx0IFVTRVJfU09DS1BUUihvcHRsZW4pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgVENQIFN0YWNrOiBgZG9fdGNwX2dldHNvY2tvcHRgIGlzIGEgUHJpbWUgVGFyZ2V0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGlkZW50aWZpZWQgYGRvX3RjcF9nZXRzb2Nrb3B0YCBhcyBhIHJlYWxseSBwcm9taXNpbmcgZnVuY3Rpb24gZm9yIGZ1enppbmcuIEl0JiMzOTtzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGUgVENQIHN0YWNrLCB3aGljaCBtZWFucyBhbnkgdnVsbmVyYWJpbGl0aWVzIGhlcmUgY291bGQgaGF2ZSBzZXJpb3VzIHJhbWlmaWNhdGlvbnMuIFRoZSBjb2RlIGNoYW5nZSBpdHNlbGYgc2VlbXMgcmVsYXRpdmVseSBtaW5vciDigJMgdGhleSYjMzk7cmUganVzdCBhZGRpbmcgUkNVIGxvY2tpbmcgYXJvdW5kIHNvbWUgY29uZ2VzdGlvbiBjb250cm9sIG9wZXJhdGlvbnMg4oCTIGJ1dCBvZnRlbiwgc3VidGxlIGNoYW5nZXMgbGlrZSB0aGF0IGFyZSB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXRzIGxpZS4gSXTigJlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgZ2l2ZW4gaXRzIGNlbnRyYWxpdHksIGl04oCZcyB3b3J0aCB0aGUgZWZmb3J0LgoKSSYjMzk7bSBrZXlpbmcgaW4gb24gYGRvX3RjcF9nZXRzb2Nrb3B0YCBhcyB0aGUgbWFpbiBmb2N1cy4gQ29uZmlndXJhdGlvbi13aXNlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBJTkVUYCBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGRlZmF1bHQsIGJ1dCBJIG1pZ2h0IGFzIHdlbGwgY2hlY2sgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAganVzdCB0byBiZSBjZXJ0YWluLiBJIGNvdWxkIGFsc28gY29uc2lkZXIgZXhwbGljaXRseSBlbmFibGluZyBgSVBfVENQYCwgb3IganVzdCBzdGlja2luZyB3aXRoIGBJTkVUYCBmb3IgYnJvYWRlciBjb3ZlcmFnZS4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTktXHQgICAgIGluZXRfdGltZXdhaXRfc29jay5vIGluZXRfY29ubmVjdGlvbl9zb2NrLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlOjEwOlx0ICAgICB0Y3AubyB0Y3BfaW5wdXQubyB0Y3Bfb3V0cHV0Lm8gdGNwX3RpbWVyLm8gdGNwX2lwdjQubyBcXFxubmV0L2lwdjQvTWFrZWZpbGUtMTEtXHQgICAgIHRjcF9taW5pc29ja3MubyB0Y3BfY29uZy5vIHRjcF9tZXRyaWNzLm8gdGNwX2Zhc3RvcGVuLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTEyLVx0ICAgICB0Y3BfcmVjb3ZlcnkubyB0Y3BfdWxwLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlOjEzOlx0ICAgICB0Y3Bfb2ZmbG9hZC5vIHRjcF9wbGIubyBkYXRhZ3JhbS5vIHJhdy5vIHVkcC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNC1cdCAgICAgdWRwX29mZmxvYWQubyBhcnAubyBpY21wLm8gZGV2aW5ldC5vIGFmX2luZXQubyBpZ21wLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfVENQX0NPTkdfQ1VCSUMpICYjNDM7PSB0Y3BfY3ViaWMub1xubmV0L2lwdjQvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX1RDUF9DT05HX0RDVENQKSAmIzQzOz0gdGNwX2RjdGNwLm9cbm5ldC9pcHY0L01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19UQ1BfQ09OR19XRVNUV09PRCkgJiM0Mzs9IHRjcF93ZXN0d29vZC5vXG4tLVxubmV0L2lwdjQvTWFrZWZpbGU9NTQ9b2JqLSQoQ09ORklHX1RDUF9DT05HX0hZQkxBKSAmIzQzOz0gdGNwX2h5YmxhLm9cbm5ldC9pcHY0L01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19UQ1BfQ09OR19IVENQKSAmIzQzOz0gdGNwX2h0Y3Aub1xubmV0L2lwdjQvTWFrZWZpbGUtNTYtb2JqLSQoQ09ORklHX1RDUF9DT05HX1ZFR0FTKSAmIzQzOz0gdGNwX3ZlZ2FzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDA1CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBJUHY0IE5ldHdvcmtpbmcgQnVpbGQgUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBJUHY0IG5ldHdvcmtpbmcgY29kZSBnZXRzIGJ1aWx0LiBJIHNlZSBpdCYjMzk7cyB1bmNvbmRpdGlvbmFsbHkgaW5jbHVkZWQgaW4gYG9iai15YCB3aXRoaW4gYG5ldC9pcHY0L01ha2VmaWxlYC4gVGhhdCBtZWFucyBpdCYjMzk7cyAqYWx3YXlzKiBnb2luZyB0byBiZSBwYXJ0IG9mIHRoZSBidWlsZCAqaWYqIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gV2hpY2ggbWFrZXMgc2Vuc2UsIGJlY2F1c2UgeW91IHdvdWxkbiYjMzk7dCBoYXZlIElQdjQgaWYgeW91IGRpZG4mIzM5O3QgaGF2ZSBiYXNpYyBpbnRlcm5ldCBwcm90b2NvbCBzdXBwb3J0LiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlLCBJIG5lZWQgdG8gc2VlIGhvdyBgbmV0L2lwdjQvTWFrZWZpbGVgIGlzIGluY2x1ZGVkLiBJIG5lZWQgdG8gbW92ZSB1cCBhIGxldmVsIGFuZCBleGFtaW5lIGBuZXQvTWFrZWZpbGVgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmdWxseSBncmFzcCB0aGUgZGVwZW5kZW5jeSBjaGFpbiBoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYG5ldC9NYWtlZmlsZWAgaGFzIHRvIHNheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfTkVURklMVEVSKVx0XHQmIzQzOz0gbmV0ZmlsdGVyL1xubmV0L01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19JTkVUKVx0XHQmIzQzOz0gaXB2NC9cbm5ldC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVExTKVx0XHQmIzQzOz0gdGxzL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMTIKCQkJCQkJCW91dHB1dDogMTA0CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQ1AgU3RhY2sgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBpcyBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGBJTkVUYCBjb25maWd1cmF0aW9uLiBNeSBmb2N1cyBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgZnVuY3Rpb24gYGRvX3RjcF9nZXRzb2Nrb3B0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4KCk15IHJlYXNvbmluZyBsZWFkcyBtZSB0byBiZWxpZXZlIHRoaXMgaXMgYSBjcml0aWNhbCBmdW5jdGlvbmFsIHVwZGF0ZSB3aXRoaW4gdGhlIFRDUCBjb3JlLiBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggYWRkcyBSZWFkIENvcHkgVXBkYXRlIChSQ1UpIHJlYWQgbG9ja3MgdG8gcHJvdGVjdCBhY2Nlc3NlcyB0byBgaWNzay0mZ3Q7aWNza19jYV9vcHNgIHdpdGhpbiBgZG9fdGNwX2dldHNvY2tvcHRgLiBUaGlzIGlzIGNsZWFybHkgYWltZWQgYXQgcHJldmVudGluZyByYWNlIGNvbmRpdGlvbnMgb3IgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGVycm9ycyB3aGVuIHJldHJpZXZpbmcgVENQIGNvbmdlc3Rpb24gY29udHJvbCBpbmZvcm1hdGlvbiBvciBpdHMgbmFtZS4gVGhpcyBpcyBhIHNvbGlkLCBjbGVhbiBmaXgsIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiBpbiBhIGhpZ2gtcHJpb3JpdHkgYXJlYS4gTm8gdHJpdmlhbCBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fdGNwX2dldHNvY2tvcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcmVhZCBsb2NrcyBhcm91bmQgYWNjZXNzZXMgdG8gYGljc2stXHUwMDNlaWNza19jYV9vcHNgIGluIGBkb190Y3BfZ2V0c29ja29wdGAgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiByZWFkaW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaW5mbyBvciBuYW1lLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fdGNwX2dldHNvY2tvcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcmVhZCBsb2NrcyBhcm91bmQgYWNjZXNzZXMgdG8gYGljc2stXHUwMDNlaWNza19jYV9vcHNgIGluIGBkb190Y3BfZ2V0c29ja29wdGAgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiByZWFkaW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaW5mbyBvciBuYW1lLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQ0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0KClgIHdoZW4gYWNjZXNzaW5nIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lYCBvciBjYWxsaW5nIGBjYV9vcHMtXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXG5cblRoZSBsb2NhbCBidWZmZXIgYGNhX25hbWVgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZCAoYD0ge31gKSBhbmQgdGhlbiBmdWxseSBwb3B1bGF0ZWQgdmlhIGBtZW1jcHkoKWAgZnJvbSB0aGUgYG5hbWVgIGZpZWxkIG9mIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgKHdoaWNoIGFyZSB0eXBpY2FsbHkgc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIGZ1bGx5IGluaXRpYWxpemVkIGdsb2JhbCBzdHJ1Y3RzKS4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGUgYnVnIGJlaW5nIGFkZHJlc3NlZCBpcyBhIHVzZS1hZnRlci1mcmVlL3JhY2UgY29uZGl0aW9uLCB3aGljaCBpcyB3ZWxsIHdpdGhpbiB0aGUgZGV0ZWN0aW9uIGNhcGFiaWxpdGllcyBvZiBLQVNBTi4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkYjdkMmRlYzQ0OGY5MWFhYzU3ZWRkODY0ZTNlNDNmMzZiMmVkN2NjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTg6NDM6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3AuYyBiL25ldC9pcHY0L3RjcC5jCmluZGV4IGI0MjM3ZDBlOTk0ZDYuLjQzY2NkMmQzN2Y5YzcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcC5jCkBAIC00NTYyLDkgJiM0Mzs0NTYyLDExIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwKIAkJaWYgKGNvcHlfZnJvbV9zb2NrcHRyKCZhbXA7bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSkKIAkJCXJldHVybiAtRUZBVUxUOwogCiYjNDM7CQlyY3VfcmVhZF9sb2NrKCk7CiAJCWNhX29wcyA9IGljc2stJmd0O2ljc2tfY2Ffb3BzOwogCQlpZiAoY2Ffb3BzICZhbXA7JmFtcDsgY2Ffb3BzLSZndDtnZXRfaW5mbykKIAkJCXN6ID0gY2Ffb3BzLSZndDtnZXRfaW5mbyhzaywgfjBVLCAmYW1wO2F0dHIsICZhbXA7aW5mbyk7CiYjNDM7CQlyY3VfcmVhZF91bmxvY2soKTsKIAogCQlsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwgc3opOwogCQlpZiAoY29weV90b19zb2NrcHRyKG9wdGxlbiwgJmFtcDtsZW4sIHNpemVvZihpbnQpKSkKQEAgLTQ1NzcsMTYgJiM0Mzs0NTc5LDIzIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwKIAkJdmFsID0gIWluZXRfY3NrX2luX3Bpbmdwb25nX21vZGUoc2spOwogCQlicmVhazsKIAotCWNhc2UgVENQX0NPTkdFU1RJT046CiYjNDM7CWNhc2UgVENQX0NPTkdFU1RJT046IHsKJiM0MzsJCWNoYXIgY2FfbmFtZVtUQ1BfQ0FfTkFNRV9NQVhdID0ge307CiYjNDM7CiAJCWlmIChjb3B5X2Zyb21fc29ja3B0cigmYW1wO2xlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJbGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sIFRDUF9DQV9OQU1FX01BWCk7CiAJCWlmIChjb3B5X3RvX3NvY2twdHIob3B0bGVuLCAmYW1wO2xlbiwgc2l6ZW9mKGludCkpKQogCQkJcmV0dXJuIC1FRkFVTFQ7Ci0JCWlmIChjb3B5X3RvX3NvY2twdHIob3B0dmFsLCBpY3NrLSZndDtpY3NrX2NhX29wcy0mZ3Q7bmFtZSwgbGVuKSkKJiM0MzsKJiM0MzsJCXJjdV9yZWFkX2xvY2soKTsKJiM0MzsJCW1lbWNweShjYV9uYW1lLCBpY3NrLSZndDtpY3NrX2NhX29wcy0mZ3Q7bmFtZSwgc2l6ZW9mKGNhX25hbWUpKTsKJiM0MzsJCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwomIzQzOwkJaWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGNhX25hbWUsIGxlbikpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJcmV0dXJuIDA7Ci0KJiM0MzsJfQogCWNhc2UgVENQX1VMUDoKIAkJaWYgKGNvcHlfZnJvbV9zb2NrcHRyKCZhbXA7bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSkKIAkJCXJldHVybiAtRUZBVUxUOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDUCBDb25nZXN0aW9uIENvbnRyb2wgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZG9fdGNwX2dldHNvY2tvcHRgIGluIGBuZXQvaXB2NC90Y3AuY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIGFyb3VuZCBhY2Nlc3NlcyB0byBgaWNzay0mZ3Q7aWNza19jYV9vcHNgLCB3aGljaCBpcyBnb29kIHByYWN0aWNlIGZvciBSQ1UtcHJvdGVjdGVkIGRhdGEgc3RydWN0dXJlcy4gU3BlY2lmaWNhbGx5LCBmb3IgdGhlIGBUQ1BfQ09OR0VTVElPTmAgb3B0aW9uLCBJIHNlZSB0aGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgbG9jYWwgYnVmZmVyLCBgY2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtgLiBUaGUgaWRlYSBpcyB0byBjb3B5IHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtIG5hbWUgZnJvbSB0aGUga2VybmVsIHRvIHVzZXIgc3BhY2UuIFRoZSBzdGVwcyBhcmUgY2xlYXI6IGdyYWIgdGhlIG5hbWUgZnJvbSBgaWNzay0mZ3Q7aWNza19jYV9vcHMtJmd0O25hbWVgIHVuZGVyIHRoZSBSQ1UgbG9jaywgcHV0IGl0IGludG8gdGhhdCBsb2NhbCBidWZmZXIsIGFuZCB0aGVuIGNvcHkgdGhlIGJ1ZmZlciB0byB1c2VyIHNwYWNlIHVzaW5nIGBjb3B5X3RvX3NvY2twdHJgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNjcnV0aW5pemUgdGhpcyBmb3IgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4gVGhleSAqZGlkKiBpbml0aWFsaXplIGBjYV9uYW1lYCB0byB6ZXJvOiBgY2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydC4gSG93ZXZlciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBgbWVtY3B5YCBmcm9tIGBpY3NrLSZndDtpY3NrX2NhX29wcy0mZ3Q7bmFtZWAgaW50byBgY2FfbmFtZWAgaXMgc2FmZS4gU3BlY2lmaWNhbGx5LCB0aGlzIGxpbmUsIGBtZW1jcHkoY2FfbmFtZSwgaWNzay0mZ3Q7aWNza19jYV9vcHMtJmd0O25hbWUsIHNpemVvZihjYV9uYW1lKSk7YCwgY29waWVzIGBzaXplb2YoY2FfbmFtZSlgIGJ5dGVzIGZyb20gYGljc2stJmd0O2ljc2tfY2Ffb3BzLSZndDtuYW1lYC4KClRoYXQmIzM5O3MgdGhlIHBhcnQgdGhhdCBjb25jZXJucyBtZS4gVGhlIG5hbWUgaXMgYSBzdHJpbmcsIGFuZCBgaWNzay0mZ3Q7aWNza19jYV9vcHMtJmd0O25hbWVgICpjb3VsZCogYmUgc2hvcnRlciB0aGFuIGBUQ1BfQ0FfTkFNRV9NQVhgLiBXaGF0IGhhcHBlbnMgaWYgaXQgKmlzKiBzaG9ydGVyPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHNgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBuYW1lYCBpcyBudWxsLXRlcm1pbmF0ZWQsIG9yIHRoYXQgYSBzdWl0YWJsZSBtYXhpbXVtIHN0cmluZyBsZW5ndGggaXMgZW5mb3JjZWQuIE90aGVyd2lzZSwgd2UgY291bGQgaGF2ZSBhIGJ1ZmZlciBvdmVyZmxvdyByaXNrLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGRpZyBpbnRvIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiB0byB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgXFx7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNwLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNwLmg9MTMwNj1zdHJ1Y3QgcmF0ZV9zYW1wbGUge1xuLS1cbmluY2x1ZGUvbmV0L3RjcC5oLTEzMjQtXG5pbmNsdWRlL25ldC90Y3AuaDoxMzI1OnN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMge1xuaW5jbHVkZS9uZXQvdGNwLmgtMTMyNi0vKiBmYXN0IHBhdGggZmllbGRzIGFyZSBwdXQgZmlyc3QgdG8gZmlsbCBvbmUgY2FjaGUgbGluZSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQ5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipEaXZpbmcgaW50byB0aGUgVENQIENvbmdlc3Rpb24gQ29udHJvbCBMYW5kc2NhcGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgd2FudCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY29yZSBzdHJ1Y3R1cmUgYmVoaW5kIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wsIHNvIGxldCYjMzk7cyBqdW1wIHJpZ2h0IGludG8gdGhlIGB0Y3BfY29uZ2VzdGlvbl9vcHNgIHN0cnVjdCBkZWZpbml0aW9uLiBJIGtub3cgaXQmIzM5O3MgZGVmaW5lZCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgLCBhbmQgSSBzZWVtIHRvIHJlY2FsbCBpdCBiZWluZyBhcm91bmQgbGluZSAxMzI1LCB0aG91Z2ggSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRvIGJlIHByZWNpc2UuIFRoaXMgc3RydWN0IGlzIHRoZSBiYWNrYm9uZSwgdGhlIGNlbnRyYWwgaW50ZXJmYWNlIGZvciBhbGwgY29uZ2VzdGlvbiBjb250cm9sIGFsZ29yaXRobXMgaW4gdGhlIGtlcm5lbC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGVhY2ggZnVuY3Rpb24gcG9pbnRlciBpbiB0aGF0IHN0cnVjdCBkb2VzLCBtYWtpbmcgc3VyZSBJIGNhbiBxdWlja2x5IHNlZSBob3cgZGlmZmVyZW50IGFsZ29yaXRobXMgYXJlIHJlZ2lzdGVyZWQgYW5kIHV0aWxpemVkLiBUaGVyZSBhcmUgcHJvYmFibHkgYSBmZXcgY3JpdGljYWwgZmllbGRzIG9yIGZ1bmN0aW9uIHBvaW50ZXJzIEkmIzM5O20gbG9va2luZyBmb3Igc3BlY2lmaWNhbGx5LCBsaWtlbHkgcmVsYXRlZCB0byByYXRlIGxpbWl0aW5nIG9yIHdpbmRvdyBhZGp1c3RtZW50LiBJJiMzOTtsbCB0YWtlIGEgY2xvc2UgbG9vayBhdCB0aGUgZGF0YSB0eXBlcyB1c2VkIGFzIHdlbGwsIGFuZCBhbnkgbWFjcm9zIHJlbGF0ZWQgdG8gaXQuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbXBvc2l0aW9uIG9mIHRoaXMgc3RydWN0dXJlIGlzIGZvdW5kYXRpb25hbCB0byBjb21wcmVoZW5kaW5nIGhvdyBhbnkgc3BlY2lmaWMgY29uZ2VzdGlvbiBjb250cm9sIGFsZ29yaXRobSBvcGVyYXRlcyB3aXRoaW4gdGhlIFRDUCBzdGFjay4gQWxyaWdodCwgbGV0JiMzOTtzIGdldCBzdGFydGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3RjcC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTMyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMzI1Olx0c3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB7XG4xMzI2Olx0LyogZmFzdCBwYXRoIGZpZWxkcyBhcmUgcHV0IGZpcnN0IHRvIGZpbGwgb25lIGNhY2hlIGxpbmUgKi9cbjEzMjc6XHRcbjEzMjg6XHRcdC8qIEEgY29uZ2VzdGlvbiBjb250cm9sIChDQykgbXVzdCBwcm92aWRlIG9uZSBvZiBlaXRoZXI6XG4xMzI5Olx0XHQgKlxuMTMzMDpcdFx0ICogKGEpIGEgY29uZ19hdm9pZCBmdW5jdGlvbiwgaWYgdGhlIENDIHdhbnRzIHRvIHVzZSB0aGUgY29yZSBUQ1BcbjEzMzE6XHRcdCAqICAgICBzdGFjayYjMzk7cyBkZWZhdWx0IGZ1bmN0aW9uYWxpdHkgdG8gaW1wbGVtZW50IGEgXCYjMzQ7Y2xhc3NpY1wmIzM0O1xuMTMzMjpcdFx0ICogICAgIChSZW5vL0NVQklDLXN0eWxlKSByZXNwb25zZSB0byBwYWNrZXQgbG9zcywgUkZDMzE2OCBFQ04sXG4xMzMzOlx0XHQgKiAgICAgaWRsZSBwZXJpb2RzLCBwYWNpbmcgcmF0ZSBjb21wdXRhdGlvbnMsIGV0Yy5cbjEzMzQ6XHRcdCAqXG4xMzM1Olx0XHQgKiAoYikgYSBjb25nX2NvbnRyb2wgZnVuY3Rpb24sIGlmIHRoZSBDQyB3YW50cyBjdXN0b20gYmVoYXZpb3IgYW5kXG4xMzM2Olx0XHQgKiAgICAgIGNvbXBsZXRlIGNvbnRyb2wgb2YgYWxsIGNvbmdlc3Rpb24gY29udHJvbCBiZWhhdmlvcnMuXG4xMzM3Olx0XHQgKi9cbjEzMzg6XHRcdC8qIChhKSBcJiMzNDtjbGFzc2ljXCYjMzQ7IHJlc3BvbnNlOiBjYWxjdWxhdGUgbmV3IGN3bmQuXG4xMzM5Olx0XHQgKi9cbjEzNDA6XHRcdHZvaWQgKCpjb25nX2F2b2lkKShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBhY2ssIHUzMiBhY2tlZCk7XG4xMzQxOlx0XHQvKiAoYikgXCYjMzQ7Y3VzdG9tXCYjMzQ7IHJlc3BvbnNlOiBjYWxsIHdoZW4gcGFja2V0cyBhcmUgZGVsaXZlcmVkIHRvIHVwZGF0ZVxuMTM0MjpcdFx0ICogY3duZCBhbmQgcGFjaW5nIHJhdGUsIGFmdGVyIGFsbCB0aGUgY2Ffc3RhdGUgcHJvY2Vzc2luZy5cbjEzNDM6XHRcdCAqL1xuMTM0NDpcdFx0dm9pZCAoKmNvbmdfY29udHJvbCkoc3RydWN0IHNvY2sgKnNrLCB1MzIgYWNrLCBpbnQgZmxhZywgY29uc3Qgc3RydWN0IHJhdGVfc2FtcGxlICpycyk7XG4xMzQ1Olx0XG4xMzQ2Olx0XHQvKiByZXR1cm4gc2xvdyBzdGFydCB0aHJlc2hvbGQgKHJlcXVpcmVkKSAqL1xuMTM0NzpcdFx0dTMyICgqc3N0aHJlc2gpKHN0cnVjdCBzb2NrICpzayk7XG4xMzQ4Olx0XG4xMzQ5Olx0XHQvKiBjYWxsIGJlZm9yZSBjaGFuZ2luZyBjYV9zdGF0ZSAob3B0aW9uYWwpICovXG4xMzUwOlx0XHR2b2lkICgqc2V0X3N0YXRlKShzdHJ1Y3Qgc29jayAqc2ssIHU4IG5ld19zdGF0ZSk7XG4xMzUxOlx0XG4xMzUyOlx0XHQvKiBjYWxsIHdoZW4gY3duZCBldmVudCBvY2N1cnMgKG9wdGlvbmFsKSAqL1xuMTM1MzpcdFx0dm9pZCAoKmN3bmRfZXZlbnQpKHN0cnVjdCBzb2NrICpzaywgZW51bSB0Y3BfY2FfZXZlbnQgZXYpO1xuMTM1NDpcdFxuMTM1NTpcdFx0LyogY2FsbCB3aGVuIENBX0VWRU5UX1RYX1NUQVJUIGN3bmQgZXZlbnQgb2NjdXJzIChvcHRpb25hbCkgKi9cbjEzNTY6XHRcdHZvaWQgKCpjd25kX2V2ZW50X3R4X3N0YXJ0KShzdHJ1Y3Qgc29jayAqc2spO1xuMTM1NzpcdFxuMTM1ODpcdFx0LyogY2FsbCB3aGVuIGFjayBhcnJpdmVzIChvcHRpb25hbCkgKi9cbjEzNTk6XHRcdHZvaWQgKCppbl9hY2tfZXZlbnQpKHN0cnVjdCBzb2NrICpzaywgdTMyIGZsYWdzKTtcbjEzNjA6XHRcbjEzNjE6XHRcdC8qIGhvb2sgZm9yIHBhY2tldCBhY2sgYWNjb3VudGluZyAob3B0aW9uYWwpICovXG4xMzYyOlx0XHR2b2lkICgqcGt0c19hY2tlZCkoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgYWNrX3NhbXBsZSAqc2FtcGxlKTtcbjEzNjM6XHRcbjEzNjQ6XHRcdC8qIG92ZXJyaWRlIHN5c2N0bF90Y3BfbWluX3Rzb19zZWdzIChvcHRpb25hbCkgKi9cbjEzNjU6XHRcdHUzMiAoKm1pbl90c29fc2Vncykoc3RydWN0IHNvY2sgKnNrKTtcbjEzNjY6XHRcbjEzNjc6XHRcdC8qIG5ldyB2YWx1ZSBvZiBjd25kIGFmdGVyIGxvc3MgKHJlcXVpcmVkKSAqL1xuMTM2ODpcdFx0dTMyICAoKnVuZG9fY3duZCkoc3RydWN0IHNvY2sgKnNrKTtcbjEzNjk6XHRcdC8qIHJldHVybnMgdGhlIG11bHRpcGxpZXIgdXNlZCBpbiB0Y3Bfc25kYnVmX2V4cGFuZCAob3B0aW9uYWwpICovXG4xMzcwOlx0XHR1MzIgKCpzbmRidWZfZXhwYW5kKShzdHJ1Y3Qgc29jayAqc2spO1xuMTM3MTpcdFxuMTM3MjpcdC8qIGNvbnRyb2wvc2xvdyBwYXRocyBwdXQgbGFzdCAqL1xuMTM3MzpcdFx0LyogZ2V0IGluZm8gZm9yIGluZXRfZGlhZyAob3B0aW9uYWwpICovXG4xMzc0Olx0XHRzaXplX3QgKCpnZXRfaW5mbykoc3RydWN0IHNvY2sgKnNrLCB1MzIgZXh0LCBpbnQgKmF0dHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NDkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBJJiMzOTttIHJlYWR5IHRvIGRpdmUgaW50byB0aGlzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4uLgoqKioKCioqQW5hbHl6aW5nIHRoZSBJbnB1dCAtIE15IEltbWVkaWF0ZSBQcm9jZXNzKioKCkFscmlnaHQsIHRoZSBkaXJlY3RpdmUgaXMgY2xlYXIuIEkgbmVlZCB0byBzdW1tYXJpemUgdGhlIHByb3ZpZGVkICYjMzQ7dGhvdWdodHMmIzM0OyBhcyBpZiB0aGV5IHdlcmUgbXkgb3duLCBwcmVzZW50ZWQgdG8gYW4gZXhwZXJ0LiBUaGUga2V5IGlzIGluIG1haW50YWluaW5nIHRoZSBmbG93IG9mIHRob3VnaHQsIG5vdCBqdXN0IHJlZ3VyZ2l0YXRpbmcgY29udGVudCwgYnV0IHVuZGVyc3RhbmRpbmcgaXQgYXMgYW4gZXhwZXJ0IHdvdWxkLiBJdCYjMzk7cyBhIHNvcnQgb2YgbWVudGFsIG1hcHBpbmcsIHRyYW5zZm9ybWluZyBhbiBleHRlcm5hbCBzdGltdWx1cyBpbnRvIGFuIGludGVybmFsIHByb2Nlc3MuIExldCYjMzk7cyBrZWVwIHRoaXMgc2hvcnQgYW5kIHN3ZWV0IHRvIGtlZXAgdGhlIGV4cGVydCYjMzk7cyBhdHRlbnRpb24uIEkgbmVlZCB0byBxdWlja2x5IGVuZ2FnZSB3aXRoIHRoZSB0ZXh0IGFuZCBzZWUgd2hhdCYjMzk7cyB0aGVyZS4KKioqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNwLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzNzU6XHRcdFx0XHQgICB1bmlvbiB0Y3BfY2NfaW5mbyAqaW5mbyk7XG4xMzc2Olx0XG4xMzc3Olx0XHRjaGFyIFx0XHRcdG5hbWVbVENQX0NBX05BTUVfTUFYXTtcbjEzNzg6XHRcdHN0cnVjdCBtb2R1bGVcdFx0Km93bmVyO1xuMTM3OTpcdFx0c3RydWN0IGxpc3RfaGVhZFx0bGlzdDtcbjEzODA6XHRcdHUzMlx0XHRcdGtleTtcbjEzODE6XHRcdHUzMlx0XHRcdGZsYWdzO1xuMTM4MjpcdFxuMTM4MzpcdFx0LyogaW5pdGlhbGl6ZSBwcml2YXRlIGRhdGEgKG9wdGlvbmFsKSAqL1xuMTM4NDpcdFx0dm9pZCAoKmluaXQpKHN0cnVjdCBzb2NrICpzayk7XG4xMzg1Olx0XHQvKiBjbGVhbnVwIHByaXZhdGUgZGF0YSAgKG9wdGlvbmFsKSAqL1xuMTM4NjpcdFx0dm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBzb2NrICpzayk7XG4xMzg3Olx0fSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xuMTM4ODpcdFxuMTM4OTpcdGludCB0Y3BfcmVnaXN0ZXJfY29uZ2VzdGlvbl9jb250cm9sKHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnR5cGUpO1xuMTM5MDpcdHZvaWQgdGNwX3VucmVnaXN0ZXJfY29uZ2VzdGlvbl9jb250cm9sKHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnR5cGUpO1xuMTM5MTpcdGludCB0Y3BfdXBkYXRlX2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICp0eXBlLFxuMTM5MjpcdFx0XHRcdFx0ICBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICpvbGRfdHlwZSk7XG4xMzkzOlx0aW50IHRjcF92YWxpZGF0ZV9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyAqY2EpO1xuMTM5NDpcdFxuMTM5NTpcdHZvaWQgdGNwX2Fzc2lnbl9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IHNvY2sgKnNrKTtcbjEzOTY6XHR2b2lkIHRjcF9pbml0X2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3Qgc29jayAqc2spO1xuMTM5NzpcdHZvaWQgdGNwX2NsZWFudXBfY29uZ2VzdGlvbl9jb250cm9sKHN0cnVjdCBzb2NrICpzayk7XG4xMzk4Olx0aW50IHRjcF9zZXRfZGVmYXVsdF9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lKTtcbjEzOTk6XHR2b2lkIHRjcF9nZXRfZGVmYXVsdF9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IG5ldCAqbmV0LCBjaGFyICpuYW1lKTtcbjE0MDA6XHR2b2lkIHRjcF9nZXRfYXZhaWxhYmxlX2Nvbmdlc3Rpb25fY29udHJvbChjaGFyICpidWYsIHNpemVfdCBsZW4pO1xuMTQwMTpcdHZvaWQgdGNwX2dldF9hbGxvd2VkX2Nvbmdlc3Rpb25fY29udHJvbChjaGFyICpidWYsIHNpemVfdCBsZW4pO1xuMTQwMjpcdGludCB0Y3Bfc2V0X2FsbG93ZWRfY29uZ2VzdGlvbl9jb250cm9sKGNoYXIgKmFsbG93ZWQpO1xuMTQwMzpcdGludCB0Y3Bfc2V0X2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbG9hZCxcbjE0MDQ6XHRcdFx0XHQgICAgICAgYm9vbCBjYXBfbmV0X2FkbWluKTtcbjE0MDU6XHR1MzIgdGNwX3Nsb3dfc3RhcnQoc3RydWN0IHRjcF9zb2NrICp0cCwgdTMyIGFja2VkKTtcbjE0MDY6XHR2b2lkIHRjcF9jb25nX2F2b2lkX2FpKHN0cnVjdCB0Y3Bfc29jayAqdHAsIHUzMiB3LCB1MzIgYWNrZWQpO1xuMTQwNzpcdFxuMTQwODpcdHUzMiB0Y3BfcmVub19zc3RocmVzaChzdHJ1Y3Qgc29jayAqc2spO1xuMTQwOTpcdHUzMiB0Y3BfcmVub191bmRvX2N3bmQoc3RydWN0IHNvY2sgKnNrKTtcbjE0MTA6XHR2b2lkIHRjcF9yZW5vX2NvbmdfYXZvaWQoc3RydWN0IHNvY2sgKnNrLCB1MzIgYWNrLCB1MzIgYWNrZWQpO1xuMTQxMTpcdGV4dGVybiBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIHRjcF9yZW5vO1xuMTQxMjpcdFxuMTQxMzpcdHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnRjcF9jYV9maW5kKGNvbnN0IGNoYXIgKm5hbWUpO1xuMTQxNDpcdHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnRjcF9jYV9maW5kX2tleSh1MzIga2V5KTtcbjE0MTU6XHR1MzIgdGNwX2NhX2dldF9rZXlfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lLCBib29sICplY25fY2EpO1xuMTQxNjpcdCNpZmRlZiBDT05GSUdfSU5FVFxuMTQxNzpcdGNoYXIgKnRjcF9jYV9nZXRfbmFtZV9ieV9rZXkodTMyIGtleSwgY2hhciAqYnVmZmVyKTtcbjE0MTg6XHQjZWxzZVxuMTQxOTpcdHN0YXRpYyBpbmxpbmUgY2hhciAqdGNwX2NhX2dldF9uYW1lX2J5X2tleSh1MzIga2V5LCBjaGFyICpidWZmZXIpXG4xNDIwOlx0e1xuMTQyMTpcdFx0cmV0dXJuIE5VTEw7XG4xNDIyOlx0fVxuMTQyMzpcdCNlbmRpZlxuMTQyNDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTg1CgkJCQkJCQlvdXRwdXQ6IDI4MQoJCQkJCQkJdGhvdWdodHM6IDE5MzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFRDUCBDb25nZXN0aW9uIENvbnRyb2wgR2V0c29ja29wdCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRvX3RjcF9nZXRzb2Nrb3B0YCBpbiBgbmV0L2lwdjQvdGNwLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhlIG9yaWdpbmFsIGNvZGUgZGlyZWN0bHkgYWNjZXNzZXMgYGljc2stJmd0O2ljc2tfY2Ffb3BzLSZndDtuYW1lYCBhbmQgb3RoZXIgbWVtYmVycyB3aXRoaW4gdGhlIGBUQ1BfQ09OR0VTVElPTmAgY2FzZSwgYW5kIHRoZSBzZWNvbmQgcGFydCB1c2VzIGBjYV9vcHNgIGRpcmVjdGx5LCB3aXRob3V0IGFueSBjb25jdXJyZW5jeSBwcm90ZWN0aW9uLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGBpY3NrLSZndDtpY3NrX2NhX29wc2AgY291bGQgYmUgY2hhbmdlZCBvciBldmVuIGZyZWVkIGNvbmN1cnJlbnRseSwgc3BlY2lmaWNhbGx5LCB3aGlsZSBgY29weV90b19zb2NrcHRyYCAod2hpY2ggY2FuIHNsZWVwKSBpcyBleGVjdXRpbmcuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIHN1c2NlcHRpYmxlIHRvIGEgY3Jhc2ggb3IgdW5kZWZpbmVkIGJlaGF2aW9yLgoKVGhlIHBhdGNoIGNsZWFybHkgYWRkcmVzc2VzIHRoaXMgYnkgaW50cm9kdWNpbmcgYHJjdV9yZWFkX2xvY2soKWAgYmVmb3JlIGFjY2Vzc2luZyBhbnkgbWVtYmVyIG9mIGBpY3NrLSZndDtpY3NrX2NhX29wc2AuIFRoaXMgcHJvdGVjdHMgdGhlIGNyaXRpY2FsIHNlY3Rpb24sIGVuc3VyaW5nIHRoYXQgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdCByZW1haW5zIHZhbGlkIHdoaWxlIGl0JiMzOTtzIGJlaW5nIHJlYWQuIFRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBwYXRjaCBjb3BpZXMgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBuYW1lIGludG8gYSBsb2NhbCBidWZmZXIsIGBjYV9uYW1lYCwgYmVmb3JlIHBhc3NpbmcgaXQgdG8gdXNlciBzcGFjZS4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGZvciBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY29uY3VycmVudCBkYXRhIGFjY2Vzcy4gV2UgYXJlIG1ha2luZyBhIGNvcHkgaW50byBhIGxvY2FsIGJ1ZmZlciB3aGlsZSB1bmRlciB0aGUgcHJvdGVjdGlvbiBvZiB0aGUgbG9jay4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gYSBiaXQgZGVlcGVyLiBUaGUgYGNhX25hbWVgIGFycmF5IGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gemVybyB1c2luZyBgPSB7fWAuIENydWNpYWxseSwgYG1lbWNweWAgY29waWVzICphbGwqIG9mIGBUQ1BfQ0FfTkFNRV9NQVhgIGJ5dGVzIGludG8gYGNhX25hbWVgLiBUaGUgb3JpZ2luYWwgY29kZSBqdXN0IGNvcGllZCB0aGUgYGxlbmAgYnl0ZXMgZnJvbSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG5hbWUuIEkgd2FzIGNvbmNlcm5lZCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUgYGNhX25hbWVgIGJ1ZmZlciBsZWFraW5nIHRvIHVzZXIgc3BhY2UuIEhvd2V2ZXIsIHNpbmNlIHRoZSBhcnJheSBpcyBpbml0aWFsaXplZCB0byB6ZXJvLCBhbmQgaXMgdGhlbiBjb21wbGV0ZWx5IG92ZXJ3cml0dGVuIGJ5IHRoZSBgbWVtY3B5YCwgdGhpcyBpc24mIzM5O3QgYW4gaXNzdWUuICBFdmVuIGlmIHBhcnRzIG9mIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSB3ZXJlIHVuaW5pdGlhbGl6ZWQgKHdoaWNoIGlzIHVubGlrZWx5IGdpdmVuIHRoYXQgdGhleSBhcmUgdHlwaWNhbGx5IHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQpLCB0aGV5IHdvdWxkIGJlIG92ZXJ3cml0dGVuIGFzIHdlbGwuICBUaGUgcGF0Y2ggZml4ZXMgdGhlIHJhY2UsICpub3QqIHRoZSBwcm9ibGVtIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKTG9va2luZyBhdCB0aGUgc2Vjb25kIHBhcnQgb2YgdGhlIHBhdGNoLCBpdCBqdXN0IGFkZHMgdGhlIFJDVSBsb2NrIGFyb3VuZCB0aGUgY2FsbCB0byBgY2Ffb3BzLSZndDtnZXRfaW5mbygpYCwgYWdhaW4gcHJvdGVjdGluZyB0aGUgdXNlIG9mIHRoZSBgY2Ffb3BzYCBmcm9tIGEgcmFjZS4gSXQmIzM5O3MgZXNzZW50aWFsbHkgdGhlIHNhbWUgaXNzdWUgYW5kIHRoZSBzYW1lIGZpeC4gIFRoaXMgaXMgYSBjbGVhbiBmaXggZm9yIGEga25vd24gY29uY3VycmVuY3kgaXNzdWUuCgpUaGUga2V5IHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSAqbmV3KiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMgdGhhdCB3b3VsZCBiZSBkZXRlY3RlZCBieSBLTVNBTj8gTm8uIFRoZSBsb2NhbCBidWZmZXIgYGNhX25hbWVgIGlzIGluaXRpYWxpemVkLiBUaGUgcGF0Y2ggaXMgZml4aW5nIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9uZS4gS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgaGVyZSB0byBjaGVjayBmb3IgdGhlIFVBRi4gS01TQU4gaXMgZm9yIGNhdGNoaW5nIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTbywgYmFzZWQgb24gbXkgYW5hbHlzaXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJiMzOTt0IG5lZWRlZCBoZXJlLiBUaGUgYnVnIGlzIHRoZSByYWNlIGNvbmRpdGlvbiwgd2hpY2ggdGhlIHBhdGNoIGFkZHJlc3NlcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIGBkb190Y3BfZ2V0c29ja29wdCgpYCB3aGVuIGFjY2Vzc2luZyBgaWNzay1cdTAwM2VpY3NrX2NhX29wc2AuIEJlY2F1c2UgYGNvcHlfdG9fc29ja3B0cigpYCBjYW4gc2xlZXAsIHJlYWRpbmcgYGljc2stXHUwMDNlaWNza19jYV9vcHMtXHUwMDNlbmFtZWAgb3IgY2FsbGluZyBgY2Ffb3BzLVx1MDAzZWdldF9pbmZvKClgIGRpcmVjdGx5IHdpdGhvdXQgUkNVIHByb3RlY3Rpb24gY291bGQgbGVhZCB0byBhIHVzZS1hZnRlci1mcmVlIGlmIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbW9kdWxlIGlzIGNvbmN1cnJlbnRseSBjaGFuZ2VkIG9yIHVubG9hZGVkLiBUaGUgZml4IHdyYXBzIHRoZXNlIGFjY2Vzc2VzIGluIGByY3VfcmVhZF9sb2NrKClgL2ByY3VfcmVhZF91bmxvY2soKWAgYW5kIGNvcGllcyB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG5hbWUgaW50byBhIGxvY2FsIHN0YWNrIGJ1ZmZlciAoYGNhX25hbWVgKSBiZWZvcmUgY29weWluZyBpdCB0byB1c2VyIHNwYWNlLlxuXG5UaGUgbG9jYWwgYnVmZmVyIGBjYV9uYW1lYCBpcyBleHBsaWNpdGx5IHplcm8taW5pdGlhbGl6ZWQgKGA9IHt9YCkgYW5kIHRoZW4gZnVsbHkgcG9wdWxhdGVkIHZpYSBgbWVtY3B5KClgIGZyb20gdGhlIGBuYW1lYCBmaWVsZCBvZiB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG9wZXJhdGlvbnMgc3RydWN0dXJlICh3aGljaCBhcmUgdHlwaWNhbGx5IHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFuZCBmdWxseSBpbml0aWFsaXplZCBnbG9iYWwgc3RydWN0cykuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gVGhlIGJ1ZyBiZWluZyBhZGRyZXNzZWQgaXMgYSB1c2UtYWZ0ZXItZnJlZS9yYWNlIGNvbmRpdGlvbiwgd2hpY2ggaXMgd2VsbCB3aXRoaW4gdGhlIGRldGVjdGlvbiBjYXBhYmlsaXRpZXMgb2YgS0FTQU4uIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaCB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0KClgIHdoZW4gYWNjZXNzaW5nIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lYCBvciBjYWxsaW5nIGBjYV9vcHMtXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXG5cblRoZSBsb2NhbCBidWZmZXIgYGNhX25hbWVgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZCAoYD0ge31gKSBhbmQgdGhlbiBmdWxseSBwb3B1bGF0ZWQgdmlhIGBtZW1jcHkoKWAgZnJvbSB0aGUgYG5hbWVgIGZpZWxkIG9mIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgKHdoaWNoIGFyZSB0eXBpY2FsbHkgc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIGZ1bGx5IGluaXRpYWxpemVkIGdsb2JhbCBzdHJ1Y3RzKS4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGUgYnVnIGJlaW5nIGFkZHJlc3NlZCBpcyBhIHVzZS1hZnRlci1mcmVlL3JhY2UgY29uZGl0aW9uLCB3aGljaCBpcyB3ZWxsIHdpdGhpbiB0aGUgZGV0ZWN0aW9uIGNhcGFiaWxpdGllcyBvZiBLQVNBTi4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0Mzo0NC4yMDk1Mzc0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMzg5MjE3ODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb190Y3BfZ2V0c29ja29wdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgZG9fdGNwX2dldHNvY2tvcHQoKWAgd2hlbiBhY2Nlc3NpbmcgYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cXHUwMDNlaWNza19jYV9vcHMtXFx1MDAzZW5hbWVgIG9yIGNhbGxpbmcgYGNhX29wcy1cXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXFxuXFxuVGhlIGxvY2FsIGJ1ZmZlciBgY2FfbmFtZWAgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkIChgPSB7fWApIGFuZCB0aGVuIGZ1bGx5IHBvcHVsYXRlZCB2aWEgYG1lbWNweSgpYCBmcm9tIHRoZSBgbmFtZWAgZmllbGQgb2YgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdHVyZSAod2hpY2ggYXJlIHR5cGljYWxseSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgZnVsbHkgaW5pdGlhbGl6ZWQgZ2xvYmFsIHN0cnVjdHMpLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZSBidWcgYmVpbmcgYWRkcmVzc2VkIGlzIGEgdXNlLWFmdGVyLWZyZWUvcmFjZSBjb25kaXRpb24sIHdoaWNoIGlzIHdlbGwgd2l0aGluIHRoZSBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzIG9mIEtBU0FOLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2ggdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBSQ1UgcmVhZCBsb2NrcyBhcm91bmQgYWNjZXNzZXMgdG8gYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYCBpbiBgZG9fdGNwX2dldHNvY2tvcHRgIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIHdoZW4gcmVhZGluZyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIGluZm8gb3IgbmFtZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDM6NDQuMjA5NTQyODFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDMzMTIxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRiN2QyZGVjNDQ4ZjkxYWFjNTdlZGQ4NjRlM2U0M2YzNmIyZWQ3Y2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTg6NDM6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xcbmluZGV4IGI0MjM3ZDBlOTk0ZDYuLjQzY2NkMmQzN2Y5YzcgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwLmNcXG4rKysgYi9uZXQvaXB2NC90Y3AuY1xcbkBAIC00NTYyLDkgKzQ1NjIsMTEgQEAgaW50IGRvX3RjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLFxcbiBcXHRcXHRpZiAoY29weV9mcm9tX3NvY2twdHIoXFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBcXG4rXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRjYV9vcHMgPSBpY3NrLVxcdTAwM2VpY3NrX2NhX29wcztcXG4gXFx0XFx0aWYgKGNhX29wcyBcXHUwMDI2XFx1MDAyNiBjYV9vcHMtXFx1MDAzZWdldF9pbmZvKVxcbiBcXHRcXHRcXHRzeiA9IGNhX29wcy1cXHUwMDNlZ2V0X2luZm8oc2ssIH4wVSwgXFx1MDAyNmF0dHIsIFxcdTAwMjZpbmZvKTtcXG4rXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcbiBcXHRcXHRsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwgc3opO1xcbiBcXHRcXHRpZiAoY29weV90b19zb2NrcHRyKG9wdGxlbiwgXFx1MDAyNmxlbiwgc2l6ZW9mKGludCkpKVxcbkBAIC00NTc3LDE2ICs0NTc5LDIzIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCxcXG4gXFx0XFx0dmFsID0gIWluZXRfY3NrX2luX3Bpbmdwb25nX21vZGUoc2spO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuLVxcdGNhc2UgVENQX0NPTkdFU1RJT046XFxuK1xcdGNhc2UgVENQX0NPTkdFU1RJT046IHtcXG4rXFx0XFx0Y2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtcXG4rXFxuIFxcdFxcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcXHUwMDI2bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdFxcdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgbGVuLCBUQ1BfQ0FfTkFNRV9NQVgpO1xcbiBcXHRcXHRpZiAoY29weV90b19zb2NrcHRyKG9wdGxlbiwgXFx1MDAyNmxlbiwgc2l6ZW9mKGludCkpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4tXFx0XFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGljc2stXFx1MDAzZWljc2tfY2Ffb3BzLVxcdTAwM2VuYW1lLCBsZW4pKVxcbitcXG4rXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRcXHRtZW1jcHkoY2FfbmFtZSwgaWNzay1cXHUwMDNlaWNza19jYV9vcHMtXFx1MDAzZW5hbWUsIHNpemVvZihjYV9uYW1lKSk7XFxuK1xcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXG4rXFx0XFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGNhX25hbWUsIGxlbikpXFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4tXFxuK1xcdH1cXG4gXFx0Y2FzZSBUQ1BfVUxQOlxcbiBcXHRcXHRpZiAoY29weV9mcm9tX3NvY2twdHIoXFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0Mzo0NC42NzQ0OTIxODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNzE4MTE1NjcxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZG9fdGNwX2dldHNvY2tvcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFJDVSByZWFkIGxvY2tzIGFyb3VuZCBhY2Nlc3NlcyB0byBgaWNzay1cXHUwMDNlaWNza19jYV9vcHNgIGluIGBkb190Y3BfZ2V0c29ja29wdGAgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiByZWFkaW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaW5mbyBvciBuYW1lLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkYjdkMmRlYzQ0OGY5MWFhYzU3ZWRkODY0ZTNlNDNmMzZiMmVkN2NjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTg6NDM6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3AuYyBiL25ldC9pcHY0L3RjcC5jXG5pbmRleCBiNDIzN2QwZTk5NGQ2Li40M2NjZDJkMzdmOWM3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwLmNcbisrKyBiL25ldC9pcHY0L3RjcC5jXG5AQCAtNDU2Miw5ICs0NTYyLDExIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCxcbiBcdFx0aWYgKGNvcHlfZnJvbV9zb2NrcHRyKFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXG4rXHRcdHJjdV9yZWFkX2xvY2soKTtcbiBcdFx0Y2Ffb3BzID0gaWNzay1cdTAwM2VpY3NrX2NhX29wcztcbiBcdFx0aWYgKGNhX29wcyBcdTAwMjZcdTAwMjYgY2Ffb3BzLVx1MDAzZWdldF9pbmZvKVxuIFx0XHRcdHN6ID0gY2Ffb3BzLVx1MDAzZWdldF9pbmZvKHNrLCB+MFUsIFx1MDAyNmF0dHIsIFx1MDAyNmluZm8pO1xuK1x0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcbiBcdFx0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sIHN6KTtcbiBcdFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHRsZW4sIFx1MDAyNmxlbiwgc2l6ZW9mKGludCkpKVxuQEAgLTQ1NzcsMTYgKzQ1NzksMjMgQEAgaW50IGRvX3RjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLFxuIFx0XHR2YWwgPSAhaW5ldF9jc2tfaW5fcGluZ3BvbmdfbW9kZShzayk7XG4gXHRcdGJyZWFrO1xuIFxuLVx0Y2FzZSBUQ1BfQ09OR0VTVElPTjpcbitcdGNhc2UgVENQX0NPTkdFU1RJT046IHtcbitcdFx0Y2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtcbitcbiBcdFx0aWYgKGNvcHlfZnJvbV9zb2NrcHRyKFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHRcdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgbGVuLCBUQ1BfQ0FfTkFNRV9NQVgpO1xuIFx0XHRpZiAoY29weV90b19zb2NrcHRyKG9wdGxlbiwgXHUwMDI2bGVuLCBzaXplb2YoaW50KSkpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4tXHRcdGlmIChjb3B5X3RvX3NvY2twdHIob3B0dmFsLCBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzLVx1MDAzZW5hbWUsIGxlbikpXG4rXG4rXHRcdHJjdV9yZWFkX2xvY2soKTtcbitcdFx0bWVtY3B5KGNhX25hbWUsIGljc2stXHUwMDNlaWNza19jYV9vcHMtXHUwMDNlbmFtZSwgc2l6ZW9mKGNhX25hbWUpKTtcbitcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXG4rXHRcdGlmIChjb3B5X3RvX3NvY2twdHIob3B0dmFsLCBjYV9uYW1lLCBsZW4pKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRyZXR1cm4gMDtcbi1cbitcdH1cbiBcdGNhc2UgVENQX1VMUDpcbiBcdFx0aWYgKGNvcHlfZnJvbV9zb2NrcHRyKFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0Mzo0NC42NzQ0OTM4NjVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTg3OTkxOTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBDb25nZXN0aW9uIENvbnRyb2wgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgY2hhbmdlcyBpbiBgbmV0L2lwdjQvdGNwLmNgLiBJdCBzZWVtcyB0aGV5J3JlIHdyYXBwaW5nIGFjY2Vzc2VzIHRvIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYCB3aXRoaW4gYHJjdV9yZWFkX2xvY2soKWAgYW5kIGByY3VfcmVhZF91bmxvY2soKWAgY2FsbHMgaW5zaWRlIGBkb190Y3BfZ2V0c29ja29wdGAuIFRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIGBUQ1BfQ0NfSU5GT2AgYW5kIGBUQ1BfQ09OR0VTVElPTmAgb3B0aW9ucywgd2hpY2ggaW1tZWRpYXRlbHkgc2lnbmFscyBhIHBvdGVudGlhbCBSQ1UtcmVsYXRlZCBpc3N1ZSBvciBhIHJhY2UgY29uZGl0aW9uIGZpeCByZWxhdGVkIHRvIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zLiBUaGF0J3MgYSBjbGFzc2ljIHNpZ24gb2Ygc29tZW9uZSBwYXRjaGluZyBhIGNvbmN1cnJlbmN5IHByb2JsZW0uXG5cblRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgZG9fdGNwX2dldHNvY2tvcHRgLCBhbmQgbXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMgdG8gcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBHaXZlbiB0aGUgbG9jYXRpb24sIGFuZCBzaW5jZSBpdCBpcyBpbiBgbmV0L2lwdjQvdGNwLmNgLCBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYGRvX3RjcF9nZXRzb2Nrb3B0YCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gVGltZSB0byBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGUgc291cmNlIHRvIGVuc3VyZSBubyBvdGhlciBjb25maWdzIGFyZSBuZWVkZWQsIGFuZCB0byBnZXQgYSBicm9hZGVyIHZpZXcgb2YgdGhlIHNjb3BlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzg5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDM6NDkuNjYyNDg3NzA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTU2MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX3RjcF9nZXRzb2Nrb3B0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcC5jPTQ0MTA9c3RydWN0IHNrX2J1ZmYgKnRjcF9nZXRfdGltZXN0YW1waW5nX29wdF9zdGF0cyhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00NDgxLVxcbm5ldC9pcHY0L3RjcC5jOjQ0ODI6aW50IGRvX3RjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLFxcbm5ldC9pcHY0L3RjcC5jLTQ0ODMtXFx0XFx0ICAgICAgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIHNvY2twdHJfdCBvcHRsZW4pXFxuLS1cXG5uZXQvaXB2NC90Y3AuYz00ODU2PWJvb2wgdGNwX2JwZl9ieXBhc3NfZ2V0c29ja29wdChpbnQgbGV2ZWwsIGludCBvcHRuYW1lKVxcbm5ldC9pcHY0L3RjcC5jLTQ4NTcte1xcbm5ldC9pcHY0L3RjcC5jOjQ4NTg6XFx0LyogVENQIGRvX3RjcF9nZXRzb2Nrb3B0IGhhcyBvcHRpbWl6ZWQgZ2V0c29ja29wdCBpbXBsZW1lbnRhdGlvblxcbm5ldC9pcHY0L3RjcC5jLTQ4NTktXFx0ICogdG8gYXZvaWQgZXh0cmEgc29ja2V0IGxvY2sgZm9yIFRDUF9aRVJPQ09QWV9SRUNFSVZFLlxcbi0tXFxubmV0L2lwdjQvdGNwLmM9NDg2Nz1pbnQgdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjaGFyIF9fdXNlciAqb3B0dmFsLFxcbi0tXFxubmV0L2lwdjQvdGNwLmMtNDg3NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRvcHR2YWwsIG9wdGxlbik7XFxubmV0L2lwdjQvdGNwLmM6NDg3NjpcXHRyZXR1cm4gZG9fdGNwX2dldHNvY2tvcHQoc2ssIGxldmVsLCBvcHRuYW1lLCBVU0VSX1NPQ0tQVFIob3B0dmFsKSxcXG5uZXQvaXB2NC90Y3AuYy00ODc3LVxcdFxcdFxcdFxcdCBVU0VSX1NPQ0tQVFIob3B0bGVuKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQzOjQ5LjcxMDQ0OTc5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MTE3NTUyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgVENQIFN0YWNrOiBgZG9fdGNwX2dldHNvY2tvcHRgIGlzIGEgUHJpbWUgVGFyZ2V0KipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGBkb190Y3BfZ2V0c29ja29wdGAgYXMgYSByZWFsbHkgcHJvbWlzaW5nIGZ1bmN0aW9uIGZvciBmdXp6aW5nLiBJdCdzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGUgVENQIHN0YWNrLCB3aGljaCBtZWFucyBhbnkgdnVsbmVyYWJpbGl0aWVzIGhlcmUgY291bGQgaGF2ZSBzZXJpb3VzIHJhbWlmaWNhdGlvbnMuIFRoZSBjb2RlIGNoYW5nZSBpdHNlbGYgc2VlbXMgcmVsYXRpdmVseSBtaW5vciDigJMgdGhleSdyZSBqdXN0IGFkZGluZyBSQ1UgbG9ja2luZyBhcm91bmQgc29tZSBjb25nZXN0aW9uIGNvbnRyb2wgb3BlcmF0aW9ucyDigJMgYnV0IG9mdGVuLCBzdWJ0bGUgY2hhbmdlcyBsaWtlIHRoYXQgYXJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBmdXp6aW5nIHRhcmdldHMgbGllLiBJdOKAmXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBnaXZlbiBpdHMgY2VudHJhbGl0eSwgaXTigJlzIHdvcnRoIHRoZSBlZmZvcnQuXG5cbkknbSBrZXlpbmcgaW4gb24gYGRvX3RjcF9nZXRzb2Nrb3B0YCBhcyB0aGUgbWFpbiBmb2N1cy4gQ29uZmlndXJhdGlvbi13aXNlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBJTkVUYCBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGRlZmF1bHQsIGJ1dCBJIG1pZ2h0IGFzIHdlbGwgY2hlY2sgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAganVzdCB0byBiZSBjZXJ0YWluLiBJIGNvdWxkIGFsc28gY29uc2lkZXIgZXhwbGljaXRseSBlbmFibGluZyBgSVBfVENQYCwgb3IganVzdCBzdGlja2luZyB3aXRoIGBJTkVUYCBmb3IgYnJvYWRlciBjb3ZlcmFnZS4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMjcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0Mzo1NC4yMjIyMDc4NjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5ODUzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtOS1cXHQgICAgIGluZXRfdGltZXdhaXRfc29jay5vIGluZXRfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjEwOlxcdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTExLVxcdCAgICAgdGNwX21pbmlzb2Nrcy5vIHRjcF9jb25nLm8gdGNwX21ldHJpY3MubyB0Y3BfZmFzdG9wZW4ubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGUtMTItXFx0ICAgICB0Y3BfcmVjb3ZlcnkubyB0Y3BfdWxwLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjEzOlxcdCAgICAgdGNwX29mZmxvYWQubyB0Y3BfcGxiLm8gZGF0YWdyYW0ubyByYXcubyB1ZHAubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGUtMTQtXFx0ICAgICB1ZHBfb2ZmbG9hZC5vIGFycC5vIGljbXAubyBkZXZpbmV0Lm8gYWZfaW5ldC5vIGlnbXAubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfVENQX0NPTkdfQ1VCSUMpICs9IHRjcF9jdWJpYy5vXFxubmV0L2lwdjQvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX1RDUF9DT05HX0RDVENQKSArPSB0Y3BfZGN0Y3Aub1xcbm5ldC9pcHY0L01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19UQ1BfQ09OR19XRVNUV09PRCkgKz0gdGNwX3dlc3R3b29kLm9cXG4tLVxcbm5ldC9pcHY0L01ha2VmaWxlPTU0PW9iai0kKENPTkZJR19UQ1BfQ09OR19IWUJMQSkgKz0gdGNwX2h5YmxhLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTo1NTpvYmotJChDT05GSUdfVENQX0NPTkdfSFRDUCkgKz0gdGNwX2h0Y3Aub1xcbm5ldC9pcHY0L01ha2VmaWxlLTU2LW9iai0kKENPTkZJR19UQ1BfQ09OR19WRUdBUykgKz0gdGNwX3ZlZ2FzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDM6NTQuMjcxMTk4MjM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwNDYzNjM4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIElQdjQgTmV0d29ya2luZyBCdWlsZCBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBJUHY0IG5ldHdvcmtpbmcgY29kZSBnZXRzIGJ1aWx0LiBJIHNlZSBpdCdzIHVuY29uZGl0aW9uYWxseSBpbmNsdWRlZCBpbiBgb2JqLXlgIHdpdGhpbiBgbmV0L2lwdjQvTWFrZWZpbGVgLiBUaGF0IG1lYW5zIGl0J3MgKmFsd2F5cyogZ29pbmcgdG8gYmUgcGFydCBvZiB0aGUgYnVpbGQgKmlmKiBgQ09ORklHX0lORVRgIGlzIGVuYWJsZWQuIFdoaWNoIG1ha2VzIHNlbnNlLCBiZWNhdXNlIHlvdSB3b3VsZG4ndCBoYXZlIElQdjQgaWYgeW91IGRpZG4ndCBoYXZlIGJhc2ljIGludGVybmV0IHByb3RvY29sIHN1cHBvcnQuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUsIEkgbmVlZCB0byBzZWUgaG93IGBuZXQvaXB2NC9NYWtlZmlsZWAgaXMgaW5jbHVkZWQuIEkgbmVlZCB0byBtb3ZlIHVwIGEgbGV2ZWwgYW5kIGV4YW1pbmUgYG5ldC9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBkZXBlbmRlbmN5IGNoYWluIGhlcmUuIExldCdzIHNlZSB3aGF0IGBuZXQvTWFrZWZpbGVgIGhhcyB0byBzYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0Mzo1Ny43NzU4MzczMjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwODIwMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXB2NFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19ORVRGSUxURVIpXFx0XFx0Kz0gbmV0ZmlsdGVyL1xcbm5ldC9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfSU5FVClcXHRcXHQrPSBpcHY0L1xcbm5ldC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVExTKVxcdFxcdCs9IHRscy9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDM6NTcuODI2OTI0NjM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0NDczNzcyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRDUCBTdGFjayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBpcyBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGBJTkVUYCBjb25maWd1cmF0aW9uLiBNeSBmb2N1cyBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgZnVuY3Rpb24gYGRvX3RjcF9nZXRzb2Nrb3B0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS5cblxuTXkgcmVhc29uaW5nIGxlYWRzIG1lIHRvIGJlbGlldmUgdGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgdXBkYXRlIHdpdGhpbiB0aGUgVENQIGNvcmUuIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBhZGRzIFJlYWQgQ29weSBVcGRhdGUgKFJDVSkgcmVhZCBsb2NrcyB0byBwcm90ZWN0IGFjY2Vzc2VzIHRvIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYCB3aXRoaW4gYGRvX3RjcF9nZXRzb2Nrb3B0YC4gVGhpcyBpcyBjbGVhcmx5IGFpbWVkIGF0IHByZXZlbnRpbmcgcmFjZSBjb25kaXRpb25zIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgd2hlbiByZXRyaWV2aW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaW5mb3JtYXRpb24gb3IgaXRzIG5hbWUuIFRoaXMgaXMgYSBzb2xpZCwgY2xlYW4gZml4LCBhZGRyZXNzaW5nIGEgcmFjZSBjb25kaXRpb24gaW4gYSBoaWdoLXByaW9yaXR5IGFyZWEuIE5vIHRyaXZpYWwgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzEyLCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjAxLjc3MTY2NDQ4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM5ODA4MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb190Y3BfZ2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgUkNVIHJlYWQgbG9ja3MgYXJvdW5kIGFjY2Vzc2VzIHRvIGBpY3NrLVxcdTAwM2VpY3NrX2NhX29wc2AgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0YCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIHJlYWRpbmcgVENQIGNvbmdlc3Rpb24gY29udHJvbCBpbmZvIG9yIG5hbWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2suXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX3RjcF9nZXRzb2Nrb3B0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBSQ1UgcmVhZCBsb2NrcyBhcm91bmQgYWNjZXNzZXMgdG8gYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYCBpbiBgZG9fdGNwX2dldHNvY2tvcHRgIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIHdoZW4gcmVhZGluZyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIGluZm8gb3IgbmFtZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDQ6MDEuODU1NjUyNzM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzc0MzA5MjI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjAxLjg1NjIzMTE4N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMzc0MjUwNzg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgZG9fdGNwX2dldHNvY2tvcHQoKWAgd2hlbiBhY2Nlc3NpbmcgYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cXHUwMDNlaWNza19jYV9vcHMtXFx1MDAzZW5hbWVgIG9yIGNhbGxpbmcgYGNhX29wcy1cXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXFxuXFxuVGhlIGxvY2FsIGJ1ZmZlciBgY2FfbmFtZWAgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkIChgPSB7fWApIGFuZCB0aGVuIGZ1bGx5IHBvcHVsYXRlZCB2aWEgYG1lbWNweSgpYCBmcm9tIHRoZSBgbmFtZWAgZmllbGQgb2YgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdHVyZSAod2hpY2ggYXJlIHR5cGljYWxseSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgZnVsbHkgaW5pdGlhbGl6ZWQgZ2xvYmFsIHN0cnVjdHMpLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZSBidWcgYmVpbmcgYWRkcmVzc2VkIGlzIGEgdXNlLWFmdGVyLWZyZWUvcmFjZSBjb25kaXRpb24sIHdoaWNoIGlzIHdlbGwgd2l0aGluIHRoZSBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzIG9mIEtBU0FOLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2ggdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGI3ZDJkZWM0NDhmOTFhYWM1N2VkZDg2NGUzZTQzZjM2YjJlZDdjY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE4OjQzOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggYjQyMzdkMGU5OTRkNi4uNDNjY2QyZDM3ZjljNyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4rKysgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTQ1NjIsOSArNDU2MiwxMSBAQCBpbnQgZG9fdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsXG4gXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZsZW4sIG9wdGxlbiwgc2l6ZW9mKGludCkpKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFxuK1x0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdGNhX29wcyA9IGljc2stXHUwMDNlaWNza19jYV9vcHM7XG4gXHRcdGlmIChjYV9vcHMgXHUwMDI2XHUwMDI2IGNhX29wcy1cdTAwM2VnZXRfaW5mbylcbiBcdFx0XHRzeiA9IGNhX29wcy1cdTAwM2VnZXRfaW5mbyhzaywgfjBVLCBcdTAwMjZhdHRyLCBcdTAwMjZpbmZvKTtcbitcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4gXHRcdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgbGVuLCBzeik7XG4gXHRcdGlmIChjb3B5X3RvX3NvY2twdHIob3B0bGVuLCBcdTAwMjZsZW4sIHNpemVvZihpbnQpKSlcbkBAIC00NTc3LDE2ICs0NTc5LDIzIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCxcbiBcdFx0dmFsID0gIWluZXRfY3NrX2luX3Bpbmdwb25nX21vZGUoc2spO1xuIFx0XHRicmVhaztcbiBcbi1cdGNhc2UgVENQX0NPTkdFU1RJT046XG4rXHRjYXNlIFRDUF9DT05HRVNUSU9OOiB7XG4rXHRcdGNoYXIgY2FfbmFtZVtUQ1BfQ0FfTkFNRV9NQVhdID0ge307XG4rXG4gXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZsZW4sIG9wdGxlbiwgc2l6ZW9mKGludCkpKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwgVENQX0NBX05BTUVfTUFYKTtcbiBcdFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHRsZW4sIFx1MDAyNmxlbiwgc2l6ZW9mKGludCkpKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuLVx0XHRpZiAoY29weV90b19zb2NrcHRyKG9wdHZhbCwgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lLCBsZW4pKVxuK1xuK1x0XHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRcdG1lbWNweShjYV9uYW1lLCBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzLVx1MDAzZW5hbWUsIHNpemVvZihjYV9uYW1lKSk7XG4rXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuK1xuK1x0XHRpZiAoY29weV90b19zb2NrcHRyKG9wdHZhbCwgY2FfbmFtZSwgbGVuKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0cmV0dXJuIDA7XG4tXG4rXHR9XG4gXHRjYXNlIFRDUF9VTFA6XG4gXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZsZW4sIG9wdGxlbiwgc2l6ZW9mKGludCkpKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDQ6MDEuODU2MjMyMDU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5Mzg2ODg0OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQ1AgQ29uZ2VzdGlvbiBDb250cm9sIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZG9fdGNwX2dldHNvY2tvcHRgIGluIGBuZXQvaXB2NC90Y3AuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYHJjdV9yZWFkX2xvY2soKWAgYW5kIGByY3VfcmVhZF91bmxvY2soKWAgYXJvdW5kIGFjY2Vzc2VzIHRvIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYCwgd2hpY2ggaXMgZ29vZCBwcmFjdGljZSBmb3IgUkNVLXByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZXMuIFNwZWNpZmljYWxseSwgZm9yIHRoZSBgVENQX0NPTkdFU1RJT05gIG9wdGlvbiwgSSBzZWUgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgbG9jYWwgYnVmZmVyLCBgY2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtgLiBUaGUgaWRlYSBpcyB0byBjb3B5IHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtIG5hbWUgZnJvbSB0aGUga2VybmVsIHRvIHVzZXIgc3BhY2UuIFRoZSBzdGVwcyBhcmUgY2xlYXI6IGdyYWIgdGhlIG5hbWUgZnJvbSBgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lYCB1bmRlciB0aGUgUkNVIGxvY2ssIHB1dCBpdCBpbnRvIHRoYXQgbG9jYWwgYnVmZmVyLCBhbmQgdGhlbiBjb3B5IHRoZSBidWZmZXIgdG8gdXNlciBzcGFjZSB1c2luZyBgY29weV90b19zb2NrcHRyYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNjcnV0aW5pemUgdGhpcyBmb3IgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4gVGhleSAqZGlkKiBpbml0aWFsaXplIGBjYV9uYW1lYCB0byB6ZXJvOiBgY2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtgLiBUaGF0J3MgYSBnb29kIHN0YXJ0LiBIb3dldmVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGBtZW1jcHlgIGZyb20gYGljc2stXHUwMDNlaWNza19jYV9vcHMtXHUwMDNlbmFtZWAgaW50byBgY2FfbmFtZWAgaXMgc2FmZS4gU3BlY2lmaWNhbGx5LCB0aGlzIGxpbmUsIGBtZW1jcHkoY2FfbmFtZSwgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lLCBzaXplb2YoY2FfbmFtZSkpO2AsIGNvcGllcyBgc2l6ZW9mKGNhX25hbWUpYCBieXRlcyBmcm9tIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzLVx1MDAzZW5hbWVgLlxuXG5UaGF0J3MgdGhlIHBhcnQgdGhhdCBjb25jZXJucyBtZS4gVGhlIG5hbWUgaXMgYSBzdHJpbmcsIGFuZCBgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lYCAqY291bGQqIGJlIHNob3J0ZXIgdGhhbiBgVENQX0NBX05BTUVfTUFYYC4gV2hhdCBoYXBwZW5zIGlmIGl0ICppcyogc2hvcnRlcj8gSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbmFtZWAgaXMgbnVsbC10ZXJtaW5hdGVkLCBvciB0aGF0IGEgc3VpdGFibGUgbWF4aW11bSBzdHJpbmcgbGVuZ3RoIGlzIGVuZm9yY2VkLiBPdGhlcndpc2UsIHdlIGNvdWxkIGhhdmUgYSBidWZmZXIgb3ZlcmZsb3cgcmlzay4gSSdsbCBuZWVkIHRvIGdvIGRpZyBpbnRvIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiB0byB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0NDowNy43OTQ5MjQyOTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MTA0NzA4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIFxcXFx7XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oPTEzMDY9c3RydWN0IHJhdGVfc2FtcGxlIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oLTEzMjQtXFxuaW5jbHVkZS9uZXQvdGNwLmg6MTMyNTpzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIHtcXG5pbmNsdWRlL25ldC90Y3AuaC0xMzI2LS8qIGZhc3QgcGF0aCBmaWVsZHMgYXJlIHB1dCBmaXJzdCB0byBmaWxsIG9uZSBjYWNoZSBsaW5lICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjA4LjEzNTk4MDAwMVoiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjU5Mjk0Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBUQ1AgQ29uZ2VzdGlvbiBDb250cm9sIExhbmRzY2FwZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIHdhbnQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvcmUgc3RydWN0dXJlIGJlaGluZCBUQ1AgY29uZ2VzdGlvbiBjb250cm9sLCBzbyBsZXQncyBqdW1wIHJpZ2h0IGludG8gdGhlIGB0Y3BfY29uZ2VzdGlvbl9vcHNgIHN0cnVjdCBkZWZpbml0aW9uLiBJIGtub3cgaXQncyBkZWZpbmVkIGluIGBpbmNsdWRlL25ldC90Y3AuaGAsIGFuZCBJIHNlZW0gdG8gcmVjYWxsIGl0IGJlaW5nIGFyb3VuZCBsaW5lIDEzMjUsIHRob3VnaCBJJ2xsIGRvdWJsZS1jaGVjayB0byBiZSBwcmVjaXNlLiBUaGlzIHN0cnVjdCBpcyB0aGUgYmFja2JvbmUsIHRoZSBjZW50cmFsIGludGVyZmFjZSBmb3IgYWxsIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIGluIHRoZSBrZXJuZWwuIEknbSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGVhY2ggZnVuY3Rpb24gcG9pbnRlciBpbiB0aGF0IHN0cnVjdCBkb2VzLCBtYWtpbmcgc3VyZSBJIGNhbiBxdWlja2x5IHNlZSBob3cgZGlmZmVyZW50IGFsZ29yaXRobXMgYXJlIHJlZ2lzdGVyZWQgYW5kIHV0aWxpemVkLiBUaGVyZSBhcmUgcHJvYmFibHkgYSBmZXcgY3JpdGljYWwgZmllbGRzIG9yIGZ1bmN0aW9uIHBvaW50ZXJzIEknbSBsb29raW5nIGZvciBzcGVjaWZpY2FsbHksIGxpa2VseSByZWxhdGVkIHRvIHJhdGUgbGltaXRpbmcgb3Igd2luZG93IGFkanVzdG1lbnQuIEknbGwgdGFrZSBhIGNsb3NlIGxvb2sgYXQgdGhlIGRhdGEgdHlwZXMgdXNlZCBhcyB3ZWxsLCBhbmQgYW55IG1hY3JvcyByZWxhdGVkIHRvIGl0LiBVbmRlcnN0YW5kaW5nIHRoZSBjb21wb3NpdGlvbiBvZiB0aGlzIHN0cnVjdHVyZSBpcyBmb3VuZGF0aW9uYWwgdG8gY29tcHJlaGVuZGluZyBob3cgYW55IHNwZWNpZmljIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG0gb3BlcmF0ZXMgd2l0aGluIHRoZSBUQ1Agc3RhY2suIEFscmlnaHQsIGxldCdzIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQ5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDQ6MTEuNzk1Mjc3MDE2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL25ldC90Y3AuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxMzI1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzI1OlxcdHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMge1xcbjEzMjY6XFx0LyogZmFzdCBwYXRoIGZpZWxkcyBhcmUgcHV0IGZpcnN0IHRvIGZpbGwgb25lIGNhY2hlIGxpbmUgKi9cXG4xMzI3OlxcdFxcbjEzMjg6XFx0XFx0LyogQSBjb25nZXN0aW9uIGNvbnRyb2wgKENDKSBtdXN0IHByb3ZpZGUgb25lIG9mIGVpdGhlcjpcXG4xMzI5OlxcdFxcdCAqXFxuMTMzMDpcXHRcXHQgKiAoYSkgYSBjb25nX2F2b2lkIGZ1bmN0aW9uLCBpZiB0aGUgQ0Mgd2FudHMgdG8gdXNlIHRoZSBjb3JlIFRDUFxcbjEzMzE6XFx0XFx0ICogICAgIHN0YWNrJ3MgZGVmYXVsdCBmdW5jdGlvbmFsaXR5IHRvIGltcGxlbWVudCBhIFxcXCJjbGFzc2ljXFxcIlxcbjEzMzI6XFx0XFx0ICogICAgIChSZW5vL0NVQklDLXN0eWxlKSByZXNwb25zZSB0byBwYWNrZXQgbG9zcywgUkZDMzE2OCBFQ04sXFxuMTMzMzpcXHRcXHQgKiAgICAgaWRsZSBwZXJpb2RzLCBwYWNpbmcgcmF0ZSBjb21wdXRhdGlvbnMsIGV0Yy5cXG4xMzM0OlxcdFxcdCAqXFxuMTMzNTpcXHRcXHQgKiAoYikgYSBjb25nX2NvbnRyb2wgZnVuY3Rpb24sIGlmIHRoZSBDQyB3YW50cyBjdXN0b20gYmVoYXZpb3IgYW5kXFxuMTMzNjpcXHRcXHQgKiAgICAgIGNvbXBsZXRlIGNvbnRyb2wgb2YgYWxsIGNvbmdlc3Rpb24gY29udHJvbCBiZWhhdmlvcnMuXFxuMTMzNzpcXHRcXHQgKi9cXG4xMzM4OlxcdFxcdC8qIChhKSBcXFwiY2xhc3NpY1xcXCIgcmVzcG9uc2U6IGNhbGN1bGF0ZSBuZXcgY3duZC5cXG4xMzM5OlxcdFxcdCAqL1xcbjEzNDA6XFx0XFx0dm9pZCAoKmNvbmdfYXZvaWQpKHN0cnVjdCBzb2NrICpzaywgdTMyIGFjaywgdTMyIGFja2VkKTtcXG4xMzQxOlxcdFxcdC8qIChiKSBcXFwiY3VzdG9tXFxcIiByZXNwb25zZTogY2FsbCB3aGVuIHBhY2tldHMgYXJlIGRlbGl2ZXJlZCB0byB1cGRhdGVcXG4xMzQyOlxcdFxcdCAqIGN3bmQgYW5kIHBhY2luZyByYXRlLCBhZnRlciBhbGwgdGhlIGNhX3N0YXRlIHByb2Nlc3NpbmcuXFxuMTM0MzpcXHRcXHQgKi9cXG4xMzQ0OlxcdFxcdHZvaWQgKCpjb25nX2NvbnRyb2wpKHN0cnVjdCBzb2NrICpzaywgdTMyIGFjaywgaW50IGZsYWcsIGNvbnN0IHN0cnVjdCByYXRlX3NhbXBsZSAqcnMpO1xcbjEzNDU6XFx0XFxuMTM0NjpcXHRcXHQvKiByZXR1cm4gc2xvdyBzdGFydCB0aHJlc2hvbGQgKHJlcXVpcmVkKSAqL1xcbjEzNDc6XFx0XFx0dTMyICgqc3N0aHJlc2gpKHN0cnVjdCBzb2NrICpzayk7XFxuMTM0ODpcXHRcXG4xMzQ5OlxcdFxcdC8qIGNhbGwgYmVmb3JlIGNoYW5naW5nIGNhX3N0YXRlIChvcHRpb25hbCkgKi9cXG4xMzUwOlxcdFxcdHZvaWQgKCpzZXRfc3RhdGUpKHN0cnVjdCBzb2NrICpzaywgdTggbmV3X3N0YXRlKTtcXG4xMzUxOlxcdFxcbjEzNTI6XFx0XFx0LyogY2FsbCB3aGVuIGN3bmQgZXZlbnQgb2NjdXJzIChvcHRpb25hbCkgKi9cXG4xMzUzOlxcdFxcdHZvaWQgKCpjd25kX2V2ZW50KShzdHJ1Y3Qgc29jayAqc2ssIGVudW0gdGNwX2NhX2V2ZW50IGV2KTtcXG4xMzU0OlxcdFxcbjEzNTU6XFx0XFx0LyogY2FsbCB3aGVuIENBX0VWRU5UX1RYX1NUQVJUIGN3bmQgZXZlbnQgb2NjdXJzIChvcHRpb25hbCkgKi9cXG4xMzU2OlxcdFxcdHZvaWQgKCpjd25kX2V2ZW50X3R4X3N0YXJ0KShzdHJ1Y3Qgc29jayAqc2spO1xcbjEzNTc6XFx0XFxuMTM1ODpcXHRcXHQvKiBjYWxsIHdoZW4gYWNrIGFycml2ZXMgKG9wdGlvbmFsKSAqL1xcbjEzNTk6XFx0XFx0dm9pZCAoKmluX2Fja19ldmVudCkoc3RydWN0IHNvY2sgKnNrLCB1MzIgZmxhZ3MpO1xcbjEzNjA6XFx0XFxuMTM2MTpcXHRcXHQvKiBob29rIGZvciBwYWNrZXQgYWNrIGFjY291bnRpbmcgKG9wdGlvbmFsKSAqL1xcbjEzNjI6XFx0XFx0dm9pZCAoKnBrdHNfYWNrZWQpKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXBsZSk7XFxuMTM2MzpcXHRcXG4xMzY0OlxcdFxcdC8qIG92ZXJyaWRlIHN5c2N0bF90Y3BfbWluX3Rzb19zZWdzIChvcHRpb25hbCkgKi9cXG4xMzY1OlxcdFxcdHUzMiAoKm1pbl90c29fc2Vncykoc3RydWN0IHNvY2sgKnNrKTtcXG4xMzY2OlxcdFxcbjEzNjc6XFx0XFx0LyogbmV3IHZhbHVlIG9mIGN3bmQgYWZ0ZXIgbG9zcyAocmVxdWlyZWQpICovXFxuMTM2ODpcXHRcXHR1MzIgICgqdW5kb19jd25kKShzdHJ1Y3Qgc29jayAqc2spO1xcbjEzNjk6XFx0XFx0LyogcmV0dXJucyB0aGUgbXVsdGlwbGllciB1c2VkIGluIHRjcF9zbmRidWZfZXhwYW5kIChvcHRpb25hbCkgKi9cXG4xMzcwOlxcdFxcdHUzMiAoKnNuZGJ1Zl9leHBhbmQpKHN0cnVjdCBzb2NrICpzayk7XFxuMTM3MTpcXHRcXG4xMzcyOlxcdC8qIGNvbnRyb2wvc2xvdyBwYXRocyBwdXQgbGFzdCAqL1xcbjEzNzM6XFx0XFx0LyogZ2V0IGluZm8gZm9yIGluZXRfZGlhZyAob3B0aW9uYWwpICovXFxuMTM3NDpcXHRcXHRzaXplX3QgKCpnZXRfaW5mbykoc3RydWN0IHNvY2sgKnNrLCB1MzIgZXh0LCBpbnQgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjExLjc5NTUwMTM0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkzNzM1NDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkgdG8gZGl2ZSBpbnRvIHRoaXMuIExldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aC4uLlxuKioqXG5cbioqQW5hbHl6aW5nIHRoZSBJbnB1dCAtIE15IEltbWVkaWF0ZSBQcm9jZXNzKipcblxuQWxyaWdodCwgdGhlIGRpcmVjdGl2ZSBpcyBjbGVhci4gSSBuZWVkIHRvIHN1bW1hcml6ZSB0aGUgcHJvdmlkZWQgXCJ0aG91Z2h0c1wiIGFzIGlmIHRoZXkgd2VyZSBteSBvd24sIHByZXNlbnRlZCB0byBhbiBleHBlcnQuIFRoZSBrZXkgaXMgaW4gbWFpbnRhaW5pbmcgdGhlIGZsb3cgb2YgdGhvdWdodCwgbm90IGp1c3QgcmVndXJnaXRhdGluZyBjb250ZW50LCBidXQgdW5kZXJzdGFuZGluZyBpdCBhcyBhbiBleHBlcnQgd291bGQuIEl0J3MgYSBzb3J0IG9mIG1lbnRhbCBtYXBwaW5nLCB0cmFuc2Zvcm1pbmcgYW4gZXh0ZXJuYWwgc3RpbXVsdXMgaW50byBhbiBpbnRlcm5hbCBwcm9jZXNzLiBMZXQncyBrZWVwIHRoaXMgc2hvcnQgYW5kIHN3ZWV0IHRvIGtlZXAgdGhlIGV4cGVydCdzIGF0dGVudGlvbi4gSSBuZWVkIHRvIHF1aWNrbHkgZW5nYWdlIHdpdGggdGhlIHRleHQgYW5kIHNlZSB3aGF0J3MgdGhlcmUuXG4qKipcblxuXG4iLCJJbnB1dFRva2VucyI6NDQ0OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0NDoxNC45ODkyMzk2MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbmV0L3RjcC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzNzUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEzNzU6XFx0XFx0XFx0XFx0ICAgdW5pb24gdGNwX2NjX2luZm8gKmluZm8pO1xcbjEzNzY6XFx0XFxuMTM3NzpcXHRcXHRjaGFyIFxcdFxcdFxcdG5hbWVbVENQX0NBX05BTUVfTUFYXTtcXG4xMzc4OlxcdFxcdHN0cnVjdCBtb2R1bGVcXHRcXHQqb3duZXI7XFxuMTM3OTpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0bGlzdDtcXG4xMzgwOlxcdFxcdHUzMlxcdFxcdFxcdGtleTtcXG4xMzgxOlxcdFxcdHUzMlxcdFxcdFxcdGZsYWdzO1xcbjEzODI6XFx0XFxuMTM4MzpcXHRcXHQvKiBpbml0aWFsaXplIHByaXZhdGUgZGF0YSAob3B0aW9uYWwpICovXFxuMTM4NDpcXHRcXHR2b2lkICgqaW5pdCkoc3RydWN0IHNvY2sgKnNrKTtcXG4xMzg1OlxcdFxcdC8qIGNsZWFudXAgcHJpdmF0ZSBkYXRhICAob3B0aW9uYWwpICovXFxuMTM4NjpcXHRcXHR2b2lkICgqcmVsZWFzZSkoc3RydWN0IHNvY2sgKnNrKTtcXG4xMzg3OlxcdH0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG4xMzg4OlxcdFxcbjEzODk6XFx0aW50IHRjcF9yZWdpc3Rlcl9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyAqdHlwZSk7XFxuMTM5MDpcXHR2b2lkIHRjcF91bnJlZ2lzdGVyX2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICp0eXBlKTtcXG4xMzkxOlxcdGludCB0Y3BfdXBkYXRlX2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICp0eXBlLFxcbjEzOTI6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICpvbGRfdHlwZSk7XFxuMTM5MzpcXHRpbnQgdGNwX3ZhbGlkYXRlX2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICpjYSk7XFxuMTM5NDpcXHRcXG4xMzk1OlxcdHZvaWQgdGNwX2Fzc2lnbl9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IHNvY2sgKnNrKTtcXG4xMzk2OlxcdHZvaWQgdGNwX2luaXRfY29uZ2VzdGlvbl9jb250cm9sKHN0cnVjdCBzb2NrICpzayk7XFxuMTM5NzpcXHR2b2lkIHRjcF9jbGVhbnVwX2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3Qgc29jayAqc2spO1xcbjEzOTg6XFx0aW50IHRjcF9zZXRfZGVmYXVsdF9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lKTtcXG4xMzk5OlxcdHZvaWQgdGNwX2dldF9kZWZhdWx0X2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3QgbmV0ICpuZXQsIGNoYXIgKm5hbWUpO1xcbjE0MDA6XFx0dm9pZCB0Y3BfZ2V0X2F2YWlsYWJsZV9jb25nZXN0aW9uX2NvbnRyb2woY2hhciAqYnVmLCBzaXplX3QgbGVuKTtcXG4xNDAxOlxcdHZvaWQgdGNwX2dldF9hbGxvd2VkX2Nvbmdlc3Rpb25fY29udHJvbChjaGFyICpidWYsIHNpemVfdCBsZW4pO1xcbjE0MDI6XFx0aW50IHRjcF9zZXRfYWxsb3dlZF9jb25nZXN0aW9uX2NvbnRyb2woY2hhciAqYWxsb3dlZCk7XFxuMTQwMzpcXHRpbnQgdGNwX3NldF9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IHNvY2sgKnNrLCBjb25zdCBjaGFyICpuYW1lLCBib29sIGxvYWQsXFxuMTQwNDpcXHRcXHRcXHRcXHQgICAgICAgYm9vbCBjYXBfbmV0X2FkbWluKTtcXG4xNDA1OlxcdHUzMiB0Y3Bfc2xvd19zdGFydChzdHJ1Y3QgdGNwX3NvY2sgKnRwLCB1MzIgYWNrZWQpO1xcbjE0MDY6XFx0dm9pZCB0Y3BfY29uZ19hdm9pZF9haShzdHJ1Y3QgdGNwX3NvY2sgKnRwLCB1MzIgdywgdTMyIGFja2VkKTtcXG4xNDA3OlxcdFxcbjE0MDg6XFx0dTMyIHRjcF9yZW5vX3NzdGhyZXNoKHN0cnVjdCBzb2NrICpzayk7XFxuMTQwOTpcXHR1MzIgdGNwX3Jlbm9fdW5kb19jd25kKHN0cnVjdCBzb2NrICpzayk7XFxuMTQxMDpcXHR2b2lkIHRjcF9yZW5vX2NvbmdfYXZvaWQoc3RydWN0IHNvY2sgKnNrLCB1MzIgYWNrLCB1MzIgYWNrZWQpO1xcbjE0MTE6XFx0ZXh0ZXJuIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgdGNwX3Jlbm87XFxuMTQxMjpcXHRcXG4xNDEzOlxcdHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnRjcF9jYV9maW5kKGNvbnN0IGNoYXIgKm5hbWUpO1xcbjE0MTQ6XFx0c3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyAqdGNwX2NhX2ZpbmRfa2V5KHUzMiBrZXkpO1xcbjE0MTU6XFx0dTMyIHRjcF9jYV9nZXRfa2V5X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCAqZWNuX2NhKTtcXG4xNDE2OlxcdCNpZmRlZiBDT05GSUdfSU5FVFxcbjE0MTc6XFx0Y2hhciAqdGNwX2NhX2dldF9uYW1lX2J5X2tleSh1MzIga2V5LCBjaGFyICpidWZmZXIpO1xcbjE0MTg6XFx0I2Vsc2VcXG4xNDE5OlxcdHN0YXRpYyBpbmxpbmUgY2hhciAqdGNwX2NhX2dldF9uYW1lX2J5X2tleSh1MzIga2V5LCBjaGFyICpidWZmZXIpXFxuMTQyMDpcXHR7XFxuMTQyMTpcXHRcXHRyZXR1cm4gTlVMTDtcXG4xNDIyOlxcdH1cXG4xNDIzOlxcdCNlbmRpZlxcbjE0MjQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjE0Ljk4OTQ1NzY2N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDYwOTI1OTAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgVENQIENvbmdlc3Rpb24gQ29udHJvbCBHZXRzb2Nrb3B0IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRvX3RjcF9nZXRzb2Nrb3B0YCBpbiBgbmV0L2lwdjQvdGNwLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhlIG9yaWdpbmFsIGNvZGUgZGlyZWN0bHkgYWNjZXNzZXMgYGljc2stXHUwMDNlaWNza19jYV9vcHMtXHUwMDNlbmFtZWAgYW5kIG90aGVyIG1lbWJlcnMgd2l0aGluIHRoZSBgVENQX0NPTkdFU1RJT05gIGNhc2UsIGFuZCB0aGUgc2Vjb25kIHBhcnQgdXNlcyBgY2Ffb3BzYCBkaXJlY3RseSwgd2l0aG91dCBhbnkgY29uY3VycmVuY3kgcHJvdGVjdGlvbi4gVGhlIHByb2JsZW0gaXMgdGhhdCBgaWNzay1cdTAwM2VpY3NrX2NhX29wc2AgY291bGQgYmUgY2hhbmdlZCBvciBldmVuIGZyZWVkIGNvbmN1cnJlbnRseSwgc3BlY2lmaWNhbGx5LCB3aGlsZSBgY29weV90b19zb2NrcHRyYCAod2hpY2ggY2FuIHNsZWVwKSBpcyBleGVjdXRpbmcuIFRoaXMgbWVhbnMgd2UncmUgc3VzY2VwdGlibGUgdG8gYSBjcmFzaCBvciB1bmRlZmluZWQgYmVoYXZpb3IuXG5cblRoZSBwYXRjaCBjbGVhcmx5IGFkZHJlc3NlcyB0aGlzIGJ5IGludHJvZHVjaW5nIGByY3VfcmVhZF9sb2NrKClgIGJlZm9yZSBhY2Nlc3NpbmcgYW55IG1lbWJlciBvZiBgaWNzay1cdTAwM2VpY3NrX2NhX29wc2AuIFRoaXMgcHJvdGVjdHMgdGhlIGNyaXRpY2FsIHNlY3Rpb24sIGVuc3VyaW5nIHRoYXQgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdCByZW1haW5zIHZhbGlkIHdoaWxlIGl0J3MgYmVpbmcgcmVhZC4gVGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBhdGNoIGNvcGllcyB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG5hbWUgaW50byBhIGxvY2FsIGJ1ZmZlciwgYGNhX25hbWVgLCBiZWZvcmUgcGFzc2luZyBpdCB0byB1c2VyIHNwYWNlLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjb25jdXJyZW50IGRhdGEgYWNjZXNzLiBXZSBhcmUgbWFraW5nIGEgY29weSBpbnRvIGEgbG9jYWwgYnVmZmVyIHdoaWxlIHVuZGVyIHRoZSBwcm90ZWN0aW9uIG9mIHRoZSBsb2NrLlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gYSBiaXQgZGVlcGVyLiBUaGUgYGNhX25hbWVgIGFycmF5IGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gemVybyB1c2luZyBgPSB7fWAuIENydWNpYWxseSwgYG1lbWNweWAgY29waWVzICphbGwqIG9mIGBUQ1BfQ0FfTkFNRV9NQVhgIGJ5dGVzIGludG8gYGNhX25hbWVgLiBUaGUgb3JpZ2luYWwgY29kZSBqdXN0IGNvcGllZCB0aGUgYGxlbmAgYnl0ZXMgZnJvbSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG5hbWUuIEkgd2FzIGNvbmNlcm5lZCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUgYGNhX25hbWVgIGJ1ZmZlciBsZWFraW5nIHRvIHVzZXIgc3BhY2UuIEhvd2V2ZXIsIHNpbmNlIHRoZSBhcnJheSBpcyBpbml0aWFsaXplZCB0byB6ZXJvLCBhbmQgaXMgdGhlbiBjb21wbGV0ZWx5IG92ZXJ3cml0dGVuIGJ5IHRoZSBgbWVtY3B5YCwgdGhpcyBpc24ndCBhbiBpc3N1ZS4gIEV2ZW4gaWYgcGFydHMgb2YgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBuYW1lIHdlcmUgdW5pbml0aWFsaXplZCAod2hpY2ggaXMgdW5saWtlbHkgZ2l2ZW4gdGhhdCB0aGV5IGFyZSB0eXBpY2FsbHkgc3RhdGljYWxseSBpbml0aWFsaXplZCksIHRoZXkgd291bGQgYmUgb3ZlcndyaXR0ZW4gYXMgd2VsbC4gIFRoZSBwYXRjaCBmaXhlcyB0aGUgcmFjZSwgKm5vdCogdGhlIHByb2JsZW0gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuXG5cbkxvb2tpbmcgYXQgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBwYXRjaCwgaXQganVzdCBhZGRzIHRoZSBSQ1UgbG9jayBhcm91bmQgdGhlIGNhbGwgdG8gYGNhX29wcy1cdTAwM2VnZXRfaW5mbygpYCwgYWdhaW4gcHJvdGVjdGluZyB0aGUgdXNlIG9mIHRoZSBgY2Ffb3BzYCBmcm9tIGEgcmFjZS4gSXQncyBlc3NlbnRpYWxseSB0aGUgc2FtZSBpc3N1ZSBhbmQgdGhlIHNhbWUgZml4LiAgVGhpcyBpcyBhIGNsZWFuIGZpeCBmb3IgYSBrbm93biBjb25jdXJyZW5jeSBpc3N1ZS5cblxuVGhlIGtleSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSBhbnkgKm5ldyogdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzIHRoYXQgd291bGQgYmUgZGV0ZWN0ZWQgYnkgS01TQU4/IE5vLiBUaGUgbG9jYWwgYnVmZmVyIGBjYV9uYW1lYCBpcyBpbml0aWFsaXplZC4gVGhlIHBhdGNoIGlzIGZpeGluZyBhIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHksIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBvbmUuIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGhlcmUgdG8gY2hlY2sgZm9yIHRoZSBVQUYuIEtNU0FOIGlzIGZvciBjYXRjaGluZyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gU28sIGJhc2VkIG9uIG15IGFuYWx5c2lzLCBJJ20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuIFRoZSBidWcgaXMgdGhlIHJhY2UgY29uZGl0aW9uLCB3aGljaCB0aGUgcGF0Y2ggYWRkcmVzc2VzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODUsIk91dHB1dFRva2VucyI6MjgxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkzMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjM1LjU5ODcxOTgyN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgZG9fdGNwX2dldHNvY2tvcHQoKWAgd2hlbiBhY2Nlc3NpbmcgYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cXHUwMDNlaWNza19jYV9vcHMtXFx1MDAzZW5hbWVgIG9yIGNhbGxpbmcgYGNhX29wcy1cXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXFxuXFxuVGhlIGxvY2FsIGJ1ZmZlciBgY2FfbmFtZWAgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkIChgPSB7fWApIGFuZCB0aGVuIGZ1bGx5IHBvcHVsYXRlZCB2aWEgYG1lbWNweSgpYCBmcm9tIHRoZSBgbmFtZWAgZmllbGQgb2YgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdHVyZSAod2hpY2ggYXJlIHR5cGljYWxseSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgZnVsbHkgaW5pdGlhbGl6ZWQgZ2xvYmFsIHN0cnVjdHMpLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZSBidWcgYmVpbmcgYWRkcmVzc2VkIGlzIGEgdXNlLWFmdGVyLWZyZWUvcmFjZSBjb25kaXRpb24sIHdoaWNoIGlzIHdlbGwgd2l0aGluIHRoZSBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzIG9mIEtBU0FOLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2ggdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgZG9fdGNwX2dldHNvY2tvcHQoKWAgd2hlbiBhY2Nlc3NpbmcgYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cXHUwMDNlaWNza19jYV9vcHMtXFx1MDAzZW5hbWVgIG9yIGNhbGxpbmcgYGNhX29wcy1cXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXFxuXFxuVGhlIGxvY2FsIGJ1ZmZlciBgY2FfbmFtZWAgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkIChgPSB7fWApIGFuZCB0aGVuIGZ1bGx5IHBvcHVsYXRlZCB2aWEgYG1lbWNweSgpYCBmcm9tIHRoZSBgbmFtZWAgZmllbGQgb2YgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdHVyZSAod2hpY2ggYXJlIHR5cGljYWxseSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgZnVsbHkgaW5pdGlhbGl6ZWQgZ2xvYmFsIHN0cnVjdHMpLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZSBidWcgYmVpbmcgYWRkcmVzc2VkIGlzIGEgdXNlLWFmdGVyLWZyZWUvcmFjZSBjb25kaXRpb24sIHdoaWNoIGlzIHdlbGwgd2l0aGluIHRoZSBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzIG9mIEtBU0FOLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2ggdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdg9gz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 18:41:36 +0000 UTC FinishedAt: 2026-08-21 18:44:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "746fc0787f616da418ffc04a110296fe95d53491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "746fc0787f616da418ffc04a110296fe95d53491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "7e3dcdfd-5d59-4778-94bb-b4289aaa5ded" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "do_tcp_getsockopt" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb190Y3BfZ2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0KClgIHdoZW4gYWNjZXNzaW5nIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lYCBvciBjYWxsaW5nIGBjYV9vcHMtXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXG5cblRoZSBsb2NhbCBidWZmZXIgYGNhX25hbWVgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZCAoYD0ge31gKSBhbmQgdGhlbiBmdWxseSBwb3B1bGF0ZWQgdmlhIGBtZW1jcHkoKWAgZnJvbSB0aGUgYG5hbWVgIGZpZWxkIG9mIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgKHdoaWNoIGFyZSB0eXBpY2FsbHkgc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIGZ1bGx5IGluaXRpYWxpemVkIGdsb2JhbCBzdHJ1Y3RzKS4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGUgYnVnIGJlaW5nIGFkZHJlc3NlZCBpcyBhIHVzZS1hZnRlci1mcmVlL3JhY2UgY29uZGl0aW9uLCB3aGljaCBpcyB3ZWxsIHdpdGhpbiB0aGUgZGV0ZWN0aW9uIGNhcGFiaWxpdGllcyBvZiBLQVNBTi4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIFJDVSByZWFkIGxvY2tzIGFyb3VuZCBhY2Nlc3NlcyB0byBgaWNzay1cdTAwM2VpY3NrX2NhX29wc2AgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0YCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIHJlYWRpbmcgVENQIGNvbmdlc3Rpb24gY29udHJvbCBpbmZvIG9yIG5hbWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTg6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkYjdkMmRlYzQ0OGY5MWFhYzU3ZWRkODY0ZTNlNDNmMzZiMmVkN2NjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTg6NDM6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggYjQyMzdkMGU5OTRkNi4uNDNjY2QyZDM3ZjljNyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTQ1NjIsOSAmIzQzOzQ1NjIsMTEgQEAgaW50IGRvX3RjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLFxuIFx0XHRpZiAoY29weV9mcm9tX3NvY2twdHIoXHUwMDI2bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcbiYjNDM7XHRcdHJjdV9yZWFkX2xvY2soKTtcbiBcdFx0Y2Ffb3BzID0gaWNzay1cdTAwM2VpY3NrX2NhX29wcztcbiBcdFx0aWYgKGNhX29wcyBcdTAwMjZcdTAwMjYgY2Ffb3BzLVx1MDAzZWdldF9pbmZvKVxuIFx0XHRcdHN6ID0gY2Ffb3BzLVx1MDAzZWdldF9pbmZvKHNrLCB+MFUsIFx1MDAyNmF0dHIsIFx1MDAyNmluZm8pO1xuJiM0MztcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4gXHRcdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgbGVuLCBzeik7XG4gXHRcdGlmIChjb3B5X3RvX3NvY2twdHIob3B0bGVuLCBcdTAwMjZsZW4sIHNpemVvZihpbnQpKSlcbkBAIC00NTc3LDE2ICYjNDM7NDU3OSwyMyBAQCBpbnQgZG9fdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsXG4gXHRcdHZhbCA9ICFpbmV0X2Nza19pbl9waW5ncG9uZ19tb2RlKHNrKTtcbiBcdFx0YnJlYWs7XG4gXG4tXHRjYXNlIFRDUF9DT05HRVNUSU9OOlxuJiM0MztcdGNhc2UgVENQX0NPTkdFU1RJT046IHtcbiYjNDM7XHRcdGNoYXIgY2FfbmFtZVtUQ1BfQ0FfTkFNRV9NQVhdID0ge307XG4mIzQzO1xuIFx0XHRpZiAoY29weV9mcm9tX3NvY2twdHIoXHUwMDI2bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sIFRDUF9DQV9OQU1FX01BWCk7XG4gXHRcdGlmIChjb3B5X3RvX3NvY2twdHIob3B0bGVuLCBcdTAwMjZsZW4sIHNpemVvZihpbnQpKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbi1cdFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGljc2stXHUwMDNlaWNza19jYV9vcHMtXHUwMDNlbmFtZSwgbGVuKSlcbiYjNDM7XG4mIzQzO1x0XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0XHRtZW1jcHkoY2FfbmFtZSwgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lLCBzaXplb2YoY2FfbmFtZSkpO1xuJiM0MztcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGNhX25hbWUsIGxlbikpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHRcdHJldHVybiAwO1xuLVxuJiM0MztcdH1cbiBcdGNhc2UgVENQX1VMUDpcbiBcdFx0aWYgKGNvcHlfZnJvbV9zb2NrcHRyKFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTg6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkb190Y3BfZ2V0c29ja29wdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIFJDVSByZWFkIGxvY2tzIGFyb3VuZCBhY2Nlc3NlcyB0byBgaWNzay1cdTAwM2VpY3NrX2NhX29wc2AgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0YCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIHJlYWRpbmcgVENQIGNvbmdlc3Rpb24gY29udHJvbCBpbmZvIG9yIG5hbWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkYjdkMmRlYzQ0OGY5MWFhYzU3ZWRkODY0ZTNlNDNmMzZiMmVkN2NjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTg6NDM6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3AuYyBiL25ldC9pcHY0L3RjcC5jCmluZGV4IGI0MjM3ZDBlOTk0ZDYuLjQzY2NkMmQzN2Y5YzcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcC5jCkBAIC00NTYyLDkgJiM0Mzs0NTYyLDExIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwKIAkJaWYgKGNvcHlfZnJvbV9zb2NrcHRyKCZhbXA7bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSkKIAkJCXJldHVybiAtRUZBVUxUOwogCiYjNDM7CQlyY3VfcmVhZF9sb2NrKCk7CiAJCWNhX29wcyA9IGljc2stJmd0O2ljc2tfY2Ffb3BzOwogCQlpZiAoY2Ffb3BzICZhbXA7JmFtcDsgY2Ffb3BzLSZndDtnZXRfaW5mbykKIAkJCXN6ID0gY2Ffb3BzLSZndDtnZXRfaW5mbyhzaywgfjBVLCAmYW1wO2F0dHIsICZhbXA7aW5mbyk7CiYjNDM7CQlyY3VfcmVhZF91bmxvY2soKTsKIAogCQlsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwgc3opOwogCQlpZiAoY29weV90b19zb2NrcHRyKG9wdGxlbiwgJmFtcDtsZW4sIHNpemVvZihpbnQpKSkKQEAgLTQ1NzcsMTYgJiM0Mzs0NTc5LDIzIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwKIAkJdmFsID0gIWluZXRfY3NrX2luX3Bpbmdwb25nX21vZGUoc2spOwogCQlicmVhazsKIAotCWNhc2UgVENQX0NPTkdFU1RJT046CiYjNDM7CWNhc2UgVENQX0NPTkdFU1RJT046IHsKJiM0MzsJCWNoYXIgY2FfbmFtZVtUQ1BfQ0FfTkFNRV9NQVhdID0ge307CiYjNDM7CiAJCWlmIChjb3B5X2Zyb21fc29ja3B0cigmYW1wO2xlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJbGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sIFRDUF9DQV9OQU1FX01BWCk7CiAJCWlmIChjb3B5X3RvX3NvY2twdHIob3B0bGVuLCAmYW1wO2xlbiwgc2l6ZW9mKGludCkpKQogCQkJcmV0dXJuIC1FRkFVTFQ7Ci0JCWlmIChjb3B5X3RvX3NvY2twdHIob3B0dmFsLCBpY3NrLSZndDtpY3NrX2NhX29wcy0mZ3Q7bmFtZSwgbGVuKSkKJiM0MzsKJiM0MzsJCXJjdV9yZWFkX2xvY2soKTsKJiM0MzsJCW1lbWNweShjYV9uYW1lLCBpY3NrLSZndDtpY3NrX2NhX29wcy0mZ3Q7bmFtZSwgc2l6ZW9mKGNhX25hbWUpKTsKJiM0MzsJCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwomIzQzOwkJaWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGNhX25hbWUsIGxlbikpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJcmV0dXJuIDA7Ci0KJiM0MzsJfQogCWNhc2UgVENQX1VMUDoKIAkJaWYgKGNvcHlfZnJvbV9zb2NrcHRyKCZhbXA7bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSkKIAkJCXJldHVybiAtRUZBVUxUOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzg5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRDUCBDb25nZXN0aW9uIENvbnRyb2wgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBtYWtpbmcgY2hhbmdlcyBpbiBgbmV0L2lwdjQvdGNwLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSB3cmFwcGluZyBhY2Nlc3NlcyB0byBgaWNzay0mZ3Q7aWNza19jYV9vcHNgIHdpdGhpbiBgcmN1X3JlYWRfbG9jaygpYCBhbmQgYHJjdV9yZWFkX3VubG9jaygpYCBjYWxscyBpbnNpZGUgYGRvX3RjcF9nZXRzb2Nrb3B0YC4gVGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgYFRDUF9DQ19JTkZPYCBhbmQgYFRDUF9DT05HRVNUSU9OYCBvcHRpb25zLCB3aGljaCBpbW1lZGlhdGVseSBzaWduYWxzIGEgcG90ZW50aWFsIFJDVS1yZWxhdGVkIGlzc3VlIG9yIGEgcmFjZSBjb25kaXRpb24gZml4IHJlbGF0ZWQgdG8gY29uZ2VzdGlvbiBjb250cm9sIG9wZXJhdGlvbnMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHNpZ24gb2Ygc29tZW9uZSBwYXRjaGluZyBhIGNvbmN1cnJlbmN5IHByb2JsZW0uCgpUaGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYGRvX3RjcF9nZXRzb2Nrb3B0YCwgYW5kIG15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gR2l2ZW4gdGhlIGxvY2F0aW9uLCBhbmQgc2luY2UgaXQgaXMgaW4gYG5ldC9pcHY0L3RjcC5jYCwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiBgZG9fdGNwX2dldHNvY2tvcHRgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19JTkVUYCBpcyBlbmFibGVkLiBUaW1lIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBzb3VyY2UgdG8gZW5zdXJlIG5vIG90aGVyIGNvbmZpZ3MgYXJlIG5lZWRlZCwgYW5kIHRvIGdldCBhIGJyb2FkZXIgdmlldyBvZiB0aGUgc2NvcGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9fdGNwX2dldHNvY2tvcHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3AuYz00NDEwPXN0cnVjdCBza19idWZmICp0Y3BfZ2V0X3RpbWVzdGFtcGluZ19vcHRfc3RhdHMoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcC5jLTQ0ODEtXG5uZXQvaXB2NC90Y3AuYzo0NDgyOmludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCxcbm5ldC9pcHY0L3RjcC5jLTQ0ODMtXHRcdCAgICAgIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLCBzb2NrcHRyX3Qgb3B0bGVuKVxuLS1cbm5ldC9pcHY0L3RjcC5jPTQ4NTY9Ym9vbCB0Y3BfYnBmX2J5cGFzc19nZXRzb2Nrb3B0KGludCBsZXZlbCwgaW50IG9wdG5hbWUpXG5uZXQvaXB2NC90Y3AuYy00ODU3LXtcbm5ldC9pcHY0L3RjcC5jOjQ4NTg6XHQvKiBUQ1AgZG9fdGNwX2dldHNvY2tvcHQgaGFzIG9wdGltaXplZCBnZXRzb2Nrb3B0IGltcGxlbWVudGF0aW9uXG5uZXQvaXB2NC90Y3AuYy00ODU5LVx0ICogdG8gYXZvaWQgZXh0cmEgc29ja2V0IGxvY2sgZm9yIFRDUF9aRVJPQ09QWV9SRUNFSVZFLlxuLS1cbm5ldC9pcHY0L3RjcC5jPTQ4Njc9aW50IHRjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgY2hhciBfX3VzZXIgKm9wdHZhbCxcbi0tXG5uZXQvaXB2NC90Y3AuYy00ODc1LVx0XHRcdFx0XHRcdFx0XHRvcHR2YWwsIG9wdGxlbik7XG5uZXQvaXB2NC90Y3AuYzo0ODc2Olx0cmV0dXJuIGRvX3RjcF9nZXRzb2Nrb3B0KHNrLCBsZXZlbCwgb3B0bmFtZSwgVVNFUl9TT0NLUFRSKG9wdHZhbCksXG5uZXQvaXB2NC90Y3AuYy00ODc3LVx0XHRcdFx0IFVTRVJfU09DS1BUUihvcHRsZW4pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgVENQIFN0YWNrOiBgZG9fdGNwX2dldHNvY2tvcHRgIGlzIGEgUHJpbWUgVGFyZ2V0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGlkZW50aWZpZWQgYGRvX3RjcF9nZXRzb2Nrb3B0YCBhcyBhIHJlYWxseSBwcm9taXNpbmcgZnVuY3Rpb24gZm9yIGZ1enppbmcuIEl0JiMzOTtzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGUgVENQIHN0YWNrLCB3aGljaCBtZWFucyBhbnkgdnVsbmVyYWJpbGl0aWVzIGhlcmUgY291bGQgaGF2ZSBzZXJpb3VzIHJhbWlmaWNhdGlvbnMuIFRoZSBjb2RlIGNoYW5nZSBpdHNlbGYgc2VlbXMgcmVsYXRpdmVseSBtaW5vciDigJMgdGhleSYjMzk7cmUganVzdCBhZGRpbmcgUkNVIGxvY2tpbmcgYXJvdW5kIHNvbWUgY29uZ2VzdGlvbiBjb250cm9sIG9wZXJhdGlvbnMg4oCTIGJ1dCBvZnRlbiwgc3VidGxlIGNoYW5nZXMgbGlrZSB0aGF0IGFyZSB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXRzIGxpZS4gSXTigJlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgZ2l2ZW4gaXRzIGNlbnRyYWxpdHksIGl04oCZcyB3b3J0aCB0aGUgZWZmb3J0LgoKSSYjMzk7bSBrZXlpbmcgaW4gb24gYGRvX3RjcF9nZXRzb2Nrb3B0YCBhcyB0aGUgbWFpbiBmb2N1cy4gQ29uZmlndXJhdGlvbi13aXNlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBJTkVUYCBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGRlZmF1bHQsIGJ1dCBJIG1pZ2h0IGFzIHdlbGwgY2hlY2sgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAganVzdCB0byBiZSBjZXJ0YWluLiBJIGNvdWxkIGFsc28gY29uc2lkZXIgZXhwbGljaXRseSBlbmFibGluZyBgSVBfVENQYCwgb3IganVzdCBzdGlja2luZyB3aXRoIGBJTkVUYCBmb3IgYnJvYWRlciBjb3ZlcmFnZS4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTktXHQgICAgIGluZXRfdGltZXdhaXRfc29jay5vIGluZXRfY29ubmVjdGlvbl9zb2NrLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlOjEwOlx0ICAgICB0Y3AubyB0Y3BfaW5wdXQubyB0Y3Bfb3V0cHV0Lm8gdGNwX3RpbWVyLm8gdGNwX2lwdjQubyBcXFxubmV0L2lwdjQvTWFrZWZpbGUtMTEtXHQgICAgIHRjcF9taW5pc29ja3MubyB0Y3BfY29uZy5vIHRjcF9tZXRyaWNzLm8gdGNwX2Zhc3RvcGVuLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlLTEyLVx0ICAgICB0Y3BfcmVjb3ZlcnkubyB0Y3BfdWxwLm8gXFxcbm5ldC9pcHY0L01ha2VmaWxlOjEzOlx0ICAgICB0Y3Bfb2ZmbG9hZC5vIHRjcF9wbGIubyBkYXRhZ3JhbS5vIHJhdy5vIHVkcC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNC1cdCAgICAgdWRwX29mZmxvYWQubyBhcnAubyBpY21wLm8gZGV2aW5ldC5vIGFmX2luZXQubyBpZ21wLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfVENQX0NPTkdfQ1VCSUMpICYjNDM7PSB0Y3BfY3ViaWMub1xubmV0L2lwdjQvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX1RDUF9DT05HX0RDVENQKSAmIzQzOz0gdGNwX2RjdGNwLm9cbm5ldC9pcHY0L01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19UQ1BfQ09OR19XRVNUV09PRCkgJiM0Mzs9IHRjcF93ZXN0d29vZC5vXG4tLVxubmV0L2lwdjQvTWFrZWZpbGU9NTQ9b2JqLSQoQ09ORklHX1RDUF9DT05HX0hZQkxBKSAmIzQzOz0gdGNwX2h5YmxhLm9cbm5ldC9pcHY0L01ha2VmaWxlOjU1Om9iai0kKENPTkZJR19UQ1BfQ09OR19IVENQKSAmIzQzOz0gdGNwX2h0Y3Aub1xubmV0L2lwdjQvTWFrZWZpbGUtNTYtb2JqLSQoQ09ORklHX1RDUF9DT05HX1ZFR0FTKSAmIzQzOz0gdGNwX3ZlZ2FzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDA1CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBJUHY0IE5ldHdvcmtpbmcgQnVpbGQgUHJvY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBJUHY0IG5ldHdvcmtpbmcgY29kZSBnZXRzIGJ1aWx0LiBJIHNlZSBpdCYjMzk7cyB1bmNvbmRpdGlvbmFsbHkgaW5jbHVkZWQgaW4gYG9iai15YCB3aXRoaW4gYG5ldC9pcHY0L01ha2VmaWxlYC4gVGhhdCBtZWFucyBpdCYjMzk7cyAqYWx3YXlzKiBnb2luZyB0byBiZSBwYXJ0IG9mIHRoZSBidWlsZCAqaWYqIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gV2hpY2ggbWFrZXMgc2Vuc2UsIGJlY2F1c2UgeW91IHdvdWxkbiYjMzk7dCBoYXZlIElQdjQgaWYgeW91IGRpZG4mIzM5O3QgaGF2ZSBiYXNpYyBpbnRlcm5ldCBwcm90b2NvbCBzdXBwb3J0LiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlLCBJIG5lZWQgdG8gc2VlIGhvdyBgbmV0L2lwdjQvTWFrZWZpbGVgIGlzIGluY2x1ZGVkLiBJIG5lZWQgdG8gbW92ZSB1cCBhIGxldmVsIGFuZCBleGFtaW5lIGBuZXQvTWFrZWZpbGVgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmdWxseSBncmFzcCB0aGUgZGVwZW5kZW5jeSBjaGFpbiBoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgYG5ldC9NYWtlZmlsZWAgaGFzIHRvIHNheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHY0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfTkVURklMVEVSKVx0XHQmIzQzOz0gbmV0ZmlsdGVyL1xubmV0L01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19JTkVUKVx0XHQmIzQzOz0gaXB2NC9cbm5ldC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVExTKVx0XHQmIzQzOz0gdGxzL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzMTIKCQkJCQkJCW91dHB1dDogMTA0CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUQ1AgU3RhY2sgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBpcyBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGBJTkVUYCBjb25maWd1cmF0aW9uLiBNeSBmb2N1cyBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgZnVuY3Rpb24gYGRvX3RjcF9nZXRzb2Nrb3B0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4KCk15IHJlYXNvbmluZyBsZWFkcyBtZSB0byBiZWxpZXZlIHRoaXMgaXMgYSBjcml0aWNhbCBmdW5jdGlvbmFsIHVwZGF0ZSB3aXRoaW4gdGhlIFRDUCBjb3JlLiBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggYWRkcyBSZWFkIENvcHkgVXBkYXRlIChSQ1UpIHJlYWQgbG9ja3MgdG8gcHJvdGVjdCBhY2Nlc3NlcyB0byBgaWNzay0mZ3Q7aWNza19jYV9vcHNgIHdpdGhpbiBgZG9fdGNwX2dldHNvY2tvcHRgLiBUaGlzIGlzIGNsZWFybHkgYWltZWQgYXQgcHJldmVudGluZyByYWNlIGNvbmRpdGlvbnMgb3IgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGVycm9ycyB3aGVuIHJldHJpZXZpbmcgVENQIGNvbmdlc3Rpb24gY29udHJvbCBpbmZvcm1hdGlvbiBvciBpdHMgbmFtZS4gVGhpcyBpcyBhIHNvbGlkLCBjbGVhbiBmaXgsIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiBpbiBhIGhpZ2gtcHJpb3JpdHkgYXJlYS4gTm8gdHJpdmlhbCBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fdGNwX2dldHNvY2tvcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcmVhZCBsb2NrcyBhcm91bmQgYWNjZXNzZXMgdG8gYGljc2stXHUwMDNlaWNza19jYV9vcHNgIGluIGBkb190Y3BfZ2V0c29ja29wdGAgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiByZWFkaW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaW5mbyBvciBuYW1lLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZG9fdGNwX2dldHNvY2tvcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBSQ1UgcmVhZCBsb2NrcyBhcm91bmQgYWNjZXNzZXMgdG8gYGljc2stXHUwMDNlaWNza19jYV9vcHNgIGluIGBkb190Y3BfZ2V0c29ja29wdGAgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiByZWFkaW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaW5mbyBvciBuYW1lLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQ0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0KClgIHdoZW4gYWNjZXNzaW5nIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lYCBvciBjYWxsaW5nIGBjYV9vcHMtXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXG5cblRoZSBsb2NhbCBidWZmZXIgYGNhX25hbWVgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZCAoYD0ge31gKSBhbmQgdGhlbiBmdWxseSBwb3B1bGF0ZWQgdmlhIGBtZW1jcHkoKWAgZnJvbSB0aGUgYG5hbWVgIGZpZWxkIG9mIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgKHdoaWNoIGFyZSB0eXBpY2FsbHkgc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIGZ1bGx5IGluaXRpYWxpemVkIGdsb2JhbCBzdHJ1Y3RzKS4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGUgYnVnIGJlaW5nIGFkZHJlc3NlZCBpcyBhIHVzZS1hZnRlci1mcmVlL3JhY2UgY29uZGl0aW9uLCB3aGljaCBpcyB3ZWxsIHdpdGhpbiB0aGUgZGV0ZWN0aW9uIGNhcGFiaWxpdGllcyBvZiBLQVNBTi4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkYjdkMmRlYzQ0OGY5MWFhYzU3ZWRkODY0ZTNlNDNmMzZiMmVkN2NjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTg6NDM6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3AuYyBiL25ldC9pcHY0L3RjcC5jCmluZGV4IGI0MjM3ZDBlOTk0ZDYuLjQzY2NkMmQzN2Y5YzcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcC5jCkBAIC00NTYyLDkgJiM0Mzs0NTYyLDExIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwKIAkJaWYgKGNvcHlfZnJvbV9zb2NrcHRyKCZhbXA7bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSkKIAkJCXJldHVybiAtRUZBVUxUOwogCiYjNDM7CQlyY3VfcmVhZF9sb2NrKCk7CiAJCWNhX29wcyA9IGljc2stJmd0O2ljc2tfY2Ffb3BzOwogCQlpZiAoY2Ffb3BzICZhbXA7JmFtcDsgY2Ffb3BzLSZndDtnZXRfaW5mbykKIAkJCXN6ID0gY2Ffb3BzLSZndDtnZXRfaW5mbyhzaywgfjBVLCAmYW1wO2F0dHIsICZhbXA7aW5mbyk7CiYjNDM7CQlyY3VfcmVhZF91bmxvY2soKTsKIAogCQlsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwgc3opOwogCQlpZiAoY29weV90b19zb2NrcHRyKG9wdGxlbiwgJmFtcDtsZW4sIHNpemVvZihpbnQpKSkKQEAgLTQ1NzcsMTYgJiM0Mzs0NTc5LDIzIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwKIAkJdmFsID0gIWluZXRfY3NrX2luX3Bpbmdwb25nX21vZGUoc2spOwogCQlicmVhazsKIAotCWNhc2UgVENQX0NPTkdFU1RJT046CiYjNDM7CWNhc2UgVENQX0NPTkdFU1RJT046IHsKJiM0MzsJCWNoYXIgY2FfbmFtZVtUQ1BfQ0FfTkFNRV9NQVhdID0ge307CiYjNDM7CiAJCWlmIChjb3B5X2Zyb21fc29ja3B0cigmYW1wO2xlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJbGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sIFRDUF9DQV9OQU1FX01BWCk7CiAJCWlmIChjb3B5X3RvX3NvY2twdHIob3B0bGVuLCAmYW1wO2xlbiwgc2l6ZW9mKGludCkpKQogCQkJcmV0dXJuIC1FRkFVTFQ7Ci0JCWlmIChjb3B5X3RvX3NvY2twdHIob3B0dmFsLCBpY3NrLSZndDtpY3NrX2NhX29wcy0mZ3Q7bmFtZSwgbGVuKSkKJiM0MzsKJiM0MzsJCXJjdV9yZWFkX2xvY2soKTsKJiM0MzsJCW1lbWNweShjYV9uYW1lLCBpY3NrLSZndDtpY3NrX2NhX29wcy0mZ3Q7bmFtZSwgc2l6ZW9mKGNhX25hbWUpKTsKJiM0MzsJCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwomIzQzOwkJaWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGNhX25hbWUsIGxlbikpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJcmV0dXJuIDA7Ci0KJiM0MzsJfQogCWNhc2UgVENQX1VMUDoKIAkJaWYgKGNvcHlfZnJvbV9zb2NrcHRyKCZhbXA7bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSkKIAkJCXJldHVybiAtRUZBVUxUOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDUCBDb25nZXN0aW9uIENvbnRyb2wgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZG9fdGNwX2dldHNvY2tvcHRgIGluIGBuZXQvaXB2NC90Y3AuY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGByY3VfcmVhZF9sb2NrKClgIGFuZCBgcmN1X3JlYWRfdW5sb2NrKClgIGFyb3VuZCBhY2Nlc3NlcyB0byBgaWNzay0mZ3Q7aWNza19jYV9vcHNgLCB3aGljaCBpcyBnb29kIHByYWN0aWNlIGZvciBSQ1UtcHJvdGVjdGVkIGRhdGEgc3RydWN0dXJlcy4gU3BlY2lmaWNhbGx5LCBmb3IgdGhlIGBUQ1BfQ09OR0VTVElPTmAgb3B0aW9uLCBJIHNlZSB0aGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgbG9jYWwgYnVmZmVyLCBgY2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtgLiBUaGUgaWRlYSBpcyB0byBjb3B5IHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtIG5hbWUgZnJvbSB0aGUga2VybmVsIHRvIHVzZXIgc3BhY2UuIFRoZSBzdGVwcyBhcmUgY2xlYXI6IGdyYWIgdGhlIG5hbWUgZnJvbSBgaWNzay0mZ3Q7aWNza19jYV9vcHMtJmd0O25hbWVgIHVuZGVyIHRoZSBSQ1UgbG9jaywgcHV0IGl0IGludG8gdGhhdCBsb2NhbCBidWZmZXIsIGFuZCB0aGVuIGNvcHkgdGhlIGJ1ZmZlciB0byB1c2VyIHNwYWNlIHVzaW5nIGBjb3B5X3RvX3NvY2twdHJgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNjcnV0aW5pemUgdGhpcyBmb3IgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4gVGhleSAqZGlkKiBpbml0aWFsaXplIGBjYV9uYW1lYCB0byB6ZXJvOiBgY2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydC4gSG93ZXZlciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBgbWVtY3B5YCBmcm9tIGBpY3NrLSZndDtpY3NrX2NhX29wcy0mZ3Q7bmFtZWAgaW50byBgY2FfbmFtZWAgaXMgc2FmZS4gU3BlY2lmaWNhbGx5LCB0aGlzIGxpbmUsIGBtZW1jcHkoY2FfbmFtZSwgaWNzay0mZ3Q7aWNza19jYV9vcHMtJmd0O25hbWUsIHNpemVvZihjYV9uYW1lKSk7YCwgY29waWVzIGBzaXplb2YoY2FfbmFtZSlgIGJ5dGVzIGZyb20gYGljc2stJmd0O2ljc2tfY2Ffb3BzLSZndDtuYW1lYC4KClRoYXQmIzM5O3MgdGhlIHBhcnQgdGhhdCBjb25jZXJucyBtZS4gVGhlIG5hbWUgaXMgYSBzdHJpbmcsIGFuZCBgaWNzay0mZ3Q7aWNza19jYV9vcHMtJmd0O25hbWVgICpjb3VsZCogYmUgc2hvcnRlciB0aGFuIGBUQ1BfQ0FfTkFNRV9NQVhgLiBXaGF0IGhhcHBlbnMgaWYgaXQgKmlzKiBzaG9ydGVyPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHNgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBuYW1lYCBpcyBudWxsLXRlcm1pbmF0ZWQsIG9yIHRoYXQgYSBzdWl0YWJsZSBtYXhpbXVtIHN0cmluZyBsZW5ndGggaXMgZW5mb3JjZWQuIE90aGVyd2lzZSwgd2UgY291bGQgaGF2ZSBhIGJ1ZmZlciBvdmVyZmxvdyByaXNrLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGRpZyBpbnRvIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiB0byB2ZXJpZnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgXFx7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNwLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNwLmg9MTMwNj1zdHJ1Y3QgcmF0ZV9zYW1wbGUge1xuLS1cbmluY2x1ZGUvbmV0L3RjcC5oLTEzMjQtXG5pbmNsdWRlL25ldC90Y3AuaDoxMzI1OnN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMge1xuaW5jbHVkZS9uZXQvdGNwLmgtMTMyNi0vKiBmYXN0IHBhdGggZmllbGRzIGFyZSBwdXQgZmlyc3QgdG8gZmlsbCBvbmUgY2FjaGUgbGluZSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQ5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipEaXZpbmcgaW50byB0aGUgVENQIENvbmdlc3Rpb24gQ29udHJvbCBMYW5kc2NhcGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgd2FudCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY29yZSBzdHJ1Y3R1cmUgYmVoaW5kIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wsIHNvIGxldCYjMzk7cyBqdW1wIHJpZ2h0IGludG8gdGhlIGB0Y3BfY29uZ2VzdGlvbl9vcHNgIHN0cnVjdCBkZWZpbml0aW9uLiBJIGtub3cgaXQmIzM5O3MgZGVmaW5lZCBpbiBgaW5jbHVkZS9uZXQvdGNwLmhgLCBhbmQgSSBzZWVtIHRvIHJlY2FsbCBpdCBiZWluZyBhcm91bmQgbGluZSAxMzI1LCB0aG91Z2ggSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRvIGJlIHByZWNpc2UuIFRoaXMgc3RydWN0IGlzIHRoZSBiYWNrYm9uZSwgdGhlIGNlbnRyYWwgaW50ZXJmYWNlIGZvciBhbGwgY29uZ2VzdGlvbiBjb250cm9sIGFsZ29yaXRobXMgaW4gdGhlIGtlcm5lbC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGVhY2ggZnVuY3Rpb24gcG9pbnRlciBpbiB0aGF0IHN0cnVjdCBkb2VzLCBtYWtpbmcgc3VyZSBJIGNhbiBxdWlja2x5IHNlZSBob3cgZGlmZmVyZW50IGFsZ29yaXRobXMgYXJlIHJlZ2lzdGVyZWQgYW5kIHV0aWxpemVkLiBUaGVyZSBhcmUgcHJvYmFibHkgYSBmZXcgY3JpdGljYWwgZmllbGRzIG9yIGZ1bmN0aW9uIHBvaW50ZXJzIEkmIzM5O20gbG9va2luZyBmb3Igc3BlY2lmaWNhbGx5LCBsaWtlbHkgcmVsYXRlZCB0byByYXRlIGxpbWl0aW5nIG9yIHdpbmRvdyBhZGp1c3RtZW50LiBJJiMzOTtsbCB0YWtlIGEgY2xvc2UgbG9vayBhdCB0aGUgZGF0YSB0eXBlcyB1c2VkIGFzIHdlbGwsIGFuZCBhbnkgbWFjcm9zIHJlbGF0ZWQgdG8gaXQuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbXBvc2l0aW9uIG9mIHRoaXMgc3RydWN0dXJlIGlzIGZvdW5kYXRpb25hbCB0byBjb21wcmVoZW5kaW5nIGhvdyBhbnkgc3BlY2lmaWMgY29uZ2VzdGlvbiBjb250cm9sIGFsZ29yaXRobSBvcGVyYXRlcyB3aXRoaW4gdGhlIFRDUCBzdGFjay4gQWxyaWdodCwgbGV0JiMzOTtzIGdldCBzdGFydGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3RjcC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTMyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMzI1Olx0c3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB7XG4xMzI2Olx0LyogZmFzdCBwYXRoIGZpZWxkcyBhcmUgcHV0IGZpcnN0IHRvIGZpbGwgb25lIGNhY2hlIGxpbmUgKi9cbjEzMjc6XHRcbjEzMjg6XHRcdC8qIEEgY29uZ2VzdGlvbiBjb250cm9sIChDQykgbXVzdCBwcm92aWRlIG9uZSBvZiBlaXRoZXI6XG4xMzI5Olx0XHQgKlxuMTMzMDpcdFx0ICogKGEpIGEgY29uZ19hdm9pZCBmdW5jdGlvbiwgaWYgdGhlIENDIHdhbnRzIHRvIHVzZSB0aGUgY29yZSBUQ1BcbjEzMzE6XHRcdCAqICAgICBzdGFjayYjMzk7cyBkZWZhdWx0IGZ1bmN0aW9uYWxpdHkgdG8gaW1wbGVtZW50IGEgXCYjMzQ7Y2xhc3NpY1wmIzM0O1xuMTMzMjpcdFx0ICogICAgIChSZW5vL0NVQklDLXN0eWxlKSByZXNwb25zZSB0byBwYWNrZXQgbG9zcywgUkZDMzE2OCBFQ04sXG4xMzMzOlx0XHQgKiAgICAgaWRsZSBwZXJpb2RzLCBwYWNpbmcgcmF0ZSBjb21wdXRhdGlvbnMsIGV0Yy5cbjEzMzQ6XHRcdCAqXG4xMzM1Olx0XHQgKiAoYikgYSBjb25nX2NvbnRyb2wgZnVuY3Rpb24sIGlmIHRoZSBDQyB3YW50cyBjdXN0b20gYmVoYXZpb3IgYW5kXG4xMzM2Olx0XHQgKiAgICAgIGNvbXBsZXRlIGNvbnRyb2wgb2YgYWxsIGNvbmdlc3Rpb24gY29udHJvbCBiZWhhdmlvcnMuXG4xMzM3Olx0XHQgKi9cbjEzMzg6XHRcdC8qIChhKSBcJiMzNDtjbGFzc2ljXCYjMzQ7IHJlc3BvbnNlOiBjYWxjdWxhdGUgbmV3IGN3bmQuXG4xMzM5Olx0XHQgKi9cbjEzNDA6XHRcdHZvaWQgKCpjb25nX2F2b2lkKShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBhY2ssIHUzMiBhY2tlZCk7XG4xMzQxOlx0XHQvKiAoYikgXCYjMzQ7Y3VzdG9tXCYjMzQ7IHJlc3BvbnNlOiBjYWxsIHdoZW4gcGFja2V0cyBhcmUgZGVsaXZlcmVkIHRvIHVwZGF0ZVxuMTM0MjpcdFx0ICogY3duZCBhbmQgcGFjaW5nIHJhdGUsIGFmdGVyIGFsbCB0aGUgY2Ffc3RhdGUgcHJvY2Vzc2luZy5cbjEzNDM6XHRcdCAqL1xuMTM0NDpcdFx0dm9pZCAoKmNvbmdfY29udHJvbCkoc3RydWN0IHNvY2sgKnNrLCB1MzIgYWNrLCBpbnQgZmxhZywgY29uc3Qgc3RydWN0IHJhdGVfc2FtcGxlICpycyk7XG4xMzQ1Olx0XG4xMzQ2Olx0XHQvKiByZXR1cm4gc2xvdyBzdGFydCB0aHJlc2hvbGQgKHJlcXVpcmVkKSAqL1xuMTM0NzpcdFx0dTMyICgqc3N0aHJlc2gpKHN0cnVjdCBzb2NrICpzayk7XG4xMzQ4Olx0XG4xMzQ5Olx0XHQvKiBjYWxsIGJlZm9yZSBjaGFuZ2luZyBjYV9zdGF0ZSAob3B0aW9uYWwpICovXG4xMzUwOlx0XHR2b2lkICgqc2V0X3N0YXRlKShzdHJ1Y3Qgc29jayAqc2ssIHU4IG5ld19zdGF0ZSk7XG4xMzUxOlx0XG4xMzUyOlx0XHQvKiBjYWxsIHdoZW4gY3duZCBldmVudCBvY2N1cnMgKG9wdGlvbmFsKSAqL1xuMTM1MzpcdFx0dm9pZCAoKmN3bmRfZXZlbnQpKHN0cnVjdCBzb2NrICpzaywgZW51bSB0Y3BfY2FfZXZlbnQgZXYpO1xuMTM1NDpcdFxuMTM1NTpcdFx0LyogY2FsbCB3aGVuIENBX0VWRU5UX1RYX1NUQVJUIGN3bmQgZXZlbnQgb2NjdXJzIChvcHRpb25hbCkgKi9cbjEzNTY6XHRcdHZvaWQgKCpjd25kX2V2ZW50X3R4X3N0YXJ0KShzdHJ1Y3Qgc29jayAqc2spO1xuMTM1NzpcdFxuMTM1ODpcdFx0LyogY2FsbCB3aGVuIGFjayBhcnJpdmVzIChvcHRpb25hbCkgKi9cbjEzNTk6XHRcdHZvaWQgKCppbl9hY2tfZXZlbnQpKHN0cnVjdCBzb2NrICpzaywgdTMyIGZsYWdzKTtcbjEzNjA6XHRcbjEzNjE6XHRcdC8qIGhvb2sgZm9yIHBhY2tldCBhY2sgYWNjb3VudGluZyAob3B0aW9uYWwpICovXG4xMzYyOlx0XHR2b2lkICgqcGt0c19hY2tlZCkoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgYWNrX3NhbXBsZSAqc2FtcGxlKTtcbjEzNjM6XHRcbjEzNjQ6XHRcdC8qIG92ZXJyaWRlIHN5c2N0bF90Y3BfbWluX3Rzb19zZWdzIChvcHRpb25hbCkgKi9cbjEzNjU6XHRcdHUzMiAoKm1pbl90c29fc2Vncykoc3RydWN0IHNvY2sgKnNrKTtcbjEzNjY6XHRcbjEzNjc6XHRcdC8qIG5ldyB2YWx1ZSBvZiBjd25kIGFmdGVyIGxvc3MgKHJlcXVpcmVkKSAqL1xuMTM2ODpcdFx0dTMyICAoKnVuZG9fY3duZCkoc3RydWN0IHNvY2sgKnNrKTtcbjEzNjk6XHRcdC8qIHJldHVybnMgdGhlIG11bHRpcGxpZXIgdXNlZCBpbiB0Y3Bfc25kYnVmX2V4cGFuZCAob3B0aW9uYWwpICovXG4xMzcwOlx0XHR1MzIgKCpzbmRidWZfZXhwYW5kKShzdHJ1Y3Qgc29jayAqc2spO1xuMTM3MTpcdFxuMTM3MjpcdC8qIGNvbnRyb2wvc2xvdyBwYXRocyBwdXQgbGFzdCAqL1xuMTM3MzpcdFx0LyogZ2V0IGluZm8gZm9yIGluZXRfZGlhZyAob3B0aW9uYWwpICovXG4xMzc0Olx0XHRzaXplX3QgKCpnZXRfaW5mbykoc3RydWN0IHNvY2sgKnNrLCB1MzIgZXh0LCBpbnQgKmF0dHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NDkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBJJiMzOTttIHJlYWR5IHRvIGRpdmUgaW50byB0aGlzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4uLgoqKioKCioqQW5hbHl6aW5nIHRoZSBJbnB1dCAtIE15IEltbWVkaWF0ZSBQcm9jZXNzKioKCkFscmlnaHQsIHRoZSBkaXJlY3RpdmUgaXMgY2xlYXIuIEkgbmVlZCB0byBzdW1tYXJpemUgdGhlIHByb3ZpZGVkICYjMzQ7dGhvdWdodHMmIzM0OyBhcyBpZiB0aGV5IHdlcmUgbXkgb3duLCBwcmVzZW50ZWQgdG8gYW4gZXhwZXJ0LiBUaGUga2V5IGlzIGluIG1haW50YWluaW5nIHRoZSBmbG93IG9mIHRob3VnaHQsIG5vdCBqdXN0IHJlZ3VyZ2l0YXRpbmcgY29udGVudCwgYnV0IHVuZGVyc3RhbmRpbmcgaXQgYXMgYW4gZXhwZXJ0IHdvdWxkLiBJdCYjMzk7cyBhIHNvcnQgb2YgbWVudGFsIG1hcHBpbmcsIHRyYW5zZm9ybWluZyBhbiBleHRlcm5hbCBzdGltdWx1cyBpbnRvIGFuIGludGVybmFsIHByb2Nlc3MuIExldCYjMzk7cyBrZWVwIHRoaXMgc2hvcnQgYW5kIHN3ZWV0IHRvIGtlZXAgdGhlIGV4cGVydCYjMzk7cyBhdHRlbnRpb24uIEkgbmVlZCB0byBxdWlja2x5IGVuZ2FnZSB3aXRoIHRoZSB0ZXh0IGFuZCBzZWUgd2hhdCYjMzk7cyB0aGVyZS4KKioqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNwLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzNzU6XHRcdFx0XHQgICB1bmlvbiB0Y3BfY2NfaW5mbyAqaW5mbyk7XG4xMzc2Olx0XG4xMzc3Olx0XHRjaGFyIFx0XHRcdG5hbWVbVENQX0NBX05BTUVfTUFYXTtcbjEzNzg6XHRcdHN0cnVjdCBtb2R1bGVcdFx0Km93bmVyO1xuMTM3OTpcdFx0c3RydWN0IGxpc3RfaGVhZFx0bGlzdDtcbjEzODA6XHRcdHUzMlx0XHRcdGtleTtcbjEzODE6XHRcdHUzMlx0XHRcdGZsYWdzO1xuMTM4MjpcdFxuMTM4MzpcdFx0LyogaW5pdGlhbGl6ZSBwcml2YXRlIGRhdGEgKG9wdGlvbmFsKSAqL1xuMTM4NDpcdFx0dm9pZCAoKmluaXQpKHN0cnVjdCBzb2NrICpzayk7XG4xMzg1Olx0XHQvKiBjbGVhbnVwIHByaXZhdGUgZGF0YSAgKG9wdGlvbmFsKSAqL1xuMTM4NjpcdFx0dm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBzb2NrICpzayk7XG4xMzg3Olx0fSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xuMTM4ODpcdFxuMTM4OTpcdGludCB0Y3BfcmVnaXN0ZXJfY29uZ2VzdGlvbl9jb250cm9sKHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnR5cGUpO1xuMTM5MDpcdHZvaWQgdGNwX3VucmVnaXN0ZXJfY29uZ2VzdGlvbl9jb250cm9sKHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnR5cGUpO1xuMTM5MTpcdGludCB0Y3BfdXBkYXRlX2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICp0eXBlLFxuMTM5MjpcdFx0XHRcdFx0ICBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICpvbGRfdHlwZSk7XG4xMzkzOlx0aW50IHRjcF92YWxpZGF0ZV9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyAqY2EpO1xuMTM5NDpcdFxuMTM5NTpcdHZvaWQgdGNwX2Fzc2lnbl9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IHNvY2sgKnNrKTtcbjEzOTY6XHR2b2lkIHRjcF9pbml0X2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3Qgc29jayAqc2spO1xuMTM5NzpcdHZvaWQgdGNwX2NsZWFudXBfY29uZ2VzdGlvbl9jb250cm9sKHN0cnVjdCBzb2NrICpzayk7XG4xMzk4Olx0aW50IHRjcF9zZXRfZGVmYXVsdF9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lKTtcbjEzOTk6XHR2b2lkIHRjcF9nZXRfZGVmYXVsdF9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IG5ldCAqbmV0LCBjaGFyICpuYW1lKTtcbjE0MDA6XHR2b2lkIHRjcF9nZXRfYXZhaWxhYmxlX2Nvbmdlc3Rpb25fY29udHJvbChjaGFyICpidWYsIHNpemVfdCBsZW4pO1xuMTQwMTpcdHZvaWQgdGNwX2dldF9hbGxvd2VkX2Nvbmdlc3Rpb25fY29udHJvbChjaGFyICpidWYsIHNpemVfdCBsZW4pO1xuMTQwMjpcdGludCB0Y3Bfc2V0X2FsbG93ZWRfY29uZ2VzdGlvbl9jb250cm9sKGNoYXIgKmFsbG93ZWQpO1xuMTQwMzpcdGludCB0Y3Bfc2V0X2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbG9hZCxcbjE0MDQ6XHRcdFx0XHQgICAgICAgYm9vbCBjYXBfbmV0X2FkbWluKTtcbjE0MDU6XHR1MzIgdGNwX3Nsb3dfc3RhcnQoc3RydWN0IHRjcF9zb2NrICp0cCwgdTMyIGFja2VkKTtcbjE0MDY6XHR2b2lkIHRjcF9jb25nX2F2b2lkX2FpKHN0cnVjdCB0Y3Bfc29jayAqdHAsIHUzMiB3LCB1MzIgYWNrZWQpO1xuMTQwNzpcdFxuMTQwODpcdHUzMiB0Y3BfcmVub19zc3RocmVzaChzdHJ1Y3Qgc29jayAqc2spO1xuMTQwOTpcdHUzMiB0Y3BfcmVub191bmRvX2N3bmQoc3RydWN0IHNvY2sgKnNrKTtcbjE0MTA6XHR2b2lkIHRjcF9yZW5vX2NvbmdfYXZvaWQoc3RydWN0IHNvY2sgKnNrLCB1MzIgYWNrLCB1MzIgYWNrZWQpO1xuMTQxMTpcdGV4dGVybiBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIHRjcF9yZW5vO1xuMTQxMjpcdFxuMTQxMzpcdHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnRjcF9jYV9maW5kKGNvbnN0IGNoYXIgKm5hbWUpO1xuMTQxNDpcdHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnRjcF9jYV9maW5kX2tleSh1MzIga2V5KTtcbjE0MTU6XHR1MzIgdGNwX2NhX2dldF9rZXlfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lLCBib29sICplY25fY2EpO1xuMTQxNjpcdCNpZmRlZiBDT05GSUdfSU5FVFxuMTQxNzpcdGNoYXIgKnRjcF9jYV9nZXRfbmFtZV9ieV9rZXkodTMyIGtleSwgY2hhciAqYnVmZmVyKTtcbjE0MTg6XHQjZWxzZVxuMTQxOTpcdHN0YXRpYyBpbmxpbmUgY2hhciAqdGNwX2NhX2dldF9uYW1lX2J5X2tleSh1MzIga2V5LCBjaGFyICpidWZmZXIpXG4xNDIwOlx0e1xuMTQyMTpcdFx0cmV0dXJuIE5VTEw7XG4xNDIyOlx0fVxuMTQyMzpcdCNlbmRpZlxuMTQyNDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTg1CgkJCQkJCQlvdXRwdXQ6IDI4MQoJCQkJCQkJdGhvdWdodHM6IDE5MzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFRDUCBDb25nZXN0aW9uIENvbnRyb2wgR2V0c29ja29wdCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRvX3RjcF9nZXRzb2Nrb3B0YCBpbiBgbmV0L2lwdjQvdGNwLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhlIG9yaWdpbmFsIGNvZGUgZGlyZWN0bHkgYWNjZXNzZXMgYGljc2stJmd0O2ljc2tfY2Ffb3BzLSZndDtuYW1lYCBhbmQgb3RoZXIgbWVtYmVycyB3aXRoaW4gdGhlIGBUQ1BfQ09OR0VTVElPTmAgY2FzZSwgYW5kIHRoZSBzZWNvbmQgcGFydCB1c2VzIGBjYV9vcHNgIGRpcmVjdGx5LCB3aXRob3V0IGFueSBjb25jdXJyZW5jeSBwcm90ZWN0aW9uLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGBpY3NrLSZndDtpY3NrX2NhX29wc2AgY291bGQgYmUgY2hhbmdlZCBvciBldmVuIGZyZWVkIGNvbmN1cnJlbnRseSwgc3BlY2lmaWNhbGx5LCB3aGlsZSBgY29weV90b19zb2NrcHRyYCAod2hpY2ggY2FuIHNsZWVwKSBpcyBleGVjdXRpbmcuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIHN1c2NlcHRpYmxlIHRvIGEgY3Jhc2ggb3IgdW5kZWZpbmVkIGJlaGF2aW9yLgoKVGhlIHBhdGNoIGNsZWFybHkgYWRkcmVzc2VzIHRoaXMgYnkgaW50cm9kdWNpbmcgYHJjdV9yZWFkX2xvY2soKWAgYmVmb3JlIGFjY2Vzc2luZyBhbnkgbWVtYmVyIG9mIGBpY3NrLSZndDtpY3NrX2NhX29wc2AuIFRoaXMgcHJvdGVjdHMgdGhlIGNyaXRpY2FsIHNlY3Rpb24sIGVuc3VyaW5nIHRoYXQgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdCByZW1haW5zIHZhbGlkIHdoaWxlIGl0JiMzOTtzIGJlaW5nIHJlYWQuIFRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBwYXRjaCBjb3BpZXMgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBuYW1lIGludG8gYSBsb2NhbCBidWZmZXIsIGBjYV9uYW1lYCwgYmVmb3JlIHBhc3NpbmcgaXQgdG8gdXNlciBzcGFjZS4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGZvciBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY29uY3VycmVudCBkYXRhIGFjY2Vzcy4gV2UgYXJlIG1ha2luZyBhIGNvcHkgaW50byBhIGxvY2FsIGJ1ZmZlciB3aGlsZSB1bmRlciB0aGUgcHJvdGVjdGlvbiBvZiB0aGUgbG9jay4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gYSBiaXQgZGVlcGVyLiBUaGUgYGNhX25hbWVgIGFycmF5IGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gemVybyB1c2luZyBgPSB7fWAuIENydWNpYWxseSwgYG1lbWNweWAgY29waWVzICphbGwqIG9mIGBUQ1BfQ0FfTkFNRV9NQVhgIGJ5dGVzIGludG8gYGNhX25hbWVgLiBUaGUgb3JpZ2luYWwgY29kZSBqdXN0IGNvcGllZCB0aGUgYGxlbmAgYnl0ZXMgZnJvbSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG5hbWUuIEkgd2FzIGNvbmNlcm5lZCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUgYGNhX25hbWVgIGJ1ZmZlciBsZWFraW5nIHRvIHVzZXIgc3BhY2UuIEhvd2V2ZXIsIHNpbmNlIHRoZSBhcnJheSBpcyBpbml0aWFsaXplZCB0byB6ZXJvLCBhbmQgaXMgdGhlbiBjb21wbGV0ZWx5IG92ZXJ3cml0dGVuIGJ5IHRoZSBgbWVtY3B5YCwgdGhpcyBpc24mIzM5O3QgYW4gaXNzdWUuICBFdmVuIGlmIHBhcnRzIG9mIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSB3ZXJlIHVuaW5pdGlhbGl6ZWQgKHdoaWNoIGlzIHVubGlrZWx5IGdpdmVuIHRoYXQgdGhleSBhcmUgdHlwaWNhbGx5IHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQpLCB0aGV5IHdvdWxkIGJlIG92ZXJ3cml0dGVuIGFzIHdlbGwuICBUaGUgcGF0Y2ggZml4ZXMgdGhlIHJhY2UsICpub3QqIHRoZSBwcm9ibGVtIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKTG9va2luZyBhdCB0aGUgc2Vjb25kIHBhcnQgb2YgdGhlIHBhdGNoLCBpdCBqdXN0IGFkZHMgdGhlIFJDVSBsb2NrIGFyb3VuZCB0aGUgY2FsbCB0byBgY2Ffb3BzLSZndDtnZXRfaW5mbygpYCwgYWdhaW4gcHJvdGVjdGluZyB0aGUgdXNlIG9mIHRoZSBgY2Ffb3BzYCBmcm9tIGEgcmFjZS4gSXQmIzM5O3MgZXNzZW50aWFsbHkgdGhlIHNhbWUgaXNzdWUgYW5kIHRoZSBzYW1lIGZpeC4gIFRoaXMgaXMgYSBjbGVhbiBmaXggZm9yIGEga25vd24gY29uY3VycmVuY3kgaXNzdWUuCgpUaGUga2V5IHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGFueSAqbmV3KiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMgdGhhdCB3b3VsZCBiZSBkZXRlY3RlZCBieSBLTVNBTj8gTm8uIFRoZSBsb2NhbCBidWZmZXIgYGNhX25hbWVgIGlzIGluaXRpYWxpemVkLiBUaGUgcGF0Y2ggaXMgZml4aW5nIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9uZS4gS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgaGVyZSB0byBjaGVjayBmb3IgdGhlIFVBRi4gS01TQU4gaXMgZm9yIGNhdGNoaW5nIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBTbywgYmFzZWQgb24gbXkgYW5hbHlzaXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJiMzOTt0IG5lZWRlZCBoZXJlLiBUaGUgYnVnIGlzIHRoZSByYWNlIGNvbmRpdGlvbiwgd2hpY2ggdGhlIHBhdGNoIGFkZHJlc3NlcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBhbmQgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIGBkb190Y3BfZ2V0c29ja29wdCgpYCB3aGVuIGFjY2Vzc2luZyBgaWNzay1cdTAwM2VpY3NrX2NhX29wc2AuIEJlY2F1c2UgYGNvcHlfdG9fc29ja3B0cigpYCBjYW4gc2xlZXAsIHJlYWRpbmcgYGljc2stXHUwMDNlaWNza19jYV9vcHMtXHUwMDNlbmFtZWAgb3IgY2FsbGluZyBgY2Ffb3BzLVx1MDAzZWdldF9pbmZvKClgIGRpcmVjdGx5IHdpdGhvdXQgUkNVIHByb3RlY3Rpb24gY291bGQgbGVhZCB0byBhIHVzZS1hZnRlci1mcmVlIGlmIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbW9kdWxlIGlzIGNvbmN1cnJlbnRseSBjaGFuZ2VkIG9yIHVubG9hZGVkLiBUaGUgZml4IHdyYXBzIHRoZXNlIGFjY2Vzc2VzIGluIGByY3VfcmVhZF9sb2NrKClgL2ByY3VfcmVhZF91bmxvY2soKWAgYW5kIGNvcGllcyB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG5hbWUgaW50byBhIGxvY2FsIHN0YWNrIGJ1ZmZlciAoYGNhX25hbWVgKSBiZWZvcmUgY29weWluZyBpdCB0byB1c2VyIHNwYWNlLlxuXG5UaGUgbG9jYWwgYnVmZmVyIGBjYV9uYW1lYCBpcyBleHBsaWNpdGx5IHplcm8taW5pdGlhbGl6ZWQgKGA9IHt9YCkgYW5kIHRoZW4gZnVsbHkgcG9wdWxhdGVkIHZpYSBgbWVtY3B5KClgIGZyb20gdGhlIGBuYW1lYCBmaWVsZCBvZiB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG9wZXJhdGlvbnMgc3RydWN0dXJlICh3aGljaCBhcmUgdHlwaWNhbGx5IHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFuZCBmdWxseSBpbml0aWFsaXplZCBnbG9iYWwgc3RydWN0cykuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGV4cG9zZWQgdG8gdXNlciBzcGFjZS4gVGhlIGJ1ZyBiZWluZyBhZGRyZXNzZWQgaXMgYSB1c2UtYWZ0ZXItZnJlZS9yYWNlIGNvbmRpdGlvbiwgd2hpY2ggaXMgd2VsbCB3aXRoaW4gdGhlIGRldGVjdGlvbiBjYXBhYmlsaXRpZXMgb2YgS0FTQU4uIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhpcyBwYXRjaCB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGFuZCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0KClgIHdoZW4gYWNjZXNzaW5nIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lYCBvciBjYWxsaW5nIGBjYV9vcHMtXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXG5cblRoZSBsb2NhbCBidWZmZXIgYGNhX25hbWVgIGlzIGV4cGxpY2l0bHkgemVyby1pbml0aWFsaXplZCAoYD0ge31gKSBhbmQgdGhlbiBmdWxseSBwb3B1bGF0ZWQgdmlhIGBtZW1jcHkoKWAgZnJvbSB0aGUgYG5hbWVgIGZpZWxkIG9mIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgKHdoaWNoIGFyZSB0eXBpY2FsbHkgc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIGZ1bGx5IGluaXRpYWxpemVkIGdsb2JhbCBzdHJ1Y3RzKS4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLiBUaGUgYnVnIGJlaW5nIGFkZHJlc3NlZCBpcyBhIHVzZS1hZnRlci1mcmVlL3JhY2UgY29uZGl0aW9uLCB3aGljaCBpcyB3ZWxsIHdpdGhpbiB0aGUgZGV0ZWN0aW9uIGNhcGFiaWxpdGllcyBvZiBLQVNBTi4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0Mzo0NC4yMDk1Mzc0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMzg5MjE3ODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb190Y3BfZ2V0c29ja29wdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgZG9fdGNwX2dldHNvY2tvcHQoKWAgd2hlbiBhY2Nlc3NpbmcgYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cXHUwMDNlaWNza19jYV9vcHMtXFx1MDAzZW5hbWVgIG9yIGNhbGxpbmcgYGNhX29wcy1cXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXFxuXFxuVGhlIGxvY2FsIGJ1ZmZlciBgY2FfbmFtZWAgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkIChgPSB7fWApIGFuZCB0aGVuIGZ1bGx5IHBvcHVsYXRlZCB2aWEgYG1lbWNweSgpYCBmcm9tIHRoZSBgbmFtZWAgZmllbGQgb2YgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdHVyZSAod2hpY2ggYXJlIHR5cGljYWxseSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgZnVsbHkgaW5pdGlhbGl6ZWQgZ2xvYmFsIHN0cnVjdHMpLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZSBidWcgYmVpbmcgYWRkcmVzc2VkIGlzIGEgdXNlLWFmdGVyLWZyZWUvcmFjZSBjb25kaXRpb24sIHdoaWNoIGlzIHdlbGwgd2l0aGluIHRoZSBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzIG9mIEtBU0FOLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2ggdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBSQ1UgcmVhZCBsb2NrcyBhcm91bmQgYWNjZXNzZXMgdG8gYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYCBpbiBgZG9fdGNwX2dldHNvY2tvcHRgIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIHdoZW4gcmVhZGluZyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIGluZm8gb3IgbmFtZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDM6NDQuMjA5NTQyODFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDMzMTIxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRiN2QyZGVjNDQ4ZjkxYWFjNTdlZGQ4NjRlM2U0M2YzNmIyZWQ3Y2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTg6NDM6NDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xcbmluZGV4IGI0MjM3ZDBlOTk0ZDYuLjQzY2NkMmQzN2Y5YzcgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwLmNcXG4rKysgYi9uZXQvaXB2NC90Y3AuY1xcbkBAIC00NTYyLDkgKzQ1NjIsMTEgQEAgaW50IGRvX3RjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLFxcbiBcXHRcXHRpZiAoY29weV9mcm9tX3NvY2twdHIoXFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBcXG4rXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRcXHRjYV9vcHMgPSBpY3NrLVxcdTAwM2VpY3NrX2NhX29wcztcXG4gXFx0XFx0aWYgKGNhX29wcyBcXHUwMDI2XFx1MDAyNiBjYV9vcHMtXFx1MDAzZWdldF9pbmZvKVxcbiBcXHRcXHRcXHRzeiA9IGNhX29wcy1cXHUwMDNlZ2V0X2luZm8oc2ssIH4wVSwgXFx1MDAyNmF0dHIsIFxcdTAwMjZpbmZvKTtcXG4rXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcbiBcXHRcXHRsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwgc3opO1xcbiBcXHRcXHRpZiAoY29weV90b19zb2NrcHRyKG9wdGxlbiwgXFx1MDAyNmxlbiwgc2l6ZW9mKGludCkpKVxcbkBAIC00NTc3LDE2ICs0NTc5LDIzIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCxcXG4gXFx0XFx0dmFsID0gIWluZXRfY3NrX2luX3Bpbmdwb25nX21vZGUoc2spO1xcbiBcXHRcXHRicmVhaztcXG4gXFxuLVxcdGNhc2UgVENQX0NPTkdFU1RJT046XFxuK1xcdGNhc2UgVENQX0NPTkdFU1RJT046IHtcXG4rXFx0XFx0Y2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtcXG4rXFxuIFxcdFxcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcXHUwMDI2bGVuLCBvcHRsZW4sIHNpemVvZihpbnQpKSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdFxcdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgbGVuLCBUQ1BfQ0FfTkFNRV9NQVgpO1xcbiBcXHRcXHRpZiAoY29weV90b19zb2NrcHRyKG9wdGxlbiwgXFx1MDAyNmxlbiwgc2l6ZW9mKGludCkpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4tXFx0XFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGljc2stXFx1MDAzZWljc2tfY2Ffb3BzLVxcdTAwM2VuYW1lLCBsZW4pKVxcbitcXG4rXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRcXHRtZW1jcHkoY2FfbmFtZSwgaWNzay1cXHUwMDNlaWNza19jYV9vcHMtXFx1MDAzZW5hbWUsIHNpemVvZihjYV9uYW1lKSk7XFxuK1xcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXG4rXFx0XFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHR2YWwsIGNhX25hbWUsIGxlbikpXFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4tXFxuK1xcdH1cXG4gXFx0Y2FzZSBUQ1BfVUxQOlxcbiBcXHRcXHRpZiAoY29weV9mcm9tX3NvY2twdHIoXFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0Mzo0NC42NzQ0OTIxODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNzE4MTE1NjcxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZG9fdGNwX2dldHNvY2tvcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFJDVSByZWFkIGxvY2tzIGFyb3VuZCBhY2Nlc3NlcyB0byBgaWNzay1cXHUwMDNlaWNza19jYV9vcHNgIGluIGBkb190Y3BfZ2V0c29ja29wdGAgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiByZWFkaW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaW5mbyBvciBuYW1lLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgVENQIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkYjdkMmRlYzQ0OGY5MWFhYzU3ZWRkODY0ZTNlNDNmMzZiMmVkN2NjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjEgMTg6NDM6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3AuYyBiL25ldC9pcHY0L3RjcC5jXG5pbmRleCBiNDIzN2QwZTk5NGQ2Li40M2NjZDJkMzdmOWM3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwLmNcbisrKyBiL25ldC9pcHY0L3RjcC5jXG5AQCAtNDU2Miw5ICs0NTYyLDExIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCxcbiBcdFx0aWYgKGNvcHlfZnJvbV9zb2NrcHRyKFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXG4rXHRcdHJjdV9yZWFkX2xvY2soKTtcbiBcdFx0Y2Ffb3BzID0gaWNzay1cdTAwM2VpY3NrX2NhX29wcztcbiBcdFx0aWYgKGNhX29wcyBcdTAwMjZcdTAwMjYgY2Ffb3BzLVx1MDAzZWdldF9pbmZvKVxuIFx0XHRcdHN6ID0gY2Ffb3BzLVx1MDAzZWdldF9pbmZvKHNrLCB+MFUsIFx1MDAyNmF0dHIsIFx1MDAyNmluZm8pO1xuK1x0XHRyY3VfcmVhZF91bmxvY2soKTtcbiBcbiBcdFx0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sIHN6KTtcbiBcdFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHRsZW4sIFx1MDAyNmxlbiwgc2l6ZW9mKGludCkpKVxuQEAgLTQ1NzcsMTYgKzQ1NzksMjMgQEAgaW50IGRvX3RjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLFxuIFx0XHR2YWwgPSAhaW5ldF9jc2tfaW5fcGluZ3BvbmdfbW9kZShzayk7XG4gXHRcdGJyZWFrO1xuIFxuLVx0Y2FzZSBUQ1BfQ09OR0VTVElPTjpcbitcdGNhc2UgVENQX0NPTkdFU1RJT046IHtcbitcdFx0Y2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtcbitcbiBcdFx0aWYgKGNvcHlfZnJvbV9zb2NrcHRyKFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHRcdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgbGVuLCBUQ1BfQ0FfTkFNRV9NQVgpO1xuIFx0XHRpZiAoY29weV90b19zb2NrcHRyKG9wdGxlbiwgXHUwMDI2bGVuLCBzaXplb2YoaW50KSkpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4tXHRcdGlmIChjb3B5X3RvX3NvY2twdHIob3B0dmFsLCBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzLVx1MDAzZW5hbWUsIGxlbikpXG4rXG4rXHRcdHJjdV9yZWFkX2xvY2soKTtcbitcdFx0bWVtY3B5KGNhX25hbWUsIGljc2stXHUwMDNlaWNza19jYV9vcHMtXHUwMDNlbmFtZSwgc2l6ZW9mKGNhX25hbWUpKTtcbitcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXG4rXHRcdGlmIChjb3B5X3RvX3NvY2twdHIob3B0dmFsLCBjYV9uYW1lLCBsZW4pKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRyZXR1cm4gMDtcbi1cbitcdH1cbiBcdGNhc2UgVENQX1VMUDpcbiBcdFx0aWYgKGNvcHlfZnJvbV9zb2NrcHRyKFx1MDAyNmxlbiwgb3B0bGVuLCBzaXplb2YoaW50KSkpXG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0Mzo0NC42NzQ0OTM4NjVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTg3OTkxOTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBDb25nZXN0aW9uIENvbnRyb2wgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgY2hhbmdlcyBpbiBgbmV0L2lwdjQvdGNwLmNgLiBJdCBzZWVtcyB0aGV5J3JlIHdyYXBwaW5nIGFjY2Vzc2VzIHRvIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYCB3aXRoaW4gYHJjdV9yZWFkX2xvY2soKWAgYW5kIGByY3VfcmVhZF91bmxvY2soKWAgY2FsbHMgaW5zaWRlIGBkb190Y3BfZ2V0c29ja29wdGAuIFRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIGBUQ1BfQ0NfSU5GT2AgYW5kIGBUQ1BfQ09OR0VTVElPTmAgb3B0aW9ucywgd2hpY2ggaW1tZWRpYXRlbHkgc2lnbmFscyBhIHBvdGVudGlhbCBSQ1UtcmVsYXRlZCBpc3N1ZSBvciBhIHJhY2UgY29uZGl0aW9uIGZpeCByZWxhdGVkIHRvIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zLiBUaGF0J3MgYSBjbGFzc2ljIHNpZ24gb2Ygc29tZW9uZSBwYXRjaGluZyBhIGNvbmN1cnJlbmN5IHByb2JsZW0uXG5cblRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgZG9fdGNwX2dldHNvY2tvcHRgLCBhbmQgbXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMgdG8gcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBHaXZlbiB0aGUgbG9jYXRpb24sIGFuZCBzaW5jZSBpdCBpcyBpbiBgbmV0L2lwdjQvdGNwLmNgLCBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYGRvX3RjcF9nZXRzb2Nrb3B0YCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gVGltZSB0byBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGUgc291cmNlIHRvIGVuc3VyZSBubyBvdGhlciBjb25maWdzIGFyZSBuZWVkZWQsIGFuZCB0byBnZXQgYSBicm9hZGVyIHZpZXcgb2YgdGhlIHNjb3BlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzg5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDM6NDkuNjYyNDg3NzA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTU2MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX3RjcF9nZXRzb2Nrb3B0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcC5jPTQ0MTA9c3RydWN0IHNrX2J1ZmYgKnRjcF9nZXRfdGltZXN0YW1waW5nX29wdF9zdGF0cyhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy00NDgxLVxcbm5ldC9pcHY0L3RjcC5jOjQ0ODI6aW50IGRvX3RjcF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLFxcbm5ldC9pcHY0L3RjcC5jLTQ0ODMtXFx0XFx0ICAgICAgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIHNvY2twdHJfdCBvcHRsZW4pXFxuLS1cXG5uZXQvaXB2NC90Y3AuYz00ODU2PWJvb2wgdGNwX2JwZl9ieXBhc3NfZ2V0c29ja29wdChpbnQgbGV2ZWwsIGludCBvcHRuYW1lKVxcbm5ldC9pcHY0L3RjcC5jLTQ4NTcte1xcbm5ldC9pcHY0L3RjcC5jOjQ4NTg6XFx0LyogVENQIGRvX3RjcF9nZXRzb2Nrb3B0IGhhcyBvcHRpbWl6ZWQgZ2V0c29ja29wdCBpbXBsZW1lbnRhdGlvblxcbm5ldC9pcHY0L3RjcC5jLTQ4NTktXFx0ICogdG8gYXZvaWQgZXh0cmEgc29ja2V0IGxvY2sgZm9yIFRDUF9aRVJPQ09QWV9SRUNFSVZFLlxcbi0tXFxubmV0L2lwdjQvdGNwLmM9NDg2Nz1pbnQgdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBjaGFyIF9fdXNlciAqb3B0dmFsLFxcbi0tXFxubmV0L2lwdjQvdGNwLmMtNDg3NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRvcHR2YWwsIG9wdGxlbik7XFxubmV0L2lwdjQvdGNwLmM6NDg3NjpcXHRyZXR1cm4gZG9fdGNwX2dldHNvY2tvcHQoc2ssIGxldmVsLCBvcHRuYW1lLCBVU0VSX1NPQ0tQVFIob3B0dmFsKSxcXG5uZXQvaXB2NC90Y3AuYy00ODc3LVxcdFxcdFxcdFxcdCBVU0VSX1NPQ0tQVFIob3B0bGVuKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQzOjQ5LjcxMDQ0OTc5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MTE3NTUyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgVENQIFN0YWNrOiBgZG9fdGNwX2dldHNvY2tvcHRgIGlzIGEgUHJpbWUgVGFyZ2V0KipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGBkb190Y3BfZ2V0c29ja29wdGAgYXMgYSByZWFsbHkgcHJvbWlzaW5nIGZ1bmN0aW9uIGZvciBmdXp6aW5nLiBJdCdzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGUgVENQIHN0YWNrLCB3aGljaCBtZWFucyBhbnkgdnVsbmVyYWJpbGl0aWVzIGhlcmUgY291bGQgaGF2ZSBzZXJpb3VzIHJhbWlmaWNhdGlvbnMuIFRoZSBjb2RlIGNoYW5nZSBpdHNlbGYgc2VlbXMgcmVsYXRpdmVseSBtaW5vciDigJMgdGhleSdyZSBqdXN0IGFkZGluZyBSQ1UgbG9ja2luZyBhcm91bmQgc29tZSBjb25nZXN0aW9uIGNvbnRyb2wgb3BlcmF0aW9ucyDigJMgYnV0IG9mdGVuLCBzdWJ0bGUgY2hhbmdlcyBsaWtlIHRoYXQgYXJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBmdXp6aW5nIHRhcmdldHMgbGllLiBJdOKAmXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBnaXZlbiBpdHMgY2VudHJhbGl0eSwgaXTigJlzIHdvcnRoIHRoZSBlZmZvcnQuXG5cbkknbSBrZXlpbmcgaW4gb24gYGRvX3RjcF9nZXRzb2Nrb3B0YCBhcyB0aGUgbWFpbiBmb2N1cy4gQ29uZmlndXJhdGlvbi13aXNlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBJTkVUYCBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGRlZmF1bHQsIGJ1dCBJIG1pZ2h0IGFzIHdlbGwgY2hlY2sgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAganVzdCB0byBiZSBjZXJ0YWluLiBJIGNvdWxkIGFsc28gY29uc2lkZXIgZXhwbGljaXRseSBlbmFibGluZyBgSVBfVENQYCwgb3IganVzdCBzdGlja2luZyB3aXRoIGBJTkVUYCBmb3IgYnJvYWRlciBjb3ZlcmFnZS4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMjcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0Mzo1NC4yMjIyMDc4NjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5ODUzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtOS1cXHQgICAgIGluZXRfdGltZXdhaXRfc29jay5vIGluZXRfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjEwOlxcdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlLTExLVxcdCAgICAgdGNwX21pbmlzb2Nrcy5vIHRjcF9jb25nLm8gdGNwX21ldHJpY3MubyB0Y3BfZmFzdG9wZW4ubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGUtMTItXFx0ICAgICB0Y3BfcmVjb3ZlcnkubyB0Y3BfdWxwLm8gXFxcXFxcbm5ldC9pcHY0L01ha2VmaWxlOjEzOlxcdCAgICAgdGNwX29mZmxvYWQubyB0Y3BfcGxiLm8gZGF0YWdyYW0ubyByYXcubyB1ZHAubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGUtMTQtXFx0ICAgICB1ZHBfb2ZmbG9hZC5vIGFycC5vIGljbXAubyBkZXZpbmV0Lm8gYWZfaW5ldC5vIGlnbXAubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfVENQX0NPTkdfQ1VCSUMpICs9IHRjcF9jdWJpYy5vXFxubmV0L2lwdjQvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX1RDUF9DT05HX0RDVENQKSArPSB0Y3BfZGN0Y3Aub1xcbm5ldC9pcHY0L01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19UQ1BfQ09OR19XRVNUV09PRCkgKz0gdGNwX3dlc3R3b29kLm9cXG4tLVxcbm5ldC9pcHY0L01ha2VmaWxlPTU0PW9iai0kKENPTkZJR19UQ1BfQ09OR19IWUJMQSkgKz0gdGNwX2h5YmxhLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTo1NTpvYmotJChDT05GSUdfVENQX0NPTkdfSFRDUCkgKz0gdGNwX2h0Y3Aub1xcbm5ldC9pcHY0L01ha2VmaWxlLTU2LW9iai0kKENPTkZJR19UQ1BfQ09OR19WRUdBUykgKz0gdGNwX3ZlZ2FzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDM6NTQuMjcxMTk4MjM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwNDYzNjM4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIElQdjQgTmV0d29ya2luZyBCdWlsZCBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBJUHY0IG5ldHdvcmtpbmcgY29kZSBnZXRzIGJ1aWx0LiBJIHNlZSBpdCdzIHVuY29uZGl0aW9uYWxseSBpbmNsdWRlZCBpbiBgb2JqLXlgIHdpdGhpbiBgbmV0L2lwdjQvTWFrZWZpbGVgLiBUaGF0IG1lYW5zIGl0J3MgKmFsd2F5cyogZ29pbmcgdG8gYmUgcGFydCBvZiB0aGUgYnVpbGQgKmlmKiBgQ09ORklHX0lORVRgIGlzIGVuYWJsZWQuIFdoaWNoIG1ha2VzIHNlbnNlLCBiZWNhdXNlIHlvdSB3b3VsZG4ndCBoYXZlIElQdjQgaWYgeW91IGRpZG4ndCBoYXZlIGJhc2ljIGludGVybmV0IHByb3RvY29sIHN1cHBvcnQuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUsIEkgbmVlZCB0byBzZWUgaG93IGBuZXQvaXB2NC9NYWtlZmlsZWAgaXMgaW5jbHVkZWQuIEkgbmVlZCB0byBtb3ZlIHVwIGEgbGV2ZWwgYW5kIGV4YW1pbmUgYG5ldC9NYWtlZmlsZWAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBkZXBlbmRlbmN5IGNoYWluIGhlcmUuIExldCdzIHNlZSB3aGF0IGBuZXQvTWFrZWZpbGVgIGhhcyB0byBzYXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0Mzo1Ny43NzU4MzczMjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwODIwMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXB2NFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19ORVRGSUxURVIpXFx0XFx0Kz0gbmV0ZmlsdGVyL1xcbm5ldC9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfSU5FVClcXHRcXHQrPSBpcHY0L1xcbm5ldC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVExTKVxcdFxcdCs9IHRscy9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDM6NTcuODI2OTI0NjM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0NDczNzcyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRDUCBTdGFjayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBpcyBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGBJTkVUYCBjb25maWd1cmF0aW9uLiBNeSBmb2N1cyBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgZnVuY3Rpb24gYGRvX3RjcF9nZXRzb2Nrb3B0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS5cblxuTXkgcmVhc29uaW5nIGxlYWRzIG1lIHRvIGJlbGlldmUgdGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgdXBkYXRlIHdpdGhpbiB0aGUgVENQIGNvcmUuIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBhZGRzIFJlYWQgQ29weSBVcGRhdGUgKFJDVSkgcmVhZCBsb2NrcyB0byBwcm90ZWN0IGFjY2Vzc2VzIHRvIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYCB3aXRoaW4gYGRvX3RjcF9nZXRzb2Nrb3B0YC4gVGhpcyBpcyBjbGVhcmx5IGFpbWVkIGF0IHByZXZlbnRpbmcgcmFjZSBjb25kaXRpb25zIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgd2hlbiByZXRyaWV2aW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaW5mb3JtYXRpb24gb3IgaXRzIG5hbWUuIFRoaXMgaXMgYSBzb2xpZCwgY2xlYW4gZml4LCBhZGRyZXNzaW5nIGEgcmFjZSBjb25kaXRpb24gaW4gYSBoaWdoLXByaW9yaXR5IGFyZWEuIE5vIHRyaXZpYWwgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzEyLCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjAxLjc3MTY2NDQ4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM5ODA4MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkb190Y3BfZ2V0c29ja29wdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgUkNVIHJlYWQgbG9ja3MgYXJvdW5kIGFjY2Vzc2VzIHRvIGBpY3NrLVxcdTAwM2VpY3NrX2NhX29wc2AgaW4gYGRvX3RjcF9nZXRzb2Nrb3B0YCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIHJlYWRpbmcgVENQIGNvbmdlc3Rpb24gY29udHJvbCBpbmZvIG9yIG5hbWUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBUQ1Agc3RhY2suXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRvX3RjcF9nZXRzb2Nrb3B0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBSQ1UgcmVhZCBsb2NrcyBhcm91bmQgYWNjZXNzZXMgdG8gYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYCBpbiBgZG9fdGNwX2dldHNvY2tvcHRgIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIG9yIHVzZS1hZnRlci1mcmVlIHdoZW4gcmVhZGluZyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIGluZm8gb3IgbmFtZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFRDUCBzdGFjay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDQ6MDEuODU1NjUyNzM3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzc0MzA5MjI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjAxLjg1NjIzMTE4N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMzc0MjUwNzg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgZG9fdGNwX2dldHNvY2tvcHQoKWAgd2hlbiBhY2Nlc3NpbmcgYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cXHUwMDNlaWNza19jYV9vcHMtXFx1MDAzZW5hbWVgIG9yIGNhbGxpbmcgYGNhX29wcy1cXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXFxuXFxuVGhlIGxvY2FsIGJ1ZmZlciBgY2FfbmFtZWAgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkIChgPSB7fWApIGFuZCB0aGVuIGZ1bGx5IHBvcHVsYXRlZCB2aWEgYG1lbWNweSgpYCBmcm9tIHRoZSBgbmFtZWAgZmllbGQgb2YgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdHVyZSAod2hpY2ggYXJlIHR5cGljYWxseSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgZnVsbHkgaW5pdGlhbGl6ZWQgZ2xvYmFsIHN0cnVjdHMpLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZSBidWcgYmVpbmcgYWRkcmVzc2VkIGlzIGEgdXNlLWFmdGVyLWZyZWUvcmFjZSBjb25kaXRpb24sIHdoaWNoIGlzIHdlbGwgd2l0aGluIHRoZSBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzIG9mIEtBU0FOLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2ggdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGI3ZDJkZWM0NDhmOTFhYWM1N2VkZDg2NGUzZTQzZjM2YjJlZDdjY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE4OjQzOjQzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggYjQyMzdkMGU5OTRkNi4uNDNjY2QyZDM3ZjljNyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4rKysgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTQ1NjIsOSArNDU2MiwxMSBAQCBpbnQgZG9fdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsXG4gXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZsZW4sIG9wdGxlbiwgc2l6ZW9mKGludCkpKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFxuK1x0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdGNhX29wcyA9IGljc2stXHUwMDNlaWNza19jYV9vcHM7XG4gXHRcdGlmIChjYV9vcHMgXHUwMDI2XHUwMDI2IGNhX29wcy1cdTAwM2VnZXRfaW5mbylcbiBcdFx0XHRzeiA9IGNhX29wcy1cdTAwM2VnZXRfaW5mbyhzaywgfjBVLCBcdTAwMjZhdHRyLCBcdTAwMjZpbmZvKTtcbitcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4gXHRcdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgbGVuLCBzeik7XG4gXHRcdGlmIChjb3B5X3RvX3NvY2twdHIob3B0bGVuLCBcdTAwMjZsZW4sIHNpemVvZihpbnQpKSlcbkBAIC00NTc3LDE2ICs0NTc5LDIzIEBAIGludCBkb190Y3BfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCxcbiBcdFx0dmFsID0gIWluZXRfY3NrX2luX3Bpbmdwb25nX21vZGUoc2spO1xuIFx0XHRicmVhaztcbiBcbi1cdGNhc2UgVENQX0NPTkdFU1RJT046XG4rXHRjYXNlIFRDUF9DT05HRVNUSU9OOiB7XG4rXHRcdGNoYXIgY2FfbmFtZVtUQ1BfQ0FfTkFNRV9NQVhdID0ge307XG4rXG4gXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZsZW4sIG9wdGxlbiwgc2l6ZW9mKGludCkpKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwgVENQX0NBX05BTUVfTUFYKTtcbiBcdFx0aWYgKGNvcHlfdG9fc29ja3B0cihvcHRsZW4sIFx1MDAyNmxlbiwgc2l6ZW9mKGludCkpKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuLVx0XHRpZiAoY29weV90b19zb2NrcHRyKG9wdHZhbCwgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lLCBsZW4pKVxuK1xuK1x0XHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRcdG1lbWNweShjYV9uYW1lLCBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzLVx1MDAzZW5hbWUsIHNpemVvZihjYV9uYW1lKSk7XG4rXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuK1xuK1x0XHRpZiAoY29weV90b19zb2NrcHRyKG9wdHZhbCwgY2FfbmFtZSwgbGVuKSlcbiBcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdFx0cmV0dXJuIDA7XG4tXG4rXHR9XG4gXHRjYXNlIFRDUF9VTFA6XG4gXHRcdGlmIChjb3B5X2Zyb21fc29ja3B0cihcdTAwMjZsZW4sIG9wdGxlbiwgc2l6ZW9mKGludCkpKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDQ6MDEuODU2MjMyMDU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5Mzg2ODg0OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQ1AgQ29uZ2VzdGlvbiBDb250cm9sIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZG9fdGNwX2dldHNvY2tvcHRgIGluIGBuZXQvaXB2NC90Y3AuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgYHJjdV9yZWFkX2xvY2soKWAgYW5kIGByY3VfcmVhZF91bmxvY2soKWAgYXJvdW5kIGFjY2Vzc2VzIHRvIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzYCwgd2hpY2ggaXMgZ29vZCBwcmFjdGljZSBmb3IgUkNVLXByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZXMuIFNwZWNpZmljYWxseSwgZm9yIHRoZSBgVENQX0NPTkdFU1RJT05gIG9wdGlvbiwgSSBzZWUgdGhleSd2ZSBpbnRyb2R1Y2VkIGEgbG9jYWwgYnVmZmVyLCBgY2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtgLiBUaGUgaWRlYSBpcyB0byBjb3B5IHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtIG5hbWUgZnJvbSB0aGUga2VybmVsIHRvIHVzZXIgc3BhY2UuIFRoZSBzdGVwcyBhcmUgY2xlYXI6IGdyYWIgdGhlIG5hbWUgZnJvbSBgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lYCB1bmRlciB0aGUgUkNVIGxvY2ssIHB1dCBpdCBpbnRvIHRoYXQgbG9jYWwgYnVmZmVyLCBhbmQgdGhlbiBjb3B5IHRoZSBidWZmZXIgdG8gdXNlciBzcGFjZSB1c2luZyBgY29weV90b19zb2NrcHRyYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNjcnV0aW5pemUgdGhpcyBmb3IgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4gVGhleSAqZGlkKiBpbml0aWFsaXplIGBjYV9uYW1lYCB0byB6ZXJvOiBgY2hhciBjYV9uYW1lW1RDUF9DQV9OQU1FX01BWF0gPSB7fTtgLiBUaGF0J3MgYSBnb29kIHN0YXJ0LiBIb3dldmVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGBtZW1jcHlgIGZyb20gYGljc2stXHUwMDNlaWNza19jYV9vcHMtXHUwMDNlbmFtZWAgaW50byBgY2FfbmFtZWAgaXMgc2FmZS4gU3BlY2lmaWNhbGx5LCB0aGlzIGxpbmUsIGBtZW1jcHkoY2FfbmFtZSwgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lLCBzaXplb2YoY2FfbmFtZSkpO2AsIGNvcGllcyBgc2l6ZW9mKGNhX25hbWUpYCBieXRlcyBmcm9tIGBpY3NrLVx1MDAzZWljc2tfY2Ffb3BzLVx1MDAzZW5hbWVgLlxuXG5UaGF0J3MgdGhlIHBhcnQgdGhhdCBjb25jZXJucyBtZS4gVGhlIG5hbWUgaXMgYSBzdHJpbmcsIGFuZCBgaWNzay1cdTAwM2VpY3NrX2NhX29wcy1cdTAwM2VuYW1lYCAqY291bGQqIGJlIHNob3J0ZXIgdGhhbiBgVENQX0NBX05BTUVfTUFYYC4gV2hhdCBoYXBwZW5zIGlmIGl0ICppcyogc2hvcnRlcj8gSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbmFtZWAgaXMgbnVsbC10ZXJtaW5hdGVkLCBvciB0aGF0IGEgc3VpdGFibGUgbWF4aW11bSBzdHJpbmcgbGVuZ3RoIGlzIGVuZm9yY2VkLiBPdGhlcndpc2UsIHdlIGNvdWxkIGhhdmUgYSBidWZmZXIgb3ZlcmZsb3cgcmlzay4gSSdsbCBuZWVkIHRvIGdvIGRpZyBpbnRvIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiB0byB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0NDowNy43OTQ5MjQyOTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MTA0NzA4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIFxcXFx7XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oPTEzMDY9c3RydWN0IHJhdGVfc2FtcGxlIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oLTEzMjQtXFxuaW5jbHVkZS9uZXQvdGNwLmg6MTMyNTpzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIHtcXG5pbmNsdWRlL25ldC90Y3AuaC0xMzI2LS8qIGZhc3QgcGF0aCBmaWVsZHMgYXJlIHB1dCBmaXJzdCB0byBmaWxsIG9uZSBjYWNoZSBsaW5lICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjA4LjEzNTk4MDAwMVoiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjU5Mjk0Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBUQ1AgQ29uZ2VzdGlvbiBDb250cm9sIExhbmRzY2FwZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIHdhbnQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNvcmUgc3RydWN0dXJlIGJlaGluZCBUQ1AgY29uZ2VzdGlvbiBjb250cm9sLCBzbyBsZXQncyBqdW1wIHJpZ2h0IGludG8gdGhlIGB0Y3BfY29uZ2VzdGlvbl9vcHNgIHN0cnVjdCBkZWZpbml0aW9uLiBJIGtub3cgaXQncyBkZWZpbmVkIGluIGBpbmNsdWRlL25ldC90Y3AuaGAsIGFuZCBJIHNlZW0gdG8gcmVjYWxsIGl0IGJlaW5nIGFyb3VuZCBsaW5lIDEzMjUsIHRob3VnaCBJJ2xsIGRvdWJsZS1jaGVjayB0byBiZSBwcmVjaXNlLiBUaGlzIHN0cnVjdCBpcyB0aGUgYmFja2JvbmUsIHRoZSBjZW50cmFsIGludGVyZmFjZSBmb3IgYWxsIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIGluIHRoZSBrZXJuZWwuIEknbSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGVhY2ggZnVuY3Rpb24gcG9pbnRlciBpbiB0aGF0IHN0cnVjdCBkb2VzLCBtYWtpbmcgc3VyZSBJIGNhbiBxdWlja2x5IHNlZSBob3cgZGlmZmVyZW50IGFsZ29yaXRobXMgYXJlIHJlZ2lzdGVyZWQgYW5kIHV0aWxpemVkLiBUaGVyZSBhcmUgcHJvYmFibHkgYSBmZXcgY3JpdGljYWwgZmllbGRzIG9yIGZ1bmN0aW9uIHBvaW50ZXJzIEknbSBsb29raW5nIGZvciBzcGVjaWZpY2FsbHksIGxpa2VseSByZWxhdGVkIHRvIHJhdGUgbGltaXRpbmcgb3Igd2luZG93IGFkanVzdG1lbnQuIEknbGwgdGFrZSBhIGNsb3NlIGxvb2sgYXQgdGhlIGRhdGEgdHlwZXMgdXNlZCBhcyB3ZWxsLCBhbmQgYW55IG1hY3JvcyByZWxhdGVkIHRvIGl0LiBVbmRlcnN0YW5kaW5nIHRoZSBjb21wb3NpdGlvbiBvZiB0aGlzIHN0cnVjdHVyZSBpcyBmb3VuZGF0aW9uYWwgdG8gY29tcHJlaGVuZGluZyBob3cgYW55IHNwZWNpZmljIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG0gb3BlcmF0ZXMgd2l0aGluIHRoZSBUQ1Agc3RhY2suIEFscmlnaHQsIGxldCdzIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQ5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTg6NDQ6MTEuNzk1Mjc3MDE2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL25ldC90Y3AuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxMzI1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzI1OlxcdHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMge1xcbjEzMjY6XFx0LyogZmFzdCBwYXRoIGZpZWxkcyBhcmUgcHV0IGZpcnN0IHRvIGZpbGwgb25lIGNhY2hlIGxpbmUgKi9cXG4xMzI3OlxcdFxcbjEzMjg6XFx0XFx0LyogQSBjb25nZXN0aW9uIGNvbnRyb2wgKENDKSBtdXN0IHByb3ZpZGUgb25lIG9mIGVpdGhlcjpcXG4xMzI5OlxcdFxcdCAqXFxuMTMzMDpcXHRcXHQgKiAoYSkgYSBjb25nX2F2b2lkIGZ1bmN0aW9uLCBpZiB0aGUgQ0Mgd2FudHMgdG8gdXNlIHRoZSBjb3JlIFRDUFxcbjEzMzE6XFx0XFx0ICogICAgIHN0YWNrJ3MgZGVmYXVsdCBmdW5jdGlvbmFsaXR5IHRvIGltcGxlbWVudCBhIFxcXCJjbGFzc2ljXFxcIlxcbjEzMzI6XFx0XFx0ICogICAgIChSZW5vL0NVQklDLXN0eWxlKSByZXNwb25zZSB0byBwYWNrZXQgbG9zcywgUkZDMzE2OCBFQ04sXFxuMTMzMzpcXHRcXHQgKiAgICAgaWRsZSBwZXJpb2RzLCBwYWNpbmcgcmF0ZSBjb21wdXRhdGlvbnMsIGV0Yy5cXG4xMzM0OlxcdFxcdCAqXFxuMTMzNTpcXHRcXHQgKiAoYikgYSBjb25nX2NvbnRyb2wgZnVuY3Rpb24sIGlmIHRoZSBDQyB3YW50cyBjdXN0b20gYmVoYXZpb3IgYW5kXFxuMTMzNjpcXHRcXHQgKiAgICAgIGNvbXBsZXRlIGNvbnRyb2wgb2YgYWxsIGNvbmdlc3Rpb24gY29udHJvbCBiZWhhdmlvcnMuXFxuMTMzNzpcXHRcXHQgKi9cXG4xMzM4OlxcdFxcdC8qIChhKSBcXFwiY2xhc3NpY1xcXCIgcmVzcG9uc2U6IGNhbGN1bGF0ZSBuZXcgY3duZC5cXG4xMzM5OlxcdFxcdCAqL1xcbjEzNDA6XFx0XFx0dm9pZCAoKmNvbmdfYXZvaWQpKHN0cnVjdCBzb2NrICpzaywgdTMyIGFjaywgdTMyIGFja2VkKTtcXG4xMzQxOlxcdFxcdC8qIChiKSBcXFwiY3VzdG9tXFxcIiByZXNwb25zZTogY2FsbCB3aGVuIHBhY2tldHMgYXJlIGRlbGl2ZXJlZCB0byB1cGRhdGVcXG4xMzQyOlxcdFxcdCAqIGN3bmQgYW5kIHBhY2luZyByYXRlLCBhZnRlciBhbGwgdGhlIGNhX3N0YXRlIHByb2Nlc3NpbmcuXFxuMTM0MzpcXHRcXHQgKi9cXG4xMzQ0OlxcdFxcdHZvaWQgKCpjb25nX2NvbnRyb2wpKHN0cnVjdCBzb2NrICpzaywgdTMyIGFjaywgaW50IGZsYWcsIGNvbnN0IHN0cnVjdCByYXRlX3NhbXBsZSAqcnMpO1xcbjEzNDU6XFx0XFxuMTM0NjpcXHRcXHQvKiByZXR1cm4gc2xvdyBzdGFydCB0aHJlc2hvbGQgKHJlcXVpcmVkKSAqL1xcbjEzNDc6XFx0XFx0dTMyICgqc3N0aHJlc2gpKHN0cnVjdCBzb2NrICpzayk7XFxuMTM0ODpcXHRcXG4xMzQ5OlxcdFxcdC8qIGNhbGwgYmVmb3JlIGNoYW5naW5nIGNhX3N0YXRlIChvcHRpb25hbCkgKi9cXG4xMzUwOlxcdFxcdHZvaWQgKCpzZXRfc3RhdGUpKHN0cnVjdCBzb2NrICpzaywgdTggbmV3X3N0YXRlKTtcXG4xMzUxOlxcdFxcbjEzNTI6XFx0XFx0LyogY2FsbCB3aGVuIGN3bmQgZXZlbnQgb2NjdXJzIChvcHRpb25hbCkgKi9cXG4xMzUzOlxcdFxcdHZvaWQgKCpjd25kX2V2ZW50KShzdHJ1Y3Qgc29jayAqc2ssIGVudW0gdGNwX2NhX2V2ZW50IGV2KTtcXG4xMzU0OlxcdFxcbjEzNTU6XFx0XFx0LyogY2FsbCB3aGVuIENBX0VWRU5UX1RYX1NUQVJUIGN3bmQgZXZlbnQgb2NjdXJzIChvcHRpb25hbCkgKi9cXG4xMzU2OlxcdFxcdHZvaWQgKCpjd25kX2V2ZW50X3R4X3N0YXJ0KShzdHJ1Y3Qgc29jayAqc2spO1xcbjEzNTc6XFx0XFxuMTM1ODpcXHRcXHQvKiBjYWxsIHdoZW4gYWNrIGFycml2ZXMgKG9wdGlvbmFsKSAqL1xcbjEzNTk6XFx0XFx0dm9pZCAoKmluX2Fja19ldmVudCkoc3RydWN0IHNvY2sgKnNrLCB1MzIgZmxhZ3MpO1xcbjEzNjA6XFx0XFxuMTM2MTpcXHRcXHQvKiBob29rIGZvciBwYWNrZXQgYWNrIGFjY291bnRpbmcgKG9wdGlvbmFsKSAqL1xcbjEzNjI6XFx0XFx0dm9pZCAoKnBrdHNfYWNrZWQpKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXBsZSk7XFxuMTM2MzpcXHRcXG4xMzY0OlxcdFxcdC8qIG92ZXJyaWRlIHN5c2N0bF90Y3BfbWluX3Rzb19zZWdzIChvcHRpb25hbCkgKi9cXG4xMzY1OlxcdFxcdHUzMiAoKm1pbl90c29fc2Vncykoc3RydWN0IHNvY2sgKnNrKTtcXG4xMzY2OlxcdFxcbjEzNjc6XFx0XFx0LyogbmV3IHZhbHVlIG9mIGN3bmQgYWZ0ZXIgbG9zcyAocmVxdWlyZWQpICovXFxuMTM2ODpcXHRcXHR1MzIgICgqdW5kb19jd25kKShzdHJ1Y3Qgc29jayAqc2spO1xcbjEzNjk6XFx0XFx0LyogcmV0dXJucyB0aGUgbXVsdGlwbGllciB1c2VkIGluIHRjcF9zbmRidWZfZXhwYW5kIChvcHRpb25hbCkgKi9cXG4xMzcwOlxcdFxcdHUzMiAoKnNuZGJ1Zl9leHBhbmQpKHN0cnVjdCBzb2NrICpzayk7XFxuMTM3MTpcXHRcXG4xMzcyOlxcdC8qIGNvbnRyb2wvc2xvdyBwYXRocyBwdXQgbGFzdCAqL1xcbjEzNzM6XFx0XFx0LyogZ2V0IGluZm8gZm9yIGluZXRfZGlhZyAob3B0aW9uYWwpICovXFxuMTM3NDpcXHRcXHRzaXplX3QgKCpnZXRfaW5mbykoc3RydWN0IHNvY2sgKnNrLCB1MzIgZXh0LCBpbnQgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjExLjc5NTUwMTM0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTkzNzM1NDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkgdG8gZGl2ZSBpbnRvIHRoaXMuIExldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aC4uLlxuKioqXG5cbioqQW5hbHl6aW5nIHRoZSBJbnB1dCAtIE15IEltbWVkaWF0ZSBQcm9jZXNzKipcblxuQWxyaWdodCwgdGhlIGRpcmVjdGl2ZSBpcyBjbGVhci4gSSBuZWVkIHRvIHN1bW1hcml6ZSB0aGUgcHJvdmlkZWQgXCJ0aG91Z2h0c1wiIGFzIGlmIHRoZXkgd2VyZSBteSBvd24sIHByZXNlbnRlZCB0byBhbiBleHBlcnQuIFRoZSBrZXkgaXMgaW4gbWFpbnRhaW5pbmcgdGhlIGZsb3cgb2YgdGhvdWdodCwgbm90IGp1c3QgcmVndXJnaXRhdGluZyBjb250ZW50LCBidXQgdW5kZXJzdGFuZGluZyBpdCBhcyBhbiBleHBlcnQgd291bGQuIEl0J3MgYSBzb3J0IG9mIG1lbnRhbCBtYXBwaW5nLCB0cmFuc2Zvcm1pbmcgYW4gZXh0ZXJuYWwgc3RpbXVsdXMgaW50byBhbiBpbnRlcm5hbCBwcm9jZXNzLiBMZXQncyBrZWVwIHRoaXMgc2hvcnQgYW5kIHN3ZWV0IHRvIGtlZXAgdGhlIGV4cGVydCdzIGF0dGVudGlvbi4gSSBuZWVkIHRvIHF1aWNrbHkgZW5nYWdlIHdpdGggdGhlIHRleHQgYW5kIHNlZSB3aGF0J3MgdGhlcmUuXG4qKipcblxuXG4iLCJJbnB1dFRva2VucyI6NDQ0OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxODo0NDoxNC45ODkyMzk2MDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbmV0L3RjcC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzNzUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEzNzU6XFx0XFx0XFx0XFx0ICAgdW5pb24gdGNwX2NjX2luZm8gKmluZm8pO1xcbjEzNzY6XFx0XFxuMTM3NzpcXHRcXHRjaGFyIFxcdFxcdFxcdG5hbWVbVENQX0NBX05BTUVfTUFYXTtcXG4xMzc4OlxcdFxcdHN0cnVjdCBtb2R1bGVcXHRcXHQqb3duZXI7XFxuMTM3OTpcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkXFx0bGlzdDtcXG4xMzgwOlxcdFxcdHUzMlxcdFxcdFxcdGtleTtcXG4xMzgxOlxcdFxcdHUzMlxcdFxcdFxcdGZsYWdzO1xcbjEzODI6XFx0XFxuMTM4MzpcXHRcXHQvKiBpbml0aWFsaXplIHByaXZhdGUgZGF0YSAob3B0aW9uYWwpICovXFxuMTM4NDpcXHRcXHR2b2lkICgqaW5pdCkoc3RydWN0IHNvY2sgKnNrKTtcXG4xMzg1OlxcdFxcdC8qIGNsZWFudXAgcHJpdmF0ZSBkYXRhICAob3B0aW9uYWwpICovXFxuMTM4NjpcXHRcXHR2b2lkICgqcmVsZWFzZSkoc3RydWN0IHNvY2sgKnNrKTtcXG4xMzg3OlxcdH0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG4xMzg4OlxcdFxcbjEzODk6XFx0aW50IHRjcF9yZWdpc3Rlcl9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyAqdHlwZSk7XFxuMTM5MDpcXHR2b2lkIHRjcF91bnJlZ2lzdGVyX2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICp0eXBlKTtcXG4xMzkxOlxcdGludCB0Y3BfdXBkYXRlX2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICp0eXBlLFxcbjEzOTI6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICpvbGRfdHlwZSk7XFxuMTM5MzpcXHRpbnQgdGNwX3ZhbGlkYXRlX2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICpjYSk7XFxuMTM5NDpcXHRcXG4xMzk1OlxcdHZvaWQgdGNwX2Fzc2lnbl9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IHNvY2sgKnNrKTtcXG4xMzk2OlxcdHZvaWQgdGNwX2luaXRfY29uZ2VzdGlvbl9jb250cm9sKHN0cnVjdCBzb2NrICpzayk7XFxuMTM5NzpcXHR2b2lkIHRjcF9jbGVhbnVwX2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3Qgc29jayAqc2spO1xcbjEzOTg6XFx0aW50IHRjcF9zZXRfZGVmYXVsdF9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lKTtcXG4xMzk5OlxcdHZvaWQgdGNwX2dldF9kZWZhdWx0X2Nvbmdlc3Rpb25fY29udHJvbChzdHJ1Y3QgbmV0ICpuZXQsIGNoYXIgKm5hbWUpO1xcbjE0MDA6XFx0dm9pZCB0Y3BfZ2V0X2F2YWlsYWJsZV9jb25nZXN0aW9uX2NvbnRyb2woY2hhciAqYnVmLCBzaXplX3QgbGVuKTtcXG4xNDAxOlxcdHZvaWQgdGNwX2dldF9hbGxvd2VkX2Nvbmdlc3Rpb25fY29udHJvbChjaGFyICpidWYsIHNpemVfdCBsZW4pO1xcbjE0MDI6XFx0aW50IHRjcF9zZXRfYWxsb3dlZF9jb25nZXN0aW9uX2NvbnRyb2woY2hhciAqYWxsb3dlZCk7XFxuMTQwMzpcXHRpbnQgdGNwX3NldF9jb25nZXN0aW9uX2NvbnRyb2woc3RydWN0IHNvY2sgKnNrLCBjb25zdCBjaGFyICpuYW1lLCBib29sIGxvYWQsXFxuMTQwNDpcXHRcXHRcXHRcXHQgICAgICAgYm9vbCBjYXBfbmV0X2FkbWluKTtcXG4xNDA1OlxcdHUzMiB0Y3Bfc2xvd19zdGFydChzdHJ1Y3QgdGNwX3NvY2sgKnRwLCB1MzIgYWNrZWQpO1xcbjE0MDY6XFx0dm9pZCB0Y3BfY29uZ19hdm9pZF9haShzdHJ1Y3QgdGNwX3NvY2sgKnRwLCB1MzIgdywgdTMyIGFja2VkKTtcXG4xNDA3OlxcdFxcbjE0MDg6XFx0dTMyIHRjcF9yZW5vX3NzdGhyZXNoKHN0cnVjdCBzb2NrICpzayk7XFxuMTQwOTpcXHR1MzIgdGNwX3Jlbm9fdW5kb19jd25kKHN0cnVjdCBzb2NrICpzayk7XFxuMTQxMDpcXHR2b2lkIHRjcF9yZW5vX2NvbmdfYXZvaWQoc3RydWN0IHNvY2sgKnNrLCB1MzIgYWNrLCB1MzIgYWNrZWQpO1xcbjE0MTE6XFx0ZXh0ZXJuIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgdGNwX3Jlbm87XFxuMTQxMjpcXHRcXG4xNDEzOlxcdHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnRjcF9jYV9maW5kKGNvbnN0IGNoYXIgKm5hbWUpO1xcbjE0MTQ6XFx0c3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyAqdGNwX2NhX2ZpbmRfa2V5KHUzMiBrZXkpO1xcbjE0MTU6XFx0dTMyIHRjcF9jYV9nZXRfa2V5X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCAqZWNuX2NhKTtcXG4xNDE2OlxcdCNpZmRlZiBDT05GSUdfSU5FVFxcbjE0MTc6XFx0Y2hhciAqdGNwX2NhX2dldF9uYW1lX2J5X2tleSh1MzIga2V5LCBjaGFyICpidWZmZXIpO1xcbjE0MTg6XFx0I2Vsc2VcXG4xNDE5OlxcdHN0YXRpYyBpbmxpbmUgY2hhciAqdGNwX2NhX2dldF9uYW1lX2J5X2tleSh1MzIga2V5LCBjaGFyICpidWZmZXIpXFxuMTQyMDpcXHR7XFxuMTQyMTpcXHRcXHRyZXR1cm4gTlVMTDtcXG4xNDIyOlxcdH1cXG4xNDIzOlxcdCNlbmRpZlxcbjE0MjQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjE0Ljk4OTQ1NzY2N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDYwOTI1OTAwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgVENQIENvbmdlc3Rpb24gQ29udHJvbCBHZXRzb2Nrb3B0IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRvX3RjcF9nZXRzb2Nrb3B0YCBpbiBgbmV0L2lwdjQvdGNwLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhlIG9yaWdpbmFsIGNvZGUgZGlyZWN0bHkgYWNjZXNzZXMgYGljc2stXHUwMDNlaWNza19jYV9vcHMtXHUwMDNlbmFtZWAgYW5kIG90aGVyIG1lbWJlcnMgd2l0aGluIHRoZSBgVENQX0NPTkdFU1RJT05gIGNhc2UsIGFuZCB0aGUgc2Vjb25kIHBhcnQgdXNlcyBgY2Ffb3BzYCBkaXJlY3RseSwgd2l0aG91dCBhbnkgY29uY3VycmVuY3kgcHJvdGVjdGlvbi4gVGhlIHByb2JsZW0gaXMgdGhhdCBgaWNzay1cdTAwM2VpY3NrX2NhX29wc2AgY291bGQgYmUgY2hhbmdlZCBvciBldmVuIGZyZWVkIGNvbmN1cnJlbnRseSwgc3BlY2lmaWNhbGx5LCB3aGlsZSBgY29weV90b19zb2NrcHRyYCAod2hpY2ggY2FuIHNsZWVwKSBpcyBleGVjdXRpbmcuIFRoaXMgbWVhbnMgd2UncmUgc3VzY2VwdGlibGUgdG8gYSBjcmFzaCBvciB1bmRlZmluZWQgYmVoYXZpb3IuXG5cblRoZSBwYXRjaCBjbGVhcmx5IGFkZHJlc3NlcyB0aGlzIGJ5IGludHJvZHVjaW5nIGByY3VfcmVhZF9sb2NrKClgIGJlZm9yZSBhY2Nlc3NpbmcgYW55IG1lbWJlciBvZiBgaWNzay1cdTAwM2VpY3NrX2NhX29wc2AuIFRoaXMgcHJvdGVjdHMgdGhlIGNyaXRpY2FsIHNlY3Rpb24sIGVuc3VyaW5nIHRoYXQgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdCByZW1haW5zIHZhbGlkIHdoaWxlIGl0J3MgYmVpbmcgcmVhZC4gVGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBhdGNoIGNvcGllcyB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG5hbWUgaW50byBhIGxvY2FsIGJ1ZmZlciwgYGNhX25hbWVgLCBiZWZvcmUgcGFzc2luZyBpdCB0byB1c2VyIHNwYWNlLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSBjb25jdXJyZW50IGRhdGEgYWNjZXNzLiBXZSBhcmUgbWFraW5nIGEgY29weSBpbnRvIGEgbG9jYWwgYnVmZmVyIHdoaWxlIHVuZGVyIHRoZSBwcm90ZWN0aW9uIG9mIHRoZSBsb2NrLlxuXG5Ob3csIGxldCdzIGRyaWxsIGRvd24gYSBiaXQgZGVlcGVyLiBUaGUgYGNhX25hbWVgIGFycmF5IGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gemVybyB1c2luZyBgPSB7fWAuIENydWNpYWxseSwgYG1lbWNweWAgY29waWVzICphbGwqIG9mIGBUQ1BfQ0FfTkFNRV9NQVhgIGJ5dGVzIGludG8gYGNhX25hbWVgLiBUaGUgb3JpZ2luYWwgY29kZSBqdXN0IGNvcGllZCB0aGUgYGxlbmAgYnl0ZXMgZnJvbSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG5hbWUuIEkgd2FzIGNvbmNlcm5lZCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiB0aGUgYGNhX25hbWVgIGJ1ZmZlciBsZWFraW5nIHRvIHVzZXIgc3BhY2UuIEhvd2V2ZXIsIHNpbmNlIHRoZSBhcnJheSBpcyBpbml0aWFsaXplZCB0byB6ZXJvLCBhbmQgaXMgdGhlbiBjb21wbGV0ZWx5IG92ZXJ3cml0dGVuIGJ5IHRoZSBgbWVtY3B5YCwgdGhpcyBpc24ndCBhbiBpc3N1ZS4gIEV2ZW4gaWYgcGFydHMgb2YgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBuYW1lIHdlcmUgdW5pbml0aWFsaXplZCAod2hpY2ggaXMgdW5saWtlbHkgZ2l2ZW4gdGhhdCB0aGV5IGFyZSB0eXBpY2FsbHkgc3RhdGljYWxseSBpbml0aWFsaXplZCksIHRoZXkgd291bGQgYmUgb3ZlcndyaXR0ZW4gYXMgd2VsbC4gIFRoZSBwYXRjaCBmaXhlcyB0aGUgcmFjZSwgKm5vdCogdGhlIHByb2JsZW0gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuXG5cbkxvb2tpbmcgYXQgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBwYXRjaCwgaXQganVzdCBhZGRzIHRoZSBSQ1UgbG9jayBhcm91bmQgdGhlIGNhbGwgdG8gYGNhX29wcy1cdTAwM2VnZXRfaW5mbygpYCwgYWdhaW4gcHJvdGVjdGluZyB0aGUgdXNlIG9mIHRoZSBgY2Ffb3BzYCBmcm9tIGEgcmFjZS4gSXQncyBlc3NlbnRpYWxseSB0aGUgc2FtZSBpc3N1ZSBhbmQgdGhlIHNhbWUgZml4LiAgVGhpcyBpcyBhIGNsZWFuIGZpeCBmb3IgYSBrbm93biBjb25jdXJyZW5jeSBpc3N1ZS5cblxuVGhlIGtleSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSBhbnkgKm5ldyogdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzIHRoYXQgd291bGQgYmUgZGV0ZWN0ZWQgYnkgS01TQU4/IE5vLiBUaGUgbG9jYWwgYnVmZmVyIGBjYV9uYW1lYCBpcyBpbml0aWFsaXplZC4gVGhlIHBhdGNoIGlzIGZpeGluZyBhIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHksIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBvbmUuIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGhlcmUgdG8gY2hlY2sgZm9yIHRoZSBVQUYuIEtNU0FOIGlzIGZvciBjYXRjaGluZyByZWFkcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gU28sIGJhc2VkIG9uIG15IGFuYWx5c2lzLCBJJ20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuIFRoZSBidWcgaXMgdGhlIHJhY2UgY29uZGl0aW9uLCB3aGljaCB0aGUgcGF0Y2ggYWRkcmVzc2VzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODUsIk91dHB1dFRva2VucyI6MjgxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkzMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE4OjQ0OjM1LjU5ODcxOTgyN1oiLCJTZXEiOjIwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgZG9fdGNwX2dldHNvY2tvcHQoKWAgd2hlbiBhY2Nlc3NpbmcgYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cXHUwMDNlaWNza19jYV9vcHMtXFx1MDAzZW5hbWVgIG9yIGNhbGxpbmcgYGNhX29wcy1cXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXFxuXFxuVGhlIGxvY2FsIGJ1ZmZlciBgY2FfbmFtZWAgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkIChgPSB7fWApIGFuZCB0aGVuIGZ1bGx5IHBvcHVsYXRlZCB2aWEgYG1lbWNweSgpYCBmcm9tIHRoZSBgbmFtZWAgZmllbGQgb2YgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdHVyZSAod2hpY2ggYXJlIHR5cGljYWxseSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgZnVsbHkgaW5pdGlhbGl6ZWQgZ2xvYmFsIHN0cnVjdHMpLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZSBidWcgYmVpbmcgYWRkcmVzc2VkIGlzIGEgdXNlLWFmdGVyLWZyZWUvcmFjZSBjb25kaXRpb24sIHdoaWNoIGlzIHdlbGwgd2l0aGluIHRoZSBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzIG9mIEtBU0FOLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2ggdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gYW5kIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiBgZG9fdGNwX2dldHNvY2tvcHQoKWAgd2hlbiBhY2Nlc3NpbmcgYGljc2stXFx1MDAzZWljc2tfY2Ffb3BzYC4gQmVjYXVzZSBgY29weV90b19zb2NrcHRyKClgIGNhbiBzbGVlcCwgcmVhZGluZyBgaWNzay1cXHUwMDNlaWNza19jYV9vcHMtXFx1MDAzZW5hbWVgIG9yIGNhbGxpbmcgYGNhX29wcy1cXHUwMDNlZ2V0X2luZm8oKWAgZGlyZWN0bHkgd2l0aG91dCBSQ1UgcHJvdGVjdGlvbiBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgaWYgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgaXMgY29uY3VycmVudGx5IGNoYW5nZWQgb3IgdW5sb2FkZWQuIFRoZSBmaXggd3JhcHMgdGhlc2UgYWNjZXNzZXMgaW4gYHJjdV9yZWFkX2xvY2soKWAvYHJjdV9yZWFkX3VubG9jaygpYCBhbmQgY29waWVzIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbmFtZSBpbnRvIGEgbG9jYWwgc3RhY2sgYnVmZmVyIChgY2FfbmFtZWApIGJlZm9yZSBjb3B5aW5nIGl0IHRvIHVzZXIgc3BhY2UuXFxuXFxuVGhlIGxvY2FsIGJ1ZmZlciBgY2FfbmFtZWAgaXMgZXhwbGljaXRseSB6ZXJvLWluaXRpYWxpemVkIChgPSB7fWApIGFuZCB0aGVuIGZ1bGx5IHBvcHVsYXRlZCB2aWEgYG1lbWNweSgpYCBmcm9tIHRoZSBgbmFtZWAgZmllbGQgb2YgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBvcGVyYXRpb25zIHN0cnVjdHVyZSAod2hpY2ggYXJlIHR5cGljYWxseSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgZnVsbHkgaW5pdGlhbGl6ZWQgZ2xvYmFsIHN0cnVjdHMpLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UuIFRoZSBidWcgYmVpbmcgYWRkcmVzc2VkIGlzIGEgdXNlLWFmdGVyLWZyZWUvcmFjZSBjb25kaXRpb24sIHdoaWNoIGlzIHdlbGwgd2l0aGluIHRoZSBkZXRlY3Rpb24gY2FwYWJpbGl0aWVzIG9mIEtBU0FOLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2ggdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdg9gz[1] Phase: Succeeded StartedAt: 2026-08-21 18:44:47 +0000 UTC FinishedAt: 2026-08-21 18:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-21 18:44:47 +0000 UTC FinishedAt: 2026-08-21 18:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2] Phase: Succeeded StartedAt: 2026-08-21 18:44:47 +0000 UTC FinishedAt: 2026-08-21 22:27:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-21 18:44:47 +0000 UTC FinishedAt: 2026-08-21 22:27:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-21 18:44:47 +0000 UTC FinishedAt: 2026-08-21 18:44:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-21 18:44:47 +0000 UTC FinishedAt: 2026-08-21 18:44:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowdg9gz/series-workflowdg9gz-convert-artifact-1495987173/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-21 18:44:57 +0000 UTC FinishedAt: 2026-08-21 19:02:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-21 18:44:57 +0000 UTC FinishedAt: 2026-08-21 19:02:46 +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:*6641aa23-1aa5-4143-b19f-16b8bc052a8b,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-workflowdg9gz/series-workflowdg9gz-convert-artifact-1495987173/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": "68f290e7-7ba1-4295-b62c-1be0ebcd73c5", "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-workflowdg9gz/series-workflowdg9gz-build-action-2276323339/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-21 18:44:57 +0000 UTC FinishedAt: 2026-08-21 19:02:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6641aa23-1aa5-4143-b19f-16b8bc052a8b,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-workflowdg9gz/series-workflowdg9gz-convert-artifact-1495987173/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": "68f290e7-7ba1-4295-b62c-1be0ebcd73c5", "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-workflowdg9gz/series-workflowdg9gz-build-action-2276323339/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-21 19:02:46 +0000 UTC FinishedAt: 2026-08-21 19:02:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-21 19:02:46 +0000 UTC FinishedAt: 2026-08-21 19:02:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-21 19:02:46 +0000 UTC FinishedAt: 2026-08-21 19:02:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-21 19:02:46 +0000 UTC FinishedAt: 2026-08-21 19:02:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowdg9gz/series-workflowdg9gz-convert-artifact-2962738112/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-21 19:02:56 +0000 UTC FinishedAt: 2026-08-21 19:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-21 19:02:56 +0000 UTC FinishedAt: 2026-08-21 19:05:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*68f290e7-7ba1-4295-b62c-1be0ebcd73c5,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-workflowdg9gz/series-workflowdg9gz-build-action-2276323339/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-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-21 19:05:21 +0000 UTC FinishedAt: 2026-08-21 19:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-21 19:05:21 +0000 UTC FinishedAt: 2026-08-21 19:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-21 19:05:21 +0000 UTC FinishedAt: 2026-08-21 19:22:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-21 19:05:21 +0000 UTC FinishedAt: 2026-08-21 19:22:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6641aa23-1aa5-4143-b19f-16b8bc052a8b,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-workflowdg9gz/series-workflowdg9gz-convert-artifact-2962738112/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": "4520cce9-9ec1-4f93-9ddf-bc93e0565237", "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-workflowdg9gz/series-workflowdg9gz-build-action-4281547132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-21 19:05:21 +0000 UTC FinishedAt: 2026-08-21 19:21:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6641aa23-1aa5-4143-b19f-16b8bc052a8b,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-workflowdg9gz/series-workflowdg9gz-convert-artifact-2962738112/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": "4520cce9-9ec1-4f93-9ddf-bc93e0565237", "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-workflowdg9gz/series-workflowdg9gz-build-action-4281547132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-21 19:22:09 +0000 UTC FinishedAt: 2026-08-21 19:22:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-21 19:22:09 +0000 UTC FinishedAt: 2026-08-21 19:22:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-21 19:22:09 +0000 UTC FinishedAt: 2026-08-21 19:24:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-21 19:22:09 +0000 UTC FinishedAt: 2026-08-21 19:24:00 +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:*4520cce9-9ec1-4f93-9ddf-bc93e0565237,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-workflowdg9gz/series-workflowdg9gz-build-action-4281547132/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-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-21 19:24:10 +0000 UTC FinishedAt: 2026-08-21 22:27:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-21 19:24:10 +0000 UTC FinishedAt: 2026-08-21 22:27:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"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:*68f290e7-7ba1-4295-b62c-1be0ebcd73c5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4520cce9-9ec1-4f93-9ddf-bc93e0565237,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-workflowdg9gz/series-workflowdg9gz-build-action-2276323339/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-workflowdg9gz/series-workflowdg9gz-build-action-4281547132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-21 19:24:10 +0000 UTC FinishedAt: 2026-08-21 19:24:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-21 19:24:10 +0000 UTC FinishedAt: 2026-08-21 19:24:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"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-workflowdg9gz/series-workflowdg9gz-convert-artifact-2245348377/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-21 19:24:10 +0000 UTC FinishedAt: 2026-08-21 19:24:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-21 19:24:10 +0000 UTC FinishedAt: 2026-08-21 19:24:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-21 19:24:10 +0000 UTC FinishedAt: 2026-08-21 19:24:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-21 19:24:20 +0000 UTC FinishedAt: 2026-08-21 22:27:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg9gz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["do_tcp_getsockopt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"746fc0787f616da418ffc04a110296fe95d53491","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"7e3dcdfd-5d59-4778-94bb-b4289aaa5ded","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-21 19:24:20 +0000 UTC FinishedAt: 2026-08-21 22:27:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*68f290e7-7ba1-4295-b62c-1be0ebcd73c5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4520cce9-9ec1-4f93-9ddf-bc93e0565237,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-workflowdg9gz/series-workflowdg9gz-build-action-2276323339/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-workflowdg9gz/series-workflowdg9gz-build-action-4281547132/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-workflowdg9gz/series-workflowdg9gz-convert-artifact-2245348377/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,}