Name: series-workflowmxmdv Phase: Succeeded StartedAt: 2026-07-01 01:26:27 +0000 UTC FinishedAt: 2026-07-01 06:20:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[0] Phase: Succeeded StartedAt: 2026-07-01 01:26:27 +0000 UTC FinishedAt: 2026-07-01 01:58:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 01:26:27 +0000 UTC FinishedAt: 2026-07-01 01:58:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CT", "NF_NAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CT", "NF_NAT" ], "series_id": "aa7ee45c-e91b-4f13-aeb7-595536eda1c6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nft_ct_nat_follow_master", "nft_ct_expect_obj_eval" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DVCYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXImIzM0OywKICAgICYjMzQ7bmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhNGM2YTM2NjI5ZjdhYTM4YmMzNDQ0NzBkMDNmNTAzYWRhOGYxM2UxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwMTo1NzoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuaW5kZXggMDNhODhjNzdlMGYwMjguLmI5ZGM0N2I2Y2E5MzMyIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuQEAgLTEyOTcsNiAmIzQzOzEyOTcsMTcgQEAgc3RhdGljIGludCBuZnRfY3RfZXhwZWN0X29ial9kdW1wKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4mIzQzO3N0YXRpYyB2b2lkIG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICp0aGlzKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiAqZXhwZm47XG4mIzQzO1xuJiM0MztcdGV4cGZuID0gbmZfY3RfaGVscGVyX2V4cGVjdGZuX2ZpbmRfYnlfbmFtZShcJiMzNDtuYXQtZm9sbG93LW1hc3RlclwmIzM0Oyk7XG4mIzQzO1x0aWYgKGV4cGZuKVxuJiM0MztcdFx0ZXhwZm4tXHUwMDNlZXhwZWN0Zm4oY3QsIHRoaXMpO1xuJiM0Mzt9XG4mIzQzOyNlbmRpZlxuJiM0MztcbiBzdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4gXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcbkBAIC0xMzQyLDYgJiM0MzsxMzUzLDEzIEBAIHN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbiBcdFx0ICAgICAgICAgIHByaXYtXHUwMDNlbDRwcm90bywgTlVMTCwgXHUwMDI2cHJpdi1cdTAwM2VkcG9ydCk7XG4gXHRleHAtXHUwMDNldGltZW91dCAmIzQzOz0gcHJpdi1cdTAwM2V0aW1lb3V0O1xuIFxuJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuJiM0MztcdGlmIChjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSykge1xuJiM0MztcdFx0ZXhwLVx1MDAzZXNhdmVkX3Byb3RvLnRjcC5wb3J0ID0gcHJpdi1cdTAwM2VkcG9ydDtcbiYjNDM7XHRcdGV4cC1cdTAwM2VkaXIgPSAhZGlyO1xuJiM0MztcdFx0ZXhwLVx1MDAzZWV4cGVjdGZuID0gbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyO1xuJiM0MztcdH1cbiYjNDM7I2VuZGlmXG4gXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKVxuIFx0XHRyZWdzLVx1MDAzZXZlcmRpY3QuY29kZSA9IE5GX0RST1A7XG4gXG5AQCAtMTM3NSw2ICYjNDM7MTM5MywxMSBAQCBzdGF0aWMgc3RydWN0IG5mdF9vYmplY3RfdHlwZSBuZnRfY3RfZXhwZWN0X29ial90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XG4gXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiB9O1xuIFxuJiM0MztzdGF0aWMgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiBuZnRfY3RfbmF0IF9fcmVhZF9tb3N0bHkgPSB7XG4mIzQzO1x0Lm5hbWUgPSBcJiMzNDtuZnRfY3QtZm9sbG93LW1hc3RlclwmIzM0OyxcbiYjNDM7XHQuZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXIsXG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxuIHtcbiBcdGludCBlcnI7XG5AQCAtMTQwMCw2ICYjNDM7MTQyMyw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxuIFx0ZXJyID0gbmZ0X3JlZ2lzdGVyX29iaihcdTAwMjZuZnRfY3RfdGltZW91dF9vYmpfdHlwZSk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRnb3RvIGVycjQ7XG4mIzQzOyNlbmRpZlxuJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuJiM0MztcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcdTAwMjZuZnRfY3RfbmF0KTtcbiAjZW5kaWZcbiBcdHJldHVybiAwO1xuIFxuQEAgLTE0MjUsNiAmIzQzOzE0NTEsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKVxuIFx0bmZ0X3VucmVnaXN0ZXJfb2JqKFx1MDAyNm5mdF9jdF9oZWxwZXJfb2JqX3R5cGUpO1xuIFx0bmZ0X3VucmVnaXN0ZXJfZXhwcihcdTAwMjZuZnRfbm90cmFja190eXBlKTtcbiBcdG5mdF91bnJlZ2lzdGVyX2V4cHIoXHUwMDI2bmZ0X2N0X3R5cGUpO1xuJiM0MztcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcbiYjNDM7XHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fdW5yZWdpc3RlcihcdTAwMjZuZnRfY3RfbmF0KTtcbiYjNDM7XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7XHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZGVzdHJveShcdTAwMjZuZnRfY3RfbmF0KTtcbiYjNDM7XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7I2VuZGlmXG4gfVxuIFxuIG1vZHVsZV9pbml0KG5mdF9jdF9tb2R1bGVfaW5pdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZUX0NUJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mdF9jdF9uYXRfZm9sbG93X21hc3RlciYjMzQ7LAogICAgJiMzNDtuZnRfY3RfZXhwZWN0X29ial9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgYW5kIG1vZGlmaWVzIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCB0byB1c2UgaXQgd2hlbiBgQ09ORklHX05GX05BVGAgaXMgZW5hYmxlZCBhbmQgdGhlIGNvbm5lY3Rpb24gaGFzIE5BVCBhcHBsaWVkLiBUaGlzIGFkZHMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBmb3IgTkFUIGV4cGVjdGF0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBuZnRhYmxlcyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTRjNmEzNjYyOWY3YWEzOGJjMzQ0NDcwZDAzZjUwM2FkYThmMTNlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMDE6NTc6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuYwppbmRleCAwM2E4OGM3N2UwZjAyOC4uYjlkYzQ3YjZjYTkzMzIgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZnRfY3QuYwpAQCAtMTI5Nyw2ICYjNDM7MTI5NywxNyBAQCBzdGF0aWMgaW50IG5mdF9jdF9leHBlY3Rfb2JqX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gMDsKIH0KIAomIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpCiYjNDM7c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuICpleHBmbjsKJiM0MzsKJiM0MzsJZXhwZm4gPSBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZmluZF9ieV9uYW1lKCYjMzQ7bmF0LWZvbGxvdy1tYXN0ZXImIzM0Oyk7CiYjNDM7CWlmIChleHBmbikKJiM0MzsJCWV4cGZuLSZndDtleHBlY3RmbihjdCwgdGhpcyk7CiYjNDM7fQomIzQzOyNlbmRpZgomIzQzOwogc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLAogCQkJCSAgIHN0cnVjdCBuZnRfcmVncyAqcmVncywKIAkJCQkgICBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCkKQEAgLTEzNDIsNiAmIzQzOzEzNTMsMTMgQEAgc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLAogCQkgICAgICAgICAgcHJpdi0mZ3Q7bDRwcm90bywgTlVMTCwgJmFtcDtwcml2LSZndDtkcG9ydCk7CiAJZXhwLSZndDt0aW1lb3V0ICYjNDM7PSBwcml2LSZndDt0aW1lb3V0OwogCiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVCkKJiM0MzsJaWYgKGN0LSZndDtzdGF0dXMgJmFtcDsgSVBTX05BVF9NQVNLKSB7CiYjNDM7CQlleHAtJmd0O3NhdmVkX3Byb3RvLnRjcC5wb3J0ID0gcHJpdi0mZ3Q7ZHBvcnQ7CiYjNDM7CQlleHAtJmd0O2RpciA9ICFkaXI7CiYjNDM7CQlleHAtJmd0O2V4cGVjdGZuID0gbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyOwomIzQzOwl9CiYjNDM7I2VuZGlmCiAJaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkKIAkJcmVncy0mZ3Q7dmVyZGljdC5jb2RlID0gTkZfRFJPUDsKIApAQCAtMTM3NSw2ICYjNDM7MTM5MywxMSBAQCBzdGF0aWMgc3RydWN0IG5mdF9vYmplY3RfdHlwZSBuZnRfY3RfZXhwZWN0X29ial90eXBlIF9fcmVhZF9tb3N0bHkgPSB7CiAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogfTsKIAomIzQzO3N0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIG5mdF9jdF9uYXQgX19yZWFkX21vc3RseSA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O25mdF9jdC1mb2xsb3ctbWFzdGVyJiMzNDssCiYjNDM7CS5leHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3RlciwKJiM0Mzt9OwomIzQzOwogc3RhdGljIGludCBfX2luaXQgbmZ0X2N0X21vZHVsZV9pbml0KHZvaWQpCiB7CiAJaW50IGVycjsKQEAgLTE0MDAsNiAmIzQzOzE0MjMsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBuZnRfY3RfbW9kdWxlX2luaXQodm9pZCkKIAllcnIgPSBuZnRfcmVnaXN0ZXJfb2JqKCZhbXA7bmZ0X2N0X3RpbWVvdXRfb2JqX3R5cGUpOwogCWlmIChlcnIgJmx0OyAwKQogCQlnb3RvIGVycjQ7CiYjNDM7I2VuZGlmCiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVCkKJiM0MzsJbmZfY3RfaGVscGVyX2V4cGVjdGZuX3JlZ2lzdGVyKCZhbXA7bmZ0X2N0X25hdCk7CiAjZW5kaWYKIAlyZXR1cm4gMDsKIApAQCAtMTQyNSw2ICYjNDM7MTQ1MSwxMyBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbmZ0X2N0X21vZHVsZV9leGl0KHZvaWQpCiAJbmZ0X3VucmVnaXN0ZXJfb2JqKCZhbXA7bmZ0X2N0X2hlbHBlcl9vYmpfdHlwZSk7CiAJbmZ0X3VucmVnaXN0ZXJfZXhwcigmYW1wO25mdF9ub3RyYWNrX3R5cGUpOwogCW5mdF91bnJlZ2lzdGVyX2V4cHIoJmFtcDtuZnRfY3RfdHlwZSk7CiYjNDM7CiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVCkKJiM0MzsJbmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoJmFtcDtuZnRfY3RfbmF0KTsKJiM0MzsJc3luY2hyb25pemVfcmN1KCk7CiYjNDM7CW5mX2N0X2hlbHBlcl9leHBlY3Rmbl9kZXN0cm95KCZhbXA7bmZ0X2N0X25hdCk7CiYjNDM7CXN5bmNocm9uaXplX3JjdSgpOwomIzQzOyNlbmRpZgogfQogCiBtb2R1bGVfaW5pdChuZnRfY3RfbW9kdWxlX2luaXQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgbGFuZGVkIGluIGBuZXQvbmV0ZmlsdGVyL25mdF9jdC5jYC4gSXQgc2VlbXMgdG8gaW50cm9kdWNlIGEgbmV3IGZ1bmN0aW9uLCBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCwgYW5kIHJlZ2lzdGVycyBpdCBhcyBhbiBgZXhwZWN0Zm5gLiAgVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYXMgYGV4cGVjdGZuYCBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGhhbmRsaW5nIHJlbGF0ZWQgY29ubmVjdGlvbnMsIHdoaWNoIGlzIGEgY29yZSBwYXJ0IG9mIE5BVCBmdW5jdGlvbmFsaXR5LgoKVGhlIHBhdGNoIGFsc28gcmV2aXNlcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAsIGFuZCB0aGUga2V5IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIHVzYWdlIG9mIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLiBUaGUgdHJpZ2dlciBpcyB3aGVuIGBDT05GSUdfTkZfTkFUYCBpcyBlbmFibGVkICphbmQqIHRoZSBjb25uZWN0aW9uJiMzOTtzIHN0YXR1cyAoYGN0LSZndDtzdGF0dXNgKSBoYXMgdGhlIGBJUFNfTkFUX01BU0tgIGJpdCBzZXQuICBUaGlzIHNvdW5kcyBsaWtlIGl0JiMzOTtzIHNwZWNpZmljYWxseSBhYm91dCBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBOQVQsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBmdW5jdGlvbiBuYW1lLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGNvZGUgaXMgZGVhbGluZyB3aXRoIHRoZSBjYXNlcyB3aGVyZSBOQVQgaXMgaW52b2x2ZWQgYW5kIG5lZWRzIHRvIGtlZXAgdHJhY2sgb2YgcmVsYXRlZCBjb25uZWN0aW9ucy4KCk15IHByaW1hcnkgdGFzayBpcyB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnRleHQuIEkgaGF2ZSB0byBjb25maXJtIHRoYXQgYENPTkZJR19ORl9OQVRgIGlzIGluZGVlZCByZXF1aXJlZCwgYW5kIHRoYXQgYG5mdF9jdC5jYCBpcyBjb21waWxlZCB1bmRlciBgQ09ORklHX05GVF9DVGAuIFNvLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGFuZCBNYWtlZmlsZXMgaW4gYG5ldC9uZXRmaWx0ZXJgIGRpcmVjdG9yeSB0byBjb25maXJtIHRoZXNlIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgYGdyZXBgIHRvIHF1aWNrbHkgZmluZCBob3cgdGhlc2UgYXJlIGNvbmZpZ3VyZWQuIEdpdmVuIHRoYXQgdGhpcyBkZWFscyB3aXRoIGNvbm5lY3Rpb24gdHJhY2tpbmcsIE5BVCwgYW5kIHJlbGF0ZWQgY29ubmVjdGlvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIGJlaGF2aW9yLCBlc3BlY2lhbGx5IGluIGEgTkFUIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GVF9DVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz00ODU9Y29uZmlnIE5GVF9OVU1HRU5cbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDkwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ5MTpjb25maWcgTkZUX0NUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDkyLVx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwMD1lbmRpZlxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDEtXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEwMjppZmRlZiBDT05GSUdfTkZUX0NUXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwMy1pZmRlZiBDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkVcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTExMT1vYmotJChDT05GSUdfTkZUX05VTUdFTilcdCYjNDM7PSBuZnRfbnVtZ2VuLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTEyOm9iai0kKENPTkZJR19ORlRfQ1QpXHRcdCYjNDM7PSBuZnRfY3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMTMtb2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXHQmIzQzOz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5jPTIwMz1zdGF0aWMgdm9pZCBleHByX2NhbGxfb3BzX2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2NvcmUuYy0yMjItXHRYKGUsIG5mdF9sb29rdXBfZXZhbCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmM6MjIzOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORlRfQ1QpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmMtMjI0LVx0WChlLCBuZnRfY3RfZ2V0X2Zhc3RfZXZhbCk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYz00MD1zdGF0aWMgdTY0IG5mdF9jdF9nZXRfZXZhbF9jb3VudGVyKGNvbnN0IHN0cnVjdCBuZl9jb25uX2NvdW50ZXIgKmMsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NC1cdGlmIChkIFx1MDAzYyBJUF9DVF9ESVJfTUFYKVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NTpcdFx0cmV0dXJuIGsgPT0gTkZUX0NUX0JZVEVTID8gYXRvbWljNjRfcmVhZChcdTAwMjZjW2RdLmJ5dGVzKSA6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ2LVx0XHRcdFx0XHQgICBhdG9taWM2NF9yZWFkKFx1MDAyNmNbZF0ucGFja2V0cyk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYz01Mj1zdGF0aWMgdm9pZCBuZnRfY3RfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNjctXHRzd2l0Y2ggKHByaXYtXHUwMDNla2V5KSB7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4Olx0Y2FzZSBORlRfQ1RfU1RBVEU6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTY5LVx0XHRpZiAoY3QpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy04NC1cdHN3aXRjaCAocHJpdi1cdTAwM2VrZXkpIHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6ODU6XHRjYXNlIE5GVF9DVF9ESVJFQ1RJT046XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTg2LVx0XHRuZnRfcmVnX3N0b3JlOChkZXN0LCBDVElORk8yRElSKGN0aW5mbykpO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy04Ny1cdFx0cmV0dXJuO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo4ODpcdGNhc2UgTkZUX0NUX1NUQVRVUzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtODktXHRcdCpkZXN0ID0gY3QtXHUwMDNlc3RhdHVzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtOTEtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo5MjpcdGNhc2UgTkZUX0NUX01BUks6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTkzLVx0XHQqZGVzdCA9IFJFQURfT05DRShjdC1cdTAwM2VtYXJrKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTk2LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUktcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6OTc6XHRjYXNlIE5GVF9DVF9TRUNNQVJLOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy05OC1cdFx0KmRlc3QgPSBjdC1cdTAwM2VzZWNtYXJrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTAwLSNlbmRpZlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMDE6XHRjYXNlIE5GVF9DVF9FWFBJUkFUSU9OOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMDItXHRcdCpkZXN0ID0gamlmZmllc190b19tc2VjcyhuZl9jdF9leHBpcmVzKGN0KSk7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEwMy1cdFx0cmV0dXJuO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMDQ6XHRjYXNlIE5GVF9DVF9IRUxQRVI6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEwNS1cdFx0aWYgKGN0LVx1MDAzZW1hc3RlciA9PSBOVUxMKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTE1LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMTY6XHRjYXNlIE5GVF9DVF9MQUJFTFM6IHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTE3LVx0XHRzdHJ1Y3QgbmZfY29ubl9sYWJlbHMgKmxhYmVscyA9IG5mX2N0X2xhYmVsc19maW5kKGN0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEyNS0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTI2Olx0Y2FzZSBORlRfQ1RfQllURVM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjEyNzpcdGNhc2UgTkZUX0NUX1BLVFM6IHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTI4LVx0XHRjb25zdCBzdHJ1Y3QgbmZfY29ubl9hY2N0ICphY2N0ID0gbmZfY29ubl9hY2N0X2ZpbmQoY3QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM2LVx0fVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzc6XHRjYXNlIE5GVF9DVF9BVkdQS1Q6IHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4LVx0XHRjb25zdCBzdHJ1Y3QgbmZfY29ubl9hY2N0ICphY2N0ID0gbmZfY29ubl9hY2N0X2ZpbmQoY3QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTQyLVx0XHRcdHBjbnQgPSBuZnRfY3RfZ2V0X2V2YWxfY291bnRlcihhY2N0LVx1MDAzZWNvdW50ZXIsXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE0MzpcdFx0XHRcdFx0XHQgICAgICAgTkZUX0NUX1BLVFMsIHByaXYtXHUwMDNlZGlyKTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTQ0LVx0XHRcdGJjbnQgPSBuZnRfY3RfZ2V0X2V2YWxfY291bnRlcihhY2N0LVx1MDAzZWNvdW50ZXIsXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE0NTpcdFx0XHRcdFx0XHQgICAgICAgTkZUX0NUX0JZVEVTLCBwcml2LVx1MDAzZWRpcik7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE0Ni1cdFx0XHRpZiAocGNudCAhPSAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTUyLVx0fVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNTM6XHRjYXNlIE5GVF9DVF9MM1BST1RPQ09MOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNTQtXHRcdG5mdF9yZWdfc3RvcmU4KGRlc3QsIG5mX2N0X2wzbnVtKGN0KSk7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE1NS1cdFx0cmV0dXJuO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNTY6XHRjYXNlIE5GVF9DVF9QUk9UT0NPTDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTU3LVx0XHRuZnRfcmVnX3N0b3JlOChkZXN0LCBuZl9jdF9wcm90b251bShjdCkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTU5LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE2MDpcdGNhc2UgTkZUX0NUX1pPTkU6IHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTYxLVx0XHRjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX3pvbmUgKnpvbmUgPSBuZl9jdF96b25lKGN0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE3Mi0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTczOlx0Y2FzZSBORlRfQ1RfSUQ6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE3NC1cdFx0KmRlc3QgPSBuZl9jdF9nZXRfaWQoY3QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTgxLVx0c3dpdGNoIChwcml2LVx1MDAzZWtleSkge1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxODI6XHRjYXNlIE5GVF9DVF9TUkM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE4My1cdFx0bWVtY3B5KGRlc3QsIHR1cGxlLVx1MDAzZXNyYy51My5hbGwsIHByaXYtXHUwMDNlbGVuKTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTg0LVx0XHRyZXR1cm47XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE4NTpcdGNhc2UgTkZUX0NUX0RTVDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTg2LVx0XHRtZW1jcHkoZGVzdCwgdHVwbGUtXHUwMDNlZHN0LnUzLmFsbCwgcHJpdi1cdTAwM2VsZW4pO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODctXHRcdHJldHVybjtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTg4Olx0Y2FzZSBORlRfQ1RfUFJPVE9fU1JDOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODktXHRcdG5mdF9yZWdfc3RvcmUxNihkZXN0LCAoX19mb3JjZSB1MTYpdHVwbGUtXHUwMDNlc3JjLnUuYWxsKTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTkwLVx0XHRyZXR1cm47XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE5MTpcdGNhc2UgTkZUX0NUX1BST1RPX0RTVDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTkyLVx0XHRuZnRfcmVnX3N0b3JlMTYoZGVzdCwgKF9fZm9yY2UgdTE2KXR1cGxlLVx1MDAzZWRzdC51LmFsbCk7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE5My1cdFx0cmV0dXJuO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxOTQ6XHRjYXNlIE5GVF9DVF9TUkNfSVA6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE5NS1cdFx0aWYgKG5mX2N0X2wzbnVtKGN0KSAhPSBORlBST1RPX0lQVjQpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xOTgtXHRcdHJldHVybjtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTk5Olx0Y2FzZSBORlRfQ1RfRFNUX0lQOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0yMDAtXHRcdGlmIChuZl9jdF9sM251bShjdCkgIT0gTkZQUk9UT19JUFY0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjAzLVx0XHRyZXR1cm47XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjIwNDpcdGNhc2UgTkZUX0NUX1NSQ19JUDY6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTIwNS1cdFx0aWYgKG5mX2N0X2wzbnVtKGN0KSAhPSBORlBST1RPX0lQVjYpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0yMDgtXHRcdHJldHVybjtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MjA5Olx0Y2FzZSBORlRfQ1RfRFNUX0lQNjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjEwLVx0XHRpZiAobmZfY3RfbDNudW0oY3QpICE9IE5GUFJPVE9fSVBWNilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTI3ND1zdGF0aWMgdm9pZCBuZnRfY3Rfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjkxLSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX01BUktcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MjkyOlx0Y2FzZSBORlRfQ1RfTUFSSzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjkzLVx0XHRpZiAoUkVBRF9PTkNFKGN0LVx1MDAzZW1hcmspICE9IHZhbHVlKSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0yOTktI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSS1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzozMDA6XHRjYXNlIE5GVF9DVF9TRUNNQVJLOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMDEtXHRcdGlmIChjdC1cdTAwM2VzZWNtYXJrICE9IHZhbHVlKSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMDctI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMwODpcdGNhc2UgTkZUX0NUX0xBQkVMUzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMzA5LVx0XHRuZl9jb25ubGFiZWxzX3JlcGxhY2UoY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMTUtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMxNjpcdGNhc2UgTkZUX0NUX0VWRU5UTUFTSzoge1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMTctXHRcdHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9MzgyPXN0YXRpYyB2b2lkIF9fbmZ0X2N0X2dldF9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfY3QgKnByaXYpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zODQtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjM4NTpcdGlmIChwcml2LVx1MDAzZWtleSA9PSBORlRfQ1RfTEFCRUxTKVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zODYtXHRcdG5mX2Nvbm5sYWJlbHNfcHV0KGN0eC1cdTAwM2VuZXQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9MzkwPXN0YXRpYyBpbnQgbmZ0X2N0X2dldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MDAtXHRzd2l0Y2ggKHByaXYtXHUwMDNla2V5KSB7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQwMTpcdGNhc2UgTkZUX0NUX0RJUkVDVElPTjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDAyLVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dICE9IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MDUtXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MDY6XHRjYXNlIE5GVF9DVF9TVEFURTpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDA3Olx0Y2FzZSBORlRfQ1RfU1RBVFVTOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MDgtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MDk6XHRjYXNlIE5GVF9DVF9NQVJLOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MTAtI2VuZGlmXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQxMS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQxMjpcdGNhc2UgTkZUX0NUX1NFQ01BUks6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQxMy0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDE0Olx0Y2FzZSBORlRfQ1RfRVhQSVJBVElPTjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDE1LVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dICE9IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MTktI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQyMDpcdGNhc2UgTkZUX0NUX0xBQkVMUzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDIxLVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dICE9IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MjktI2VuZGlmXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQzMDpcdGNhc2UgTkZUX0NUX0hFTFBFUjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDMxLVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dICE9IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MzUtXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQzNjpcdGNhc2UgTkZUX0NUX0wzUFJPVE9DT0w6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQzNzpcdGNhc2UgTkZUX0NUX1BST1RPQ09MOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MzgtXHRcdC8qIEZvciBjb21wYXRpYmlsaXR5LCBkbyBub3QgcmVwb3J0IGVycm9yIGlmIE5GVEFfQ1RfRElSRUNUSU9OXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NDItXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NDM6XHRjYXNlIE5GVF9DVF9TUkM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ0NDpcdGNhc2UgTkZUX0NUX0RTVDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDQ1LVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dID09IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NjEtXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NjI6XHRjYXNlIE5GVF9DVF9TUkNfSVA6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ2MzpcdGNhc2UgTkZUX0NUX0RTVF9JUDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDY0LVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dID09IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NjgtXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0Njk6XHRjYXNlIE5GVF9DVF9TUkNfSVA2OlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NzA6XHRjYXNlIE5GVF9DVF9EU1RfSVA2OlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NzEtXHRcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gPT0gTlVMTClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ3NS1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ3NjpcdGNhc2UgTkZUX0NUX1BST1RPX1NSQzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDc3Olx0Y2FzZSBORlRfQ1RfUFJPVE9fRFNUOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NzgtXHRcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gPT0gTlVMTClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ4MS1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ4MjpcdGNhc2UgTkZUX0NUX0JZVEVTOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0ODM6XHRjYXNlIE5GVF9DVF9QS1RTOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0ODQ6XHRjYXNlIE5GVF9DVF9BVkdQS1Q6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ4NS1cdFx0bGVuID0gc2l6ZW9mKHU2NCk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00ODctI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDg4Olx0Y2FzZSBORlRfQ1RfWk9ORTpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDg5LVx0XHRsZW4gPSBzaXplb2YodTE2KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ5MS0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDkyOlx0Y2FzZSBORlRfQ1RfSUQ6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ5My1cdFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTUyMy1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTI0Olx0aWYgKHByaXYtXHUwMDNla2V5ID09IE5GVF9DVF9CWVRFUyB8fFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1MjU6XHQgICAgcHJpdi1cdTAwM2VrZXkgPT0gTkZUX0NUX1BLVFMgIHx8XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjUyNjpcdCAgICBwcml2LVx1MDAzZWtleSA9PSBORlRfQ1RfQVZHUEtUKVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01MjctXHRcdG5mX2N0X3NldF9hY2N0KGN0eC1cdTAwM2VuZXQsIHRydWUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NTM1PXN0YXRpYyB2b2lkIF9fbmZ0X2N0X3NldF9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfY3QgKnByaXYpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01MzgtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjUzOTpcdGNhc2UgTkZUX0NUX0xBQkVMUzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTQwLVx0XHRuZl9jb25ubGFiZWxzX3B1dChjdHgtXHUwMDNlbmV0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU0My0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19aT05FU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1NDQ6XHRjYXNlIE5GVF9DVF9aT05FOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01NDUtXHRcdG5mX3F1ZXVlX25mX2hvb2tfZHJvcChjdHgtXHUwMDNlbmV0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTU1Nz1zdGF0aWMgaW50IG5mdF9jdF9zZXRfaW5pdChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTY4LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX01BUktcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTY5Olx0Y2FzZSBORlRfQ1RfTUFSSzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTcwLVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTc1LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1NzY6XHRjYXNlIE5GVF9DVF9MQUJFTFM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU3Ny1cdFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU4NS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19aT05FU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1ODY6XHRjYXNlIE5GVF9DVF9aT05FOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01ODctXHRcdG11dGV4X2xvY2soXHUwMDI2bmZ0X2N0X3BjcHVfbXV0ZXgpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTk3LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1OTg6XHRjYXNlIE5GVF9DVF9FVkVOVE1BU0s6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU5OS1cdFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTYwNC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjYwNTpcdGNhc2UgTkZUX0NUX1NFQ01BUks6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTYwNi1cdFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTY2MT1zdGF0aWMgaW50IG5mdF9jdF9nZXRfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNjcxLVx0c3dpdGNoIChwcml2LVx1MDAzZWtleSkge1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2NzI6XHRjYXNlIE5GVF9DVF9TUkM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3MzpcdGNhc2UgTkZUX0NUX0RTVDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Njc0Olx0Y2FzZSBORlRfQ1RfU1JDX0lQOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2NzU6XHRjYXNlIE5GVF9DVF9EU1RfSVA6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3NjpcdGNhc2UgTkZUX0NUX1NSQ19JUDY6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3NzpcdGNhc2UgTkZUX0NUX0RTVF9JUDY6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3ODpcdGNhc2UgTkZUX0NUX1BST1RPX1NSQzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Njc5Olx0Y2FzZSBORlRfQ1RfUFJPVE9fRFNUOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy02ODAtXHRcdGlmIChubGFfcHV0X3U4KHNrYiwgTkZUQV9DVF9ESVJFQ1RJT04sIHByaXYtXHUwMDNlZGlyKSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTY4Mi1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4MzpcdGNhc2UgTkZUX0NUX0JZVEVTOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2ODQ6XHRjYXNlIE5GVF9DVF9QS1RTOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2ODU6XHRjYXNlIE5GVF9DVF9BVkdQS1Q6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4NjpcdGNhc2UgTkZUX0NUX1pPTkU6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTY4Ny1cdFx0aWYgKHByaXYtXHUwMDNlZGlyIFx1MDAzYyBJUF9DVF9ESVJfTUFYIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NzAxPXN0YXRpYyBpbnQgbmZ0X2N0X3NldF9kdW1wKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03MTEtXHRzd2l0Y2ggKHByaXYtXHUwMDNla2V5KSB7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjcxMjpcdGNhc2UgTkZUX0NUX1pPTkU6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTcxMy1cdFx0aWYgKHByaXYtXHUwMDNlZGlyIFx1MDAzYyBJUF9DVF9ESVJfTUFYIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NzY5PW5mdF9jdF9zZWxlY3Rfb3BzKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03ODItXHRcdHN3aXRjaCAoaykge1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo3ODM6XHRcdGNhc2UgTkZUX0NUX1NUQVRFOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo3ODQ6XHRcdGNhc2UgTkZUX0NUX0RJUkVDVElPTjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Nzg1Olx0XHRjYXNlIE5GVF9DVF9TVEFUVVM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjc4NjpcdFx0Y2FzZSBORlRfQ1RfTUFSSzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Nzg3Olx0XHRjYXNlIE5GVF9DVF9TRUNNQVJLOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03ODgtXHRcdFx0cmV0dXJuIFx1MDAyNm5mdF9jdF9nZXRfZmFzdF9vcHM7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03OTUtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Nzk2Olx0XHRpZiAobmxhX2dldF9iZTMyKHRiW05GVEFfQ1RfS0VZXSkgPT0gaHRvbmwoTkZUX0NUX1pPTkUpKVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03OTctXHRcdFx0cmV0dXJuIFx1MDAyNm5mdF9jdF9zZXRfem9uZV9vcHM7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jOjI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05GVF9DVClcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy0zLSNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaFx1MDAzZVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYz03PXZvaWQgbmZ0X2N0X2dldF9mYXN0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy0xOS1cdHN3aXRjaCAocHJpdi1cdTAwM2VrZXkpIHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYzoyMDpcdGNhc2UgTkZUX0NUX1NUQVRFOlxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTIxLVx0XHRpZiAoY3QpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTM4LVx0c3dpdGNoIChwcml2LVx1MDAzZWtleSkge1xubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jOjM5Olx0Y2FzZSBORlRfQ1RfRElSRUNUSU9OOlxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTQwLVx0XHRuZnRfcmVnX3N0b3JlOChkZXN0LCBDVElORk8yRElSKGN0aW5mbykpO1xubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTQxLVx0XHRyZXR1cm47XG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmM6NDI6XHRjYXNlIE5GVF9DVF9TVEFUVVM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtNDMtXHRcdCpkZXN0ID0gY3QtXHUwMDNlc3RhdHVzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy00NS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmM6NDY6XHRjYXNlIE5GVF9DVF9NQVJLOlxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTQ3LVx0XHQqZGVzdCA9IGN0LVx1MDAzZW1hcms7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTUwLSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUktcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYzo1MTpcdGNhc2UgTkZUX0NUX1NFQ01BUks6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtNTItXHRcdCpkZXN0ID0gY3QtXHUwMDNlc2VjbWFyaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjA5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgZnVuY3Rpb24gaXMgdXNlZC4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYENPTkZJR19ORlRfQ1RgIGFuZCBgQ09ORklHX05GX05BVGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSB3aGV0aGVyIGBDT05GSUdfTkZfTkFUYCBpcyBhIGJvb2xlYW4gb3IgdHJpc3RhdGUsIGFuZCBpZiBpdCBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBzZWUgdGhlIGNvZGUgaXMgaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNgLCB3aGljaCBtYWtlcyBzZW5zZS4KCk5vdyBJJiMzOTttIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoLiBUaGUgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgZnVuY3Rpb24gaXMgY2xlYXJseSBndWFyZGVkIGJ5IGAjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKWAsIHdoaWNoIGNvbmZpcm1zIGl0cyBkZXBlbmRlbmN5LiBTbywgaXQgcmVxdWlyZXMgYE5GX05BVGAgYW5kIGBORlRfQ1RgLiBFeGNlbGxlbnQuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKiBpbiBhIHByYWN0aWNhbCBzY2VuYXJpby4gSXQmIzM5O3MgcmVnaXN0ZXJlZCBhcyBhbiBgZXhwZWN0Zm5gLCB3aGljaCB0ZWxscyBtZSBpdCYjMzk7cyBwYXJ0IG9mIGFuIGV4cGVjdGF0aW9uIGhhbmRsaW5nIGNoYWluLiBMZXQmIzM5O3Mgc2VlIGhvdy4gYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIGNhbGxzIGBuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApYC4gQWhhISBBbmQsIGlmIGBjdC0mZ3Q7c3RhdHVzICZhbXA7IElQU19OQVRfTUFTS2AgaXMgdHJ1ZSwgdGhlbiBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgKmV4cGxpY2l0bHkqIHNldHMgYGV4cC0mZ3Q7ZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXI7YC4gT2theSwgc28gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgZ2V0cyBjYWxsZWQgd2hlbiB0aGUgZXhwZWN0YXRpb24gaXMgZnVsZmlsbGVkLgoKRmluYWxseSwgSSBzZWUgdGhhdCB3aXRoaW4gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAsIHRoZSBmdW5jdGlvbiBjYWxscyBgbmZfY3RfaGVscGVyX2V4cGVjdGZuX2ZpbmRfYnlfbmFtZSgmIzM0O25hdC1mb2xsb3ctbWFzdGVyJiMzNDspYCBhbmQgZXhlY3V0ZXMgaXQuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIE5vdywgSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYCYjMzQ7bmF0LWZvbGxvdy1tYXN0ZXImIzM0O2AgZXhpc3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25hdC1mb2xsb3ctbWFzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jPTExNjk9c3RhdGljIHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gZm9sbG93X21hc3Rlcl9uYXQgPSB7XG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM6MTE3MDpcdC5uYW1lXHRcdD0gXCYjMzQ7bmF0LWZvbGxvdy1tYXN0ZXJcJiMzNDssXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtMTE3MS1cdC5leHBlY3Rmblx0PSBuZl9uYXRfZm9sbG93X21hc3Rlcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMDE9c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzA0LVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzA1Olx0ZXhwZm4gPSBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZmluZF9ieV9uYW1lKFwmIzM0O25hdC1mb2xsb3ctbWFzdGVyXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTMwNi1cdGlmIChleHBmbilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU4NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoZSBjb2RlIGNoYW5nZSBpcyB3aXRoaW4gYG5mX25hdF9jb3JlLmNgIOKAkyBnb29kLCBpdCYjMzk7cyBkZWZpbml0ZWx5IGluIGEgcGxhY2Ugd2hlcmUgSSBleHBlY3QgaXQgdG8gYmUuIFRoaXMgbWVhbnMgdGhlIHBhdGNoIGlzIGJvdGggZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlLCB3aGljaCBpcyBhIGtleSBmaXJzdCBzdGVwLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGFmZmVjdGVkLiBCYXNlZCBvbiB0aGUgZGlmZiwgbXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgYW5kIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4KCldhaXQgYSBtaW51dGUsIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCAqaGFzKiBiZWVuIG1vZGlmaWVkLCBzbyB0aGF0IGRlZmluaXRlbHkgbmVlZHMgdG8gYmUgbGlzdGVkIHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gQW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGlzICpuZXcqLCB3aGljaCBtYWtlcyBpdCBhIGNyaXRpY2FsIGFkZGl0aW9uIGFuZCBhbHNvIG5lZWRzIHRvIGJlIGluIGBGb2N1c1N5bWJvbHNgLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0sIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvdWNoZWQgaGVyZT8KCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIFRoZSBwYXRjaCBhZGRzIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAsIGFzIHByZXZpb3VzbHkgbm90ZWQuIEl0IGxvb2tzIGxpa2UgYG5mdF9jdF9tb2R1bGVfaW5pdGAgYW5kIGBuZnRfY3RfbW9kdWxlX2V4aXRgIGhhdmUgYWxzbyBiZWVuIG1vZGlmaWVkLiBIb3dldmVyLCB0aG9zZSBhcmUgaW5pdC9leGl0IGZ1bmN0aW9ucywgc28gdGhleSBhcmUgbm90IGFzIGNlbnRyYWwgdG8gbXkgY29uY2Vybi4KCk5leHQsIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuIEFyZSBgTkZUX0NUYCBhbmQgYE5GX05BVGAgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlncz8gTGV0IG1lIHNlZeKApiBgTkZUX0NUYCBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tgLCBhbmQgYE5GX05BVGAgYWxzbyBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tgLiBTbywgd2l0aCBgTkZUX0NUYCBhbmQgYE5GX05BVGAgZW5hYmxlZCwgSSBzaG91bGQgaGF2ZSBldmVyeXRoaW5nIEkgbmVlZC4gVGhhdCYjMzk7cyBnb29kLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgbW9kaWZpY2F0aW9uIHRvIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNgIGZvciBhbnkgcG90ZW50aWFsIG92ZXJzaWdodC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nLCBhbmQgdGhhdCBhbGwgdGhlIGNyaXRpY2FsIHBpZWNlcyBhcmUgd2VsbCB1bmRlcnN0b29kIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9jdF9leHBlY3Rfb2JqX2V2YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMDE9c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzEwLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzExOnN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTMxMi1cdFx0XHRcdCAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzNzk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnRfb2JqZWN0X29wcyBuZnRfY3RfZXhwZWN0X29ial9vcHMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzgxLVx0LnNpemVcdFx0PSBzaXplb2Yoc3RydWN0IG5mdF9jdF9leHBlY3Rfb2JqKSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTM4MjpcdC5ldmFsXHRcdD0gbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4My1cdC5pbml0XHRcdD0gbmZ0X2N0X2V4cGVjdF9vYmpfaW5pdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU5NwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBsYW4gZm9yIGBuZnRfY3RfZXhwZWN0X29ial9vcHNgIEV2YWx1YXRpb24qKgoKT2theSwgc28gdGhlIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCBmdW5jdGlvbiBpcyB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGBuZnRfY3RfZXhwZWN0X29ial9vcHNgLCB3aGljaCBtZWFucyBpdOKAmXMgZGVmaW5pdGVseSByZWFjaGFibGUgdGhyb3VnaCBuZnRhYmxlcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoaXMgcGF0Y2ggYXBwZWFycyBmdW5jdGlvbmFsLCBzbyBpdCYjMzk7cyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgZm9sbG93aW5nIGtleSBzeW1ib2xzOiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQsIG9mIGNvdXJzZSwgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpZ3VyZSBteSBmdXp6aW5nIHNldHVwIGNvcnJlY3RseS4gQmFzZWQgb24gdGhlIGNvbnRleHQsIEkgc2hvdWxkIGVuc3VyZSBJIGhhdmUgYE5GVF9DVGAgYW5kIGBORl9OQVRgIGVuYWJsZWQgaW4gbXkga2VybmVsIGNvbmZpZ3VyYXRpb24uCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgZG91YmxlLWNoZWNrIGlmIGBDT05GSUdfTkZfTkFUYCBpcyB0aGUgZXhhY3QgY29uZmlndXJhdGlvbiBvcHRpb24gdXNlZCB3aXRoaW4gdGhlIHBhdGNoIGl0c2VsZiwgYW5kIHRoYXQgYENPTkZJR19ORlRfQ1RgIGlzIHRoZSBjb25maWcgb3B0aW9uIGZvciBgbmZ0X2N0LmNgLiBUaGlzIHdpbGwgZW5zdXJlIHRoZXJlIGFyZSBubyBzdXJwcmlzZXMgaW4gdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQuIEkmIzM5O2xsIHRha2UgYSBxdWljayBsb29rIHRvIHZlcmlmeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zOTg9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1Rcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQwNzpjb25maWcgTkZfTkFUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDE1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNy1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MjE6Y29uZmlnIE5GX05BVF9GVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjItXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDI2OmNvbmZpZyBORl9OQVRfSVJDXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDI3LVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzMTpjb25maWcgTkZfTkFUX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMi1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzY6Y29uZmlnIE5GX05BVF9URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM3LVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0MTpjb25maWcgTkZfTkFUX1JFRElSRUNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQyLVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDQ6Y29uZmlnIE5GX05BVF9NQVNRVUVSQURFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ1LVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDc6Y29uZmlnIE5GX05BVF9PVlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNTIxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBDb25maWd1cmF0aW9uIENoZWNrKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiwgYW5kIHRoZSBuYW1lIGBORl9OQVRgIGlzIGRlZmluaXRlbHkgcmluZ2luZyBhIGJlbGwuIExldCYjMzk7cyBqdXN0IGNvbmZpcm0gdGhhdCB0aGF0JiMzOTtzIHRoZSBwcmVjaXNlIG1vZHVsZSBuYW1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGg7IG5vIG5lZWQgdG8gYmUgc2xvcHB5IHdpdGggdGhlIGRldGFpbHMsIGV2ZW4gaWYgaXQgc2VlbXMgb2J2aW91cy4KCk5vdywgbGV0JiMzOTtzIHBpdm90IGFuZCBjcm9zcy1yZWZlcmVuY2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgYENPTkZJR19ORlRfQ1RgIGlzIGVuYWJsZWQuIFRoYXQgcGFydGljdWxhciBjb25maWcgb3B0aW9uIGlzIGNydWNpYWwgZm9yIGNlcnRhaW4gbW9kZXJuIE5ldGZpbHRlciBmZWF0dXJlcywgYW5kIGl0IG5lZWRzIHRvIGJlIHByZXNlbnQgZm9yIHRoZSBmdW5jdGlvbmFsaXR5IEkmIzM5O20gYXNzdW1pbmcuIFZlcmlmaWNhdGlvbiBpcyBrZXkgYmVmb3JlIG1vdmluZyBmb3J3YXJkLCBzbyBJJiMzOTtsbCBjaGVjayB0aGF0IG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORlRfQ1QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDg1PWNvbmZpZyBORlRfTlVNR0VOXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0OTE6Y29uZmlnIE5GVF9DVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5Mi1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODA3CgkJCQkJCQlvdXRwdXQ6IDE0NQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgTkZUX0NUYCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBqdXN0IHJldmlld2VkIHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIHRoZSBuYW1lIGBORlRfQ1RgIGlzIHNwb3Qgb24uIFRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgaWRlbnRpZmllciBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LgoKVGhlIGxvZ2ljIGhlcmUgaXMgc291bmQ6IHRoZXkmIzM5O3ZlIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLCBhbmQgbW9kaWZpZWQgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIHRvIGxldmVyYWdlIHRoaXMgbmV3IGZ1bmN0aW9uLiBUaGUga2V5IHBvaW50IGlzIHRoYXQgdGhpcyBjaGFuZ2UgKm9ubHkqIGhhcHBlbnMgd2hlbiBgQ09ORklHX05GX05BVGAgaXMgYWN0aXZlLCBhbmQgdGhlIHNwZWNpZmljIGNvbm5lY3Rpb24gaGFzIE5BVCBhcHBsaWVkLiBUaGlzIGlzIGEgdGFyZ2V0ZWQgbW9kaWZpY2F0aW9uIHRvIHRoZSBOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggTkFUIGV4cGVjdGF0aW9ucywgYW5kLCBjcml0aWNhbGx5LCBpdCYjMzk7cyBhbGwgYWNjZXNzaWJsZSB0aHJvdWdoIG5mdGFibGVzLiBCZWNhdXNlIG9mIHRoaXMgYWRkZWQgZnVuY3Rpb25hbGl0eSBJIGNhbiBzZWUgdGhhdCB0aGlzIGlzIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGZ1enplZC4gVGhlIGNoYW5nZXMgYXJlIHZlcnkgY2xlYXIsIHNvIHRoZXJlIGlzIG5vIGFtYmlndWl0eS4KCkkmIzM5O20gZ29pbmcgdG8gZ2V0IG9uIHRoZSBwaG9uZSBhbmQgY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DVCYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXImIzM0OywKICAgICYjMzQ7bmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DVCYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXImIzM0OywKICAgICYjMzQ7bmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTo1NzoyNi41MzY2NDk1ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzM2NDkwODIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORlRfQ1RcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mdF9jdF9uYXRfZm9sbG93X21hc3RlclwiLFxuICAgIFwibmZ0X2N0X2V4cGVjdF9vYmpfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgYW5kIG1vZGlmaWVzIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCB0byB1c2UgaXQgd2hlbiBgQ09ORklHX05GX05BVGAgaXMgZW5hYmxlZCBhbmQgdGhlIGNvbm5lY3Rpb24gaGFzIE5BVCBhcHBsaWVkLiBUaGlzIGFkZHMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBmb3IgTkFUIGV4cGVjdGF0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBuZnRhYmxlcyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6NTc6MjYuNTM2NjgxNTc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDIwNzA5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNGM2YTM2NjI5ZjdhYTM4YmMzNDQ0NzBkMDNmNTAzYWRhOGYxM2UxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDEgMDE6NTc6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfY3QuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNcXG5pbmRleCAwM2E4OGM3N2UwZjAyOC4uYjlkYzQ3YjZjYTkzMzIgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNcXG5AQCAtMTI5Nyw2ICsxMjk3LDE3IEBAIHN0YXRpYyBpbnQgbmZ0X2N0X2V4cGVjdF9vYmpfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcXG4rc3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiAqZXhwZm47XFxuK1xcbitcXHRleHBmbiA9IG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9maW5kX2J5X25hbWUoXFxcIm5hdC1mb2xsb3ctbWFzdGVyXFxcIik7XFxuK1xcdGlmIChleHBmbilcXG4rXFx0XFx0ZXhwZm4tXFx1MDAzZWV4cGVjdGZuKGN0LCB0aGlzKTtcXG4rfVxcbisjZW5kaWZcXG4rXFxuIHN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcXG5AQCAtMTM0Miw2ICsxMzUzLDEzIEBAIHN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcXG4gXFx0XFx0ICAgICAgICAgIHByaXYtXFx1MDAzZWw0cHJvdG8sIE5VTEwsIFxcdTAwMjZwcml2LVxcdTAwM2VkcG9ydCk7XFxuIFxcdGV4cC1cXHUwMDNldGltZW91dCArPSBwcml2LVxcdTAwM2V0aW1lb3V0O1xcbiBcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcXG4rXFx0aWYgKGN0LVxcdTAwM2VzdGF0dXMgXFx1MDAyNiBJUFNfTkFUX01BU0spIHtcXG4rXFx0XFx0ZXhwLVxcdTAwM2VzYXZlZF9wcm90by50Y3AucG9ydCA9IHByaXYtXFx1MDAzZWRwb3J0O1xcbitcXHRcXHRleHAtXFx1MDAzZWRpciA9ICFkaXI7XFxuK1xcdFxcdGV4cC1cXHUwMDNlZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXI7XFxuK1xcdH1cXG4rI2VuZGlmXFxuIFxcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApXFxuIFxcdFxcdHJlZ3MtXFx1MDAzZXZlcmRpY3QuY29kZSA9IE5GX0RST1A7XFxuIFxcbkBAIC0xMzc1LDYgKzEzOTMsMTEgQEAgc3RhdGljIHN0cnVjdCBuZnRfb2JqZWN0X3R5cGUgbmZ0X2N0X2V4cGVjdF9vYmpfdHlwZSBfX3JlYWRfbW9zdGx5ID0ge1xcbiBcXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbiB9O1xcbiBcXG4rc3RhdGljIHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gbmZ0X2N0X25hdCBfX3JlYWRfbW9zdGx5ID0ge1xcbitcXHQubmFtZSA9IFxcXCJuZnRfY3QtZm9sbG93LW1hc3RlclxcXCIsXFxuK1xcdC5leHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcixcXG4rfTtcXG4rXFxuIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxcbiB7XFxuIFxcdGludCBlcnI7XFxuQEAgLTE0MDAsNiArMTQyMyw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxcbiBcXHRlcnIgPSBuZnRfcmVnaXN0ZXJfb2JqKFxcdTAwMjZuZnRfY3RfdGltZW91dF9vYmpfdHlwZSk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIGVycjQ7XFxuKyNlbmRpZlxcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxcbitcXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fcmVnaXN0ZXIoXFx1MDAyNm5mdF9jdF9uYXQpO1xcbiAjZW5kaWZcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0xNDI1LDYgKzE0NTEsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKVxcbiBcXHRuZnRfdW5yZWdpc3Rlcl9vYmooXFx1MDAyNm5mdF9jdF9oZWxwZXJfb2JqX3R5cGUpO1xcbiBcXHRuZnRfdW5yZWdpc3Rlcl9leHByKFxcdTAwMjZuZnRfbm90cmFja190eXBlKTtcXG4gXFx0bmZ0X3VucmVnaXN0ZXJfZXhwcihcXHUwMDI2bmZ0X2N0X3R5cGUpO1xcbitcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcXG4rXFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXFx1MDAyNm5mdF9jdF9uYXQpO1xcbitcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4rXFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX2Rlc3Ryb3koXFx1MDAyNm5mdF9jdF9uYXQpO1xcbitcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4rI2VuZGlmXFxuIH1cXG4gXFxuIG1vZHVsZV9pbml0KG5mdF9jdF9tb2R1bGVfaW5pdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjI3LjI3OTgxMzY3NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2MjE3MTg3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZUX0NUXCIsXG4gICAgXCJORl9OQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJcIixcbiAgICBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTRjNmEzNjYyOWY3YWEzOGJjMzQ0NDcwZDAzZjUwM2FkYThmMTNlMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDE6NTc6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuaW5kZXggMDNhODhjNzdlMGYwMjguLmI5ZGM0N2I2Y2E5MzMyIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuQEAgLTEyOTcsNiArMTI5NywxNyBAQCBzdGF0aWMgaW50IG5mdF9jdF9leHBlY3Rfb2JqX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiAwO1xuIH1cbiBcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuK3N0YXRpYyB2b2lkIG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICp0aGlzKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gKmV4cGZuO1xuK1xuK1x0ZXhwZm4gPSBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZmluZF9ieV9uYW1lKFwibmF0LWZvbGxvdy1tYXN0ZXJcIik7XG4rXHRpZiAoZXhwZm4pXG4rXHRcdGV4cGZuLVx1MDAzZWV4cGVjdGZuKGN0LCB0aGlzKTtcbit9XG4rI2VuZGlmXG4rXG4gc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxuIFx0XHRcdFx0ICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxuIFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXG5AQCAtMTM0Miw2ICsxMzUzLDEzIEBAIHN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbiBcdFx0ICAgICAgICAgIHByaXYtXHUwMDNlbDRwcm90bywgTlVMTCwgXHUwMDI2cHJpdi1cdTAwM2VkcG9ydCk7XG4gXHRleHAtXHUwMDNldGltZW91dCArPSBwcml2LVx1MDAzZXRpbWVvdXQ7XG4gXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcbitcdGlmIChjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSykge1xuK1x0XHRleHAtXHUwMDNlc2F2ZWRfcHJvdG8udGNwLnBvcnQgPSBwcml2LVx1MDAzZWRwb3J0O1xuK1x0XHRleHAtXHUwMDNlZGlyID0gIWRpcjtcbitcdFx0ZXhwLVx1MDAzZWV4cGVjdGZuID0gbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyO1xuK1x0fVxuKyNlbmRpZlxuIFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMClcbiBcdFx0cmVncy1cdTAwM2V2ZXJkaWN0LmNvZGUgPSBORl9EUk9QO1xuIFxuQEAgLTEzNzUsNiArMTM5MywxMSBAQCBzdGF0aWMgc3RydWN0IG5mdF9vYmplY3RfdHlwZSBuZnRfY3RfZXhwZWN0X29ial90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XG4gXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiB9O1xuIFxuK3N0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIG5mdF9jdF9uYXQgX19yZWFkX21vc3RseSA9IHtcbitcdC5uYW1lID0gXCJuZnRfY3QtZm9sbG93LW1hc3RlclwiLFxuK1x0LmV4cGVjdGZuID0gbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyLFxuK307XG4rXG4gc3RhdGljIGludCBfX2luaXQgbmZ0X2N0X21vZHVsZV9pbml0KHZvaWQpXG4ge1xuIFx0aW50IGVycjtcbkBAIC0xNDAwLDYgKzE0MjMsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBuZnRfY3RfbW9kdWxlX2luaXQodm9pZClcbiBcdGVyciA9IG5mdF9yZWdpc3Rlcl9vYmooXHUwMDI2bmZ0X2N0X3RpbWVvdXRfb2JqX3R5cGUpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0Z290byBlcnI0O1xuKyNlbmRpZlxuKyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4rXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fcmVnaXN0ZXIoXHUwMDI2bmZ0X2N0X25hdCk7XG4gI2VuZGlmXG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0xNDI1LDYgKzE0NTEsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKVxuIFx0bmZ0X3VucmVnaXN0ZXJfb2JqKFx1MDAyNm5mdF9jdF9oZWxwZXJfb2JqX3R5cGUpO1xuIFx0bmZ0X3VucmVnaXN0ZXJfZXhwcihcdTAwMjZuZnRfbm90cmFja190eXBlKTtcbiBcdG5mdF91bnJlZ2lzdGVyX2V4cHIoXHUwMDI2bmZ0X2N0X3R5cGUpO1xuK1xuKyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4rXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fdW5yZWdpc3RlcihcdTAwMjZuZnRfY3RfbmF0KTtcbitcdHN5bmNocm9uaXplX3JjdSgpO1xuK1x0bmZfY3RfaGVscGVyX2V4cGVjdGZuX2Rlc3Ryb3koXHUwMDI2bmZ0X2N0X25hdCk7XG4rXHRzeW5jaHJvbml6ZV9yY3UoKTtcbisjZW5kaWZcbiB9XG4gXG4gbW9kdWxlX2luaXQobmZ0X2N0X21vZHVsZV9pbml0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjI3LjI3OTgxNzg5NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODc4Mzg5OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIENvbm5lY3Rpb24gVHJhY2tpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBsYW5kZWQgaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNgLiBJdCBzZWVtcyB0byBpbnRyb2R1Y2UgYSBuZXcgZnVuY3Rpb24sIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLCBhbmQgcmVnaXN0ZXJzIGl0IGFzIGFuIGBleHBlY3RmbmAuICBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIGFzIGBleHBlY3RmbmAgZnVuY3Rpb25zIGFyZSBjcnVjaWFsIGZvciBoYW5kbGluZyByZWxhdGVkIGNvbm5lY3Rpb25zLCB3aGljaCBpcyBhIGNvcmUgcGFydCBvZiBOQVQgZnVuY3Rpb25hbGl0eS5cblxuVGhlIHBhdGNoIGFsc28gcmV2aXNlcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAsIGFuZCB0aGUga2V5IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIHVzYWdlIG9mIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLiBUaGUgdHJpZ2dlciBpcyB3aGVuIGBDT05GSUdfTkZfTkFUYCBpcyBlbmFibGVkICphbmQqIHRoZSBjb25uZWN0aW9uJ3Mgc3RhdHVzIChgY3QtXHUwMDNlc3RhdHVzYCkgaGFzIHRoZSBgSVBTX05BVF9NQVNLYCBiaXQgc2V0LiAgVGhpcyBzb3VuZHMgbGlrZSBpdCdzIHNwZWNpZmljYWxseSBhYm91dCBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBOQVQsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBmdW5jdGlvbiBuYW1lLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGNvZGUgaXMgZGVhbGluZyB3aXRoIHRoZSBjYXNlcyB3aGVyZSBOQVQgaXMgaW52b2x2ZWQgYW5kIG5lZWRzIHRvIGtlZXAgdHJhY2sgb2YgcmVsYXRlZCBjb25uZWN0aW9ucy5cblxuTXkgcHJpbWFyeSB0YXNrIGlzIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBhbmQgY29udGV4dC4gSSBoYXZlIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX05GX05BVGAgaXMgaW5kZWVkIHJlcXVpcmVkLCBhbmQgdGhhdCBgbmZ0X2N0LmNgIGlzIGNvbXBpbGVkIHVuZGVyIGBDT05GSUdfTkZUX0NUYC4gU28sIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBhbmQgTWFrZWZpbGVzIGluIGBuZXQvbmV0ZmlsdGVyYCBkaXJlY3RvcnkgdG8gY29uZmlybSB0aGVzZSBkZXBlbmRlbmNpZXMuIEknbGwgbmVlZCB0byB1c2UgYGdyZXBgIHRvIHF1aWNrbHkgZmluZCBob3cgdGhlc2UgYXJlIGNvbmZpZ3VyZWQuIEdpdmVuIHRoYXQgdGhpcyBkZWFscyB3aXRoIGNvbm5lY3Rpb24gdHJhY2tpbmcsIE5BVCwgYW5kIHJlbGF0ZWQgY29ubmVjdGlvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIGJlaGF2aW9yLCBlc3BlY2lhbGx5IGluIGEgTkFUIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6NTc6MzIuMDY3NjYzODMzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjM0OTk2NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZUX0NUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00ODU9Y29uZmlnIE5GVF9OVU1HRU5cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00OTAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ5MTpjb25maWcgTkZUX0NUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5Mi1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMDA9ZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwMS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEwMjppZmRlZiBDT05GSUdfTkZUX0NUXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDMtaWZkZWYgQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTExMT1vYmotJChDT05GSUdfTkZUX05VTUdFTilcXHQrPSBuZnRfbnVtZ2VuLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjExMjpvYmotJChDT05GSUdfTkZUX0NUKVxcdFxcdCs9IG5mdF9jdC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMTMtb2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXFx0Kz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmM9MjAzPXN0YXRpYyB2b2lkIGV4cHJfY2FsbF9vcHNfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmMtMjIyLVxcdFgoZSwgbmZ0X2xvb2t1cF9ldmFsKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmM6MjIzOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORlRfQ1QpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5jLTIyNC1cXHRYKGUsIG5mdF9jdF9nZXRfZmFzdF9ldmFsKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NDA9c3RhdGljIHU2NCBuZnRfY3RfZ2V0X2V2YWxfY291bnRlcihjb25zdCBzdHJ1Y3QgbmZfY29ubl9jb3VudGVyICpjLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NC1cXHRpZiAoZCBcXHUwMDNjIElQX0NUX0RJUl9NQVgpXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NTpcXHRcXHRyZXR1cm4gayA9PSBORlRfQ1RfQllURVMgPyBhdG9taWM2NF9yZWFkKFxcdTAwMjZjW2RdLmJ5dGVzKSA6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00Ni1cXHRcXHRcXHRcXHRcXHQgICBhdG9taWM2NF9yZWFkKFxcdTAwMjZjW2RdLnBhY2tldHMpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz01Mj1zdGF0aWMgdm9pZCBuZnRfY3RfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy02Ny1cXHRzd2l0Y2ggKHByaXYtXFx1MDAzZWtleSkge1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Njg6XFx0Y2FzZSBORlRfQ1RfU1RBVEU6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy02OS1cXHRcXHRpZiAoY3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTg0LVxcdHN3aXRjaCAocHJpdi1cXHUwMDNla2V5KSB7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo4NTpcXHRjYXNlIE5GVF9DVF9ESVJFQ1RJT046XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy04Ni1cXHRcXHRuZnRfcmVnX3N0b3JlOChkZXN0LCBDVElORk8yRElSKGN0aW5mbykpO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtODctXFx0XFx0cmV0dXJuO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6ODg6XFx0Y2FzZSBORlRfQ1RfU1RBVFVTOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtODktXFx0XFx0KmRlc3QgPSBjdC1cXHUwMDNlc3RhdHVzO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy05MS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo5MjpcXHRjYXNlIE5GVF9DVF9NQVJLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtOTMtXFx0XFx0KmRlc3QgPSBSRUFEX09OQ0UoY3QtXFx1MDAzZW1hcmspO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy05Ni0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo5NzpcXHRjYXNlIE5GVF9DVF9TRUNNQVJLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtOTgtXFx0XFx0KmRlc3QgPSBjdC1cXHUwMDNlc2VjbWFyaztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTAwLSNlbmRpZlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTAxOlxcdGNhc2UgTkZUX0NUX0VYUElSQVRJT046XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMDItXFx0XFx0KmRlc3QgPSBqaWZmaWVzX3RvX21zZWNzKG5mX2N0X2V4cGlyZXMoY3QpKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEwMy1cXHRcXHRyZXR1cm47XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMDQ6XFx0Y2FzZSBORlRfQ1RfSEVMUEVSOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTA1LVxcdFxcdGlmIChjdC1cXHUwMDNlbWFzdGVyID09IE5VTEwpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTExNS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19MQUJFTFNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjExNjpcXHRjYXNlIE5GVF9DVF9MQUJFTFM6IHtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTExNy1cXHRcXHRzdHJ1Y3QgbmZfY29ubl9sYWJlbHMgKmxhYmVscyA9IG5mX2N0X2xhYmVsc19maW5kKGN0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTI1LSNlbmRpZlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTI2OlxcdGNhc2UgTkZUX0NUX0JZVEVTOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTI3OlxcdGNhc2UgTkZUX0NUX1BLVFM6IHtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEyOC1cXHRcXHRjb25zdCBzdHJ1Y3QgbmZfY29ubl9hY2N0ICphY2N0ID0gbmZfY29ubl9hY2N0X2ZpbmQoY3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzYtXFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTM3OlxcdGNhc2UgTkZUX0NUX0FWR1BLVDoge1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4LVxcdFxcdGNvbnN0IHN0cnVjdCBuZl9jb25uX2FjY3QgKmFjY3QgPSBuZl9jb25uX2FjY3RfZmluZChjdCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE0Mi1cXHRcXHRcXHRwY250ID0gbmZ0X2N0X2dldF9ldmFsX2NvdW50ZXIoYWNjdC1cXHUwMDNlY291bnRlcixcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE0MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgTkZUX0NUX1BLVFMsIHByaXYtXFx1MDAzZWRpcik7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNDQtXFx0XFx0XFx0YmNudCA9IG5mdF9jdF9nZXRfZXZhbF9jb3VudGVyKGFjY3QtXFx1MDAzZWNvdW50ZXIsXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNDU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIE5GVF9DVF9CWVRFUywgcHJpdi1cXHUwMDNlZGlyKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE0Ni1cXHRcXHRcXHRpZiAocGNudCAhPSAwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNTItXFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTUzOlxcdGNhc2UgTkZUX0NUX0wzUFJPVE9DT0w6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNTQtXFx0XFx0bmZ0X3JlZ19zdG9yZTgoZGVzdCwgbmZfY3RfbDNudW0oY3QpKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE1NS1cXHRcXHRyZXR1cm47XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNTY6XFx0Y2FzZSBORlRfQ1RfUFJPVE9DT0w6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNTctXFx0XFx0bmZ0X3JlZ19zdG9yZTgoZGVzdCwgbmZfY3RfcHJvdG9udW0oY3QpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTU5LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNjA6XFx0Y2FzZSBORlRfQ1RfWk9ORToge1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTYxLVxcdFxcdGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfem9uZSAqem9uZSA9IG5mX2N0X3pvbmUoY3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNzItI2VuZGlmXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNzM6XFx0Y2FzZSBORlRfQ1RfSUQ6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNzQtXFx0XFx0KmRlc3QgPSBuZl9jdF9nZXRfaWQoY3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODEtXFx0c3dpdGNoIChwcml2LVxcdTAwM2VrZXkpIHtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE4MjpcXHRjYXNlIE5GVF9DVF9TUkM6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODMtXFx0XFx0bWVtY3B5KGRlc3QsIHR1cGxlLVxcdTAwM2VzcmMudTMuYWxsLCBwcml2LVxcdTAwM2VsZW4pO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTg0LVxcdFxcdHJldHVybjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE4NTpcXHRjYXNlIE5GVF9DVF9EU1Q6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODYtXFx0XFx0bWVtY3B5KGRlc3QsIHR1cGxlLVxcdTAwM2Vkc3QudTMuYWxsLCBwcml2LVxcdTAwM2VsZW4pO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTg3LVxcdFxcdHJldHVybjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE4ODpcXHRjYXNlIE5GVF9DVF9QUk9UT19TUkM6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODktXFx0XFx0bmZ0X3JlZ19zdG9yZTE2KGRlc3QsIChfX2ZvcmNlIHUxNil0dXBsZS1cXHUwMDNlc3JjLnUuYWxsKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE5MC1cXHRcXHRyZXR1cm47XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxOTE6XFx0Y2FzZSBORlRfQ1RfUFJPVE9fRFNUOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTkyLVxcdFxcdG5mdF9yZWdfc3RvcmUxNihkZXN0LCAoX19mb3JjZSB1MTYpdHVwbGUtXFx1MDAzZWRzdC51LmFsbCk7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xOTMtXFx0XFx0cmV0dXJuO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTk0OlxcdGNhc2UgTkZUX0NUX1NSQ19JUDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE5NS1cXHRcXHRpZiAobmZfY3RfbDNudW0oY3QpICE9IE5GUFJPVE9fSVBWNClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTk4LVxcdFxcdHJldHVybjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE5OTpcXHRjYXNlIE5GVF9DVF9EU1RfSVA6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0yMDAtXFx0XFx0aWYgKG5mX2N0X2wzbnVtKGN0KSAhPSBORlBST1RPX0lQVjQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTIwMy1cXHRcXHRyZXR1cm47XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoyMDQ6XFx0Y2FzZSBORlRfQ1RfU1JDX0lQNjpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTIwNS1cXHRcXHRpZiAobmZfY3RfbDNudW0oY3QpICE9IE5GUFJPVE9fSVBWNilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjA4LVxcdFxcdHJldHVybjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjIwOTpcXHRjYXNlIE5GVF9DVF9EU1RfSVA2Olxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjEwLVxcdFxcdGlmIChuZl9jdF9sM251bShjdCkgIT0gTkZQUk9UT19JUFY2KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0yNzQ9c3RhdGljIHZvaWQgbmZ0X2N0X3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjkxLSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjI5MjpcXHRjYXNlIE5GVF9DVF9NQVJLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjkzLVxcdFxcdGlmIChSRUFEX09OQ0UoY3QtXFx1MDAzZW1hcmspICE9IHZhbHVlKSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTI5OS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzozMDA6XFx0Y2FzZSBORlRfQ1RfU0VDTUFSSzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMwMS1cXHRcXHRpZiAoY3QtXFx1MDAzZXNlY21hcmsgIT0gdmFsdWUpIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMzA3LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMU1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MzA4OlxcdGNhc2UgTkZUX0NUX0xBQkVMUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMwOS1cXHRcXHRuZl9jb25ubGFiZWxzX3JlcGxhY2UoY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMxNS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMxNjpcXHRjYXNlIE5GVF9DVF9FVkVOVE1BU0s6IHtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMxNy1cXHRcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9MzgyPXN0YXRpYyB2b2lkIF9fbmZ0X2N0X2dldF9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfY3QgKnByaXYpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTM4NC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19MQUJFTFNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjM4NTpcXHRpZiAocHJpdi1cXHUwMDNla2V5ID09IE5GVF9DVF9MQUJFTFMpXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zODYtXFx0XFx0bmZfY29ubmxhYmVsc19wdXQoY3R4LVxcdTAwM2VuZXQpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0zOTA9c3RhdGljIGludCBuZnRfY3RfZ2V0X2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDAwLVxcdHN3aXRjaCAocHJpdi1cXHUwMDNla2V5KSB7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MDE6XFx0Y2FzZSBORlRfQ1RfRElSRUNUSU9OOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDAyLVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gIT0gTlVMTClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDA1LVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDA2OlxcdGNhc2UgTkZUX0NUX1NUQVRFOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDA3OlxcdGNhc2UgTkZUX0NUX1NUQVRVUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQwOC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MDk6XFx0Y2FzZSBORlRfQ1RfTUFSSzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQxMC0jZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQxMS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MTI6XFx0Y2FzZSBORlRfQ1RfU0VDTUFSSzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQxMy0jZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQxNDpcXHRjYXNlIE5GVF9DVF9FWFBJUkFUSU9OOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDE1LVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gIT0gTlVMTClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDE5LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMU1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDIwOlxcdGNhc2UgTkZUX0NUX0xBQkVMUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQyMS1cXHRcXHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dICE9IE5VTEwpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQyOS0jZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQzMDpcXHRjYXNlIE5GVF9DVF9IRUxQRVI6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MzEtXFx0XFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSAhPSBOVUxMKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MzUtXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MzY6XFx0Y2FzZSBORlRfQ1RfTDNQUk9UT0NPTDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQzNzpcXHRjYXNlIE5GVF9DVF9QUk9UT0NPTDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQzOC1cXHRcXHQvKiBGb3IgY29tcGF0aWJpbGl0eSwgZG8gbm90IHJlcG9ydCBlcnJvciBpZiBORlRBX0NUX0RJUkVDVElPTlxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NDItXFx0XFx0YnJlYWs7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NDM6XFx0Y2FzZSBORlRfQ1RfU1JDOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDQ0OlxcdGNhc2UgTkZUX0NUX0RTVDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ0NS1cXHRcXHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dID09IE5VTEwpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ2MS1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ2MjpcXHRjYXNlIE5GVF9DVF9TUkNfSVA6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NjM6XFx0Y2FzZSBORlRfQ1RfRFNUX0lQOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDY0LVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gPT0gTlVMTClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDY4LVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDY5OlxcdGNhc2UgTkZUX0NUX1NSQ19JUDY6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NzA6XFx0Y2FzZSBORlRfQ1RfRFNUX0lQNjpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ3MS1cXHRcXHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dID09IE5VTEwpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ3NS1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ3NjpcXHRjYXNlIE5GVF9DVF9QUk9UT19TUkM6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0Nzc6XFx0Y2FzZSBORlRfQ1RfUFJPVE9fRFNUOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDc4LVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gPT0gTlVMTClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDgxLVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDgyOlxcdGNhc2UgTkZUX0NUX0JZVEVTOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDgzOlxcdGNhc2UgTkZUX0NUX1BLVFM6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0ODQ6XFx0Y2FzZSBORlRfQ1RfQVZHUEtUOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDg1LVxcdFxcdGxlbiA9IHNpemVvZih1NjQpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00ODctI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ4ODpcXHRjYXNlIE5GVF9DVF9aT05FOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDg5LVxcdFxcdGxlbiA9IHNpemVvZih1MTYpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00OTEtI2VuZGlmXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0OTI6XFx0Y2FzZSBORlRfQ1RfSUQ6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00OTMtXFx0XFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTIzLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTI0OlxcdGlmIChwcml2LVxcdTAwM2VrZXkgPT0gTkZUX0NUX0JZVEVTIHx8XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1MjU6XFx0ICAgIHByaXYtXFx1MDAzZWtleSA9PSBORlRfQ1RfUEtUUyAgfHxcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjUyNjpcXHQgICAgcHJpdi1cXHUwMDNla2V5ID09IE5GVF9DVF9BVkdQS1QpXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01MjctXFx0XFx0bmZfY3Rfc2V0X2FjY3QoY3R4LVxcdTAwM2VuZXQsIHRydWUpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz01MzU9c3RhdGljIHZvaWQgX19uZnRfY3Rfc2V0X2Rlc3Ryb3koY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF9jdCAqcHJpdilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTM4LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMU1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTM5OlxcdGNhc2UgTkZUX0NUX0xBQkVMUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU0MC1cXHRcXHRuZl9jb25ubGFiZWxzX3B1dChjdHgtXFx1MDAzZW5ldCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU0My0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19aT05FU1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTQ0OlxcdGNhc2UgTkZUX0NUX1pPTkU6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01NDUtXFx0XFx0bmZfcXVldWVfbmZfaG9va19kcm9wKGN0eC1cXHUwMDNlbmV0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NTU3PXN0YXRpYyBpbnQgbmZ0X2N0X3NldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU2OC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1Njk6XFx0Y2FzZSBORlRfQ1RfTUFSSzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU3MC1cXHRcXHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01NzUtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1NzY6XFx0Y2FzZSBORlRfQ1RfTEFCRUxTOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTc3LVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU4NS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19aT05FU1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTg2OlxcdGNhc2UgTkZUX0NUX1pPTkU6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01ODctXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bmZ0X2N0X3BjcHVfbXV0ZXgpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01OTctI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1OTg6XFx0Y2FzZSBORlRfQ1RfRVZFTlRNQVNLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTk5LVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTYwNC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2MDU6XFx0Y2FzZSBORlRfQ1RfU0VDTUFSSzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTYwNi1cXHRcXHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz02NjE9c3RhdGljIGludCBuZnRfY3RfZ2V0X2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNjcxLVxcdHN3aXRjaCAocHJpdi1cXHUwMDNla2V5KSB7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2NzI6XFx0Y2FzZSBORlRfQ1RfU1JDOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NjczOlxcdGNhc2UgTkZUX0NUX0RTVDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3NDpcXHRjYXNlIE5GVF9DVF9TUkNfSVA6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2NzU6XFx0Y2FzZSBORlRfQ1RfRFNUX0lQOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Njc2OlxcdGNhc2UgTkZUX0NUX1NSQ19JUDY6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2Nzc6XFx0Y2FzZSBORlRfQ1RfRFNUX0lQNjpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3ODpcXHRjYXNlIE5GVF9DVF9QUk9UT19TUkM6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2Nzk6XFx0Y2FzZSBORlRfQ1RfUFJPVE9fRFNUOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNjgwLVxcdFxcdGlmIChubGFfcHV0X3U4KHNrYiwgTkZUQV9DVF9ESVJFQ1RJT04sIHByaXYtXFx1MDAzZWRpcikpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTY4Mi1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4MzpcXHRjYXNlIE5GVF9DVF9CWVRFUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4NDpcXHRjYXNlIE5GVF9DVF9QS1RTOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Njg1OlxcdGNhc2UgTkZUX0NUX0FWR1BLVDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4NjpcXHRjYXNlIE5GVF9DVF9aT05FOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNjg3LVxcdFxcdGlmIChwcml2LVxcdTAwM2VkaXIgXFx1MDAzYyBJUF9DVF9ESVJfTUFYIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTcwMT1zdGF0aWMgaW50IG5mdF9jdF9zZXRfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03MTEtXFx0c3dpdGNoIChwcml2LVxcdTAwM2VrZXkpIHtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjcxMjpcXHRjYXNlIE5GVF9DVF9aT05FOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNzEzLVxcdFxcdGlmIChwcml2LVxcdTAwM2VkaXIgXFx1MDAzYyBJUF9DVF9ESVJfTUFYIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTc2OT1uZnRfY3Rfc2VsZWN0X29wcyhjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03ODItXFx0XFx0c3dpdGNoIChrKSB7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo3ODM6XFx0XFx0Y2FzZSBORlRfQ1RfU1RBVEU6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo3ODQ6XFx0XFx0Y2FzZSBORlRfQ1RfRElSRUNUSU9OOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Nzg1OlxcdFxcdGNhc2UgTkZUX0NUX1NUQVRVUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjc4NjpcXHRcXHRjYXNlIE5GVF9DVF9NQVJLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Nzg3OlxcdFxcdGNhc2UgTkZUX0NUX1NFQ01BUks6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03ODgtXFx0XFx0XFx0cmV0dXJuIFxcdTAwMjZuZnRfY3RfZ2V0X2Zhc3Rfb3BzO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03OTUtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjc5NjpcXHRcXHRpZiAobmxhX2dldF9iZTMyKHRiW05GVEFfQ1RfS0VZXSkgPT0gaHRvbmwoTkZUX0NUX1pPTkUpKVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNzk3LVxcdFxcdFxcdHJldHVybiBcXHUwMDI2bmZ0X2N0X3NldF96b25lX29wcztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmM6MjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkZUX0NUKVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy0zLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcXHUwMDNlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmM9Nz12b2lkIG5mdF9jdF9nZXRfZmFzdF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy0xOS1cXHRzd2l0Y2ggKHByaXYtXFx1MDAzZWtleSkge1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYzoyMDpcXHRjYXNlIE5GVF9DVF9TVEFURTpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtMjEtXFx0XFx0aWYgKGN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTM4LVxcdHN3aXRjaCAocHJpdi1cXHUwMDNla2V5KSB7XFxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jOjM5OlxcdGNhc2UgTkZUX0NUX0RJUkVDVElPTjpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtNDAtXFx0XFx0bmZ0X3JlZ19zdG9yZTgoZGVzdCwgQ1RJTkZPMkRJUihjdGluZm8pKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtNDEtXFx0XFx0cmV0dXJuO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYzo0MjpcXHRjYXNlIE5GVF9DVF9TVEFUVVM6XFxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTQzLVxcdFxcdCpkZXN0ID0gY3QtXFx1MDAzZXN0YXR1cztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy00NS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jOjQ2OlxcdGNhc2UgTkZUX0NUX01BUks6XFxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTQ3LVxcdFxcdCpkZXN0ID0gY3QtXFx1MDAzZW1hcms7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtNTAtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYzo1MTpcXHRjYXNlIE5GVF9DVF9TRUNNQVJLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy01Mi1cXHRcXHQqZGVzdCA9IGN0LVxcdTAwM2VzZWNtYXJrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTo1NzozMy4yOTExNzM4MTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDMxMDcxMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGZ1bmN0aW9uIGlzIHVzZWQuIEknbSBmb2N1c2luZyBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYENPTkZJR19ORlRfQ1RgIGFuZCBgQ09ORklHX05GX05BVGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSB3aGV0aGVyIGBDT05GSUdfTkZfTkFUYCBpcyBhIGJvb2xlYW4gb3IgdHJpc3RhdGUsIGFuZCBpZiBpdCBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBzZWUgdGhlIGNvZGUgaXMgaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNgLCB3aGljaCBtYWtlcyBzZW5zZS5cblxuTm93IEknbSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aC4gVGhlIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGZ1bmN0aW9uIGlzIGNsZWFybHkgZ3VhcmRlZCBieSBgI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClgLCB3aGljaCBjb25maXJtcyBpdHMgZGVwZW5kZW5jeS4gU28sIGl0IHJlcXVpcmVzIGBORl9OQVRgIGFuZCBgTkZUX0NUYC4gRXhjZWxsZW50LlxuXG5OZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKiBpbiBhIHByYWN0aWNhbCBzY2VuYXJpby4gSXQncyByZWdpc3RlcmVkIGFzIGFuIGBleHBlY3RmbmAsIHdoaWNoIHRlbGxzIG1lIGl0J3MgcGFydCBvZiBhbiBleHBlY3RhdGlvbiBoYW5kbGluZyBjaGFpbi4gTGV0J3Mgc2VlIGhvdy4gYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIGNhbGxzIGBuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApYC4gQWhhISBBbmQsIGlmIGBjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTS2AgaXMgdHJ1ZSwgdGhlbiBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgKmV4cGxpY2l0bHkqIHNldHMgYGV4cC1cdTAwM2VleHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcjtgLiBPa2F5LCBzbyBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBnZXRzIGNhbGxlZCB3aGVuIHRoZSBleHBlY3RhdGlvbiBpcyBmdWxmaWxsZWQuXG5cbkZpbmFsbHksIEkgc2VlIHRoYXQgd2l0aGluIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLCB0aGUgZnVuY3Rpb24gY2FsbHMgYG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9maW5kX2J5X25hbWUoXCJuYXQtZm9sbG93LW1hc3RlclwiKWAgYW5kIGV4ZWN1dGVzIGl0LiBUaGlzIGlzIGludGVyZXN0aW5nLiBOb3csIEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBcIm5hdC1mb2xsb3ctbWFzdGVyXCJgIGV4aXN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYwOSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTo1NzozOS4zMjIyNDg1MTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1NjcxNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5hdC1mb2xsb3ctbWFzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYz0xMTY5PXN0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIGZvbGxvd19tYXN0ZXJfbmF0ID0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzoxMTcwOlxcdC5uYW1lXFx0XFx0PSBcXFwibmF0LWZvbGxvdy1tYXN0ZXJcXFwiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy0xMTcxLVxcdC5leHBlY3RmblxcdD0gbmZfbmF0X2ZvbGxvd19tYXN0ZXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMDE9c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEzMDQtXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzA1OlxcdGV4cGZuID0gbmZfY3RfaGVscGVyX2V4cGVjdGZuX2ZpbmRfYnlfbmFtZShcXFwibmF0LWZvbGxvdy1tYXN0ZXJcXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEzMDYtXFx0aWYgKGV4cGZuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTo1NzozOS41NTc5MzEwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTU5MTIyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhlIGNvZGUgY2hhbmdlIGlzIHdpdGhpbiBgbmZfbmF0X2NvcmUuY2Ag4oCTIGdvb2QsIGl0J3MgZGVmaW5pdGVseSBpbiBhIHBsYWNlIHdoZXJlIEkgZXhwZWN0IGl0IHRvIGJlLiBUaGlzIG1lYW5zIHRoZSBwYXRjaCBpcyBib3RoIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgd2hpY2ggaXMgYSBrZXkgZmlyc3Qgc3RlcC4gTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBhZmZlY3RlZC4gQmFzZWQgb24gdGhlIGRpZmYsIG15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAuXG5cbldhaXQgYSBtaW51dGUsIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCAqaGFzKiBiZWVuIG1vZGlmaWVkLCBzbyB0aGF0IGRlZmluaXRlbHkgbmVlZHMgdG8gYmUgbGlzdGVkIHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gQW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGlzICpuZXcqLCB3aGljaCBtYWtlcyBpdCBhIGNyaXRpY2FsIGFkZGl0aW9uIGFuZCBhbHNvIG5lZWRzIHRvIGJlIGluIGBGb2N1c1N5bWJvbHNgLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0sIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvdWNoZWQgaGVyZT9cblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBUaGUgcGF0Y2ggYWRkcyBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQgbW9kaWZpZXMgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgLCBhcyBwcmV2aW91c2x5IG5vdGVkLiBJdCBsb29rcyBsaWtlIGBuZnRfY3RfbW9kdWxlX2luaXRgIGFuZCBgbmZ0X2N0X21vZHVsZV9leGl0YCBoYXZlIGFsc28gYmVlbiBtb2RpZmllZC4gSG93ZXZlciwgdGhvc2UgYXJlIGluaXQvZXhpdCBmdW5jdGlvbnMsIHNvIHRoZXkgYXJlIG5vdCBhcyBjZW50cmFsIHRvIG15IGNvbmNlcm4uXG5cbk5leHQsIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuIEFyZSBgTkZUX0NUYCBhbmQgYE5GX05BVGAgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlncz8gTGV0IG1lIHNlZeKApiBgTkZUX0NUYCBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tgLCBhbmQgYE5GX05BVGAgYWxzbyBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tgLiBTbywgd2l0aCBgTkZUX0NUYCBhbmQgYE5GX05BVGAgZW5hYmxlZCwgSSBzaG91bGQgaGF2ZSBldmVyeXRoaW5nIEkgbmVlZC4gVGhhdCdzIGdvb2QuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgbW9kaWZpY2F0aW9uIHRvIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNgIGZvciBhbnkgcG90ZW50aWFsIG92ZXJzaWdodC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nLCBhbmQgdGhhdCBhbGwgdGhlIGNyaXRpY2FsIHBpZWNlcyBhcmUgd2VsbCB1bmRlcnN0b29kIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU4NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTo1Nzo0NS4xNTM4NDg1NTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwOTI0MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZnRfY3QuYz0xMzAxPXN0YXRpYyB2b2lkIG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICp0aGlzKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzEwLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTMxMTpzdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzEyLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9MTM3OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9vYmplY3Rfb3BzIG5mdF9jdF9leHBlY3Rfb2JqX29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4MS1cXHQuc2l6ZVxcdFxcdD0gc2l6ZW9mKHN0cnVjdCBuZnRfY3RfZXhwZWN0X29iaiksXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzgyOlxcdC5ldmFsXFx0XFx0PSBuZnRfY3RfZXhwZWN0X29ial9ldmFsLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4My1cXHQuaW5pdFxcdFxcdD0gbmZ0X2N0X2V4cGVjdF9vYmpfaW5pdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6NTc6NDUuMjk0NzgyMDc1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxOTE3NDAxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBsYW4gZm9yIGBuZnRfY3RfZXhwZWN0X29ial9vcHNgIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIGZ1bmN0aW9uIGlzIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgYG5mdF9jdF9leHBlY3Rfb2JqX29wc2AsIHdoaWNoIG1lYW5zIGl04oCZcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIG5mdGFibGVzLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHBhdGNoIGFwcGVhcnMgZnVuY3Rpb25hbCwgc28gaXQncyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBmb2xsb3dpbmcga2V5IHN5bWJvbHM6IGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCwgb2YgY291cnNlLCBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAuIEknbGwgbmVlZCB0byBjb25maWd1cmUgbXkgZnV6emluZyBzZXR1cCBjb3JyZWN0bHkuIEJhc2VkIG9uIHRoZSBjb250ZXh0LCBJIHNob3VsZCBlbnN1cmUgSSBoYXZlIGBORlRfQ1RgIGFuZCBgTkZfTkFUYCBlbmFibGVkIGluIG15IGtlcm5lbCBjb25maWd1cmF0aW9uLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBkb3VibGUtY2hlY2sgaWYgYENPTkZJR19ORl9OQVRgIGlzIHRoZSBleGFjdCBjb25maWd1cmF0aW9uIG9wdGlvbiB1c2VkIHdpdGhpbiB0aGUgcGF0Y2ggaXRzZWxmLCBhbmQgdGhhdCBgQ09ORklHX05GVF9DVGAgaXMgdGhlIGNvbmZpZyBvcHRpb24gZm9yIGBuZnRfY3QuY2AuIFRoaXMgd2lsbCBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcyBpbiB0aGUgdGVzdGluZyBlbnZpcm9ubWVudC4gSSdsbCB0YWtlIGEgcXVpY2sgbG9vayB0byB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTk3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjQ5LjUxMzk2MDEwOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1MTAzNjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9OQVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTM5OD1jb25maWcgTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDA3OmNvbmZpZyBORl9OQVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyMTpjb25maWcgTkZfTkFUX0ZUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjItXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyNjpjb25maWcgTkZfTkFUX0lSQ1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzMTpjb25maWcgTkZfTkFUX1NJUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzItXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzNjpjb25maWcgTkZfTkFUX1RGVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDE6Y29uZmlnIE5GX05BVF9SRURJUkVDVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDItXFx0Ym9vbFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0NDpjb25maWcgTkZfTkFUX01BU1FVRVJBREVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ1LVxcdGJvb2xcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDc6Y29uZmlnIE5GX05BVF9PVlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ4LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6NTc6NDkuNzU5MDc1NjI0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NzI2NjEzNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbk9rYXksIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uLCBhbmQgdGhlIG5hbWUgYE5GX05BVGAgaXMgZGVmaW5pdGVseSByaW5naW5nIGEgYmVsbC4gTGV0J3MganVzdCBjb25maXJtIHRoYXQgdGhhdCdzIHRoZSBwcmVjaXNlIG1vZHVsZSBuYW1lIHdlJ3JlIGRlYWxpbmcgd2l0aDsgbm8gbmVlZCB0byBiZSBzbG9wcHkgd2l0aCB0aGUgZGV0YWlscywgZXZlbiBpZiBpdCBzZWVtcyBvYnZpb3VzLlxuXG5Ob3csIGxldCdzIHBpdm90IGFuZCBjcm9zcy1yZWZlcmVuY2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgYENPTkZJR19ORlRfQ1RgIGlzIGVuYWJsZWQuIFRoYXQgcGFydGljdWxhciBjb25maWcgb3B0aW9uIGlzIGNydWNpYWwgZm9yIGNlcnRhaW4gbW9kZXJuIE5ldGZpbHRlciBmZWF0dXJlcywgYW5kIGl0IG5lZWRzIHRvIGJlIHByZXNlbnQgZm9yIHRoZSBmdW5jdGlvbmFsaXR5IEknbSBhc3N1bWluZy4gVmVyaWZpY2F0aW9uIGlzIGtleSBiZWZvcmUgbW92aW5nIGZvcndhcmQsIHNvIEknbGwgY2hlY2sgdGhhdCBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUyMSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjUyLjYzMTc0Nzc4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNjE2NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORlRfQ1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTQ4NT1jb25maWcgTkZUX05VTUdFTlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDkxOmNvbmZpZyBORlRfQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDkyLVxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjUyLjc2MjM3ODY1NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTgzMjU2NjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBORlRfQ1RgIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBqdXN0IHJldmlld2VkIHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIHRoZSBuYW1lIGBORlRfQ1RgIGlzIHNwb3Qgb24uIFRoYXQncyB0aGUgY29ycmVjdCBpZGVudGlmaWVyIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkuXG5cblRoZSBsb2dpYyBoZXJlIGlzIHNvdW5kOiB0aGV5J3ZlIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLCBhbmQgbW9kaWZpZWQgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIHRvIGxldmVyYWdlIHRoaXMgbmV3IGZ1bmN0aW9uLiBUaGUga2V5IHBvaW50IGlzIHRoYXQgdGhpcyBjaGFuZ2UgKm9ubHkqIGhhcHBlbnMgd2hlbiBgQ09ORklHX05GX05BVGAgaXMgYWN0aXZlLCBhbmQgdGhlIHNwZWNpZmljIGNvbm5lY3Rpb24gaGFzIE5BVCBhcHBsaWVkLiBUaGlzIGlzIGEgdGFyZ2V0ZWQgbW9kaWZpY2F0aW9uIHRvIHRoZSBOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggTkFUIGV4cGVjdGF0aW9ucywgYW5kLCBjcml0aWNhbGx5LCBpdCdzIGFsbCBhY2Nlc3NpYmxlIHRocm91Z2ggbmZ0YWJsZXMuIEJlY2F1c2Ugb2YgdGhpcyBhZGRlZCBmdW5jdGlvbmFsaXR5IEkgY2FuIHNlZSB0aGF0IHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgZnV6emVkLiBUaGUgY2hhbmdlcyBhcmUgdmVyeSBjbGVhciwgc28gdGhlcmUgaXMgbm8gYW1iaWd1aXR5LlxuXG5JJ20gZ29pbmcgdG8gZ2V0IG9uIHRoZSBwaG9uZSBhbmQgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4MDcsIk91dHB1dFRva2VucyI6MTQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjU4Ljk0NTY0MDMwNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NTg4MDkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZUX0NUXCIsXG4gICAgXCJORl9OQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJcIixcbiAgICBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZUX0NUXCIsXG4gICAgXCJORl9OQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJcIixcbiAgICBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowmxmdv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 01:26:27 +0000 UTC FinishedAt: 2026-07-01 01:58:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CT", "NF_NAT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CT", "NF_NAT" ], "series_id": "aa7ee45c-e91b-4f13-aeb7-595536eda1c6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nft_ct_nat_follow_master", "nft_ct_expect_obj_eval" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DVCYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXImIzM0OywKICAgICYjMzQ7bmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhNGM2YTM2NjI5ZjdhYTM4YmMzNDQ0NzBkMDNmNTAzYWRhOGYxM2UxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwMTo1NzoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuaW5kZXggMDNhODhjNzdlMGYwMjguLmI5ZGM0N2I2Y2E5MzMyIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuQEAgLTEyOTcsNiAmIzQzOzEyOTcsMTcgQEAgc3RhdGljIGludCBuZnRfY3RfZXhwZWN0X29ial9kdW1wKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4mIzQzO3N0YXRpYyB2b2lkIG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICp0aGlzKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiAqZXhwZm47XG4mIzQzO1xuJiM0MztcdGV4cGZuID0gbmZfY3RfaGVscGVyX2V4cGVjdGZuX2ZpbmRfYnlfbmFtZShcJiMzNDtuYXQtZm9sbG93LW1hc3RlclwmIzM0Oyk7XG4mIzQzO1x0aWYgKGV4cGZuKVxuJiM0MztcdFx0ZXhwZm4tXHUwMDNlZXhwZWN0Zm4oY3QsIHRoaXMpO1xuJiM0Mzt9XG4mIzQzOyNlbmRpZlxuJiM0MztcbiBzdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4gXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcbkBAIC0xMzQyLDYgJiM0MzsxMzUzLDEzIEBAIHN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbiBcdFx0ICAgICAgICAgIHByaXYtXHUwMDNlbDRwcm90bywgTlVMTCwgXHUwMDI2cHJpdi1cdTAwM2VkcG9ydCk7XG4gXHRleHAtXHUwMDNldGltZW91dCAmIzQzOz0gcHJpdi1cdTAwM2V0aW1lb3V0O1xuIFxuJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuJiM0MztcdGlmIChjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSykge1xuJiM0MztcdFx0ZXhwLVx1MDAzZXNhdmVkX3Byb3RvLnRjcC5wb3J0ID0gcHJpdi1cdTAwM2VkcG9ydDtcbiYjNDM7XHRcdGV4cC1cdTAwM2VkaXIgPSAhZGlyO1xuJiM0MztcdFx0ZXhwLVx1MDAzZWV4cGVjdGZuID0gbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyO1xuJiM0MztcdH1cbiYjNDM7I2VuZGlmXG4gXHRpZiAobmZfY3RfZXhwZWN0X3JlbGF0ZWQoZXhwLCAwKSAhPSAwKVxuIFx0XHRyZWdzLVx1MDAzZXZlcmRpY3QuY29kZSA9IE5GX0RST1A7XG4gXG5AQCAtMTM3NSw2ICYjNDM7MTM5MywxMSBAQCBzdGF0aWMgc3RydWN0IG5mdF9vYmplY3RfdHlwZSBuZnRfY3RfZXhwZWN0X29ial90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XG4gXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiB9O1xuIFxuJiM0MztzdGF0aWMgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiBuZnRfY3RfbmF0IF9fcmVhZF9tb3N0bHkgPSB7XG4mIzQzO1x0Lm5hbWUgPSBcJiMzNDtuZnRfY3QtZm9sbG93LW1hc3RlclwmIzM0OyxcbiYjNDM7XHQuZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXIsXG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxuIHtcbiBcdGludCBlcnI7XG5AQCAtMTQwMCw2ICYjNDM7MTQyMyw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxuIFx0ZXJyID0gbmZ0X3JlZ2lzdGVyX29iaihcdTAwMjZuZnRfY3RfdGltZW91dF9vYmpfdHlwZSk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRnb3RvIGVycjQ7XG4mIzQzOyNlbmRpZlxuJiM0MzsjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuJiM0MztcdG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9yZWdpc3RlcihcdTAwMjZuZnRfY3RfbmF0KTtcbiAjZW5kaWZcbiBcdHJldHVybiAwO1xuIFxuQEAgLTE0MjUsNiAmIzQzOzE0NTEsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKVxuIFx0bmZ0X3VucmVnaXN0ZXJfb2JqKFx1MDAyNm5mdF9jdF9oZWxwZXJfb2JqX3R5cGUpO1xuIFx0bmZ0X3VucmVnaXN0ZXJfZXhwcihcdTAwMjZuZnRfbm90cmFja190eXBlKTtcbiBcdG5mdF91bnJlZ2lzdGVyX2V4cHIoXHUwMDI2bmZ0X2N0X3R5cGUpO1xuJiM0MztcbiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcbiYjNDM7XHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fdW5yZWdpc3RlcihcdTAwMjZuZnRfY3RfbmF0KTtcbiYjNDM7XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7XHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZGVzdHJveShcdTAwMjZuZnRfY3RfbmF0KTtcbiYjNDM7XHRzeW5jaHJvbml6ZV9yY3UoKTtcbiYjNDM7I2VuZGlmXG4gfVxuIFxuIG1vZHVsZV9pbml0KG5mdF9jdF9tb2R1bGVfaW5pdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZUX0NUJiMzNDssCiAgICAmIzM0O05GX05BVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mdF9jdF9uYXRfZm9sbG93X21hc3RlciYjMzQ7LAogICAgJiMzNDtuZnRfY3RfZXhwZWN0X29ial9ldmFsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgYW5kIG1vZGlmaWVzIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCB0byB1c2UgaXQgd2hlbiBgQ09ORklHX05GX05BVGAgaXMgZW5hYmxlZCBhbmQgdGhlIGNvbm5lY3Rpb24gaGFzIE5BVCBhcHBsaWVkLiBUaGlzIGFkZHMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBmb3IgTkFUIGV4cGVjdGF0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBuZnRhYmxlcyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTRjNmEzNjYyOWY3YWEzOGJjMzQ0NDcwZDAzZjUwM2FkYThmMTNlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDEgMDE6NTc6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuYwppbmRleCAwM2E4OGM3N2UwZjAyOC4uYjlkYzQ3YjZjYTkzMzIgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZnRfY3QuYwpAQCAtMTI5Nyw2ICYjNDM7MTI5NywxNyBAQCBzdGF0aWMgaW50IG5mdF9jdF9leHBlY3Rfb2JqX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gMDsKIH0KIAomIzQzOyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpCiYjNDM7c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuICpleHBmbjsKJiM0MzsKJiM0MzsJZXhwZm4gPSBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZmluZF9ieV9uYW1lKCYjMzQ7bmF0LWZvbGxvdy1tYXN0ZXImIzM0Oyk7CiYjNDM7CWlmIChleHBmbikKJiM0MzsJCWV4cGZuLSZndDtleHBlY3RmbihjdCwgdGhpcyk7CiYjNDM7fQomIzQzOyNlbmRpZgomIzQzOwogc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLAogCQkJCSAgIHN0cnVjdCBuZnRfcmVncyAqcmVncywKIAkJCQkgICBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCkKQEAgLTEzNDIsNiAmIzQzOzEzNTMsMTMgQEAgc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLAogCQkgICAgICAgICAgcHJpdi0mZ3Q7bDRwcm90bywgTlVMTCwgJmFtcDtwcml2LSZndDtkcG9ydCk7CiAJZXhwLSZndDt0aW1lb3V0ICYjNDM7PSBwcml2LSZndDt0aW1lb3V0OwogCiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVCkKJiM0MzsJaWYgKGN0LSZndDtzdGF0dXMgJmFtcDsgSVBTX05BVF9NQVNLKSB7CiYjNDM7CQlleHAtJmd0O3NhdmVkX3Byb3RvLnRjcC5wb3J0ID0gcHJpdi0mZ3Q7ZHBvcnQ7CiYjNDM7CQlleHAtJmd0O2RpciA9ICFkaXI7CiYjNDM7CQlleHAtJmd0O2V4cGVjdGZuID0gbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyOwomIzQzOwl9CiYjNDM7I2VuZGlmCiAJaWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMCkKIAkJcmVncy0mZ3Q7dmVyZGljdC5jb2RlID0gTkZfRFJPUDsKIApAQCAtMTM3NSw2ICYjNDM7MTM5MywxMSBAQCBzdGF0aWMgc3RydWN0IG5mdF9vYmplY3RfdHlwZSBuZnRfY3RfZXhwZWN0X29ial90eXBlIF9fcmVhZF9tb3N0bHkgPSB7CiAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogfTsKIAomIzQzO3N0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIG5mdF9jdF9uYXQgX19yZWFkX21vc3RseSA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O25mdF9jdC1mb2xsb3ctbWFzdGVyJiMzNDssCiYjNDM7CS5leHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3RlciwKJiM0Mzt9OwomIzQzOwogc3RhdGljIGludCBfX2luaXQgbmZ0X2N0X21vZHVsZV9pbml0KHZvaWQpCiB7CiAJaW50IGVycjsKQEAgLTE0MDAsNiAmIzQzOzE0MjMsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBuZnRfY3RfbW9kdWxlX2luaXQodm9pZCkKIAllcnIgPSBuZnRfcmVnaXN0ZXJfb2JqKCZhbXA7bmZ0X2N0X3RpbWVvdXRfb2JqX3R5cGUpOwogCWlmIChlcnIgJmx0OyAwKQogCQlnb3RvIGVycjQ7CiYjNDM7I2VuZGlmCiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVCkKJiM0MzsJbmZfY3RfaGVscGVyX2V4cGVjdGZuX3JlZ2lzdGVyKCZhbXA7bmZ0X2N0X25hdCk7CiAjZW5kaWYKIAlyZXR1cm4gMDsKIApAQCAtMTQyNSw2ICYjNDM7MTQ1MSwxMyBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbmZ0X2N0X21vZHVsZV9leGl0KHZvaWQpCiAJbmZ0X3VucmVnaXN0ZXJfb2JqKCZhbXA7bmZ0X2N0X2hlbHBlcl9vYmpfdHlwZSk7CiAJbmZ0X3VucmVnaXN0ZXJfZXhwcigmYW1wO25mdF9ub3RyYWNrX3R5cGUpOwogCW5mdF91bnJlZ2lzdGVyX2V4cHIoJmFtcDtuZnRfY3RfdHlwZSk7CiYjNDM7CiYjNDM7I2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVCkKJiM0MzsJbmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoJmFtcDtuZnRfY3RfbmF0KTsKJiM0MzsJc3luY2hyb25pemVfcmN1KCk7CiYjNDM7CW5mX2N0X2hlbHBlcl9leHBlY3Rmbl9kZXN0cm95KCZhbXA7bmZ0X2N0X25hdCk7CiYjNDM7CXN5bmNocm9uaXplX3JjdSgpOwomIzQzOyNlbmRpZgogfQogCiBtb2R1bGVfaW5pdChuZnRfY3RfbW9kdWxlX2luaXQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgbGFuZGVkIGluIGBuZXQvbmV0ZmlsdGVyL25mdF9jdC5jYC4gSXQgc2VlbXMgdG8gaW50cm9kdWNlIGEgbmV3IGZ1bmN0aW9uLCBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCwgYW5kIHJlZ2lzdGVycyBpdCBhcyBhbiBgZXhwZWN0Zm5gLiAgVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYXMgYGV4cGVjdGZuYCBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGhhbmRsaW5nIHJlbGF0ZWQgY29ubmVjdGlvbnMsIHdoaWNoIGlzIGEgY29yZSBwYXJ0IG9mIE5BVCBmdW5jdGlvbmFsaXR5LgoKVGhlIHBhdGNoIGFsc28gcmV2aXNlcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAsIGFuZCB0aGUga2V5IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIHVzYWdlIG9mIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLiBUaGUgdHJpZ2dlciBpcyB3aGVuIGBDT05GSUdfTkZfTkFUYCBpcyBlbmFibGVkICphbmQqIHRoZSBjb25uZWN0aW9uJiMzOTtzIHN0YXR1cyAoYGN0LSZndDtzdGF0dXNgKSBoYXMgdGhlIGBJUFNfTkFUX01BU0tgIGJpdCBzZXQuICBUaGlzIHNvdW5kcyBsaWtlIGl0JiMzOTtzIHNwZWNpZmljYWxseSBhYm91dCBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBOQVQsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBmdW5jdGlvbiBuYW1lLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGNvZGUgaXMgZGVhbGluZyB3aXRoIHRoZSBjYXNlcyB3aGVyZSBOQVQgaXMgaW52b2x2ZWQgYW5kIG5lZWRzIHRvIGtlZXAgdHJhY2sgb2YgcmVsYXRlZCBjb25uZWN0aW9ucy4KCk15IHByaW1hcnkgdGFzayBpcyB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnRleHQuIEkgaGF2ZSB0byBjb25maXJtIHRoYXQgYENPTkZJR19ORl9OQVRgIGlzIGluZGVlZCByZXF1aXJlZCwgYW5kIHRoYXQgYG5mdF9jdC5jYCBpcyBjb21waWxlZCB1bmRlciBgQ09ORklHX05GVF9DVGAuIFNvLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGFuZCBNYWtlZmlsZXMgaW4gYG5ldC9uZXRmaWx0ZXJgIGRpcmVjdG9yeSB0byBjb25maXJtIHRoZXNlIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgYGdyZXBgIHRvIHF1aWNrbHkgZmluZCBob3cgdGhlc2UgYXJlIGNvbmZpZ3VyZWQuIEdpdmVuIHRoYXQgdGhpcyBkZWFscyB3aXRoIGNvbm5lY3Rpb24gdHJhY2tpbmcsIE5BVCwgYW5kIHJlbGF0ZWQgY29ubmVjdGlvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIGJlaGF2aW9yLCBlc3BlY2lhbGx5IGluIGEgTkFUIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GVF9DVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz00ODU9Y29uZmlnIE5GVF9OVU1HRU5cbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDkwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ5MTpjb25maWcgTkZUX0NUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDkyLVx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTEwMD1lbmRpZlxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDEtXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEwMjppZmRlZiBDT05GSUdfTkZUX0NUXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwMy1pZmRlZiBDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkVcbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTExMT1vYmotJChDT05GSUdfTkZUX05VTUdFTilcdCYjNDM7PSBuZnRfbnVtZ2VuLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTEyOm9iai0kKENPTkZJR19ORlRfQ1QpXHRcdCYjNDM7PSBuZnRfY3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMTMtb2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXHQmIzQzOz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXG4tLVxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5jPTIwMz1zdGF0aWMgdm9pZCBleHByX2NhbGxfb3BzX2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2NvcmUuYy0yMjItXHRYKGUsIG5mdF9sb29rdXBfZXZhbCk7XG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmM6MjIzOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORlRfQ1QpXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmMtMjI0LVx0WChlLCBuZnRfY3RfZ2V0X2Zhc3RfZXZhbCk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYz00MD1zdGF0aWMgdTY0IG5mdF9jdF9nZXRfZXZhbF9jb3VudGVyKGNvbnN0IHN0cnVjdCBuZl9jb25uX2NvdW50ZXIgKmMsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NC1cdGlmIChkIFx1MDAzYyBJUF9DVF9ESVJfTUFYKVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NTpcdFx0cmV0dXJuIGsgPT0gTkZUX0NUX0JZVEVTID8gYXRvbWljNjRfcmVhZChcdTAwMjZjW2RdLmJ5dGVzKSA6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ2LVx0XHRcdFx0XHQgICBhdG9taWM2NF9yZWFkKFx1MDAyNmNbZF0ucGFja2V0cyk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYz01Mj1zdGF0aWMgdm9pZCBuZnRfY3RfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNjctXHRzd2l0Y2ggKHByaXYtXHUwMDNla2V5KSB7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4Olx0Y2FzZSBORlRfQ1RfU1RBVEU6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTY5LVx0XHRpZiAoY3QpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy04NC1cdHN3aXRjaCAocHJpdi1cdTAwM2VrZXkpIHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6ODU6XHRjYXNlIE5GVF9DVF9ESVJFQ1RJT046XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTg2LVx0XHRuZnRfcmVnX3N0b3JlOChkZXN0LCBDVElORk8yRElSKGN0aW5mbykpO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy04Ny1cdFx0cmV0dXJuO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo4ODpcdGNhc2UgTkZUX0NUX1NUQVRVUzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtODktXHRcdCpkZXN0ID0gY3QtXHUwMDNlc3RhdHVzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtOTEtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo5MjpcdGNhc2UgTkZUX0NUX01BUks6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTkzLVx0XHQqZGVzdCA9IFJFQURfT05DRShjdC1cdTAwM2VtYXJrKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTk2LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUktcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6OTc6XHRjYXNlIE5GVF9DVF9TRUNNQVJLOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy05OC1cdFx0KmRlc3QgPSBjdC1cdTAwM2VzZWNtYXJrO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTAwLSNlbmRpZlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMDE6XHRjYXNlIE5GVF9DVF9FWFBJUkFUSU9OOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMDItXHRcdCpkZXN0ID0gamlmZmllc190b19tc2VjcyhuZl9jdF9leHBpcmVzKGN0KSk7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEwMy1cdFx0cmV0dXJuO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMDQ6XHRjYXNlIE5GVF9DVF9IRUxQRVI6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEwNS1cdFx0aWYgKGN0LVx1MDAzZW1hc3RlciA9PSBOVUxMKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTE1LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMTY6XHRjYXNlIE5GVF9DVF9MQUJFTFM6IHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTE3LVx0XHRzdHJ1Y3QgbmZfY29ubl9sYWJlbHMgKmxhYmVscyA9IG5mX2N0X2xhYmVsc19maW5kKGN0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEyNS0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTI2Olx0Y2FzZSBORlRfQ1RfQllURVM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjEyNzpcdGNhc2UgTkZUX0NUX1BLVFM6IHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTI4LVx0XHRjb25zdCBzdHJ1Y3QgbmZfY29ubl9hY2N0ICphY2N0ID0gbmZfY29ubl9hY2N0X2ZpbmQoY3QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM2LVx0fVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzc6XHRjYXNlIE5GVF9DVF9BVkdQS1Q6IHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4LVx0XHRjb25zdCBzdHJ1Y3QgbmZfY29ubl9hY2N0ICphY2N0ID0gbmZfY29ubl9hY2N0X2ZpbmQoY3QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTQyLVx0XHRcdHBjbnQgPSBuZnRfY3RfZ2V0X2V2YWxfY291bnRlcihhY2N0LVx1MDAzZWNvdW50ZXIsXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE0MzpcdFx0XHRcdFx0XHQgICAgICAgTkZUX0NUX1BLVFMsIHByaXYtXHUwMDNlZGlyKTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTQ0LVx0XHRcdGJjbnQgPSBuZnRfY3RfZ2V0X2V2YWxfY291bnRlcihhY2N0LVx1MDAzZWNvdW50ZXIsXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE0NTpcdFx0XHRcdFx0XHQgICAgICAgTkZUX0NUX0JZVEVTLCBwcml2LVx1MDAzZWRpcik7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE0Ni1cdFx0XHRpZiAocGNudCAhPSAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTUyLVx0fVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNTM6XHRjYXNlIE5GVF9DVF9MM1BST1RPQ09MOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNTQtXHRcdG5mdF9yZWdfc3RvcmU4KGRlc3QsIG5mX2N0X2wzbnVtKGN0KSk7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE1NS1cdFx0cmV0dXJuO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNTY6XHRjYXNlIE5GVF9DVF9QUk9UT0NPTDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTU3LVx0XHRuZnRfcmVnX3N0b3JlOChkZXN0LCBuZl9jdF9wcm90b251bShjdCkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTU5LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE2MDpcdGNhc2UgTkZUX0NUX1pPTkU6IHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTYxLVx0XHRjb25zdCBzdHJ1Y3QgbmZfY29ubnRyYWNrX3pvbmUgKnpvbmUgPSBuZl9jdF96b25lKGN0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE3Mi0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTczOlx0Y2FzZSBORlRfQ1RfSUQ6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE3NC1cdFx0KmRlc3QgPSBuZl9jdF9nZXRfaWQoY3QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTgxLVx0c3dpdGNoIChwcml2LVx1MDAzZWtleSkge1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxODI6XHRjYXNlIE5GVF9DVF9TUkM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE4My1cdFx0bWVtY3B5KGRlc3QsIHR1cGxlLVx1MDAzZXNyYy51My5hbGwsIHByaXYtXHUwMDNlbGVuKTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTg0LVx0XHRyZXR1cm47XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE4NTpcdGNhc2UgTkZUX0NUX0RTVDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTg2LVx0XHRtZW1jcHkoZGVzdCwgdHVwbGUtXHUwMDNlZHN0LnUzLmFsbCwgcHJpdi1cdTAwM2VsZW4pO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODctXHRcdHJldHVybjtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTg4Olx0Y2FzZSBORlRfQ1RfUFJPVE9fU1JDOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODktXHRcdG5mdF9yZWdfc3RvcmUxNihkZXN0LCAoX19mb3JjZSB1MTYpdHVwbGUtXHUwMDNlc3JjLnUuYWxsKTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTkwLVx0XHRyZXR1cm47XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE5MTpcdGNhc2UgTkZUX0NUX1BST1RPX0RTVDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTkyLVx0XHRuZnRfcmVnX3N0b3JlMTYoZGVzdCwgKF9fZm9yY2UgdTE2KXR1cGxlLVx1MDAzZWRzdC51LmFsbCk7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE5My1cdFx0cmV0dXJuO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxOTQ6XHRjYXNlIE5GVF9DVF9TUkNfSVA6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE5NS1cdFx0aWYgKG5mX2N0X2wzbnVtKGN0KSAhPSBORlBST1RPX0lQVjQpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xOTgtXHRcdHJldHVybjtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTk5Olx0Y2FzZSBORlRfQ1RfRFNUX0lQOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0yMDAtXHRcdGlmIChuZl9jdF9sM251bShjdCkgIT0gTkZQUk9UT19JUFY0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjAzLVx0XHRyZXR1cm47XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjIwNDpcdGNhc2UgTkZUX0NUX1NSQ19JUDY6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTIwNS1cdFx0aWYgKG5mX2N0X2wzbnVtKGN0KSAhPSBORlBST1RPX0lQVjYpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0yMDgtXHRcdHJldHVybjtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MjA5Olx0Y2FzZSBORlRfQ1RfRFNUX0lQNjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjEwLVx0XHRpZiAobmZfY3RfbDNudW0oY3QpICE9IE5GUFJPVE9fSVBWNilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTI3ND1zdGF0aWMgdm9pZCBuZnRfY3Rfc2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjkxLSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX01BUktcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MjkyOlx0Y2FzZSBORlRfQ1RfTUFSSzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjkzLVx0XHRpZiAoUkVBRF9PTkNFKGN0LVx1MDAzZW1hcmspICE9IHZhbHVlKSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0yOTktI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSS1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzozMDA6XHRjYXNlIE5GVF9DVF9TRUNNQVJLOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMDEtXHRcdGlmIChjdC1cdTAwM2VzZWNtYXJrICE9IHZhbHVlKSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMDctI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMwODpcdGNhc2UgTkZUX0NUX0xBQkVMUzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMzA5LVx0XHRuZl9jb25ubGFiZWxzX3JlcGxhY2UoY3QsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMTUtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMxNjpcdGNhc2UgTkZUX0NUX0VWRU5UTUFTSzoge1xubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zMTctXHRcdHN0cnVjdCBuZl9jb25udHJhY2tfZWNhY2hlICplID0gbmZfY3RfZWNhY2hlX2ZpbmQoY3QpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9MzgyPXN0YXRpYyB2b2lkIF9fbmZ0X2N0X2dldF9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfY3QgKnByaXYpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zODQtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjM4NTpcdGlmIChwcml2LVx1MDAzZWtleSA9PSBORlRfQ1RfTEFCRUxTKVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zODYtXHRcdG5mX2Nvbm5sYWJlbHNfcHV0KGN0eC1cdTAwM2VuZXQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9MzkwPXN0YXRpYyBpbnQgbmZ0X2N0X2dldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MDAtXHRzd2l0Y2ggKHByaXYtXHUwMDNla2V5KSB7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQwMTpcdGNhc2UgTkZUX0NUX0RJUkVDVElPTjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDAyLVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dICE9IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MDUtXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MDY6XHRjYXNlIE5GVF9DVF9TVEFURTpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDA3Olx0Y2FzZSBORlRfQ1RfU1RBVFVTOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MDgtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTUFSS1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MDk6XHRjYXNlIE5GVF9DVF9NQVJLOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MTAtI2VuZGlmXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQxMS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQxMjpcdGNhc2UgTkZUX0NUX1NFQ01BUks6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQxMy0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDE0Olx0Y2FzZSBORlRfQ1RfRVhQSVJBVElPTjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDE1LVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dICE9IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MTktI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQyMDpcdGNhc2UgTkZUX0NUX0xBQkVMUzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDIxLVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dICE9IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MjktI2VuZGlmXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQzMDpcdGNhc2UgTkZUX0NUX0hFTFBFUjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDMxLVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dICE9IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MzUtXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQzNjpcdGNhc2UgTkZUX0NUX0wzUFJPVE9DT0w6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQzNzpcdGNhc2UgTkZUX0NUX1BST1RPQ09MOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MzgtXHRcdC8qIEZvciBjb21wYXRpYmlsaXR5LCBkbyBub3QgcmVwb3J0IGVycm9yIGlmIE5GVEFfQ1RfRElSRUNUSU9OXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NDItXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NDM6XHRjYXNlIE5GVF9DVF9TUkM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ0NDpcdGNhc2UgTkZUX0NUX0RTVDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDQ1LVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dID09IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NjEtXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NjI6XHRjYXNlIE5GVF9DVF9TUkNfSVA6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ2MzpcdGNhc2UgTkZUX0NUX0RTVF9JUDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDY0LVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dID09IE5VTEwpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NjgtXHRcdGJyZWFrO1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0Njk6XHRjYXNlIE5GVF9DVF9TUkNfSVA2OlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NzA6XHRjYXNlIE5GVF9DVF9EU1RfSVA2OlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NzEtXHRcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gPT0gTlVMTClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ3NS1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ3NjpcdGNhc2UgTkZUX0NUX1BST1RPX1NSQzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDc3Olx0Y2FzZSBORlRfQ1RfUFJPVE9fRFNUOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NzgtXHRcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gPT0gTlVMTClcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ4MS1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ4MjpcdGNhc2UgTkZUX0NUX0JZVEVTOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0ODM6XHRjYXNlIE5GVF9DVF9QS1RTOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0ODQ6XHRjYXNlIE5GVF9DVF9BVkdQS1Q6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ4NS1cdFx0bGVuID0gc2l6ZW9mKHU2NCk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00ODctI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDg4Olx0Y2FzZSBORlRfQ1RfWk9ORTpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDg5LVx0XHRsZW4gPSBzaXplb2YodTE2KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ5MS0jZW5kaWZcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDkyOlx0Y2FzZSBORlRfQ1RfSUQ6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ5My1cdFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTUyMy1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTI0Olx0aWYgKHByaXYtXHUwMDNla2V5ID09IE5GVF9DVF9CWVRFUyB8fFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1MjU6XHQgICAgcHJpdi1cdTAwM2VrZXkgPT0gTkZUX0NUX1BLVFMgIHx8XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjUyNjpcdCAgICBwcml2LVx1MDAzZWtleSA9PSBORlRfQ1RfQVZHUEtUKVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01MjctXHRcdG5mX2N0X3NldF9hY2N0KGN0eC1cdTAwM2VuZXQsIHRydWUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NTM1PXN0YXRpYyB2b2lkIF9fbmZ0X2N0X3NldF9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfY3QgKnByaXYpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01MzgtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjUzOTpcdGNhc2UgTkZUX0NUX0xBQkVMUzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTQwLVx0XHRuZl9jb25ubGFiZWxzX3B1dChjdHgtXHUwMDNlbmV0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU0My0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19aT05FU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1NDQ6XHRjYXNlIE5GVF9DVF9aT05FOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01NDUtXHRcdG5mX3F1ZXVlX25mX2hvb2tfZHJvcChjdHgtXHUwMDNlbmV0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTU1Nz1zdGF0aWMgaW50IG5mdF9jdF9zZXRfaW5pdChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTY4LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX01BUktcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTY5Olx0Y2FzZSBORlRfQ1RfTUFSSzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTcwLVx0XHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTc1LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1NzY6XHRjYXNlIE5GVF9DVF9MQUJFTFM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU3Ny1cdFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU4NS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19aT05FU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1ODY6XHRjYXNlIE5GVF9DVF9aT05FOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01ODctXHRcdG11dGV4X2xvY2soXHUwMDI2bmZ0X2N0X3BjcHVfbXV0ZXgpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTk3LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0VWRU5UU1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1OTg6XHRjYXNlIE5GVF9DVF9FVkVOVE1BU0s6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU5OS1cdFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTYwNC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjYwNTpcdGNhc2UgTkZUX0NUX1NFQ01BUks6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTYwNi1cdFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTY2MT1zdGF0aWMgaW50IG5mdF9jdF9nZXRfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNjcxLVx0c3dpdGNoIChwcml2LVx1MDAzZWtleSkge1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2NzI6XHRjYXNlIE5GVF9DVF9TUkM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3MzpcdGNhc2UgTkZUX0NUX0RTVDpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Njc0Olx0Y2FzZSBORlRfQ1RfU1JDX0lQOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2NzU6XHRjYXNlIE5GVF9DVF9EU1RfSVA6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3NjpcdGNhc2UgTkZUX0NUX1NSQ19JUDY6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3NzpcdGNhc2UgTkZUX0NUX0RTVF9JUDY6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3ODpcdGNhc2UgTkZUX0NUX1BST1RPX1NSQzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Njc5Olx0Y2FzZSBORlRfQ1RfUFJPVE9fRFNUOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy02ODAtXHRcdGlmIChubGFfcHV0X3U4KHNrYiwgTkZUQV9DVF9ESVJFQ1RJT04sIHByaXYtXHUwMDNlZGlyKSlcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTY4Mi1cdFx0YnJlYWs7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4MzpcdGNhc2UgTkZUX0NUX0JZVEVTOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2ODQ6XHRjYXNlIE5GVF9DVF9QS1RTOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2ODU6XHRjYXNlIE5GVF9DVF9BVkdQS1Q6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4NjpcdGNhc2UgTkZUX0NUX1pPTkU6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTY4Ny1cdFx0aWYgKHByaXYtXHUwMDNlZGlyIFx1MDAzYyBJUF9DVF9ESVJfTUFYIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NzAxPXN0YXRpYyBpbnQgbmZ0X2N0X3NldF9kdW1wKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03MTEtXHRzd2l0Y2ggKHByaXYtXHUwMDNla2V5KSB7XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjcxMjpcdGNhc2UgTkZUX0NUX1pPTkU6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTcxMy1cdFx0aWYgKHByaXYtXHUwMDNlZGlyIFx1MDAzYyBJUF9DVF9ESVJfTUFYIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NzY5PW5mdF9jdF9zZWxlY3Rfb3BzKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03ODItXHRcdHN3aXRjaCAoaykge1xubmV0L25ldGZpbHRlci9uZnRfY3QuYzo3ODM6XHRcdGNhc2UgTkZUX0NUX1NUQVRFOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo3ODQ6XHRcdGNhc2UgTkZUX0NUX0RJUkVDVElPTjpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Nzg1Olx0XHRjYXNlIE5GVF9DVF9TVEFUVVM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjc4NjpcdFx0Y2FzZSBORlRfQ1RfTUFSSzpcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Nzg3Olx0XHRjYXNlIE5GVF9DVF9TRUNNQVJLOlxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03ODgtXHRcdFx0cmV0dXJuIFx1MDAyNm5mdF9jdF9nZXRfZmFzdF9vcHM7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03OTUtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVNcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Nzk2Olx0XHRpZiAobmxhX2dldF9iZTMyKHRiW05GVEFfQ1RfS0VZXSkgPT0gaHRvbmwoTkZUX0NUX1pPTkUpKVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03OTctXHRcdFx0cmV0dXJuIFx1MDAyNm5mdF9jdF9zZXRfem9uZV9vcHM7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jOjI6I2lmIElTX0VOQUJMRUQoQ09ORklHX05GVF9DVClcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy0zLSNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGZpbHRlci9uZl90YWJsZXMuaFx1MDAzZVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYz03PXZvaWQgbmZ0X2N0X2dldF9mYXN0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy0xOS1cdHN3aXRjaCAocHJpdi1cdTAwM2VrZXkpIHtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYzoyMDpcdGNhc2UgTkZUX0NUX1NUQVRFOlxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTIxLVx0XHRpZiAoY3QpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTM4LVx0c3dpdGNoIChwcml2LVx1MDAzZWtleSkge1xubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jOjM5Olx0Y2FzZSBORlRfQ1RfRElSRUNUSU9OOlxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTQwLVx0XHRuZnRfcmVnX3N0b3JlOChkZXN0LCBDVElORk8yRElSKGN0aW5mbykpO1xubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTQxLVx0XHRyZXR1cm47XG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmM6NDI6XHRjYXNlIE5GVF9DVF9TVEFUVVM6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtNDMtXHRcdCpkZXN0ID0gY3QtXHUwMDNlc3RhdHVzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy00NS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmM6NDY6XHRjYXNlIE5GVF9DVF9NQVJLOlxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTQ3LVx0XHQqZGVzdCA9IGN0LVx1MDAzZW1hcms7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTUwLSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1NFQ01BUktcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYzo1MTpcdGNhc2UgTkZUX0NUX1NFQ01BUks6XG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtNTItXHRcdCpkZXN0ID0gY3QtXHUwMDNlc2VjbWFyaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjA5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgZnVuY3Rpb24gaXMgdXNlZC4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYENPTkZJR19ORlRfQ1RgIGFuZCBgQ09ORklHX05GX05BVGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSB3aGV0aGVyIGBDT05GSUdfTkZfTkFUYCBpcyBhIGJvb2xlYW4gb3IgdHJpc3RhdGUsIGFuZCBpZiBpdCBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBzZWUgdGhlIGNvZGUgaXMgaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNgLCB3aGljaCBtYWtlcyBzZW5zZS4KCk5vdyBJJiMzOTttIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoLiBUaGUgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgZnVuY3Rpb24gaXMgY2xlYXJseSBndWFyZGVkIGJ5IGAjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKWAsIHdoaWNoIGNvbmZpcm1zIGl0cyBkZXBlbmRlbmN5LiBTbywgaXQgcmVxdWlyZXMgYE5GX05BVGAgYW5kIGBORlRfQ1RgLiBFeGNlbGxlbnQuCgpOZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKiBpbiBhIHByYWN0aWNhbCBzY2VuYXJpby4gSXQmIzM5O3MgcmVnaXN0ZXJlZCBhcyBhbiBgZXhwZWN0Zm5gLCB3aGljaCB0ZWxscyBtZSBpdCYjMzk7cyBwYXJ0IG9mIGFuIGV4cGVjdGF0aW9uIGhhbmRsaW5nIGNoYWluLiBMZXQmIzM5O3Mgc2VlIGhvdy4gYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIGNhbGxzIGBuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApYC4gQWhhISBBbmQsIGlmIGBjdC0mZ3Q7c3RhdHVzICZhbXA7IElQU19OQVRfTUFTS2AgaXMgdHJ1ZSwgdGhlbiBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgKmV4cGxpY2l0bHkqIHNldHMgYGV4cC0mZ3Q7ZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXI7YC4gT2theSwgc28gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgZ2V0cyBjYWxsZWQgd2hlbiB0aGUgZXhwZWN0YXRpb24gaXMgZnVsZmlsbGVkLgoKRmluYWxseSwgSSBzZWUgdGhhdCB3aXRoaW4gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAsIHRoZSBmdW5jdGlvbiBjYWxscyBgbmZfY3RfaGVscGVyX2V4cGVjdGZuX2ZpbmRfYnlfbmFtZSgmIzM0O25hdC1mb2xsb3ctbWFzdGVyJiMzNDspYCBhbmQgZXhlY3V0ZXMgaXQuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIE5vdywgSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYCYjMzQ7bmF0LWZvbGxvdy1tYXN0ZXImIzM0O2AgZXhpc3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25hdC1mb2xsb3ctbWFzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jPTExNjk9c3RhdGljIHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gZm9sbG93X21hc3Rlcl9uYXQgPSB7XG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmM6MTE3MDpcdC5uYW1lXHRcdD0gXCYjMzQ7bmF0LWZvbGxvdy1tYXN0ZXJcJiMzNDssXG5uZXQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMtMTE3MS1cdC5leHBlY3Rmblx0PSBuZl9uYXRfZm9sbG93X21hc3Rlcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMDE9c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzA0LVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzA1Olx0ZXhwZm4gPSBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZmluZF9ieV9uYW1lKFwmIzM0O25hdC1mb2xsb3ctbWFzdGVyXCYjMzQ7KTtcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTMwNi1cdGlmIChleHBmbilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU4NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoZSBjb2RlIGNoYW5nZSBpcyB3aXRoaW4gYG5mX25hdF9jb3JlLmNgIOKAkyBnb29kLCBpdCYjMzk7cyBkZWZpbml0ZWx5IGluIGEgcGxhY2Ugd2hlcmUgSSBleHBlY3QgaXQgdG8gYmUuIFRoaXMgbWVhbnMgdGhlIHBhdGNoIGlzIGJvdGggZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlLCB3aGljaCBpcyBhIGtleSBmaXJzdCBzdGVwLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGFmZmVjdGVkLiBCYXNlZCBvbiB0aGUgZGlmZiwgbXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgYW5kIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYC4KCldhaXQgYSBtaW51dGUsIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCAqaGFzKiBiZWVuIG1vZGlmaWVkLCBzbyB0aGF0IGRlZmluaXRlbHkgbmVlZHMgdG8gYmUgbGlzdGVkIHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gQW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGlzICpuZXcqLCB3aGljaCBtYWtlcyBpdCBhIGNyaXRpY2FsIGFkZGl0aW9uIGFuZCBhbHNvIG5lZWRzIHRvIGJlIGluIGBGb2N1c1N5bWJvbHNgLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0sIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvdWNoZWQgaGVyZT8KCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIFRoZSBwYXRjaCBhZGRzIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAsIGFzIHByZXZpb3VzbHkgbm90ZWQuIEl0IGxvb2tzIGxpa2UgYG5mdF9jdF9tb2R1bGVfaW5pdGAgYW5kIGBuZnRfY3RfbW9kdWxlX2V4aXRgIGhhdmUgYWxzbyBiZWVuIG1vZGlmaWVkLiBIb3dldmVyLCB0aG9zZSBhcmUgaW5pdC9leGl0IGZ1bmN0aW9ucywgc28gdGhleSBhcmUgbm90IGFzIGNlbnRyYWwgdG8gbXkgY29uY2Vybi4KCk5leHQsIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuIEFyZSBgTkZUX0NUYCBhbmQgYE5GX05BVGAgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlncz8gTGV0IG1lIHNlZeKApiBgTkZUX0NUYCBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tgLCBhbmQgYE5GX05BVGAgYWxzbyBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tgLiBTbywgd2l0aCBgTkZUX0NUYCBhbmQgYE5GX05BVGAgZW5hYmxlZCwgSSBzaG91bGQgaGF2ZSBldmVyeXRoaW5nIEkgbmVlZC4gVGhhdCYjMzk7cyBnb29kLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgbW9kaWZpY2F0aW9uIHRvIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNgIGZvciBhbnkgcG90ZW50aWFsIG92ZXJzaWdodC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nLCBhbmQgdGhhdCBhbGwgdGhlIGNyaXRpY2FsIHBpZWNlcyBhcmUgd2VsbCB1bmRlcnN0b29kIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9jdF9leHBlY3Rfb2JqX2V2YWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMDE9c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzEwLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzExOnN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTMxMi1cdFx0XHRcdCAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzNzk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZnRfb2JqZWN0X29wcyBuZnRfY3RfZXhwZWN0X29ial9vcHMgPSB7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzgxLVx0LnNpemVcdFx0PSBzaXplb2Yoc3RydWN0IG5mdF9jdF9leHBlY3Rfb2JqKSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTM4MjpcdC5ldmFsXHRcdD0gbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4My1cdC5pbml0XHRcdD0gbmZ0X2N0X2V4cGVjdF9vYmpfaW5pdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU5NwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBsYW4gZm9yIGBuZnRfY3RfZXhwZWN0X29ial9vcHNgIEV2YWx1YXRpb24qKgoKT2theSwgc28gdGhlIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCBmdW5jdGlvbiBpcyB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGBuZnRfY3RfZXhwZWN0X29ial9vcHNgLCB3aGljaCBtZWFucyBpdOKAmXMgZGVmaW5pdGVseSByZWFjaGFibGUgdGhyb3VnaCBuZnRhYmxlcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoaXMgcGF0Y2ggYXBwZWFycyBmdW5jdGlvbmFsLCBzbyBpdCYjMzk7cyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgZm9sbG93aW5nIGtleSBzeW1ib2xzOiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQsIG9mIGNvdXJzZSwgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpZ3VyZSBteSBmdXp6aW5nIHNldHVwIGNvcnJlY3RseS4gQmFzZWQgb24gdGhlIGNvbnRleHQsIEkgc2hvdWxkIGVuc3VyZSBJIGhhdmUgYE5GVF9DVGAgYW5kIGBORl9OQVRgIGVuYWJsZWQgaW4gbXkga2VybmVsIGNvbmZpZ3VyYXRpb24uCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgZG91YmxlLWNoZWNrIGlmIGBDT05GSUdfTkZfTkFUYCBpcyB0aGUgZXhhY3QgY29uZmlndXJhdGlvbiBvcHRpb24gdXNlZCB3aXRoaW4gdGhlIHBhdGNoIGl0c2VsZiwgYW5kIHRoYXQgYENPTkZJR19ORlRfQ1RgIGlzIHRoZSBjb25maWcgb3B0aW9uIGZvciBgbmZ0X2N0LmNgLiBUaGlzIHdpbGwgZW5zdXJlIHRoZXJlIGFyZSBubyBzdXJwcmlzZXMgaW4gdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQuIEkmIzM5O2xsIHRha2UgYSBxdWljayBsb29rIHRvIHZlcmlmeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zOTg9Y29uZmlnIE5FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1Rcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA2LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQwNzpjb25maWcgTkZfTkFUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDE1LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQxNy1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQyMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MjE6Y29uZmlnIE5GX05BVF9GVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjItXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjUtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDI2OmNvbmZpZyBORl9OQVRfSVJDXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDI3LVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzMTpjb25maWcgTkZfTkFUX1NJUFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMi1cdHRyaXN0YXRlXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzNS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzY6Y29uZmlnIE5GX05BVF9URlRQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM3LVx0dHJpc3RhdGVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0MTpjb25maWcgTkZfTkFUX1JFRElSRUNUXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQyLVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0My1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDQ6Y29uZmlnIE5GX05BVF9NQVNRVUVSQURFXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ1LVx0Ym9vbFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ0Ni1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDc6Y29uZmlnIE5GX05BVF9PVlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNTIxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBDb25maWd1cmF0aW9uIENoZWNrKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiwgYW5kIHRoZSBuYW1lIGBORl9OQVRgIGlzIGRlZmluaXRlbHkgcmluZ2luZyBhIGJlbGwuIExldCYjMzk7cyBqdXN0IGNvbmZpcm0gdGhhdCB0aGF0JiMzOTtzIHRoZSBwcmVjaXNlIG1vZHVsZSBuYW1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGg7IG5vIG5lZWQgdG8gYmUgc2xvcHB5IHdpdGggdGhlIGRldGFpbHMsIGV2ZW4gaWYgaXQgc2VlbXMgb2J2aW91cy4KCk5vdywgbGV0JiMzOTtzIHBpdm90IGFuZCBjcm9zcy1yZWZlcmVuY2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgYENPTkZJR19ORlRfQ1RgIGlzIGVuYWJsZWQuIFRoYXQgcGFydGljdWxhciBjb25maWcgb3B0aW9uIGlzIGNydWNpYWwgZm9yIGNlcnRhaW4gbW9kZXJuIE5ldGZpbHRlciBmZWF0dXJlcywgYW5kIGl0IG5lZWRzIHRvIGJlIHByZXNlbnQgZm9yIHRoZSBmdW5jdGlvbmFsaXR5IEkmIzM5O20gYXNzdW1pbmcuIFZlcmlmaWNhdGlvbiBpcyBrZXkgYmVmb3JlIG1vdmluZyBmb3J3YXJkLCBzbyBJJiMzOTtsbCBjaGVjayB0aGF0IG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORlRfQ1QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDg1PWNvbmZpZyBORlRfTlVNR0VOXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5MC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0OTE6Y29uZmlnIE5GVF9DVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5Mi1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODA3CgkJCQkJCQlvdXRwdXQ6IDE0NQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgTkZUX0NUYCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBqdXN0IHJldmlld2VkIHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIHRoZSBuYW1lIGBORlRfQ1RgIGlzIHNwb3Qgb24uIFRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgaWRlbnRpZmllciBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LgoKVGhlIGxvZ2ljIGhlcmUgaXMgc291bmQ6IHRoZXkmIzM5O3ZlIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLCBhbmQgbW9kaWZpZWQgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIHRvIGxldmVyYWdlIHRoaXMgbmV3IGZ1bmN0aW9uLiBUaGUga2V5IHBvaW50IGlzIHRoYXQgdGhpcyBjaGFuZ2UgKm9ubHkqIGhhcHBlbnMgd2hlbiBgQ09ORklHX05GX05BVGAgaXMgYWN0aXZlLCBhbmQgdGhlIHNwZWNpZmljIGNvbm5lY3Rpb24gaGFzIE5BVCBhcHBsaWVkLiBUaGlzIGlzIGEgdGFyZ2V0ZWQgbW9kaWZpY2F0aW9uIHRvIHRoZSBOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggTkFUIGV4cGVjdGF0aW9ucywgYW5kLCBjcml0aWNhbGx5LCBpdCYjMzk7cyBhbGwgYWNjZXNzaWJsZSB0aHJvdWdoIG5mdGFibGVzLiBCZWNhdXNlIG9mIHRoaXMgYWRkZWQgZnVuY3Rpb25hbGl0eSBJIGNhbiBzZWUgdGhhdCB0aGlzIGlzIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGZ1enplZC4gVGhlIGNoYW5nZXMgYXJlIHZlcnkgY2xlYXIsIHNvIHRoZXJlIGlzIG5vIGFtYmlndWl0eS4KCkkmIzM5O20gZ29pbmcgdG8gZ2V0IG9uIHRoZSBwaG9uZSBhbmQgY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DVCYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXImIzM0OywKICAgICYjMzQ7bmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DVCYjMzQ7LAogICAgJiMzNDtORl9OQVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXImIzM0OywKICAgICYjMzQ7bmZ0X2N0X2V4cGVjdF9vYmpfZXZhbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTo1NzoyNi41MzY2NDk1ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzM2NDkwODIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORlRfQ1RcIixcbiAgICBcIk5GX05BVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mdF9jdF9uYXRfZm9sbG93X21hc3RlclwiLFxuICAgIFwibmZ0X2N0X2V4cGVjdF9vYmpfZXZhbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgYW5kIG1vZGlmaWVzIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCB0byB1c2UgaXQgd2hlbiBgQ09ORklHX05GX05BVGAgaXMgZW5hYmxlZCBhbmQgdGhlIGNvbm5lY3Rpb24gaGFzIE5BVCBhcHBsaWVkLiBUaGlzIGFkZHMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBmb3IgTkFUIGV4cGVjdGF0aW9ucywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBuZnRhYmxlcyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6NTc6MjYuNTM2NjgxNTc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDIwNzA5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNGM2YTM2NjI5ZjdhYTM4YmMzNDQ0NzBkMDNmNTAzYWRhOGYxM2UxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDEgMDE6NTc6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfY3QuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNcXG5pbmRleCAwM2E4OGM3N2UwZjAyOC4uYjlkYzQ3YjZjYTkzMzIgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNcXG5AQCAtMTI5Nyw2ICsxMjk3LDE3IEBAIHN0YXRpYyBpbnQgbmZ0X2N0X2V4cGVjdF9vYmpfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcXG4rc3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IG5mX2N0X2hlbHBlcl9leHBlY3RmbiAqZXhwZm47XFxuK1xcbitcXHRleHBmbiA9IG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9maW5kX2J5X25hbWUoXFxcIm5hdC1mb2xsb3ctbWFzdGVyXFxcIik7XFxuK1xcdGlmIChleHBmbilcXG4rXFx0XFx0ZXhwZm4tXFx1MDAzZWV4cGVjdGZuKGN0LCB0aGlzKTtcXG4rfVxcbisjZW5kaWZcXG4rXFxuIHN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdClcXG5AQCAtMTM0Miw2ICsxMzUzLDEzIEBAIHN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcXG4gXFx0XFx0ICAgICAgICAgIHByaXYtXFx1MDAzZWw0cHJvdG8sIE5VTEwsIFxcdTAwMjZwcml2LVxcdTAwM2VkcG9ydCk7XFxuIFxcdGV4cC1cXHUwMDNldGltZW91dCArPSBwcml2LVxcdTAwM2V0aW1lb3V0O1xcbiBcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcXG4rXFx0aWYgKGN0LVxcdTAwM2VzdGF0dXMgXFx1MDAyNiBJUFNfTkFUX01BU0spIHtcXG4rXFx0XFx0ZXhwLVxcdTAwM2VzYXZlZF9wcm90by50Y3AucG9ydCA9IHByaXYtXFx1MDAzZWRwb3J0O1xcbitcXHRcXHRleHAtXFx1MDAzZWRpciA9ICFkaXI7XFxuK1xcdFxcdGV4cC1cXHUwMDNlZXhwZWN0Zm4gPSBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXI7XFxuK1xcdH1cXG4rI2VuZGlmXFxuIFxcdGlmIChuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApICE9IDApXFxuIFxcdFxcdHJlZ3MtXFx1MDAzZXZlcmRpY3QuY29kZSA9IE5GX0RST1A7XFxuIFxcbkBAIC0xMzc1LDYgKzEzOTMsMTEgQEAgc3RhdGljIHN0cnVjdCBuZnRfb2JqZWN0X3R5cGUgbmZ0X2N0X2V4cGVjdF9vYmpfdHlwZSBfX3JlYWRfbW9zdGx5ID0ge1xcbiBcXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbiB9O1xcbiBcXG4rc3RhdGljIHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gbmZ0X2N0X25hdCBfX3JlYWRfbW9zdGx5ID0ge1xcbitcXHQubmFtZSA9IFxcXCJuZnRfY3QtZm9sbG93LW1hc3RlclxcXCIsXFxuK1xcdC5leHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcixcXG4rfTtcXG4rXFxuIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxcbiB7XFxuIFxcdGludCBlcnI7XFxuQEAgLTE0MDAsNiArMTQyMyw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG5mdF9jdF9tb2R1bGVfaW5pdCh2b2lkKVxcbiBcXHRlcnIgPSBuZnRfcmVnaXN0ZXJfb2JqKFxcdTAwMjZuZnRfY3RfdGltZW91dF9vYmpfdHlwZSk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIGVycjQ7XFxuKyNlbmRpZlxcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxcbitcXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fcmVnaXN0ZXIoXFx1MDAyNm5mdF9jdF9uYXQpO1xcbiAjZW5kaWZcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0xNDI1LDYgKzE0NTEsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKVxcbiBcXHRuZnRfdW5yZWdpc3Rlcl9vYmooXFx1MDAyNm5mdF9jdF9oZWxwZXJfb2JqX3R5cGUpO1xcbiBcXHRuZnRfdW5yZWdpc3Rlcl9leHByKFxcdTAwMjZuZnRfbm90cmFja190eXBlKTtcXG4gXFx0bmZ0X3VucmVnaXN0ZXJfZXhwcihcXHUwMDI2bmZ0X2N0X3R5cGUpO1xcbitcXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcXG4rXFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX3VucmVnaXN0ZXIoXFx1MDAyNm5mdF9jdF9uYXQpO1xcbitcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4rXFx0bmZfY3RfaGVscGVyX2V4cGVjdGZuX2Rlc3Ryb3koXFx1MDAyNm5mdF9jdF9uYXQpO1xcbitcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG4rI2VuZGlmXFxuIH1cXG4gXFxuIG1vZHVsZV9pbml0KG5mdF9jdF9tb2R1bGVfaW5pdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjI3LjI3OTgxMzY3NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2MjE3MTg3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZUX0NUXCIsXG4gICAgXCJORl9OQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJcIixcbiAgICBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTRjNmEzNjYyOWY3YWEzOGJjMzQ0NDcwZDAzZjUwM2FkYThmMTNlMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDE6NTc6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mdF9jdC5jIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuaW5kZXggMDNhODhjNzdlMGYwMjguLmI5ZGM0N2I2Y2E5MzMyIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZnRfY3QuY1xuQEAgLTEyOTcsNiArMTI5NywxNyBAQCBzdGF0aWMgaW50IG5mdF9jdF9leHBlY3Rfb2JqX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiAwO1xuIH1cbiBcbisjaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfTkFUKVxuK3N0YXRpYyB2b2lkIG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICp0aGlzKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBuZl9jdF9oZWxwZXJfZXhwZWN0Zm4gKmV4cGZuO1xuK1xuK1x0ZXhwZm4gPSBuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fZmluZF9ieV9uYW1lKFwibmF0LWZvbGxvdy1tYXN0ZXJcIik7XG4rXHRpZiAoZXhwZm4pXG4rXHRcdGV4cGZuLVx1MDAzZWV4cGVjdGZuKGN0LCB0aGlzKTtcbit9XG4rI2VuZGlmXG4rXG4gc3RhdGljIHZvaWQgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbChzdHJ1Y3QgbmZ0X29iamVjdCAqb2JqLFxuIFx0XHRcdFx0ICAgc3RydWN0IG5mdF9yZWdzICpyZWdzLFxuIFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QpXG5AQCAtMTM0Miw2ICsxMzUzLDEzIEBAIHN0YXRpYyB2b2lkIG5mdF9jdF9leHBlY3Rfb2JqX2V2YWwoc3RydWN0IG5mdF9vYmplY3QgKm9iaixcbiBcdFx0ICAgICAgICAgIHByaXYtXHUwMDNlbDRwcm90bywgTlVMTCwgXHUwMDI2cHJpdi1cdTAwM2VkcG9ydCk7XG4gXHRleHAtXHUwMDNldGltZW91dCArPSBwcml2LVx1MDAzZXRpbWVvdXQ7XG4gXG4rI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClcbitcdGlmIChjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTSykge1xuK1x0XHRleHAtXHUwMDNlc2F2ZWRfcHJvdG8udGNwLnBvcnQgPSBwcml2LVx1MDAzZWRwb3J0O1xuK1x0XHRleHAtXHUwMDNlZGlyID0gIWRpcjtcbitcdFx0ZXhwLVx1MDAzZWV4cGVjdGZuID0gbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyO1xuK1x0fVxuKyNlbmRpZlxuIFx0aWYgKG5mX2N0X2V4cGVjdF9yZWxhdGVkKGV4cCwgMCkgIT0gMClcbiBcdFx0cmVncy1cdTAwM2V2ZXJkaWN0LmNvZGUgPSBORl9EUk9QO1xuIFxuQEAgLTEzNzUsNiArMTM5MywxMSBAQCBzdGF0aWMgc3RydWN0IG5mdF9vYmplY3RfdHlwZSBuZnRfY3RfZXhwZWN0X29ial90eXBlIF9fcmVhZF9tb3N0bHkgPSB7XG4gXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiB9O1xuIFxuK3N0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIG5mdF9jdF9uYXQgX19yZWFkX21vc3RseSA9IHtcbitcdC5uYW1lID0gXCJuZnRfY3QtZm9sbG93LW1hc3RlclwiLFxuK1x0LmV4cGVjdGZuID0gbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyLFxuK307XG4rXG4gc3RhdGljIGludCBfX2luaXQgbmZ0X2N0X21vZHVsZV9pbml0KHZvaWQpXG4ge1xuIFx0aW50IGVycjtcbkBAIC0xNDAwLDYgKzE0MjMsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBuZnRfY3RfbW9kdWxlX2luaXQodm9pZClcbiBcdGVyciA9IG5mdF9yZWdpc3Rlcl9vYmooXHUwMDI2bmZ0X2N0X3RpbWVvdXRfb2JqX3R5cGUpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0Z290byBlcnI0O1xuKyNlbmRpZlxuKyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4rXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fcmVnaXN0ZXIoXHUwMDI2bmZ0X2N0X25hdCk7XG4gI2VuZGlmXG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0xNDI1LDYgKzE0NTEsMTMgQEAgc3RhdGljIHZvaWQgX19leGl0IG5mdF9jdF9tb2R1bGVfZXhpdCh2b2lkKVxuIFx0bmZ0X3VucmVnaXN0ZXJfb2JqKFx1MDAyNm5mdF9jdF9oZWxwZXJfb2JqX3R5cGUpO1xuIFx0bmZ0X3VucmVnaXN0ZXJfZXhwcihcdTAwMjZuZnRfbm90cmFja190eXBlKTtcbiBcdG5mdF91bnJlZ2lzdGVyX2V4cHIoXHUwMDI2bmZ0X2N0X3R5cGUpO1xuK1xuKyNpZiBJU19FTkFCTEVEKENPTkZJR19ORl9OQVQpXG4rXHRuZl9jdF9oZWxwZXJfZXhwZWN0Zm5fdW5yZWdpc3RlcihcdTAwMjZuZnRfY3RfbmF0KTtcbitcdHN5bmNocm9uaXplX3JjdSgpO1xuK1x0bmZfY3RfaGVscGVyX2V4cGVjdGZuX2Rlc3Ryb3koXHUwMDI2bmZ0X2N0X25hdCk7XG4rXHRzeW5jaHJvbml6ZV9yY3UoKTtcbisjZW5kaWZcbiB9XG4gXG4gbW9kdWxlX2luaXQobmZ0X2N0X21vZHVsZV9pbml0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjI3LjI3OTgxNzg5NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODc4Mzg5OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIENvbm5lY3Rpb24gVHJhY2tpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBsYW5kZWQgaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNgLiBJdCBzZWVtcyB0byBpbnRyb2R1Y2UgYSBuZXcgZnVuY3Rpb24sIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLCBhbmQgcmVnaXN0ZXJzIGl0IGFzIGFuIGBleHBlY3RmbmAuICBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIGFzIGBleHBlY3RmbmAgZnVuY3Rpb25zIGFyZSBjcnVjaWFsIGZvciBoYW5kbGluZyByZWxhdGVkIGNvbm5lY3Rpb25zLCB3aGljaCBpcyBhIGNvcmUgcGFydCBvZiBOQVQgZnVuY3Rpb25hbGl0eS5cblxuVGhlIHBhdGNoIGFsc28gcmV2aXNlcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAsIGFuZCB0aGUga2V5IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIHVzYWdlIG9mIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLiBUaGUgdHJpZ2dlciBpcyB3aGVuIGBDT05GSUdfTkZfTkFUYCBpcyBlbmFibGVkICphbmQqIHRoZSBjb25uZWN0aW9uJ3Mgc3RhdHVzIChgY3QtXHUwMDNlc3RhdHVzYCkgaGFzIHRoZSBgSVBTX05BVF9NQVNLYCBiaXQgc2V0LiAgVGhpcyBzb3VuZHMgbGlrZSBpdCdzIHNwZWNpZmljYWxseSBhYm91dCBjb25uZWN0aW9uIHRyYWNraW5nIGFuZCBOQVQsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBmdW5jdGlvbiBuYW1lLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIGNvZGUgaXMgZGVhbGluZyB3aXRoIHRoZSBjYXNlcyB3aGVyZSBOQVQgaXMgaW52b2x2ZWQgYW5kIG5lZWRzIHRvIGtlZXAgdHJhY2sgb2YgcmVsYXRlZCBjb25uZWN0aW9ucy5cblxuTXkgcHJpbWFyeSB0YXNrIGlzIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBhbmQgY29udGV4dC4gSSBoYXZlIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX05GX05BVGAgaXMgaW5kZWVkIHJlcXVpcmVkLCBhbmQgdGhhdCBgbmZ0X2N0LmNgIGlzIGNvbXBpbGVkIHVuZGVyIGBDT05GSUdfTkZUX0NUYC4gU28sIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBhbmQgTWFrZWZpbGVzIGluIGBuZXQvbmV0ZmlsdGVyYCBkaXJlY3RvcnkgdG8gY29uZmlybSB0aGVzZSBkZXBlbmRlbmNpZXMuIEknbGwgbmVlZCB0byB1c2UgYGdyZXBgIHRvIHF1aWNrbHkgZmluZCBob3cgdGhlc2UgYXJlIGNvbmZpZ3VyZWQuIEdpdmVuIHRoYXQgdGhpcyBkZWFscyB3aXRoIGNvbm5lY3Rpb24gdHJhY2tpbmcsIE5BVCwgYW5kIHJlbGF0ZWQgY29ubmVjdGlvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIGJlaGF2aW9yLCBlc3BlY2lhbGx5IGluIGEgTkFUIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6NTc6MzIuMDY3NjYzODMzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjM0OTk2NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZUX0NUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00ODU9Y29uZmlnIE5GVF9OVU1HRU5cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00OTAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ5MTpjb25maWcgTkZUX0NUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5Mi1cXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMDA9ZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTEwMS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjEwMjppZmRlZiBDT05GSUdfTkZUX0NUXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMDMtaWZkZWYgQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTExMT1vYmotJChDT05GSUdfTkZUX05VTUdFTilcXHQrPSBuZnRfbnVtZ2VuLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjExMjpvYmotJChDT05GSUdfTkZUX0NUKVxcdFxcdCs9IG5mdF9jdC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMTMtb2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXFx0Kz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmM9MjAzPXN0YXRpYyB2b2lkIGV4cHJfY2FsbF9vcHNfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmMtMjIyLVxcdFgoZSwgbmZ0X2xvb2t1cF9ldmFsKTtcXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19jb3JlLmM6MjIzOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORlRfQ1QpXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfY29yZS5jLTIyNC1cXHRYKGUsIG5mdF9jdF9nZXRfZmFzdF9ldmFsKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NDA9c3RhdGljIHU2NCBuZnRfY3RfZ2V0X2V2YWxfY291bnRlcihjb25zdCBzdHJ1Y3QgbmZfY29ubl9jb3VudGVyICpjLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NC1cXHRpZiAoZCBcXHUwMDNjIElQX0NUX0RJUl9NQVgpXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NTpcXHRcXHRyZXR1cm4gayA9PSBORlRfQ1RfQllURVMgPyBhdG9taWM2NF9yZWFkKFxcdTAwMjZjW2RdLmJ5dGVzKSA6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00Ni1cXHRcXHRcXHRcXHRcXHQgICBhdG9taWM2NF9yZWFkKFxcdTAwMjZjW2RdLnBhY2tldHMpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz01Mj1zdGF0aWMgdm9pZCBuZnRfY3RfZ2V0X2V2YWwoY29uc3Qgc3RydWN0IG5mdF9leHByICpleHByLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy02Ny1cXHRzd2l0Y2ggKHByaXYtXFx1MDAzZWtleSkge1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Njg6XFx0Y2FzZSBORlRfQ1RfU1RBVEU6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy02OS1cXHRcXHRpZiAoY3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTg0LVxcdHN3aXRjaCAocHJpdi1cXHUwMDNla2V5KSB7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo4NTpcXHRjYXNlIE5GVF9DVF9ESVJFQ1RJT046XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy04Ni1cXHRcXHRuZnRfcmVnX3N0b3JlOChkZXN0LCBDVElORk8yRElSKGN0aW5mbykpO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtODctXFx0XFx0cmV0dXJuO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6ODg6XFx0Y2FzZSBORlRfQ1RfU1RBVFVTOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtODktXFx0XFx0KmRlc3QgPSBjdC1cXHUwMDNlc3RhdHVzO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy05MS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo5MjpcXHRjYXNlIE5GVF9DVF9NQVJLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtOTMtXFx0XFx0KmRlc3QgPSBSRUFEX09OQ0UoY3QtXFx1MDAzZW1hcmspO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy05Ni0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo5NzpcXHRjYXNlIE5GVF9DVF9TRUNNQVJLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtOTgtXFx0XFx0KmRlc3QgPSBjdC1cXHUwMDNlc2VjbWFyaztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTAwLSNlbmRpZlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTAxOlxcdGNhc2UgTkZUX0NUX0VYUElSQVRJT046XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMDItXFx0XFx0KmRlc3QgPSBqaWZmaWVzX3RvX21zZWNzKG5mX2N0X2V4cGlyZXMoY3QpKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEwMy1cXHRcXHRyZXR1cm47XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMDQ6XFx0Y2FzZSBORlRfQ1RfSEVMUEVSOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTA1LVxcdFxcdGlmIChjdC1cXHUwMDNlbWFzdGVyID09IE5VTEwpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTExNS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19MQUJFTFNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjExNjpcXHRjYXNlIE5GVF9DVF9MQUJFTFM6IHtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTExNy1cXHRcXHRzdHJ1Y3QgbmZfY29ubl9sYWJlbHMgKmxhYmVscyA9IG5mX2N0X2xhYmVsc19maW5kKGN0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTI1LSNlbmRpZlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTI2OlxcdGNhc2UgTkZUX0NUX0JZVEVTOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTI3OlxcdGNhc2UgTkZUX0NUX1BLVFM6IHtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEyOC1cXHRcXHRjb25zdCBzdHJ1Y3QgbmZfY29ubl9hY2N0ICphY2N0ID0gbmZfY29ubl9hY2N0X2ZpbmQoY3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzYtXFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTM3OlxcdGNhc2UgTkZUX0NUX0FWR1BLVDoge1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4LVxcdFxcdGNvbnN0IHN0cnVjdCBuZl9jb25uX2FjY3QgKmFjY3QgPSBuZl9jb25uX2FjY3RfZmluZChjdCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE0Mi1cXHRcXHRcXHRwY250ID0gbmZ0X2N0X2dldF9ldmFsX2NvdW50ZXIoYWNjdC1cXHUwMDNlY291bnRlcixcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE0MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgTkZUX0NUX1BLVFMsIHByaXYtXFx1MDAzZWRpcik7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNDQtXFx0XFx0XFx0YmNudCA9IG5mdF9jdF9nZXRfZXZhbF9jb3VudGVyKGFjY3QtXFx1MDAzZWNvdW50ZXIsXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNDU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIE5GVF9DVF9CWVRFUywgcHJpdi1cXHUwMDNlZGlyKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE0Ni1cXHRcXHRcXHRpZiAocGNudCAhPSAwKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNTItXFx0fVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTUzOlxcdGNhc2UgTkZUX0NUX0wzUFJPVE9DT0w6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNTQtXFx0XFx0bmZ0X3JlZ19zdG9yZTgoZGVzdCwgbmZfY3RfbDNudW0oY3QpKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE1NS1cXHRcXHRyZXR1cm47XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNTY6XFx0Y2FzZSBORlRfQ1RfUFJPVE9DT0w6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNTctXFx0XFx0bmZ0X3JlZ19zdG9yZTgoZGVzdCwgbmZfY3RfcHJvdG9udW0oY3QpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTU5LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX1pPTkVTXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNjA6XFx0Y2FzZSBORlRfQ1RfWk9ORToge1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTYxLVxcdFxcdGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfem9uZSAqem9uZSA9IG5mX2N0X3pvbmUoY3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNzItI2VuZGlmXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxNzM6XFx0Y2FzZSBORlRfQ1RfSUQ6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xNzQtXFx0XFx0KmRlc3QgPSBuZl9jdF9nZXRfaWQoY3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODEtXFx0c3dpdGNoIChwcml2LVxcdTAwM2VrZXkpIHtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE4MjpcXHRjYXNlIE5GVF9DVF9TUkM6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODMtXFx0XFx0bWVtY3B5KGRlc3QsIHR1cGxlLVxcdTAwM2VzcmMudTMuYWxsLCBwcml2LVxcdTAwM2VsZW4pO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTg0LVxcdFxcdHJldHVybjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE4NTpcXHRjYXNlIE5GVF9DVF9EU1Q6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODYtXFx0XFx0bWVtY3B5KGRlc3QsIHR1cGxlLVxcdTAwM2Vkc3QudTMuYWxsLCBwcml2LVxcdTAwM2VsZW4pO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTg3LVxcdFxcdHJldHVybjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE4ODpcXHRjYXNlIE5GVF9DVF9QUk9UT19TUkM6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xODktXFx0XFx0bmZ0X3JlZ19zdG9yZTE2KGRlc3QsIChfX2ZvcmNlIHUxNil0dXBsZS1cXHUwMDNlc3JjLnUuYWxsKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE5MC1cXHRcXHRyZXR1cm47XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxOTE6XFx0Y2FzZSBORlRfQ1RfUFJPVE9fRFNUOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTkyLVxcdFxcdG5mdF9yZWdfc3RvcmUxNihkZXN0LCAoX19mb3JjZSB1MTYpdHVwbGUtXFx1MDAzZWRzdC51LmFsbCk7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xOTMtXFx0XFx0cmV0dXJuO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTk0OlxcdGNhc2UgTkZUX0NUX1NSQ19JUDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTE5NS1cXHRcXHRpZiAobmZfY3RfbDNudW0oY3QpICE9IE5GUFJPVE9fSVBWNClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTk4LVxcdFxcdHJldHVybjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjE5OTpcXHRjYXNlIE5GVF9DVF9EU1RfSVA6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0yMDAtXFx0XFx0aWYgKG5mX2N0X2wzbnVtKGN0KSAhPSBORlBST1RPX0lQVjQpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTIwMy1cXHRcXHRyZXR1cm47XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoyMDQ6XFx0Y2FzZSBORlRfQ1RfU1JDX0lQNjpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTIwNS1cXHRcXHRpZiAobmZfY3RfbDNudW0oY3QpICE9IE5GUFJPVE9fSVBWNilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjA4LVxcdFxcdHJldHVybjtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjIwOTpcXHRjYXNlIE5GVF9DVF9EU1RfSVA2Olxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjEwLVxcdFxcdGlmIChuZl9jdF9sM251bShjdCkgIT0gTkZQUk9UT19JUFY2KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0yNzQ9c3RhdGljIHZvaWQgbmZ0X2N0X3NldF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjkxLSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjI5MjpcXHRjYXNlIE5GVF9DVF9NQVJLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMjkzLVxcdFxcdGlmIChSRUFEX09OQ0UoY3QtXFx1MDAzZW1hcmspICE9IHZhbHVlKSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTI5OS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzozMDA6XFx0Y2FzZSBORlRfQ1RfU0VDTUFSSzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMwMS1cXHRcXHRpZiAoY3QtXFx1MDAzZXNlY21hcmsgIT0gdmFsdWUpIHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMzA3LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMU1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MzA4OlxcdGNhc2UgTkZUX0NUX0xBQkVMUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMwOS1cXHRcXHRuZl9jb25ubGFiZWxzX3JlcGxhY2UoY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMxNS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19FVkVOVFNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjMxNjpcXHRjYXNlIE5GVF9DVF9FVkVOVE1BU0s6IHtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTMxNy1cXHRcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2VjYWNoZSAqZSA9IG5mX2N0X2VjYWNoZV9maW5kKGN0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9MzgyPXN0YXRpYyB2b2lkIF9fbmZ0X2N0X2dldF9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsIHN0cnVjdCBuZnRfY3QgKnByaXYpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTM4NC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19MQUJFTFNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjM4NTpcXHRpZiAocHJpdi1cXHUwMDNla2V5ID09IE5GVF9DVF9MQUJFTFMpXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0zODYtXFx0XFx0bmZfY29ubmxhYmVsc19wdXQoY3R4LVxcdTAwM2VuZXQpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz0zOTA9c3RhdGljIGludCBuZnRfY3RfZ2V0X2luaXQoY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDAwLVxcdHN3aXRjaCAocHJpdi1cXHUwMDNla2V5KSB7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MDE6XFx0Y2FzZSBORlRfQ1RfRElSRUNUSU9OOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDAyLVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gIT0gTlVMTClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDA1LVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDA2OlxcdGNhc2UgTkZUX0NUX1NUQVRFOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDA3OlxcdGNhc2UgTkZUX0NUX1NUQVRVUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQwOC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MDk6XFx0Y2FzZSBORlRfQ1RfTUFSSzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQxMC0jZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQxMS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MTI6XFx0Y2FzZSBORlRfQ1RfU0VDTUFSSzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQxMy0jZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQxNDpcXHRjYXNlIE5GVF9DVF9FWFBJUkFUSU9OOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDE1LVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gIT0gTlVMTClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDE5LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMU1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDIwOlxcdGNhc2UgTkZUX0NUX0xBQkVMUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQyMS1cXHRcXHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dICE9IE5VTEwpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQyOS0jZW5kaWZcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQzMDpcXHRjYXNlIE5GVF9DVF9IRUxQRVI6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MzEtXFx0XFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSAhPSBOVUxMKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00MzUtXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0MzY6XFx0Y2FzZSBORlRfQ1RfTDNQUk9UT0NPTDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQzNzpcXHRjYXNlIE5GVF9DVF9QUk9UT0NPTDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQzOC1cXHRcXHQvKiBGb3IgY29tcGF0aWJpbGl0eSwgZG8gbm90IHJlcG9ydCBlcnJvciBpZiBORlRBX0NUX0RJUkVDVElPTlxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00NDItXFx0XFx0YnJlYWs7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NDM6XFx0Y2FzZSBORlRfQ1RfU1JDOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDQ0OlxcdGNhc2UgTkZUX0NUX0RTVDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ0NS1cXHRcXHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dID09IE5VTEwpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ2MS1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ2MjpcXHRjYXNlIE5GVF9DVF9TUkNfSVA6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NjM6XFx0Y2FzZSBORlRfQ1RfRFNUX0lQOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDY0LVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gPT0gTlVMTClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDY4LVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDY5OlxcdGNhc2UgTkZUX0NUX1NSQ19JUDY6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0NzA6XFx0Y2FzZSBORlRfQ1RfRFNUX0lQNjpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ3MS1cXHRcXHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dID09IE5VTEwpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTQ3NS1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ3NjpcXHRjYXNlIE5GVF9DVF9QUk9UT19TUkM6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0Nzc6XFx0Y2FzZSBORlRfQ1RfUFJPVE9fRFNUOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDc4LVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0gPT0gTlVMTClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDgxLVxcdFxcdGJyZWFrO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDgyOlxcdGNhc2UgTkZUX0NUX0JZVEVTOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NDgzOlxcdGNhc2UgTkZUX0NUX1BLVFM6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0ODQ6XFx0Y2FzZSBORlRfQ1RfQVZHUEtUOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDg1LVxcdFxcdGxlbiA9IHNpemVvZih1NjQpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00ODctI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjQ4ODpcXHRjYXNlIE5GVF9DVF9aT05FOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNDg5LVxcdFxcdGxlbiA9IHNpemVvZih1MTYpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00OTEtI2VuZGlmXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo0OTI6XFx0Y2FzZSBORlRfQ1RfSUQ6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy00OTMtXFx0XFx0aWYgKHRiW05GVEFfQ1RfRElSRUNUSU9OXSlcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTIzLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTI0OlxcdGlmIChwcml2LVxcdTAwM2VrZXkgPT0gTkZUX0NUX0JZVEVTIHx8XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1MjU6XFx0ICAgIHByaXYtXFx1MDAzZWtleSA9PSBORlRfQ1RfUEtUUyAgfHxcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjUyNjpcXHQgICAgcHJpdi1cXHUwMDNla2V5ID09IE5GVF9DVF9BVkdQS1QpXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01MjctXFx0XFx0bmZfY3Rfc2V0X2FjY3QoY3R4LVxcdTAwM2VuZXQsIHRydWUpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz01MzU9c3RhdGljIHZvaWQgX19uZnRfY3Rfc2V0X2Rlc3Ryb3koY29uc3Qgc3RydWN0IG5mdF9jdHggKmN0eCwgc3RydWN0IG5mdF9jdCAqcHJpdilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTM4LSNpZmRlZiBDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMU1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTM5OlxcdGNhc2UgTkZUX0NUX0xBQkVMUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU0MC1cXHRcXHRuZl9jb25ubGFiZWxzX3B1dChjdHgtXFx1MDAzZW5ldCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU0My0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19aT05FU1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTQ0OlxcdGNhc2UgTkZUX0NUX1pPTkU6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01NDUtXFx0XFx0bmZfcXVldWVfbmZfaG9va19kcm9wKGN0eC1cXHUwMDNlbmV0KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9NTU3PXN0YXRpYyBpbnQgbmZ0X2N0X3NldF9pbml0KGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU2OC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1Njk6XFx0Y2FzZSBORlRfQ1RfTUFSSzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU3MC1cXHRcXHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01NzUtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfTEFCRUxTXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1NzY6XFx0Y2FzZSBORlRfQ1RfTEFCRUxTOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTc3LVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTU4NS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19aT05FU1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NTg2OlxcdGNhc2UgTkZUX0NUX1pPTkU6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01ODctXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bmZ0X2N0X3BjcHVfbXV0ZXgpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy01OTctI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfRVZFTlRTXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo1OTg6XFx0Y2FzZSBORlRfQ1RfRVZFTlRNQVNLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNTk5LVxcdFxcdGlmICh0YltORlRBX0NUX0RJUkVDVElPTl0pXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTYwNC0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19TRUNNQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2MDU6XFx0Y2FzZSBORlRfQ1RfU0VDTUFSSzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTYwNi1cXHRcXHRpZiAodGJbTkZUQV9DVF9ESVJFQ1RJT05dKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYz02NjE9c3RhdGljIGludCBuZnRfY3RfZ2V0X2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNjcxLVxcdHN3aXRjaCAocHJpdi1cXHUwMDNla2V5KSB7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2NzI6XFx0Y2FzZSBORlRfQ1RfU1JDOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6NjczOlxcdGNhc2UgTkZUX0NUX0RTVDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3NDpcXHRjYXNlIE5GVF9DVF9TUkNfSVA6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2NzU6XFx0Y2FzZSBORlRfQ1RfRFNUX0lQOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Njc2OlxcdGNhc2UgTkZUX0NUX1NSQ19JUDY6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2Nzc6XFx0Y2FzZSBORlRfQ1RfRFNUX0lQNjpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY3ODpcXHRjYXNlIE5GVF9DVF9QUk9UT19TUkM6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo2Nzk6XFx0Y2FzZSBORlRfQ1RfUFJPVE9fRFNUOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNjgwLVxcdFxcdGlmIChubGFfcHV0X3U4KHNrYiwgTkZUQV9DVF9ESVJFQ1RJT04sIHByaXYtXFx1MDAzZWRpcikpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTY4Mi1cXHRcXHRicmVhaztcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4MzpcXHRjYXNlIE5GVF9DVF9CWVRFUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4NDpcXHRjYXNlIE5GVF9DVF9QS1RTOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Njg1OlxcdGNhc2UgTkZUX0NUX0FWR1BLVDpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjY4NjpcXHRjYXNlIE5GVF9DVF9aT05FOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNjg3LVxcdFxcdGlmIChwcml2LVxcdTAwM2VkaXIgXFx1MDAzYyBJUF9DVF9ESVJfTUFYIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTcwMT1zdGF0aWMgaW50IG5mdF9jdF9zZXRfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03MTEtXFx0c3dpdGNoIChwcml2LVxcdTAwM2VrZXkpIHtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjcxMjpcXHRjYXNlIE5GVF9DVF9aT05FOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNzEzLVxcdFxcdGlmIChwcml2LVxcdTAwM2VkaXIgXFx1MDAzYyBJUF9DVF9ESVJfTUFYIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTc2OT1uZnRfY3Rfc2VsZWN0X29wcyhjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03ODItXFx0XFx0c3dpdGNoIChrKSB7XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo3ODM6XFx0XFx0Y2FzZSBORlRfQ1RfU1RBVEU6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzo3ODQ6XFx0XFx0Y2FzZSBORlRfQ1RfRElSRUNUSU9OOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Nzg1OlxcdFxcdGNhc2UgTkZUX0NUX1NUQVRVUzpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjc4NjpcXHRcXHRjYXNlIE5GVF9DVF9NQVJLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6Nzg3OlxcdFxcdGNhc2UgTkZUX0NUX1NFQ01BUks6XFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03ODgtXFx0XFx0XFx0cmV0dXJuIFxcdTAwMjZuZnRfY3RfZ2V0X2Zhc3Rfb3BzO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy03OTUtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfWk9ORVNcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jOjc5NjpcXHRcXHRpZiAobmxhX2dldF9iZTMyKHRiW05GVEFfQ1RfS0VZXSkgPT0gaHRvbmwoTkZUX0NUX1pPTkUpKVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtNzk3LVxcdFxcdFxcdHJldHVybiBcXHUwMDI2bmZ0X2N0X3NldF96b25lX29wcztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy0xLS8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmM6MjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkZUX0NUKVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy0zLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXRmaWx0ZXIvbmZfdGFibGVzLmhcXHUwMDNlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmM9Nz12b2lkIG5mdF9jdF9nZXRfZmFzdF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy0xOS1cXHRzd2l0Y2ggKHByaXYtXFx1MDAzZWtleSkge1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYzoyMDpcXHRjYXNlIE5GVF9DVF9TVEFURTpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtMjEtXFx0XFx0aWYgKGN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTM4LVxcdHN3aXRjaCAocHJpdi1cXHUwMDNla2V5KSB7XFxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jOjM5OlxcdGNhc2UgTkZUX0NUX0RJUkVDVElPTjpcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtNDAtXFx0XFx0bmZ0X3JlZ19zdG9yZTgoZGVzdCwgQ1RJTkZPMkRJUihjdGluZm8pKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtNDEtXFx0XFx0cmV0dXJuO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYzo0MjpcXHRjYXNlIE5GVF9DVF9TVEFUVVM6XFxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTQzLVxcdFxcdCpkZXN0ID0gY3QtXFx1MDAzZXN0YXR1cztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy00NS0jaWZkZWYgQ09ORklHX05GX0NPTk5UUkFDS19NQVJLXFxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jOjQ2OlxcdGNhc2UgTkZUX0NUX01BUks6XFxubmV0L25ldGZpbHRlci9uZnRfY3RfZmFzdC5jLTQ3LVxcdFxcdCpkZXN0ID0gY3QtXFx1MDAzZW1hcms7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdF9mYXN0LmMtNTAtI2lmZGVmIENPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSS1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYzo1MTpcXHRjYXNlIE5GVF9DVF9TRUNNQVJLOlxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0X2Zhc3QuYy01Mi1cXHRcXHQqZGVzdCA9IGN0LVxcdTAwM2VzZWNtYXJrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTo1NzozMy4yOTExNzM4MTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDMxMDcxMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcmAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGZ1bmN0aW9uIGlzIHVzZWQuIEknbSBmb2N1c2luZyBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYENPTkZJR19ORlRfQ1RgIGFuZCBgQ09ORklHX05GX05BVGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHZlcmlmeSB3aGV0aGVyIGBDT05GSUdfTkZfTkFUYCBpcyBhIGJvb2xlYW4gb3IgdHJpc3RhdGUsIGFuZCBpZiBpdCBoYXMgYW55IGRlcGVuZGVuY2llcy4gSSBzZWUgdGhlIGNvZGUgaXMgaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNgLCB3aGljaCBtYWtlcyBzZW5zZS5cblxuTm93IEknbSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aC4gVGhlIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGZ1bmN0aW9uIGlzIGNsZWFybHkgZ3VhcmRlZCBieSBgI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX05BVClgLCB3aGljaCBjb25maXJtcyBpdHMgZGVwZW5kZW5jeS4gU28sIGl0IHJlcXVpcmVzIGBORl9OQVRgIGFuZCBgTkZUX0NUYC4gRXhjZWxsZW50LlxuXG5OZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKiBpbiBhIHByYWN0aWNhbCBzY2VuYXJpby4gSXQncyByZWdpc3RlcmVkIGFzIGFuIGBleHBlY3RmbmAsIHdoaWNoIHRlbGxzIG1lIGl0J3MgcGFydCBvZiBhbiBleHBlY3RhdGlvbiBoYW5kbGluZyBjaGFpbi4gTGV0J3Mgc2VlIGhvdy4gYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIGNhbGxzIGBuZl9jdF9leHBlY3RfcmVsYXRlZChleHAsIDApYC4gQWhhISBBbmQsIGlmIGBjdC1cdTAwM2VzdGF0dXMgXHUwMDI2IElQU19OQVRfTUFTS2AgaXMgdHJ1ZSwgdGhlbiBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgKmV4cGxpY2l0bHkqIHNldHMgYGV4cC1cdTAwM2VleHBlY3RmbiA9IG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcjtgLiBPa2F5LCBzbyBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBnZXRzIGNhbGxlZCB3aGVuIHRoZSBleHBlY3RhdGlvbiBpcyBmdWxmaWxsZWQuXG5cbkZpbmFsbHksIEkgc2VlIHRoYXQgd2l0aGluIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLCB0aGUgZnVuY3Rpb24gY2FsbHMgYG5mX2N0X2hlbHBlcl9leHBlY3Rmbl9maW5kX2J5X25hbWUoXCJuYXQtZm9sbG93LW1hc3RlclwiKWAgYW5kIGV4ZWN1dGVzIGl0LiBUaGlzIGlzIGludGVyZXN0aW5nLiBOb3csIEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBcIm5hdC1mb2xsb3ctbWFzdGVyXCJgIGV4aXN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTYwOSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTo1NzozOS4zMjIyNDg1MTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1NjcxNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5hdC1mb2xsb3ctbWFzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYz0xMTY5PXN0YXRpYyBzdHJ1Y3QgbmZfY3RfaGVscGVyX2V4cGVjdGZuIGZvbGxvd19tYXN0ZXJfbmF0ID0ge1xcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYzoxMTcwOlxcdC5uYW1lXFx0XFx0PSBcXFwibmF0LWZvbGxvdy1tYXN0ZXJcXFwiLFxcbm5ldC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYy0xMTcxLVxcdC5leHBlY3RmblxcdD0gbmZfbmF0X2ZvbGxvd19tYXN0ZXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jPTEzMDE9c3RhdGljIHZvaWQgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyKHN0cnVjdCBuZl9jb25uICpjdCwgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnRoaXMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEzMDQtXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzA1OlxcdGV4cGZuID0gbmZfY3RfaGVscGVyX2V4cGVjdGZuX2ZpbmRfYnlfbmFtZShcXFwibmF0LWZvbGxvdy1tYXN0ZXJcXFwiKTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jdC5jLTEzMDYtXFx0aWYgKGV4cGZuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTo1NzozOS41NTc5MzEwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTU5MTIyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhlIGNvZGUgY2hhbmdlIGlzIHdpdGhpbiBgbmZfbmF0X2NvcmUuY2Ag4oCTIGdvb2QsIGl0J3MgZGVmaW5pdGVseSBpbiBhIHBsYWNlIHdoZXJlIEkgZXhwZWN0IGl0IHRvIGJlLiBUaGlzIG1lYW5zIHRoZSBwYXRjaCBpcyBib3RoIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSwgd2hpY2ggaXMgYSBrZXkgZmlyc3Qgc3RlcC4gTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBhZmZlY3RlZC4gQmFzZWQgb24gdGhlIGRpZmYsIG15IGZvY3VzIG5lZWRzIHRvIGJlIG9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAuXG5cbldhaXQgYSBtaW51dGUsIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCAqaGFzKiBiZWVuIG1vZGlmaWVkLCBzbyB0aGF0IGRlZmluaXRlbHkgbmVlZHMgdG8gYmUgbGlzdGVkIHdpdGhpbiBgRm9jdXNTeW1ib2xzYC4gQW5kIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGlzICpuZXcqLCB3aGljaCBtYWtlcyBpdCBhIGNyaXRpY2FsIGFkZGl0aW9uIGFuZCBhbHNvIG5lZWRzIHRvIGJlIGluIGBGb2N1c1N5bWJvbHNgLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0sIGFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvdWNoZWQgaGVyZT9cblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBUaGUgcGF0Y2ggYWRkcyBgbmZ0X2N0X25hdF9mb2xsb3dfbWFzdGVyYCBhbmQgbW9kaWZpZXMgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgLCBhcyBwcmV2aW91c2x5IG5vdGVkLiBJdCBsb29rcyBsaWtlIGBuZnRfY3RfbW9kdWxlX2luaXRgIGFuZCBgbmZ0X2N0X21vZHVsZV9leGl0YCBoYXZlIGFsc28gYmVlbiBtb2RpZmllZC4gSG93ZXZlciwgdGhvc2UgYXJlIGluaXQvZXhpdCBmdW5jdGlvbnMsIHNvIHRoZXkgYXJlIG5vdCBhcyBjZW50cmFsIHRvIG15IGNvbmNlcm4uXG5cbk5leHQsIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuIEFyZSBgTkZUX0NUYCBhbmQgYE5GX05BVGAgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlncz8gTGV0IG1lIHNlZeKApiBgTkZUX0NUYCBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tgLCBhbmQgYE5GX05BVGAgYWxzbyBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tgLiBTbywgd2l0aCBgTkZUX0NUYCBhbmQgYE5GX05BVGAgZW5hYmxlZCwgSSBzaG91bGQgaGF2ZSBldmVyeXRoaW5nIEkgbmVlZC4gVGhhdCdzIGdvb2QuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgbW9kaWZpY2F0aW9uIHRvIGBuZnRfY3RfZXhwZWN0X29ial9ldmFsYCB3aXRoaW4gYG5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmNgIGZvciBhbnkgcG90ZW50aWFsIG92ZXJzaWdodC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nLCBhbmQgdGhhdCBhbGwgdGhlIGNyaXRpY2FsIHBpZWNlcyBhcmUgd2VsbCB1bmRlcnN0b29kIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU4NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTo1Nzo0NS4xNTM4NDg1NTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwOTI0MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZnRfY3QuYz0xMzAxPXN0YXRpYyB2b2lkIG5mdF9jdF9uYXRfZm9sbG93X21hc3RlcihzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICp0aGlzKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzEwLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM6MTMxMTpzdGF0aWMgdm9pZCBuZnRfY3RfZXhwZWN0X29ial9ldmFsKHN0cnVjdCBuZnRfb2JqZWN0ICpvYmosXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYy0xMzEyLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmM9MTM3OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9vYmplY3Rfb3BzIG5mdF9jdF9leHBlY3Rfb2JqX29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4MS1cXHQuc2l6ZVxcdFxcdD0gc2l6ZW9mKHN0cnVjdCBuZnRfY3RfZXhwZWN0X29iaiksXFxubmV0L25ldGZpbHRlci9uZnRfY3QuYzoxMzgyOlxcdC5ldmFsXFx0XFx0PSBuZnRfY3RfZXhwZWN0X29ial9ldmFsLFxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2N0LmMtMTM4My1cXHQuaW5pdFxcdFxcdD0gbmZ0X2N0X2V4cGVjdF9vYmpfaW5pdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6NTc6NDUuMjk0NzgyMDc1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIxOTE3NDAxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBsYW4gZm9yIGBuZnRfY3RfZXhwZWN0X29ial9vcHNgIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIGZ1bmN0aW9uIGlzIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgYG5mdF9jdF9leHBlY3Rfb2JqX29wc2AsIHdoaWNoIG1lYW5zIGl04oCZcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIG5mdGFibGVzLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHBhdGNoIGFwcGVhcnMgZnVuY3Rpb25hbCwgc28gaXQncyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBmb2xsb3dpbmcga2V5IHN5bWJvbHM6IGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCwgb2YgY291cnNlLCBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAuIEknbGwgbmVlZCB0byBjb25maWd1cmUgbXkgZnV6emluZyBzZXR1cCBjb3JyZWN0bHkuIEJhc2VkIG9uIHRoZSBjb250ZXh0LCBJIHNob3VsZCBlbnN1cmUgSSBoYXZlIGBORlRfQ1RgIGFuZCBgTkZfTkFUYCBlbmFibGVkIGluIG15IGtlcm5lbCBjb25maWd1cmF0aW9uLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBkb3VibGUtY2hlY2sgaWYgYENPTkZJR19ORl9OQVRgIGlzIHRoZSBleGFjdCBjb25maWd1cmF0aW9uIG9wdGlvbiB1c2VkIHdpdGhpbiB0aGUgcGF0Y2ggaXRzZWxmLCBhbmQgdGhhdCBgQ09ORklHX05GVF9DVGAgaXMgdGhlIGNvbmZpZyBvcHRpb24gZm9yIGBuZnRfY3QuY2AuIFRoaXMgd2lsbCBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcyBpbiB0aGUgdGVzdGluZyBlbnZpcm9ubWVudC4gSSdsbCB0YWtlIGEgcXVpY2sgbG9vayB0byB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTk3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjQ5LjUxMzk2MDEwOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1MTAzNjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9OQVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTM5OD1jb25maWcgTkVURklMVEVSX05FVExJTktfR0xVRV9DVFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQwNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDA3OmNvbmZpZyBORl9OQVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQxNjpjb25maWcgTkZfTkFUX0FNQU5EQVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MTctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyMTpjb25maWcgTkZfTkFUX0ZUUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjItXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQyNjpjb25maWcgTkZfTkFUX0lSQ1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MjctXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzMTpjb25maWcgTkZfTkFUX1NJUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzItXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzUtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzNjpjb25maWcgTkZfTkFUX1RGVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDM3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDE6Y29uZmlnIE5GX05BVF9SRURJUkVDVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDItXFx0Ym9vbFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NDMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ0NDpjb25maWcgTkZfTkFUX01BU1FVRVJBREVcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ1LVxcdGJvb2xcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NDc6Y29uZmlnIE5GX05BVF9PVlNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDQ4LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6NTc6NDkuNzU5MDc1NjI0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NzI2NjEzNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbk9rYXksIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uLCBhbmQgdGhlIG5hbWUgYE5GX05BVGAgaXMgZGVmaW5pdGVseSByaW5naW5nIGEgYmVsbC4gTGV0J3MganVzdCBjb25maXJtIHRoYXQgdGhhdCdzIHRoZSBwcmVjaXNlIG1vZHVsZSBuYW1lIHdlJ3JlIGRlYWxpbmcgd2l0aDsgbm8gbmVlZCB0byBiZSBzbG9wcHkgd2l0aCB0aGUgZGV0YWlscywgZXZlbiBpZiBpdCBzZWVtcyBvYnZpb3VzLlxuXG5Ob3csIGxldCdzIHBpdm90IGFuZCBjcm9zcy1yZWZlcmVuY2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgYENPTkZJR19ORlRfQ1RgIGlzIGVuYWJsZWQuIFRoYXQgcGFydGljdWxhciBjb25maWcgb3B0aW9uIGlzIGNydWNpYWwgZm9yIGNlcnRhaW4gbW9kZXJuIE5ldGZpbHRlciBmZWF0dXJlcywgYW5kIGl0IG5lZWRzIHRvIGJlIHByZXNlbnQgZm9yIHRoZSBmdW5jdGlvbmFsaXR5IEknbSBhc3N1bWluZy4gVmVyaWZpY2F0aW9uIGlzIGtleSBiZWZvcmUgbW92aW5nIGZvcndhcmQsIHNvIEknbGwgY2hlY2sgdGhhdCBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUyMSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjUyLjYzMTc0Nzc4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwNjE2NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORlRfQ1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTQ4NT1jb25maWcgTkZUX05VTUdFTlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ5MC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDkxOmNvbmZpZyBORlRfQ1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDkyLVxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjUyLjc2MjM3ODY1NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTgzMjU2NjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBORlRfQ1RgIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBqdXN0IHJldmlld2VkIHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIHRoZSBuYW1lIGBORlRfQ1RgIGlzIHNwb3Qgb24uIFRoYXQncyB0aGUgY29ycmVjdCBpZGVudGlmaWVyIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkuXG5cblRoZSBsb2dpYyBoZXJlIGlzIHNvdW5kOiB0aGV5J3ZlIGludHJvZHVjZWQgYSBuZXcgZnVuY3Rpb24sIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgLCBhbmQgbW9kaWZpZWQgYG5mdF9jdF9leHBlY3Rfb2JqX2V2YWxgIHRvIGxldmVyYWdlIHRoaXMgbmV3IGZ1bmN0aW9uLiBUaGUga2V5IHBvaW50IGlzIHRoYXQgdGhpcyBjaGFuZ2UgKm9ubHkqIGhhcHBlbnMgd2hlbiBgQ09ORklHX05GX05BVGAgaXMgYWN0aXZlLCBhbmQgdGhlIHNwZWNpZmljIGNvbm5lY3Rpb24gaGFzIE5BVCBhcHBsaWVkLiBUaGlzIGlzIGEgdGFyZ2V0ZWQgbW9kaWZpY2F0aW9uIHRvIHRoZSBOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggTkFUIGV4cGVjdGF0aW9ucywgYW5kLCBjcml0aWNhbGx5LCBpdCdzIGFsbCBhY2Nlc3NpYmxlIHRocm91Z2ggbmZ0YWJsZXMuIEJlY2F1c2Ugb2YgdGhpcyBhZGRlZCBmdW5jdGlvbmFsaXR5IEkgY2FuIHNlZSB0aGF0IHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgZnV6emVkLiBUaGUgY2hhbmdlcyBhcmUgdmVyeSBjbGVhciwgc28gdGhlcmUgaXMgbm8gYW1iaWd1aXR5LlxuXG5JJ20gZ29pbmcgdG8gZ2V0IG9uIHRoZSBwaG9uZSBhbmQgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4MDcsIk91dHB1dFRva2VucyI6MTQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjU3OjU4Ljk0NTY0MDMwNloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NTg4MDkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZUX0NUXCIsXG4gICAgXCJORl9OQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJcIixcbiAgICBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZUX0NUXCIsXG4gICAgXCJORl9OQVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJcIixcbiAgICBcIm5mdF9jdF9leHBlY3Rfb2JqX2V2YWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZnRfY3RfbmF0X2ZvbGxvd19tYXN0ZXJgIGFuZCBtb2RpZmllcyBgbmZ0X2N0X2V4cGVjdF9vYmpfZXZhbGAgdG8gdXNlIGl0IHdoZW4gYENPTkZJR19ORl9OQVRgIGlzIGVuYWJsZWQgYW5kIHRoZSBjb25uZWN0aW9uIGhhcyBOQVQgYXBwbGllZC4gVGhpcyBhZGRzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9yIE5BVCBleHBlY3RhdGlvbnMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgbmZ0YWJsZXMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowmxmdv[1] Phase: Succeeded StartedAt: 2026-07-01 01:58:33 +0000 UTC FinishedAt: 2026-07-01 01:58:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 01:58:33 +0000 UTC FinishedAt: 2026-07-01 01:58:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2] Phase: Succeeded StartedAt: 2026-07-01 01:58:33 +0000 UTC FinishedAt: 2026-07-01 06:20:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 01:58:34 +0000 UTC FinishedAt: 2026-07-01 06:20:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 01:58:34 +0000 UTC FinishedAt: 2026-07-01 01:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 01:58:34 +0000 UTC FinishedAt: 2026-07-01 01:58:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmxmdv/series-workflowmxmdv-convert-artifact-4198118551/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 01:58:46 +0000 UTC FinishedAt: 2026-07-01 02:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 01:58:46 +0000 UTC FinishedAt: 2026-07-01 02:26: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:*ea6d33cb-d1d4-4c5a-aab8-561b9a358dcc,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-workflowmxmdv/series-workflowmxmdv-convert-artifact-4198118551/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": "dc46230c-2f97-465b-8e48-2bc4a5b113f2", "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-workflowmxmdv/series-workflowmxmdv-build-action-3261919725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 01:58:46 +0000 UTC FinishedAt: 2026-07-01 02:26:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ea6d33cb-d1d4-4c5a-aab8-561b9a358dcc,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-workflowmxmdv/series-workflowmxmdv-convert-artifact-4198118551/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": "dc46230c-2f97-465b-8e48-2bc4a5b113f2", "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-workflowmxmdv/series-workflowmxmdv-build-action-3261919725/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 02:26:36 +0000 UTC FinishedAt: 2026-07-01 02:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 02:26:36 +0000 UTC FinishedAt: 2026-07-01 02:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 02:26:36 +0000 UTC FinishedAt: 2026-07-01 02:26:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 02:26:36 +0000 UTC FinishedAt: 2026-07-01 02:26:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmxmdv/series-workflowmxmdv-convert-artifact-1023588550/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 02:26:46 +0000 UTC FinishedAt: 2026-07-01 02:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 02:26:46 +0000 UTC FinishedAt: 2026-07-01 02:29:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dc46230c-2f97-465b-8e48-2bc4a5b113f2,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-workflowmxmdv/series-workflowmxmdv-build-action-3261919725/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-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 02:29:22 +0000 UTC FinishedAt: 2026-07-01 02:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 02:29:22 +0000 UTC FinishedAt: 2026-07-01 02:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 02:29:22 +0000 UTC FinishedAt: 2026-07-01 03:14:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 02:29:22 +0000 UTC FinishedAt: 2026-07-01 03:14:35 +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:*ea6d33cb-d1d4-4c5a-aab8-561b9a358dcc,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-workflowmxmdv/series-workflowmxmdv-convert-artifact-1023588550/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": "46fba81f-cffb-4df3-9303-4cbe92a1877e", "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-workflowmxmdv/series-workflowmxmdv-build-action-1886338058/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 02:29:22 +0000 UTC FinishedAt: 2026-07-01 03:14:22 +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:*ea6d33cb-d1d4-4c5a-aab8-561b9a358dcc,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-workflowmxmdv/series-workflowmxmdv-convert-artifact-1023588550/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": "46fba81f-cffb-4df3-9303-4cbe92a1877e", "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-workflowmxmdv/series-workflowmxmdv-build-action-1886338058/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 03:14:35 +0000 UTC FinishedAt: 2026-07-01 03:14:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 03:14:35 +0000 UTC FinishedAt: 2026-07-01 03:14:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 03:14:35 +0000 UTC FinishedAt: 2026-07-01 03:16:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 03:14:35 +0000 UTC FinishedAt: 2026-07-01 03:16:40 +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:*46fba81f-cffb-4df3-9303-4cbe92a1877e,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-workflowmxmdv/series-workflowmxmdv-build-action-1886338058/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-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 03:16:50 +0000 UTC FinishedAt: 2026-07-01 06:20:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 03:16:50 +0000 UTC FinishedAt: 2026-07-01 06:20:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"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:*dc46230c-2f97-465b-8e48-2bc4a5b113f2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*46fba81f-cffb-4df3-9303-4cbe92a1877e,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-workflowmxmdv/series-workflowmxmdv-build-action-3261919725/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-workflowmxmdv/series-workflowmxmdv-build-action-1886338058/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 03:16:50 +0000 UTC FinishedAt: 2026-07-01 03:17:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 03:16:50 +0000 UTC FinishedAt: 2026-07-01 03:17:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"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-workflowmxmdv/series-workflowmxmdv-convert-artifact-2508029579/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 03:16:50 +0000 UTC FinishedAt: 2026-07-01 03:16:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 03:16:50 +0000 UTC FinishedAt: 2026-07-01 03:16:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 03:16:50 +0000 UTC FinishedAt: 2026-07-01 03:16:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 03:17:24 +0000 UTC FinishedAt: 2026-07-01 06:20:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmdv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nft_ct_nat_follow_master","nft_ct_expect_obj_eval"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"32f1c2bbb26ae2be476c8b66e3b41789b6b97bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CT","NF_NAT"],"series_id":"aa7ee45c-e91b-4f13-aeb7-595536eda1c6","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 03:17:24 +0000 UTC FinishedAt: 2026-07-01 06:20:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dc46230c-2f97-465b-8e48-2bc4a5b113f2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*46fba81f-cffb-4df3-9303-4cbe92a1877e,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-workflowmxmdv/series-workflowmxmdv-build-action-3261919725/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-workflowmxmdv/series-workflowmxmdv-build-action-1886338058/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-workflowmxmdv/series-workflowmxmdv-convert-artifact-2508029579/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,}