Name: series-workflowtb4vc Phase: Succeeded StartedAt: 2026-09-10 04:19:06 +0000 UTC FinishedAt: 2026-09-10 08:28:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[0] Phase: Succeeded StartedAt: 2026-09-10 04:19:06 +0000 UTC FinishedAt: 2026-09-10 04:48:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 04:19:06 +0000 UTC FinishedAt: 2026-09-10 04:48:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "c68a982815dcce5464e3bf2a31ac94f5146c04ca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "c68a982815dcce5464e3bf2a31ac94f5146c04ca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "c7196ab3-9d14-4b9f-afe9-cebac690acc6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_tx_control_port", "nl80211_tx_control_port" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIGBsb2NhbF9iaF9kaXNhYmxlKClgIGluIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KClgIHRvIGNvdmVyIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKClgIGFuZCBgaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eCgpYC4gVGhpcyBpcyBhIGxvY2tpbmcvY29uY3VycmVuY3kgZml4IGVuc3VyaW5nIGJvdHRvbSBoYWx2ZXMgYXJlIGRpc2FibGVkIGR1cmluZyBwZXItQ1BVIHN0YXRpc3RpYyB1cGRhdGVzIHRvIHByZXZlbnQgY29uY3VycmVuY3kgaXNzdWVzIHdpdGggc29mdGlycXMuXG5cblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IG1lbW9yeSBhbGxvY2F0aW9ucywgaW5pdGlhbGl6YXRpb24gbG9naWMsIGtlcm5lbC10by11c2VyIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEFueSBwb3RlbnRpYWwgbG9ja2luZyBidWdzIG9yIGNvbmN1cnJlbmN5IHZpb2xhdGlvbnMgYXJlIGNvdmVyZWQgYnkgTE9DS0RFUCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycywgbm90IEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0IGluIG5ldC9tYWM4MDIxMS90eC5jIGJ5IG1vdmluZyBsb2NhbF9iaF9kaXNhYmxlKCkgdG8gcHJvdGVjdCB0aGUgcGVyLUNQVSBUWCBzdGF0aXN0aWNzIHVwZGF0ZSAoZGV2X3N3X25ldHN0YXRzX3R4X2FkZCkuIFRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5sODAyMTEgKE5MODAyMTFfQ01EX0NPTlRST0xfUE9SVF9GUkFNRSkgYW5kIGNhbiBiZSBleGVjdXRlZCBhbmQgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnRzIHdpdGggc2ltdWxhdGVkIHdpcmVsZXNzIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2ZmI1MGEyNzViNDAzNWFkMjFmYzlhZDc1ZjQzODdlZTY4OWU5MjdjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6NDc6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggNzRhYjI3NTM0MDc2Zi4uN2IxYTNjNjNlNWRjNSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguY1xuQEAgLTY2ODcsMTAgJiM0Mzs2Njg3LDkgQEAgaW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4mIzQzO1x0bG9jYWxfYmhfZGlzYWJsZSgpO1xuIFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xuIFx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLVx1MDAzZWxlbik7XG4tXG4tXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gXHRpZWVlODAyMTFfeG1pdChzZGF0YSwgc3RhLCBza2IpO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCBpbiBuZXQvbWFjODAyMTEvdHguYyBieSBtb3ZpbmcgbG9jYWxfYmhfZGlzYWJsZSgpIHRvIHByb3RlY3QgdGhlIHBlci1DUFUgVFggc3RhdGlzdGljcyB1cGRhdGUgKGRldl9zd19uZXRzdGF0c190eF9hZGQpLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIChOTDgwMjExX0NNRF9DT05UUk9MX1BPUlRfRlJBTUUpIGFuZCBjYW4gYmUgZXhlY3V0ZWQgYW5kIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyB3aXRoIHNpbXVsYXRlZCB3aXJlbGVzcyBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmZiNTBhMjc1YjQwMzVhZDIxZmM5YWQ3NWY0Mzg3ZWU2ODllOTI3YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDA0OjQ3OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguYwppbmRleCA3NGFiMjc1MzQwNzZmLi43YjFhM2M2M2U1ZGM1IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvdHguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguYwpAQCAtNjY4NywxMCAmIzQzOzY2ODcsOSBAQCBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKJiM0MzsJbG9jYWxfYmhfZGlzYWJsZSgpOwogCWRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItJmd0O2xlbik7CiAJaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLSZndDtsZW4pOwotCi0JbG9jYWxfYmhfZGlzYWJsZSgpOwogCWllZWU4MDIxMV94bWl0KHNkYXRhLCBzdGEsIHNrYik7CiAJbG9jYWxfYmhfZW5hYmxlKCk7CiAJcmN1X3JlYWRfdW5sb2NrKCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogT3B0aW1pemF0aW9uIGluIGBtYWM4MDIxMS90eC5jYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRpc3NlY3QgdGhlIGRpZmYgYW5kIGFzc2VzcyB0aGUgaW1wYWN0LiBJdCYjMzk7cyBhIHNtYWxsIGNoYW5nZSwgYnV0IGV2ZW4gc21hbGwgY2hhbmdlcyBpbiB0aGUgYG1hYzgwMjExYCBjb3JlIGNhbiBiZSBjcml0aWNhbC4KCkFscmlnaHQsIGxvb2tpbmcgYXQgdGhlIGRpZmYsIGl0JiMzOTtzIGEgY29kZSByZS1hcnJhbmdlbWVudCB3aXRoaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBTcGVjaWZpY2FsbHksIHRoZSBgbG9jYWxfYmhfZGlzYWJsZSgpYCBjYWxsIGlzIGJlaW5nIG1vdmVkICpiZWZvcmUqIHRoZSBzdGF0cyB1cGRhdGUgYW5kIHRyYW5zbWlzc2lvbiBjYWxsLCB3aGVyZSBpdCB3YXMgcHJldmlvdXNseSBsb2NhdGVkIGFmdGVyLiBUaGUgc3Vic2VxdWVudCBgbG9jYWxfYmhfZW5hYmxlKClgIHJlbWFpbnMgYXQgdGhlIGVuZCwgYXMgZXhwZWN0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBpbnRlbmRlZCBlZmZlY3Qgb2YgdGhpcyBjaGFuZ2UuCgpOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgY29udGV4dCB1c2luZywgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIG90aGVyIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24uIElzIHRoaXMgdG8gcmVkdWNlIGludGVycnVwdCBsYXRlbmN5PyBPciB0byBlbnN1cmUgYXRvbWljaXR5IGluIHNvbWUgb3RoZXIgb3BlcmF0aW9uPyBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaXNhYmxpbmcgYm90dG9tIGhhbHZlcyBhdCB0aGlzIHNwZWNpZmljIHBvaW50LiBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgaXNzdWUgdGhpcyBhZGRyZXNzZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIG9wdGltaXphdGlvbiB3YXMgcHJvcG9zZWQuIFRoZSBhZGRpdGlvbiBvZiB0aGUgYGxvY2FsX2JoX2Rpc2FibGVgIGJlZm9yZSB0aGUgc3RhdHMgdXBkYXRlIGFuZCB0cmFuc21pc3Npb24gaXMgdGhlIGtleSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3R4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY2NzA6XHRcdGluZm8tXHUwMDNlZmxhZ3MgPSBmbGFncztcbjY2NzE6XHRcdGN0cmxfZmxhZ3MgfD0gdTMyX2VuY29kZV9iaXRzKGxpbmtfaWQsIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKTtcbjY2NzI6XHRcdGluZm8tXHUwMDNlY29udHJvbC5mbGFncyA9IGN0cmxfZmxhZ3M7XG42NjczOlx0XG42Njc0Olx0XHRpZiAoIWdyb3VwX2FkZHJlc3NlZClcbjY2NzU6XHRcdFx0aWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llKTtcbjY2NzY6XHRcbjY2Nzc6XHRcdHNrYiA9IGllZWU4MDIxMV9idWlsZF9oZHIoc2RhdGEsIHNrYiwgc3RhKTtcbjY2Nzg6XHRcdGlmIChJU19FUlIoc2tiKSkge1xuNjY3OTpcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjY2ODA6XHRcdFx0cmV0dXJuIFBUUl9FUlIoc2tiKTtcbjY2ODE6XHRcdH1cbjY2ODI6XHRcbjY2ODM6XHRcdGlmIChsaW5rX2lkICE9IHUzMl9nZXRfYml0cyhpbmZvLVx1MDAzZWNvbnRyb2wuZmxhZ3MsXG42Njg0Olx0XHRcdFx0XHQgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspKSB7XG42Njg1Olx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xuNjY4NjpcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjY2ODc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG42Njg4Olx0XHR9XG42Njg5Olx0XG42NjkwOlx0XHRsb2NhbF9iaF9kaXNhYmxlKCk7XG42NjkxOlx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG42NjkyOlx0XHRpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXHUwMDNlbGVuKTtcbjY2OTM6XHRcdGllZWU4MDIxMV94bWl0KHNkYXRhLCBzdGEsIHNrYik7XG42Njk0Olx0XHRsb2NhbF9iaF9lbmFibGUoKTtcbjY2OTU6XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuNjY5NjpcdFxuNjY5NzpcdFx0cmV0dXJuIDA7XG42Njk4Olx0fVxuNjY5OTpcdFxuNjcwMDpcdGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG42NzAxOlx0XHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbjY3MDI6XHR7XG42NzAzOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG42NzA0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuNjcwNTpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbjY3MDY6XHRcbjY3MDc6XHRcdHNrYiA9IGRldl9hbGxvY19za2IobG9jYWwtXHUwMDNlaHcuZXh0cmFfdHhfaGVhZHJvb20gJiM0MzsgbGVuICYjNDM7XG42NzA4Olx0XHRcdFx0ICAgIDMwICYjNDM7IC8qIGhlYWRlciBzaXplICovXG42NzA5Olx0XHRcdFx0ICAgIDE4KTsgLyogMTFzIGhlYWRlciBzaXplICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4NwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDIyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHN0YXRzIFRyYW5zYWN0aW9uIGFuZCBDb250cm9sIFBvcnQgQmVoYXZpb3IqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi0mZ3Q7bGVuKWAgbmVjZXNzaXRhdGVzIGBsb2NhbF9iaF9kaXNhYmxlKClgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZGAgbGV2ZXJhZ2VzIHBlci1DUFUgc3RhdHMgdXBkYXRpbmcsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhvc2UgZGVsaWNhdGUgcGVyLUNQVSB2YXJpYWJsZXMuIFRoZXNlIHVwZGF0ZXMsIGlmIGRvbmUgaW5jb3JyZWN0bHksIHdpbGwgY2F1c2UgY29udGVudGlvbiB3aXRoIHNvZnQgaW50ZXJydXB0cy4gU28sIHRoZSBrZXJuZWwgZm9sa3MgY29ycmVjdGx5IGNob3NlIHRvIGRpc2FibGUgQm90dG9tIEhhbHZlcyAoQkhzKSBkdXJpbmcgdGhpcyBzZWN0aW9uIG9mIGNvZGUuIEkgc2VlIHRoYXQgdGhlcmUgd2FzIGEgY29tbWl0LCA2ZmI1MGEyNzViNDAsIHdoZXJlIHRoaXMgd2FzIGV4cGxpY2l0bHkgYWRkcmVzc2VkIGJ5IG1vdmluZyB0aGUgYGxvY2FsX2JoX2Rpc2FibGUoKWAgY2FsbCBhYm92ZSB0aGUgYGRldl9zd19uZXRzdGF0c190eF9hZGRgIGNhbGwuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcHJlY2F1dGlvbiB0byBwcmV2ZW50IGxvY2tkZXAgYXNzZXJ0aW9ucyBvciByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiBCSC9zb2Z0aXJxIGhhbmRsZXJzIGFuZCB0aGUgc3RhdHMgdXBkYXRlcy4KCk5vdywgbGV0JiMzOTtzIHNoaWZ0IGdlYXJzIGFuZCBsb29rIGF0IGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UsIGhvdyBpdCYjMzk7cyBpbnZva2VkLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgd2hldGhlciB0aGlzIGZ1bmN0aW9uIGlzIGV2ZW4gcmVhY2hhYmxlIHZpYSBTeXprYWxsZXIgaW4gbXkgdGVzdHMuIEkgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBzaXRlcyBmb3IgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgIGRpcmVjdGx5LiBJIHdpbGwgYWxzbyBleGFtaW5lIGl0cyByZWxhdGlvbnNoaXAgdG8gYHdpcGh5YCwgYG5sODAyMTFgLCBhbmQgYG1hYzgwMjExYCBjb250cm9sIHBvcnQgcGF0aHMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvc3NpYmxlIGF0dGFjayBzdXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4X2NvbnRyb2xfcG9ydCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9jZmc4MDIxMS5oPTQ4NDM9c3RydWN0IG1nbXRfZnJhbWVfcmVncyB7XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC01MjIxLSAqXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjUyMjI6ICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTUyMjMtICpcdHRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuIEEgQGNvb2tpZVxuLS1cbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg9NTI4MD1zdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbi0tXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTU2MDctXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjU2MDg6XHRpbnRcdCgqdHhfY29udHJvbF9wb3J0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC01NjA5LVx0XHRcdFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oPTk2NDI9c3RhdGljIGlubGluZSB2b2lkIGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05NjU5LSAqIEB3ZGV2OiB3aXJlbGVzcyBkZXZpY2UgcmVjZWl2aW5nIHRoZSBmcmFtZVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo5NjYwOiAqIEBjb29raWU6IENvb2tpZSByZXR1cm5lZCBieSBjZmc4MDIxMV9vcHM6OnR4X2NvbnRyb2xfcG9ydCgpXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk2NjEtICogQGJ1ZjogRGF0YSBmcmFtZSAoaGVhZGVyICYjNDM7IGJvZHkpXG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05NjY2LSAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIGEgY29udHJvbCBwb3J0IGZyYW1lIHdhcyByZXF1ZXN0ZWQgdG8gYmVcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6OTY2NzogKiB0cmFuc21pdHRlZCB3aXRoIGNmZzgwMjExX29wczo6dHhfY29udHJvbF9wb3J0KCkgdG8gcmVwb3J0IHRoZSBUWCBzdGF0dXMgb2ZcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtOTY2OC0gKiB0aGUgdHJhbnNtaXNzaW9uIGF0dGVtcHQuXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU5ODY9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy02MDgwLVx0LnNldF9tdWx0aWNhc3RfdG9fdW5pY2FzdCA9IGllZWU4MDIxMV9zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3QsXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjA4MTpcdC50eF9jb250cm9sX3BvcnQgPSBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0LFxubmV0L21hYzgwMjExL2NmZy5jLTYwODItXHQuZ2V0X3R4cV9zdGF0cyA9IGllZWU4MDIxMV9nZXRfdHhxX3N0YXRzLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTIyNTU9dm9pZCBpZWVlODAyMTFfY2xlYXJfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIyNTY6aW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyNTctXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcbi0tXG5uZXQvbWFjODAyMTEvdHguYz02NTQwPXZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNjU3MC1cbm5ldC9tYWM4MDIxMS90eC5jOjY1NzE6aW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9tYWM4MDIxMS90eC5jLTY1NzItXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTEyOTMzPXN0YXRpYyBpbnQgdmFsaWRhdGVfcGFlX292ZXJfbmw4MDIxMShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xMjk0MC1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTI5NDE6XHRpZiAoIXJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydCB8fFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xMjk0Mi1cdCAgICAhd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NTA0PXN0YXRpYyBpbnQgbmw4MDIxMV9leHRlcm5hbF9hdXRoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU0NS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg1NDY6c3RhdGljIGludCBubDgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU0Ny17XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU2NC1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg1NjU6XHRpZiAoIXJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydClcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg1NjYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NjAyLVx0Y29va2llID0gZG9udF93YWl0X2Zvcl9hY2sgPyAwIDogY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg2MDM6XHRlcnIgPSByZGV2X3R4X2NvbnRyb2xfcG9ydChyZGV2LCBkZXYsIGJ1ZiwgbGVuLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODYwNC1cdFx0XHRcdCAgIGRlc3QsIGNwdV90b19iZTE2KHByb3RvKSwgbm9lbmNyeXB0LCBsaW5rX2lkLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjA0ODEtXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjA0ODI6XHRcdC5kb2l0ID0gbmw4MDIxMV90eF9jb250cm9sX3BvcnQsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDgzLVx0XHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxuLS1cbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oPTc2ND1zdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oLTc3NS1cbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oOjc3NjpzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03NzctXHRcdFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03ODMtXHRpbnQgcmV0O1xubmV0L3dpcmVsZXNzL3JkZXYtb3BzLmg6Nzg0Olx0dHJhY2VfcmRldl90eF9jb250cm9sX3BvcnQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBidWYsIGxlbixcbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oLTc4NS1cdFx0XHRcdCAgIGRlc3QsIHByb3RvLCBub2VuY3J5cHQsIGxpbmspO1xubmV0L3dpcmVsZXNzL3JkZXYtb3BzLmg6Nzg2Olx0cmV0ID0gcmRldi1cdTAwM2VvcHMtXHUwMDNldHhfY29udHJvbF9wb3J0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIGRldiwgYnVmLCBsZW4sXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03ODctXHRcdFx0XHRcdCBkZXN0LCBwcm90bywgbm9lbmNyeXB0LCBsaW5rLCBjb29raWUpO1xuLS1cbm5ldC93aXJlbGVzcy90cmFjZS5oPTIyMjQ9VFJBQ0VfRVZFTlQocmRldl9tZ210X3R4LFxuLS1cbm5ldC93aXJlbGVzcy90cmFjZS5oLTIyNTMtXG5uZXQvd2lyZWxlc3MvdHJhY2UuaDoyMjU0OlRSQUNFX0VWRU5UKHJkZXZfdHhfY29udHJvbF9wb3J0LFxubmV0L3dpcmVsZXNzL3RyYWNlLmgtMjI1NS1cdFRQX1BST1RPKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkyNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKioKCk9rYXksIHNvIG1hYzgwMjExIGlzICpkZWZpbml0ZWx5KiB3aXRoaW4gc3l6a2FsbGVyJiMzOTtzIHJlYWNoLCBhbmQgdGhlIHN5c3RlbSB1c2VzIGl0LiBUaGUgcHJlc2VuY2Ugb2YgdGhlIG1hYzgwMjExX2h3c2ltIHZpcnR1YWwgZGV2aWNlIGlzIGEgc29saWQgaW5kaWNhdG9yLCBlc3BlY2lhbGx5IHNpbmNlIHN5emthbGxlciBpcyBhY3RpdmVseSBwb2tpbmcgYXQgaXQgdmlhIG5sODAyMTEgbmV0bGluayBtZXNzYWdlcywgaW5jbHVkaW5nIHRob3NlIGNydWNpYWwgTkw4MDIxMV9DTURfQ09OVFJPTF9QT1JUX0ZSQU1FIGFuZCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgIGNvbW1hbmRzLiBUaGF0IGxldmVsIG9mIHRhcmdldGVkIGludGVyYWN0aW9uIHN1Z2dlc3RzIGEgZGVlcCBpbnRlZ3JhdGlvbiwgd2hpY2ggbWVhbnMgdGhlcmUmIzM5O3MgcHJvYmFibHkgYSB3b3J0aHdoaWxlIGF0dGFjayBzdXJmYWNlLgoKTXkgbmV4dCBpbW1lZGlhdGUgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBib3RoIG1hYzgwMjExIGl0c2VsZiBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGBtYWM4MDIxMV9od3NpbWAuIFVuZGVyc3RhbmRpbmcgdGhvc2UgZGVwZW5kZW5jaWVzIHdpbGwgcmV2ZWFsIHRoZSBwcmVjb25kaXRpb25zIGFuZCBjb25maWd1cmF0aW9ucyB0aGF0IG1ha2UgdGhlc2UgY29tcG9uZW50cyBhY2Nlc3NpYmxlIGFuZCwgYnkgZXh0ZW5zaW9uLCB3aGVyZSB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBtaWdodCBsaWUuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSB0YXJnZXRlZCBmdXp6aW5nIGNhbXBhaWduIGluIHRoaXMgYXJlYS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDcyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBNQUM4MDIxMWAgQ29uZmlndXJhdGlvbiBTcGFjZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiBlbnRyeSwgc28gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IHRvIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgd2lyZWxlc3Mgc3RhY2ssIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBjb21waWxlLXRpbWUgb3B0aW9ucyBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIHR1bmluZywgYW5kIGp1c3QgZ2VuZXJhbGx5IGtub3dpbmcgd2hhdCYjMzk7cyBwb3NzaWJsZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHZhcmlvdXMgZmVhdHVyZXMgYXJlIGNvbmRpdGlvbmFsbHkgZW5hYmxlZCBhbmQgZGlzYWJsZWQuIEFyZSB0aGVyZSBhbnkgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIHBlcmhhcHMgc29tZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBjYXVzZSBncmllZiBkb3duIHRoZSBsaW5lPyBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQ7IGdldHRpbmcgYSBmaXJtIGdyYXNwIG9uIHRoZSBLY29uZmlnIGlzIGVzc2VudGlhbC4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTUFDODAyMTFcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRzZWxlY3QgQ1JZUFRPXG4gICA2Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNfQ0JDX01BQ1NcbiAgIDc6XHRcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcbiAgIDg6XHRcdHNlbGVjdCBDUllQVE9fQUVTXG4gICA5Olx0XHRzZWxlY3QgQ1JZUFRPX0NDTVxuICAxMDpcdFx0c2VsZWN0IENSWVBUT19HQ01cbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xMVxuICAxNDpcdFx0ICBuZXR3b3JraW5nIHN0YWNrLlxuICAxNTpcdFxuICAxNjpcdGNvbW1lbnQgXCYjMzQ7Q0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxuICAxODpcdFxuICAxOTpcdGlmIE1BQzgwMjExICE9IG5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTUFDODAyMTFfSEFTX1JDXG4gIDIyOlx0XHRib29sXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG4gIDI1Olx0XHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA2NwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlOgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgTUFDODAyMTFfSFdTSU0qKgoKUmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGlzIHRlc3RpbmcgZnJhbWV3b3JrLCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIGZvciBgTUFDODAyMTFfSFdTSU1gLiBJdCYjMzk7cyBhbHdheXMgYSBnb29kIGlkZWEgdG8ga25vdyB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGxpZSBhbmQgZXhhY3RseSAqd2hhdCogaXMgZW5hYmxpbmcgdGhpcyBgbWFjODAyMTFgIHRlc3RpbmcgZHJpdmVyLiBXZSBjYW4mIzM5O3QgYWZmb3JkIGFueSBzdXJwcmlzZXMgaGVyZS4gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHVwIGZyb250IHdpbGwgc2F2ZSBhIHdvcmxkIG9mIGh1cnQgaW4gZGVidWdnaW5nIGxhdGVyIG9uLiBJdCYjMzk7cyBhYm91dCBiZWluZyBlZmZpY2llbnQ7IGtub3dpbmcgdGhlIGFyY2hpdGVjdHVyZSBpcyBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvTWFrZWZpbGU6MTpvYmotJChDT05GSUdfTUFDODAyMTFfSFdTSU0pXHQmIzQzOz0gbWFjODAyMTFfaHdzaW0ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS0yLW1hYzgwMjExX2h3c2ltLW9ianNcdFx0JiM0Mzs9IG1hYzgwMjExX2h3c2ltX21haW4ub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC04LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjk6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoxMDojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTExLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yMTc9c3RydWN0IGh3c2ltX3R4X3JhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzAtICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzE6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTOiBVc2UgUlRTL0NUUyBleGNoYW5nZSBmb3IgdGhpcyByYXRlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUOiBDVFMtdG8tc2VsZiBwcm90ZWN0aW9uIGlzIHJlcXVpcmVkLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMy0gKlx0VGhpcyBpcyBzZXQgaWYgdGhlIGN1cnJlbnQgQlNTIHJlcXVpcmVzIEVSUCBwcm90ZWN0aW9uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFOiBVc2Ugc2hvcnQgcHJlYW1ibGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M6IEhUIHJhdGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM2OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTOiBWSFQgTUNTIHJhdGUsIGluIHRoaXMgY2FzZSB0aGUgaWR4IGZpZWxkIGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM3LSAqXHRzcGxpdCBpbnRvIGEgaGlnaGVyIDQgYml0cyAoTnNzKSBhbmQgbG93ZXIgNCBiaXRzIChNQ1MgbnVtYmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfR1JFRU5fRklFTEQ6IEluZGljYXRlcyB3aGV0aGVyIHRoaXMgcmF0ZSBzaG91bGQgYmUgdXNlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzOS0gKlx0aW4gR3JlZW5maWVsZCBtb2RlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0MDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgaWYgdGhlIENoYW5uZWwgV2lkdGggc2hvdWxkIGJlXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQxLSAqXHQ0MCBNSHouXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEg6IEluZGljYXRlcyA4MCBNSHogdHJhbnNtaXNzaW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQzOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgMTYwIE1IeiB0cmFuc21pc3Npb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDQtICpcdCg4MCYjNDM7ODAgaXNuJiMzOTt0IHN1cHBvcnRlZCB5ZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTogVGhlIGZyYW1lIHNob3VsZCBiZSB0cmFuc21pdHRlZCBvbiBib3RoIG9mXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ2LSAqXHR0aGUgYWRqYWNlbnQgMjAgTUh6IGNoYW5uZWxzLCBpZiB0aGUgY3VycmVudCBjaGFubmVsIHR5cGUgaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDctICpcdE5MODAyMTFfQ0hBTl9IVDQwTUlOVVMgb3IgTkw4MDIxMV9DSEFOX0hUNDBQTFVTLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0ODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k6IFNob3J0IEd1YXJkIGludGVydmFsIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ5LSAqXHRyYXRlLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yNTE9ZW51bSBod3NpbV90eF9yYXRlX2ZsYWdzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTI6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUU1x0XHQ9IEJJVCgwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTM6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1RcdFx0PSBCSVQoMSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU0Olx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFXHQ9IEJJVCgyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjU2LVx0LyogcmF0ZSBpbmRleCBpcyBhbiBIVC9WSFQgTUNTIGluc3RlYWQgb2YgYW4gaW5kZXggKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTc6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1NcdFx0XHQ9IEJJVCgzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTg6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRFx0XHQ9IEJJVCg0KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTk6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEhcdFx0PSBCSVQoNSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYwOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEFcdFx0PSBCSVQoNiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYxOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0lcdFx0PSBCSVQoNyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYyOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DU1x0XHRcdD0gQklUKDgpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSFx0XHQ9IEJJVCg5KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjQ6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIXHRcdD0gQklUKDEwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNjUtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MzI4PWVudW0gaHdzaW1fcmF0ZV9pbmZvX2F0dHJpYnV0ZXMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0zNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MzQ4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0ggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTA6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0lfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTE6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX0lfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg9MTY1PXZvaWQgaWVlZTgwMjExX2h3c2ltX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTY4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0lfSCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE3Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTgtc3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX211bHRpY2FzdF9ncm91cCBod3NpbV9tY2dycHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3Mjg6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwMjovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gcXVldWVzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDMtc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmh3c2ltX3Zxc1tIV1NJTV9OVU1fVlFTXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNTc1PXN0YXRpYyBpbmxpbmUgdTE2IHRyYW5zX3R4X3JhdGVfZmxhZ3NfaWVlZTJod3NpbShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnJhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3OS1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgwOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTgxLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgyOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4My1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NDpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODUtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX01DUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODY6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg3LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODg6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODktXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1OTA6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTkxLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19EVVBfREFUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1OTI6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTMtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5NDpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5NS1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVkhUX01DUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1OTY6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5Ny1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfODBfTUhaX1dJRFRIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5ODpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTktXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzE2MF9NSFpfV0lEVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNjAwOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2MDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ4OT1zdGF0aWMgY29uc3QgY2hhciBtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MDA6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOIEFSUkFZX1NJWkUobWFjODAyMTFfaHdzaW1fZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTAxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM1MTE9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTE0LVx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUxNTpcdFx0cmV0dXJuIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTE2LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUxOT1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MzU6XHRXQVJOX09OKGkgIT0gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTM2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjUyPXN0YXRpYyBjb25zdCB1OCBpZnR5cGVzX2V4dF9jYXBhX2FwW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2NjE6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFNcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjYyLVx0RklFTERfUFJFUF9DT05TVChJRUVFODAyMTFfTUxEX0NBUF9PUF9USURfVE9fTElOS19NQVBfTkVHX1NVUFAsIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTY2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHdpcGh5X2lmdHlwZV9leHRfY2FwYWIgbWFjODAyMTFfaHdzaW1faWZ0eXBlc19leHRfY2FwYVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NzQtXHRcdFx0XHQgICAgSUVFRTgwMjExX0VNTF9DQVBfRU1MTVJfU1VQUE9SVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2NzU6XHRcdC5tbGRfY2FwYV9hbmRfb3BzID0gTUFDODAyMTFfSFdTSU1fTUxEX0NBUEFfT1BTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY3Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzE1Nj1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNTc6XHQubmFtZSA9IFwmIzM0O01BQzgwMjExX0hXU0lNXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE1OC1cdC52ZXJzaW9uID0gMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03NDc2PXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0ODU6LyogTUFDODAyMTFfSFdTSU0gdmlydGlvIGRldmljZSBpZCB0YWJsZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ4Ni1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0ODc6XHR7IFZJUlRJT19JRF9NQUM4MDIxMV9IV1NJTSwgVklSVElPX0RFVl9BTllfSUQgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0ODgtXHR7IDAgfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzg9c3RhdGljIHU2NCBod3NpbV9uYW5fZ2V0X21hc3Rlcl9yYW5rKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgzOlx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04NC1cdFx0bWFzdGVyX3ByZWYgPSBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTIxNj12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9yeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3My1cdGlmICgoc2xvdCAhPSBTTE9UXzI0R0haX0RXIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoyNzQ6XHQgICAgIGRhdGEtXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0yNzUtXHQgICAgcnhfc3RhdHVzLmZyZXEgIT0gMjQzNylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzNi1cdFx0ICAgIChjZyA9PSBvd25fY2cgXHUwMDI2XHUwMDI2IGZyYW1lX2FtciBcdTAwM2UgY3Vycl9hbXIpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjQzNzpcdFx0ICAgIGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzOC1cdFx0XHQvKiBBdm9pZCBhIHN0YXRlIHRyYW5zaXRpb24gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ2OC1cdFx0XHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDY5Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00NzAtXHRcdFx0ZGF0YS1cdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTYxMj1tYWM4MDIxMV9od3NpbV9uYW5fZXhlY19zdGF0ZV90cmFuc2l0aW9ucyhzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyNS1cdGlmIChkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2MgMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjI2Olx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjc6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjI4LVx0XHQgZGF0YS1cdTAwM2VuYW4ubWFzdGVyX3RyYW5zaXRpb25fc2NvcmUgXHUwMDNlPSAzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjk6XHRcdGRhdGEtXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzA6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzMS1cdFx0IGRhdGEtXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2U9IDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMjpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzM6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzQtXHRcdCBkYXRhLVx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXHUwMDNjIDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzNTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0MS1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NDI6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0My1cdCAgICAhaHJ0aW1lcl9hY3RpdmUoXHUwMDI2ZGF0YS1cdTAwM2VuYW4uZGlzY292ZXJ5X2JlYWNvbl90aW1lcikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NDpcdFx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NTpcdFx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1Ni1cdFx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSBOQU5fV0FSTVVQX0RXU1Q7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTktXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY2MDpcdFx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjYxLVx0XHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz02OTU9bWFjODAyMTFfaHdzaW1fbmFuX3R4X2JlYWNvbihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1MC1cdG5hbl9hdHRyLmxlbmd0aCA9IGNwdV90b19sZTE2KHNpemVvZihtYXN0ZXJfaW5kaWNhdGlvbikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo3NTE6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1Mi1cdFx0bWFzdGVyX2luZGljYXRpb24ubWFzdGVyX3ByZWYgPSBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTc3ND1tYWM4MDIxMV9od3NpbV9uYW5fc2xvdF90aW1lcihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MDctXHRcdHR4X3N5bmNfYmVhY29uID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA4Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4MDk6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODEwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9ODY3PW1hYzgwMjExX2h3c2ltX25hbl9kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg3OS1cdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXHUwMDI2ZGF0YS1cdTAwM2VuYW4uc3RhdGVfbG9jaykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODA6XHRcdGlmIChkYXRhLVx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODE6XHRcdCAgICBkYXRhLVx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODgyLVx0XHRcdHJldHVybiBIUlRJTUVSX05PUkVTVEFSVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTkwOT1pbnQgbWFjODAyMTFfaHdzaW1fbmFuX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI2LVx0XHQvKiBTdGFydCBpbiB0aGUgXCYjMzQ7c2NhblwmIzM0OyBwaGFzZSBhbmQgc3RheSB0aGVyZSBmb3IgYSBsaXR0bGUgYml0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkyNzpcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI4LVx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMwLVx0XHRkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZiA9IGNvbmYtXHUwMDNlbWFzdGVyX3ByZWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkzMTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMyLVx0XHRtZW1zZXQoXHUwMDI2ZGF0YS1cdTAwM2VuYW4uY3VycmVudF9hbWksIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0xMjI2PWJvb2wgbWFjODAyMTFfaHdzaW1fbmFuX3JlY2VpdmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoxMjM2Olx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM3LVx0XHRyZXR1cm4gY2hhbm5lbC1cdTAwM2VjZW50ZXJfZnJlcSA9PSAyNDM3O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6NzojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6ODojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTA9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcGhhc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMTpcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMjpcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEzOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xNC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTY9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcm9sZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE3Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxODpcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE5Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTIwLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD05OT12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9sb2NhbF9zY2hlZF9jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMDI6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fTkFOX0ggKi9cbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2lkcy5oLTU3LSNkZWZpbmUgVklSVElPX0lEX1JQTUJcdFx0XHQyOCAvKiB2aXJ0aW8gcnBtYiAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19pZHMuaDo1ODojZGVmaW5lIFZJUlRJT19JRF9NQUM4MDIxMV9IV1NJTVx0MjkgLyogdmlydGlvIG1hYzgwMjExLWh3c2ltICovXG5pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2lkcy5oLTU5LSNkZWZpbmUgVklSVElPX0lEX1ZJREVPX0VOQ09ERVJcdFx0MzAgLyogdmlydGlvIHZpZGVvIGVuY29kZXIgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzNjAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkV4YW1pbmluZyBgbmV0L21hYzgwMjExL3R4LmNgIC0gQSBEZWVwIERpdmUqKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEZpcnN0IHRoaW5nJiMzOTtzIGZpcnN0LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGNvZGUgdGhhdCYjMzk7cyBiZWVuIG1vZGlmaWVkLiBUaGUgZmlsZSBJJiMzOTttIHRhcmdldGluZyBpcyBgbmV0L21hYzgwMjExL3R4LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YCBmdW5jdGlvbi4gR290dGEgbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55IHN1YnRsZSBjaGFuZ2VzLCBzbyBJJiMzOTttIGdvaW5nIHRvIHJlYWQgKnRoYXQgZW50aXJlIGZ1bmN0aW9uKiwgbGluZSBieSBsaW5lLiBObyBzaG9ydGN1dHMgaGVyZTsgYSB0aG9yb3VnaCB1bmRlcnN0YW5kaW5nIGlzIHBhcmFtb3VudCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaW50cmljYWNpZXMgb2YgdGhlIG1hYzgwMjExIHN0YWNrLiBXZSBjYW4mIzM5O3QgYWZmb3JkIHRvIG1pc3MgZXZlbiBhIHRpbnkgZGV0YWlsLiBMZXQmIzM5O3MgbWFrZSBzdXJlIG91ciBtb2RpZmljYXRpb25zIGFyZW4mIzM5O3QgaW1wYWN0aW5nIGFueXRoaW5nIGVsc2UgdW5leHBlY3RlZGx5LiBUaW1lIHRvIHJvbGwgdXAgbXkgc2xlZXZlcyBhbmQgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS90eC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjU3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NjU3MDpcdFxuNjU3MTpcdGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG42NTcyOlx0XHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcbjY1NzM6XHRcdFx0XHQgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLFxuNjU3NDpcdFx0XHRcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgY29va2llKVxuNjU3NTpcdHtcbjY1NzY6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbjY1Nzc6XHRcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG42NTc4Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XG42NTc5Olx0XHRib29sIGdyb3VwX2FkZHJlc3NlZDtcbjY1ODA6XHRcdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xuNjU4MTpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbjY1ODI6XHRcdHN0cnVjdCBldGhoZHIgKmVoZHI7XG42NTgzOlx0XHR1MzIgY3RybF9mbGFncyA9IDA7XG42NTg0Olx0XHR1MzIgZmxhZ3MgPSAwO1xuNjU4NTpcdFx0aW50IGVycjtcbjY1ODY6XHRcbjY1ODc6XHRcdC8qIG11dGV4IGxvY2sgaXMgb25seSBuZWVkZWQgZm9yIGluY3JlbWVudGluZyB0aGUgY29va2llIGNvdW50ZXIgKi9cbjY1ODg6XHRcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbjY1ODk6XHRcbjY1OTA6XHRcdC8qIE9ubHkgYWNjZXB0IENPTlRST0xfUE9SVF9QUk9UT0NPTCBjb25maWd1cmVkIGluIENPTk5FQ1QvQVNTT0NJQVRFXG42NTkxOlx0XHQgKiBvciBQcmUtQXV0aGVudGljYXRpb25cbjY1OTI6XHRcdCAqL1xuNjU5MzpcdFx0aWYgKHByb3RvICE9IHNkYXRhLVx1MDAzZWNvbnRyb2xfcG9ydF9wcm90b2NvbCBcdTAwMjZcdTAwMjZcbjY1OTQ6XHRcdCAgICBwcm90byAhPSBjcHVfdG9fYmUxNihFVEhfUF9QUkVBVVRIKSlcbjY1OTU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG42NTk2Olx0XG42NTk3Olx0XHRpZiAocHJvdG8gPT0gc2RhdGEtXHUwMDNlY29udHJvbF9wb3J0X3Byb3RvY29sKVxuNjU5ODpcdFx0XHRjdHJsX2ZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVFJMX1BPUlRfQ1RSTF9QUk9UTyB8XG42NTk5Olx0XHRcdFx0ICAgICAgSUVFRTgwMjExX1RYX0NUUkxfU0tJUF9NUEFUSF9MT09LVVA7XG42NjAwOlx0XG42NjAxOlx0XHRpZiAodW5lbmNyeXB0ZWQpXG42NjAyOlx0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9UWF9JTlRGTF9ET05UX0VOQ1JZUFQ7XG42NjAzOlx0XG42NjA0Olx0XHRmbGFncyB8PSBJRUVFODAyMTFfVFhfSU5URkxfTkw4MDIxMV9GUkFNRV9UWDtcbjY2MDU6XHRcbjY2MDY6XHRcdHNrYiA9IGRldl9hbGxvY19za2IobG9jYWwtXHUwMDNlaHcuZXh0cmFfdHhfaGVhZHJvb20gJiM0MztcbjY2MDc6XHRcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBldGhoZHIpICYjNDM7IGxlbik7XG42NjA4Olx0XHRpZiAoIXNrYilcbjY2MDk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG42NjEwOlx0XG42NjExOlx0XHRza2JfcmVzZXJ2ZShza2IsIGxvY2FsLVx1MDAzZWh3LmV4dHJhX3R4X2hlYWRyb29tICYjNDM7IHNpemVvZihzdHJ1Y3QgZXRoaGRyKSk7XG42NjEyOlx0XG42NjEzOlx0XHRza2JfcHV0X2RhdGEoc2tiLCBidWYsIGxlbik7XG42NjE0Olx0XG42NjE1Olx0XHRlaGRyID0gc2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xuNjYxNjpcdFx0bWVtY3B5KGVoZHItXHUwMDNlaF9kZXN0LCBkZXN0LCBFVEhfQUxFTik7XG42NjE3Olx0XG42NjE4Olx0XHQvKiB3ZSBtYXkgb3ZlcnJpZGUgdGhlIFNBIGZvciBNTE8gU1RBIGxhdGVyICovXG42NjE5Olx0XHRpZiAobGlua19pZCBcdTAwM2MgMCkge1xuNjYyMDpcdFx0XHRsaW5rX2lkID0gSUVFRTgwMjExX0xJTktfVU5TUEVDSUZJRUQ7XG42NjIxOlx0XHRcdG1lbWNweShlaGRyLVx1MDAzZWhfc291cmNlLCBzZGF0YS1cdTAwM2V2aWYuYWRkciwgRVRIX0FMRU4pO1xuNjYyMjpcdFx0fSBlbHNlIHtcbjY2MjM6XHRcdFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mO1xuNjYyNDpcdFxuNjYyNTpcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG42NjI2Olx0XHRcdGxpbmtfY29uZiA9IHJjdV9kZXJlZmVyZW5jZShzZGF0YS1cdTAwM2V2aWYubGlua19jb25mW2xpbmtfaWRdKTtcbjY2Mjc6XHRcdFx0aWYgKCFsaW5rX2NvbmYpIHtcbjY2Mjg6XHRcdFx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG42NjI5Olx0XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG42NjMwOlx0XHRcdFx0cmV0dXJuIC1FTk9MSU5LO1xuNjYzMTpcdFx0XHR9XG42NjMyOlx0XHRcdG1lbWNweShlaGRyLVx1MDAzZWhfc291cmNlLCBsaW5rX2NvbmYtXHUwMDNlYWRkciwgRVRIX0FMRU4pO1xuNjYzMzpcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjY2MzQ6XHRcdH1cbjY2MzU6XHRcbjY2MzY6XHRcdGVoZHItXHUwMDNlaF9wcm90byA9IHByb3RvO1xuNjYzNzpcdFxuNjYzODpcdFx0c2tiLVx1MDAzZWRldiA9IGRldjtcbjY2Mzk6XHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IHByb3RvO1xuNjY0MDpcdFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XG42NjQxOlx0XHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xuNjY0MjpcdFxuNjY0MzpcdFx0LyogdXBkYXRlIFFvUyBoZWFkZXIgdG8gcHJpb3JpdGl6ZSBjb250cm9sIHBvcnQgZnJhbWVzIGlmIHBvc3NpYmxlLFxuNjY0NDpcdFx0ICogcHJpb3JpdGl6YXRpb24gYWxzbyBoYXBwZW5zIGZvciBjb250cm9sIHBvcnQgZnJhbWVzIHNlbmQgb3ZlclxuNjY0NTpcdFx0ICogQUZfUEFDS0VUXG42NjQ2Olx0XHQgKi9cbjY2NDc6XHRcdHJjdV9yZWFkX2xvY2soKTtcbjY2NDg6XHRcdGVyciA9IGllZWU4MDIxMV9sb29rdXBfcmFfc3RhKHNkYXRhLCBza2IsIFx1MDAyNnN0YSk7XG42NjQ5Olx0XHRpZiAoZXJyKSB7XG42NjUwOlx0XHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbjY2NTE6XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG42NjUyOlx0XHRcdHJldHVybiBlcnI7XG42NjUzOlx0XHR9XG42NjU0Olx0XG42NjU1Olx0XHRncm91cF9hZGRyZXNzZWQgPSBJU19FUlIoc3RhKTtcbjY2NTY6XHRcdGlmIChJU19FUlIoc3RhKSlcbjY2NTc6XHRcdFx0c3RhID0gTlVMTDtcbjY2NTg6XHRcbjY2NTk6XHRcdHNrYl9zZXRfcXVldWVfbWFwcGluZyhza2IsIGllZWU4MDIxMV9zZWxlY3RfcXVldWUoc2RhdGEsIHN0YSwgc2tiKSk7XG42NjYwOlx0XG42NjYxOlx0XHQvKlxuNjY2MjpcdFx0ICogZm9yIE1MTyBTVEEsIHRoZSBTQSBzaG91bGQgYmUgdGhlIEFQIE1MRCBhZGRyZXNzLCBidXRcbjY2NjM6XHRcdCAqIHRoZSBsaW5rIElEIGhhcyBiZWVuIHNlbGVjdGVkIGFscmVhZHlcbjY2NjQ6XHRcdCAqL1xuNjY2NTpcdFx0aWYgKHN0YSBcdTAwMjZcdTAwMjYgc3RhLVx1MDAzZXN0YS5tbG8pXG42NjY2Olx0XHRcdG1lbWNweShlaGRyLVx1MDAzZWhfc291cmNlLCBzZGF0YS1cdTAwM2V2aWYuYWRkciwgRVRIX0FMRU4pO1xuNjY2NzpcdFxuNjY2ODpcdFx0aW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcbjY2Njk6XHRcdG1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMjIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gaGFzIGtleWVkIGluIG9uIHRoZSBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAgZnVuY3Rpb24gd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AuIEkgY2FuIHNlZSBpbW1lZGlhdGVseSB0aGF0IHRoaXMgaXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXMgaXQmIzM5O3MgcGFydCBvZiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjay4gVGhlIGVudHJ5IHBvaW50IGZyb20gdXNlcnNwYWNlIGlzIHRocm91Z2ggbmw4MDIxMSwgc3BlY2lmaWNhbGx5IHRyaWdnZXJlZCBieSB0aGUgYE5MODAyMTFfQ01EX0NPTlRST0xfUE9SVF9GUkFNRWAgY29tbWFuZCwgd2hpY2ggdGhlbiBjYWxscyBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLCB3aGljaCBpbiB0dXJuIGxlYWRzIHRvIGByZGV2X3R4X2NvbnRyb2xfcG9ydGAgYW5kIHVsdGltYXRlbHkgdG8gb3VyIHRhcmdldCwgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLgoKVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBlc3RhYmxpc2hlcyByZWFjaGFiaWxpdHkgLSB1c2Vyc3BhY2UgYWNjZXNzIGlzIGEgY3JpdGljYWwgdmVjdG9yLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggbWFjODAyMTEsIGxpa2UgYG1hYzgwMjExX2h3c2ltYCwgaXMgYW5vdGhlciBiaWcgcGx1cywgYXMgaXQgbWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gdGVzdC4KClNvLCBsZXQmIzM5O3MgcmV2aWV3OiByZWFjaGFibGU/IFllcy4gVG91Y2hlcyBjb3JlIG5ldHdvcmtpbmcgY29kZT8gWWVzLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcsIGJhc2VkIG9uIHRoaXMgaW5pdGlhbCBhbmFseXNpcy4KCk5vdywgdG8gbWFrZSBzdXJlIEkgY2FuIGFjdHVhbGx5IGJ1aWxkIGEgZnV6emVyIGZvciB0aGlzLCBJIG5lZWQgdG8gY2hlY2sgdGhlIG5lY2Vzc2FyeSBLY29uZmlnIG9wdGlvbnMuIE15IHByZWxpbWluYXJ5IGxpc3QgbG9va3MgbGlrZSB0aGlzOiBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBgTUFDODAyMTFfSFdTSU1gLCBhbmQgcG9zc2libHkgYE5MODAyMTFfVEVTVE1PREVgLiBUaW1lIHRvIGRpdmUgaW50byBgbmV0L21hYzgwMjExL0tjb25maWdgIGFuZCBgbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlc2UgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBHb3R0YSBiZSBjZXJ0YWluIEkgY2FuIGNvbmZpZ3VyZSBhIGJ1aWxkIHRoYXQgaW5jbHVkZXMgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXHRib29sIFwmIzM0O2VuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDthbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXHRzdHJpbmcgXCYjMzQ7YWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O2NmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVx0Ym9vbCBcJiMzNDtlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTM1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBDRkc4MDIxMWAgRGVwZW5kZW5jeSBUcmVlKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYG5ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgdHJhY2UgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBDRkc4MDIxMWAuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBwb3RlbnRpYWwgY29tcGxleGl0aWVzIGhlcmUsIGdpdmVuIHRoZSBldm9sdXRpb24gb2YgdGhlIHdpcmVsZXNzIHN0YWNrLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqQ29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzKio6IEl04oCZcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgY29uZmlndXJhdGlvbnMgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGluY2x1c2lvbiBvZiBgQ0ZHODAyMTFgLiBBcmUgd2UgdGFsa2luZyBhYm91dCBzcGVjaWZpYyBoYXJkd2FyZSBhcmNoaXRlY3R1cmVzLCBkcml2ZXJzLCBvciBnZW5lcmFsIHdpcmVsZXNzIGZlYXR1cmUgdG9nZ2xlcz8KKiAgICoqTW9kdWxlLXNwZWNpZmljIGRlcGVuZGVuY2llcyoqOiBJJiMzOTttIGFsc28gaW50ZXJlc3RlZCBpbiBob3cgdmFyaW91cyB3aXJlbGVzcyBtb2R1bGVzIChlLmcuLCBzcGVjaWZpYyByYWRpbyBmaXJtd2FyZSBzdXBwb3J0KSByZWx5IG9uIHRoaXMgZm91bmRhdGlvbmFsIGxheWVyLiBBIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY3kgZ3JhcGggaXMgZXNzZW50aWFsLgoqICAgKipCdWlsZC10aW1lIGltcGxpY2F0aW9ucyoqOiBJJiMzOTtsbCBhbHNvIGJlIG1pbmRmdWwgb2YgaG93IHRoZXNlIGRlcGVuZGVuY2llcyBhZmZlY3QgdGhlIG92ZXJhbGwga2VybmVsIGJ1aWxkIHByb2Nlc3MsIGZyb20gY29tcGlsYXRpb24gdGltZSB0byBpbWFnZSBzaXplLgoqICAgKipQb3RlbnRpYWwgY29uZmxpY3RzKio6IEkgd2FudCB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBiZXR3ZWVuIGBDRkc4MDIxMWAgYW5kIG90aGVyIHdpcmVsZXNzIHN1YnN5c3RlbXMgKGUuZy4sIGRlcHJlY2F0ZWQgb3IgbGVnYWN5IHdpcmVsZXNzIHN0YWNrcykuCiogICAqKkRvY3VtZW50YXRpb24gYW5kIGNvbW1lbnRhcnkqKjogSSBrbm93IGhvdyBoZWxwZnVsIGNvbW1lbnRzIGNhbiBiZSwgYW5kIGhvdyB3ZWxsLW1haW50YWluZWQgS2NvbmZpZyBmaWxlcyBjYW4gbWFrZSB0aGUgZGlmZmVyZW5jZSEKClRoaXMgZGVlcCBkaXZlIGlzIGp1c3QgYW5vdGhlciBkYXkgYXQgdGhlIG9mZmljZSB0byBlbnN1cmUgYSBzb2xpZCBncmFzcCBvbiBob3cgdGhpcyBjb3JlIGNvbXBvbmVudCBpcyB1c2VkLCBhbmQgdG8gZm9yZXNlZSBhbnkgZnV0dXJlIGludGVncmF0aW9uIGNoYWxsZW5nZXMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGFueSBhc3N1bXB0aW9ucyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTU6XHRcdGJvb2xcbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgQ0ZHODAyMTFcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbiAgMjA6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMjE6XHRcdHNlbGVjdCBDUkMzMlxuICAyMjpcdFx0IyBtYXkgbmVlZCB0byB1cGRhdGUgdGhpcyB3aGVuIGNlcnRpZmljYXRlcyBhcmUgY2hhbmdlZCBhbmQgYXJlXG4gIDIzOlx0XHQjIHVzaW5nIGEgZGlmZmVyZW50IGFsZ29yaXRobSwgdGhvdWdoIHJpZ2h0IG5vdyB0aGV5IHNob3VsZG4mIzM5O3RcbiAgMjQ6XHRcdCMgKHRoaXMgaXMgaGVyZSByYXRoZXIgdGhhbiBiZWxvdyB0byBhbGxvdyBpdCB0byBiZSBhIG1vZHVsZSlcbiAgMjU6XHRcdHNlbGVjdCBDUllQVE9fU0hBMjU2IGlmIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xuICAyNjpcdFx0aGVscFxuICAyNzpcdFx0ICBjZmc4MDIxMSBpcyB0aGUgTGludXggd2lyZWxlc3MgTEFOICg4MDIuMTEpIGNvbmZpZ3VyYXRpb24gQVBJLlxuICAyODpcdFx0ICBFbmFibGUgdGhpcyBpZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGRldmljZS5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVmZXIgdG8gZG9jdW1lbnRhdGlvbiBvbiB0aGUgd2lyZWxlc3Mgd2lraTpcbiAgMzE6XHRcbiAgMzI6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vZGV2ZWxvcGVycy9Eb2N1bWVudGF0aW9uL2NmZzgwMjExXG4gIDMzOlx0XG4gIDM0Olx0XHQgIFdoZW4gYnVpbHQgYXMgYSBtb2R1bGUgaXQgd2lsbCBiZSBjYWxsZWQgY2ZnODAyMTEuXG4gIDM1Olx0XG4gIDM2Olx0aWYgQ0ZHODAyMTFcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgTkw4MDIxMV9URVNUTU9ERVxuICAzOTpcdFx0Ym9vbCBcJiMzNDtubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmRcJiMzNDtcbiAgNDA6XHRcdGhlbHBcbiAgNDE6XHRcdCAgVGhlIG5sODAyMTEgdGVzdG1vZGUgY29tbWFuZCBoZWxwcyBpbXBsZW1lbnRpbmcgdGhpbmdzIGxpa2VcbiAgNDI6XHRcdCAgZmFjdG9yeSBjYWxpYnJhdGlvbiBvciB2YWxpZGF0aW9uIHRvb2xzIGZvciB3aXJlbGVzcyBjaGlwcy5cbiAgNDM6XHRcbiAgNDQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIE9OTFkgZm9yIGtlcm5lbHMgdGhhdCBhcmUgc3BlY2lmaWNhbGx5XG4gIDQ1Olx0XHQgIGJ1aWx0IGZvciBzdWNoIHB1cnBvc2VzLlxuICA0NjpcdFxuICA0NzpcdFx0ICBEZWJ1Z2dpbmcgdG9vbHMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gZW5kIHVwIGluIHRoZSBoYW5kcyBvZlxuICA0ODpcdFx0ICB1c2VycyBzaG91bGQgYmV0dGVyIGJlIGltcGxlbWVudGVkIHdpdGggZGVidWdmcy5cbiAgNDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4NTQKCQkJCQkJCW91dHB1dDogMjA4CgkJCQkJCQl0aG91Z2h0czogMzk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAgTW9kaWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gbG9vayBhdCBgRm9jdXNTeW1ib2xzYC4gQWgsIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIEkgc2VlIGl0JiMzOTtzIGJlZW4gbW9kaWZpZWQuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUsIGxldCYjMzk7cyBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnRzLiBMb29rcyBsaWtlIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAgYW5kLCBvZiBjb3Vyc2UsIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpdHNlbGYsIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlc2UgdHdvIGFyZSB0aGUgcmVsZXZhbnQgdG91Y2hwb2ludHMgb3IgaWYgdGhlcmUgYXJlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGluIGBuZXQvbWFjODAyMTEvdHguY2AgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuIEFscmlnaHQsIGxvb2tzIGxpa2UgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgIGlzIHRoZSBjb3JlIHN5bWJvbCwgYW5kIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAgcHJvdmlkZXMgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCBgTUFDODAyMTFgLCBvYnZpb3VzbHksIGBDRkc4MDIxMWAsIGFuZCBhbHNvIGBNQUM4MDIxMV9IV1NJTWAg4oCTIHRoYXQmIzM5O3MgY3J1Y2lhbC4gSSYjMzk7bGwgaGF2ZSB0byBrZWVwIHRoaXMgaW4gbWluZCBhcyBJIHBlcmZvcm0gYSBkZWVwZXIgZGl2ZS4KCk9rYXksIHNhbml0eSBjaGVjayB0aW1lLiBXZSBoYXZlIGBFbmFibGVDb25maWdzYDogYFsmIzM0O01BQzgwMjExJiMzNDssICYjMzQ7Q0ZHODAyMTEmIzM0OywgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7XWAsIG1hdGNoaW5nIHdoYXQgSSBleHBlY3RlZC4gVGhlIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7aWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7LCAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDtdYCDigJMgcGVyZmVjdC4gQW5kIHRoZSBrZXkgaXMgdGhhdCBpdCYjMzk7cyBgV29ydGhGdXp6aW5nOiB0cnVlYC4gVGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgc3luY2hyb25pemF0aW9uIGlzc3VlcyBhbmQgdGhlIGhhbmRsaW5nIG9mIGJvdHRvbSBoYWxmIGRpc2FibGluZyB3aGVuIHVwZGF0aW5nIHNvZnR3YXJlIG5ldHdvcmsgc3RhdGlzdGljcyAqYmVmb3JlKiB0cmFuc21pdHRpbmcgY29udHJvbCBwb3J0IGZyYW1lcywgd2hpY2ggaXMgcmVhY2hhYmxlIHRocm91Z2ggYG5sODAyMTFgIHdoZW4gdXNpbmcgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXJzIGxpa2UgbWFjODAyMTFfaHdzaW0uIEJpbmdvLiBUaGlzIGlzIGRlZmluaXRlbHkgZnV6ei13b3J0aHksIGdpdmVuIHRoZSBjb250ZXh0LgoKVGltZSB0byBsb2cgdGhlIHJlc3VsdHMuIExldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCBpbiBuZXQvbWFjODAyMTEvdHguYyBieSBtb3ZpbmcgbG9jYWxfYmhfZGlzYWJsZSgpIHRvIHByb3RlY3QgdGhlIHBlci1DUFUgVFggc3RhdGlzdGljcyB1cGRhdGUgKGRldl9zd19uZXRzdGF0c190eF9hZGQpLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIChOTDgwMjExX0NNRF9DT05UUk9MX1BPUlRfRlJBTUUpIGFuZCBjYW4gYmUgZXhlY3V0ZWQgYW5kIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyB3aXRoIHNpbXVsYXRlZCB3aXJlbGVzcyBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCBpbiBuZXQvbWFjODAyMTEvdHguYyBieSBtb3ZpbmcgbG9jYWxfYmhfZGlzYWJsZSgpIHRvIHByb3RlY3QgdGhlIHBlci1DUFUgVFggc3RhdGlzdGljcyB1cGRhdGUgKGRldl9zd19uZXRzdGF0c190eF9hZGQpLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIChOTDgwMjExX0NNRF9DT05UUk9MX1BPUlRfRlJBTUUpIGFuZCBjYW4gYmUgZXhlY3V0ZWQgYW5kIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyB3aXRoIHNpbXVsYXRlZCB3aXJlbGVzcyBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgYGxvY2FsX2JoX2Rpc2FibGUoKWAgaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoKWAgdG8gY292ZXIgYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAgYW5kIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KClgLiBUaGlzIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSBmaXggZW5zdXJpbmcgYm90dG9tIGhhbHZlcyBhcmUgZGlzYWJsZWQgZHVyaW5nIHBlci1DUFUgc3RhdGlzdGljIHVwZGF0ZXMgdG8gcHJldmVudCBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBzb2Z0aXJxcy5cblxuVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgbWVtb3J5IGFsbG9jYXRpb25zLCBpbml0aWFsaXphdGlvbiBsb2dpYywga2VybmVsLXRvLXVzZXIgY29waWVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGJ1Z3Mgb3IgY29uY3VycmVuY3kgdmlvbGF0aW9ucyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLCBub3QgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2ZmI1MGEyNzViNDAzNWFkMjFmYzlhZDc1ZjQzODdlZTY4OWU5MjdjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMDQ6NDc6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jCmluZGV4IDc0YWIyNzUzNDA3NmYuLjdiMWEzYzYzZTVkYzUgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jCkBAIC02Njg3LDEwICYjNDM7NjY4Nyw5IEBAIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAomIzQzOwlsb2NhbF9iaF9kaXNhYmxlKCk7CiAJZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi0mZ3Q7bGVuKTsKIAlpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItJmd0O2xlbik7Ci0KLQlsb2NhbF9iaF9kaXNhYmxlKCk7CiAJaWVlZTgwMjExX3htaXQoc2RhdGEsIHN0YSwgc2tiKTsKIAlsb2NhbF9iaF9lbmFibGUoKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgbWFjODAyMTEgVFggUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgcGF0Y2ggaXMgaW4gYG5ldC9tYWM4MDIxMS90eC5jYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIHRyYW5zbWlzc2lvbiBwYXRoLiBOb3csIGxldCBtZSBzY3J1dGluaXplIHRoZSBjb2RlIGNoYW5nZXMuIEFoLCBJIHNlZSBhIHNtYWxsIGJ1dCBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBtb2RpZmljYXRpb24gd2l0aGluIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBgbG9jYWxfYmhfZGlzYWJsZSgpYCBoYXMgYmVlbiBtb3ZlZCAqYmVmb3JlKiB0aGUgY2FsbHMgdG8gYGRldl9zd19uZXRzdGF0c190eF9hZGRgIGFuZCBgaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eGAsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBgbG9jYWxfYmhfZW5hYmxlKClgIGlzIG5vdyBsb2NhdGVkIGFmdGVyIGBpZWVlODAyMTFfeG1pdCgpYC4gUHJldmlvdXNseSwgYGxvY2FsX2JoX2Rpc2FibGUoKWAgYW5kIGBsb2NhbF9iaF9lbmFibGUoKWAgd2VyZSB3cmFwcGluZyBvbmx5IHRoZSBjYWxsIHRvIGBpZWVlODAyMTFfeG1pdCgpYC4gVGhpcyBjaGFuZ2VzIHRoZSBjcml0aWNhbCBzZWN0aW9uIHdoZXJlIGludGVycnVwdHMgYXJlIG1hc2tlZCwgZXh0ZW5kaW5nIGl0IHRvIGFsc28gY292ZXIgdXBkYXRpbmcgdGhlIGRldmljZSBzdGF0aXN0aWNzIGFuZCB0aGUgTEVEIHRyaWdnZXIuCgpOb3csIHdoeSBpcyB0aGlzIGJlaW5nIGRvbmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IGNvdWxkIGJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0byBhdm9pZCBjb250ZW50aW9uLCBvciBtYXliZSB0byBlbnN1cmUgZGF0YSBjb25zaXN0ZW5jeSBkdXJpbmcgdGhlc2UgY3JpdGljYWwgdXBkYXRlcy4gTGV0JiMzOTtzIHB1bGwgdXAgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYG5ldC9tYWM4MDIxMS90eC5jYCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCByYXRpb25hbGUgbW9yZSBmdWxseS4gTGV0JiMzOTtzIHNlZSBpZiBJIGNhbiBmaW5kIGFuIGV4cGxhbmF0aW9uIHdpdGggYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2Ugc3RhdHMgdXBkYXRlcywgdGhlIExFRCB0cmlnZ2VyLCBhbmQgdGhlIHRyYW5zbWlzc2lvbiBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IGludGVycnVwdCBtb2RlbC4gU29tZXRoaW5nJiMzOTtzIGRyaXZpbmcgdGhpcyBtb3ZlOyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgJiMzNDt3aHkmIzM0OyBhbmQgaXRzIGltcGFjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3R4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2Njc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY2NzU6XHRcdFx0aWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llKTtcbjY2NzY6XHRcbjY2Nzc6XHRcdHNrYiA9IGllZWU4MDIxMV9idWlsZF9oZHIoc2RhdGEsIHNrYiwgc3RhKTtcbjY2Nzg6XHRcdGlmIChJU19FUlIoc2tiKSkge1xuNjY3OTpcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjY2ODA6XHRcdFx0cmV0dXJuIFBUUl9FUlIoc2tiKTtcbjY2ODE6XHRcdH1cbjY2ODI6XHRcbjY2ODM6XHRcdGlmIChsaW5rX2lkICE9IHUzMl9nZXRfYml0cyhpbmZvLVx1MDAzZWNvbnRyb2wuZmxhZ3MsXG42Njg0Olx0XHRcdFx0XHQgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspKSB7XG42Njg1Olx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xuNjY4NjpcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjY2ODc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG42Njg4Olx0XHR9XG42Njg5Olx0XG42NjkwOlx0XHRsb2NhbF9iaF9kaXNhYmxlKCk7XG42NjkxOlx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG42NjkyOlx0XHRpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXHUwMDNlbGVuKTtcbjY2OTM6XHRcdGllZWU4MDIxMV94bWl0KHNkYXRhLCBzdGEsIHNrYik7XG42Njk0Olx0XHRsb2NhbF9iaF9lbmFibGUoKTtcbjY2OTU6XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuNjY5NjpcdFxuNjY5NzpcdFx0cmV0dXJuIDA7XG42Njk4Olx0fVxuNjY5OTpcdFxuNjcwMDpcdGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG42NzAxOlx0XHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbjY3MDI6XHR7XG42NzAzOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG42NzA0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuNjcwNTpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbjY3MDY6XHRcbjY3MDc6XHRcdHNrYiA9IGRldl9hbGxvY19za2IobG9jYWwtXHUwMDNlaHcuZXh0cmFfdHhfaGVhZHJvb20gJiM0MzsgbGVuICYjNDM7XG42NzA4Olx0XHRcdFx0ICAgIDMwICYjNDM7IC8qIGhlYWRlciBzaXplICovXG42NzA5Olx0XHRcdFx0ICAgIDE4KTsgLyogMTFzIGhlYWRlciBzaXplICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzkKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoYXQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byB0aGUgVGltaW5nIG9mIGBsb2NhbF9iaF9kaXNhYmxlKClgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHdvbmRlcmluZyB3aHkgYGxvY2FsX2JoX2Rpc2FibGUoKWAgd2FzIG1vdmVkIHRvIGJlICpiZWZvcmUqIHRoYXQgY2FsbCB0byBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZCgpYC4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoZXJlJiMzOTtzIGEgcmVhc29uLCBhbmQgYSBnb29kIG9uZSwgZm9yIHRoYXQgcGxhY2VtZW50LgoKVGhlIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLSZndDtsZW4pYCBmdW5jdGlvbiBpcyB0aGUga2V5IGhlcmUuIEl0JiMzOTtzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRob3NlIHBlci1DUFUgbmV0d29yayBzdGF0aXN0aWNzLiBBbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdCBiZWluZyBjYWxsZWQgd2hlbiBpdCBpcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAgdG8gYmUgc3VyZS4uLiBJIHN1c3BlY3QgaXQmIzM5O3MgYWJvdXQgc3luY2hyb25pemF0aW9uIG9yIGF0b21pY2l0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2X3N3X25ldHN0YXRzX3R4X2FkZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvbmV0X2RldmljZS5yc3Q9MTQxPXN0cnVjdCBwY3B1X2xzdGF0c19fcGVyY3B1KiAgICAgICAgIGxzdGF0cyAgICAgICAgICAgICAgICAgICAgICByZWFkX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2xzdGF0c19hZGQoKVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0OjE0MjpzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0c19fcGVyY3B1KiAgICB0c3RhdHMgICAgICAgICAgICAgICAgICAgICAgcmVhZF9tb3N0bHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9zd19uZXRzdGF0c190eF9hZGQoKVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0LTE0My1zdHJ1Y3QgcGNwdV9kc3RhdHNfX3BlcmNwdSogICAgICAgICBkc3RhdHNcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pcG9pYl90eC5jPTExND1zdGF0aWMgdm9pZCBoZmkxX2lwb2liX2ZyZWVfdHgoc3RydWN0IGlwb2liX3R4cmVxICp0eCwgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pcG9pYl90eC5jLTExOC1cdGlmIChsaWtlbHkoIXR4LVx1MDAzZXNkbWFfc3RhdHVzKSkge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvaXBvaWJfdHguYzoxMTk6XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQocHJpdi1cdTAwM2VuZXRkZXYsIDEsIHR4LVx1MDAzZXNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvaXBvaWJfdHguYy0xMjAtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ190eHJ4LmM9MTMwPW5ldGRldl90eF90IGhiZ19uZXRfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ190eHJ4LmMtMTcwLVx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2cmluZy1cdTAwM2VudHUsIGhiZ19xdWV1ZV9uZXh0X3BydChudHUsIHJpbmcpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ190eHJ4LmM6MTcxOlx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX3R4cnguYy0xNzItXHRyZXR1cm4gTkVUREVWX1RYX09LO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xpdGV4L2xpdGV4X2xpdGVldGguYz0xNTQ9c3RhdGljIG5ldGRldl90eF90IGxpdGVldGhfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xpdGV4L2xpdGV4X2xpdGVldGguYy0xODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9saXRleC9saXRleF9saXRlZXRoLmM6MTg3Olx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGl0ZXgvbGl0ZXhfbGl0ZWV0aC5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00ODc0PXN0YXRpYyB2b2lkIHJ0bF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00OTAxLVx0aWYgKHRwLVx1MDAzZWRpcnR5X3R4ICE9IGRpcnR5X3R4KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0OTAyOlx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgcGt0c19jb21wbCwgYnl0ZXNfY29tcGwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDkwMy1cdFx0V1JJVEVfT05DRSh0cC1cdTAwM2VkaXJ0eV90eCwgZGlydHlfdHgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTI2NT1zdGF0aWMgaW50IHR4X2hhbmRsZXIoc3RydWN0IHJ0YXNlX3JpbmcgKnJpbmcsIGludCBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtMzA1LVx0aWYgKHJpbmctXHUwMDNlZGlydHlfaWR4ICE9IGRpcnR5X3R4KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzozMDY6XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCBwa3RzX2NvbXBsLCBieXRlc19jb21wbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zMDctXHRcdFdSSVRFX09OQ0UocmluZy1cdTAwM2VkaXJ0eV9pZHgsIGRpcnR5X3R4KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTE0NTQ9c3RhdGljIGludCBhbTY1X2Nwc3dfbnVzc190eF9jb21wbF9wYWNrZXRzKHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0xNTEyLVx0XHRhbTY1X2Nwc3dfbnVzc194bWl0X2ZyZWUodHhfY2huLCBkZXNjX3R4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM6MTUxMzpcdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZGV2LCAxLCBwa3RfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMTUxNC1cdFx0aWYgKCFzaW5nbGVfcG9ydCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jPTIxOT1pbnQgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgaW50IGNobixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYy0yNTYtXHRcdFx0c2tiID0gc3dkYXRhLVx1MDAzZWRhdGEuc2tiO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmM6MjU3Olx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoc2tiLVx1MDAzZWRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYy0yNTgtXHRcdFx0dG90YWxfYnl0ZXMgJiM0Mzs9IHNrYi1cdTAwM2VsZW47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMtMjYyLVx0XHRcdHhkcGYgPSBzd2RhdGEtXHUwMDNlZGF0YS54ZHBmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmM6MjYzOlx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgeGRwZi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMtMjY0LVx0XHRcdHRvdGFsX2J5dGVzICYjNDM7PSB4ZHBmLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYy0yNjgtXHRcdFx0cGt0X2xlbiA9IGNwcGk1X2hkZXNjX2dldF9wa3RsZW4oZGVzY190eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYzoyNjk6XHRcdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZGV2LCAxLCBwa3RfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jLTI3MC1cdFx0XHR4c2tfZnJhbWVzX2RvbmUmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L21hY3NlYy5jPTUzOD1zdGF0aWMgdm9pZCBjb3VudF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgcmV0LCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L21hY3NlYy5jLTU0MC1cdGlmIChsaWtlbHkocmV0ID09IE5FVF9YTUlUX1NVQ0NFU1MgfHwgcmV0ID09IE5FVF9YTUlUX0NOKSlcbmRyaXZlcnMvbmV0L21hY3NlYy5jOjU0MTpcdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIGxlbik7XG5kcml2ZXJzL25ldC9tYWNzZWMuYy01NDItfVxuLS1cbmRyaXZlcnMvbmV0L25ldGtpdC5jPTkyPXN0YXRpYyBuZXRkZXZfdHhfdCBuZXRraXRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L25ldGtpdC5jLTEyMS1cdFx0aWYgKGxpa2VseShfX25ldGlmX3J4KHNrYikgPT0gTkVUX1JYX1NVQ0NFU1MpKSB7XG5kcml2ZXJzL25ldC9uZXRraXQuYzoxMjI6XHRcdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIGxlbik7XG5kcml2ZXJzL25ldC9uZXRraXQuYy0xMjMtXHRcdFx0ZGV2X3N3X25ldHN0YXRzX3J4X2FkZChwZWVyLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L25ldGtpdC5jLTEyOC1cdGNhc2UgTkVUS0lUX1JFRElSRUNUOlxuZHJpdmVycy9uZXQvbmV0a2l0LmM6MTI5Olx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgbGVuKTtcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTEzMC1cdFx0c2tiX2RvX3JlZGlyZWN0KHNrYik7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM9MTc3Nz1wcHBfcHJlcGFyZV90eF9za2Ioc3RydWN0IHBwcCAqcHBwLCBzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTgxMy1cbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jOjE4MTQ6XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbiAtIFBQUF9QUk9UT19MRU4pO1xuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTgxNS1cbi0tXG5kcml2ZXJzL25ldC90dW4uYz0yMDk3PXN0YXRpYyBzc2l6ZV90IHR1bl9wdXRfdXNlcl94ZHAoc3RydWN0IHR1bl9zdHJ1Y3QgKnR1bixcbi0tXG5kcml2ZXJzL25ldC90dW4uYy0yMTE3LVx0cHJlZW1wdF9kaXNhYmxlKCk7XG5kcml2ZXJzL25ldC90dW4uYzoyMTE4Olx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZCh0dW4tXHUwMDNlZGV2LCAxLCByZXQpO1xuZHJpdmVycy9uZXQvdHVuLmMtMjExOS1cdHByZWVtcHRfZW5hYmxlKCk7XG4tLVxuZHJpdmVycy9uZXQvdHVuLmM9MjEyNT1zdGF0aWMgc3NpemVfdCB0dW5fcHV0X3VzZXIoc3RydWN0IHR1bl9zdHJ1Y3QgKnR1bixcbi0tXG5kcml2ZXJzL25ldC90dW4uYy0yMjAyLVx0cHJlZW1wdF9kaXNhYmxlKCk7XG5kcml2ZXJzL25ldC90dW4uYzoyMjAzOlx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZCh0dW4tXHUwMDNlZGV2LCAxLCBza2ItXHUwMDNlbGVuICYjNDM7IHZsYW5faGxlbik7XG5kcml2ZXJzL25ldC90dW4uYy0yMjA0LVx0cHJlZW1wdF9lbmFibGUoKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz05OD1zdGF0aWMgbmV0ZGV2X3R4X3QgcW1pbXV4X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMTItXHRpZiAobGlrZWx5KHJldCA9PSBORVRfWE1JVF9TVUNDRVNTIHx8IHJldCA9PSBORVRfWE1JVF9DTikpXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMTM6XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW4pO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTE0LVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYz0zNDg9c3RhdGljIG5ldGRldl90eF90IHZldGhfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy0zODMtXHRcdGlmICghdXNlX25hcGkpXG5kcml2ZXJzL25ldC92ZXRoLmM6Mzg0Olx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW5ndGgpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTM4NS1cdFx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NvcmUuYz05MD1xdG5mX25ldGRldl9oYXJkX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY29yZS5jLTEyOC1cdFx0cXRuZl9wYWNrZXRfc2VuZF9oaV9wcmkoc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NvcmUuYzoxMjk6XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jb3JlLmMtMTMwLVx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvcGVhcmxfcGNpZS5jPTQ2ND1zdGF0aWMgdm9pZCBxdG5mX3BlYXJsX2RhdGFfdHhfcmVjbGFpbShzdHJ1Y3QgcXRuZl9wY2llX3BlYXJsX3N0YXRlICpwcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9wY2llL3BlYXJsX3BjaWUuYy00OTEtXHRcdFx0aWYgKHNrYi1cdTAwM2VkZXYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvcGVhcmxfcGNpZS5jOjQ5MjpcdFx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoc2tiLVx1MDAzZWRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9wY2llL3BlYXJsX3BjaWUuYy00OTMtXHRcdFx0XHRpZiAodW5saWtlbHkocHJpdi1cdTAwM2V0eF9zdG9wcGVkKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvdG9wYXpfcGNpZS5jPTM5MT1zdGF0aWMgdm9pZCBxdG5mX3RvcGF6X2RhdGFfdHhfcmVjbGFpbShzdHJ1Y3QgcXRuZl9wY2llX3RvcGF6X3N0YXRlICp0cylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9wY2llL3RvcGF6X3BjaWUuYy00MjAtXHRcdFx0aWYgKHNrYi1cdTAwM2VkZXYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvdG9wYXpfcGNpZS5jOjQyMTpcdFx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoc2tiLVx1MDAzZWRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9wY2llL3RvcGF6X3BjaWUuYy00MjItXHRcdFx0XHRpZiAodW5saWtlbHkocHJpdi1cdTAwM2V0eF9zdG9wcGVkKSkge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MzA3Mj1zdGF0aWMgaW5saW5lIHZvaWQgZGV2X3N3X25ldHN0YXRzX3J4X2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbGVuKVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMzA4MS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MzA4MjpzdGF0aWMgaW5saW5lIHZvaWQgZGV2X3N3X25ldHN0YXRzX3R4X2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDgzLVx0XHRcdFx0XHQgIHVuc2lnbmVkIGludCBwYWNrZXRzLFxuLS1cbm5ldC9icmlkZ2UvYnJfZGV2aWNlLmM9MzA9bmV0ZGV2X3R4X3QgYnJfZGV2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvYnJpZGdlL2JyX2RldmljZS5jLTU4LVxubmV0L2JyaWRnZS9icl9kZXZpY2UuYzo1OTpcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXHUwMDNlbGVuKTtcbm5ldC9icmlkZ2UvYnJfZGV2aWNlLmMtNjAtXG4tLVxubmV0L2RzYS91c2VyLmM9OTE0PXN0YXRpYyBuZXRkZXZfdHhfdCBkc2FfdXNlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2RzYS91c2VyLmMtOTE4LVxubmV0L2RzYS91c2VyLmM6OTE5Olx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xubmV0L2RzYS91c2VyLmMtOTIwLVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTM2Mzg9aWVlZTgwMjExX3htaXRfZmFzdF9maW5pc2goc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzY1NC1cbm5ldC9tYWM4MDIxMS90eC5jOjM2NTU6XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHNrYi1cdTAwM2VkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL3R4LmMtMzY1Ni1cbi0tXG5uZXQvbWFjODAyMTEvdHguYz00NDA1PXZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQ0ODgtXG5uZXQvbWFjODAyMTEvdHguYzo0NDg5Olx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5uZXQvbWFjODAyMTEvdHguYy00NDkwLVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ3NTE9c3RhdGljIHZvaWQgaWVlZTgwMjExXzgwMjNfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00ODE2LVxubmV0L21hYzgwMjExL3R4LmM6NDgxNzpcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCBza2JzLCBsZW4pO1xubmV0L21hYzgwMjExL3R4LmMtNDgxOC1cbi0tXG5uZXQvbWFjODAyMTEvdHguYz02NTcxPWludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNjY5MC1cdGxvY2FsX2JoX2Rpc2FibGUoKTtcbm5ldC9tYWM4MDIxMS90eC5jOjY2OTE6XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5uZXQvbWFjODAyMTEvdHguYy02NjkyLVx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLVx1MDAzZWxlbik7XG4tLVxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jPTM0PWludGVybmFsX2Rldl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTQ1LVx0aWYgKGxpa2VseSghZXJyKSlcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzo0NjpcdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsIGxlbik7XG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtNDctXHRlbHNlXG4tLVxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jPTQyND14ZnJtaV94bWl0MihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZmxvd2kgKmZsKVxuLS1cbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYy01MDktXHRpZiAobmV0X3htaXRfZXZhbChlcnIpID09IDApIHtcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYzo1MTA6XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW5ndGgpO1xubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTUxMS1cdH0gZWxzZSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMDkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gRGVmaW5pdGlvbjogYGRldl9zd19uZXRzdGF0c190eF9hZGRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBmdW5jdGlvbiBkZWZpbml0aW9uLCBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZGAuIEdpdmVuIHRoZSBuYW1lLCBJJiMzOTttIGltbWVkaWF0ZWx5IGV4cGVjdGluZyB0aGlzIHRvIGJlIHJlbGF0ZWQgdG8gbmV0d29yayBzdGF0aXN0aWNzLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIHRyYW5zbWlzc2lvbiAoVFgpIHNpZGUsIGxpa2VseSBhdCB0aGUgZGV2aWNlIG9yIHN3aXRjaCBsZXZlbC4gVGhlICYjMzQ7YWRkJiMzNDsgc3VnZ2VzdHMgdGhpcyBpcyB3aGVyZSB3ZSYjMzk7cmUgaW5jcmVtZW50aW5nIGNvdW50ZXJzIG9yIGFkZGluZyBkYXRhIHBvaW50cyByZWxhdGVkIHRvIHRyYW5zbWl0dGVkIG5ldHdvcmsgcGFja2V0cyBvciBieXRlcy4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQg4oCTIGlzIHRoaXMgYSBwZXItcG9ydCBjb3VudGVyLCBhIGdsb2JhbCBkZXZpY2UgY291bnRlciwgb3Igc29tZXRoaW5nIG1vcmUgbnVhbmNlZD8gV2hhdCYjMzk7cyB0aGUgZGF0YSBzdHJ1Y3R1cmUgaXQmIzM5O3MgbW9kaWZ5aW5nPyBJcyBpdCB0aHJlYWQtc2FmZT8gVGhhdCYjMzk7cyB3aGF0IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGluIHRoZSBkZWZpbml0aW9uIGl0c2VsZiwgb3IgYXQgbGVhc3QgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMgcHJvYmFibHkgZXhpc3RzIHdpdGhpbiBhIGJyb2FkZXIgc3RhdGlzdGljcyBmcmFtZXdvcmssIHBlcmhhcHMgaW50ZWdyYXRlZCB3aXRoIGEga2VybmVsIG1vZHVsZSBvciBzb21lIGtpbmQgb2YgZGF0YSBjb2xsZWN0aW9uIGxheWVyLiBJJiMzOTttIGN1cmlvdXMgdG8gc2VlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbiwgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0sIGFuZCB3aGF0IHRoZSBvdmVyYWxsIHN0YXRpc3RpY2FsIGRhdGEgZmxvdyBsb29rcyBsaWtlLiBUaGlzIGlzIHdoZXJlIHRoZSBmdW4gYmVnaW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMwODA6XHR9XG4zMDgxOlx0XG4zMDgyOlx0c3RhdGljIGlubGluZSB2b2lkIGRldl9zd19uZXRzdGF0c190eF9hZGQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbjMwODM6XHRcdFx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgcGFja2V0cyxcbjMwODQ6XHRcdFx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbGVuKVxuMzA4NTpcdHtcbjMwODY6XHRcdHN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICp0c3RhdHMgPSB0aGlzX2NwdV9wdHIoZGV2LVx1MDAzZXRzdGF0cyk7XG4zMDg3Olx0XG4zMDg4Olx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnRzdGF0cy1cdTAwM2VzeW5jcCk7XG4zMDg5Olx0XHR1NjRfc3RhdHNfYWRkKFx1MDAyNnRzdGF0cy1cdTAwM2V0eF9ieXRlcywgbGVuKTtcbjMwOTA6XHRcdHU2NF9zdGF0c19hZGQoXHUwMDI2dHN0YXRzLVx1MDAzZXR4X3BhY2tldHMsIHBhY2tldHMpO1xuMzA5MTpcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2dHN0YXRzLVx1MDAzZXN5bmNwKTtcbjMwOTI6XHR9XG4zMDkzOlx0XG4zMDk0Olx0c3RhdGljIGlubGluZSB2b2lkIGRldl9sc3RhdHNfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBsZW4pXG4zMDk1Olx0e1xuMzA5NjpcdFx0c3RydWN0IHBjcHVfbHN0YXRzICpsc3RhdHMgPSB0aGlzX2NwdV9wdHIoZGV2LVx1MDAzZWxzdGF0cyk7XG4zMDk3Olx0XG4zMDk4Olx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNmxzdGF0cy1cdTAwM2VzeW5jcCk7XG4zMDk5Olx0XHR1NjRfc3RhdHNfYWRkKFx1MDAyNmxzdGF0cy1cdTAwM2VieXRlcywgbGVuKTtcbjMxMDA6XHRcdHU2NF9zdGF0c19pbmMoXHUwMDI2bHN0YXRzLVx1MDAzZXBhY2tldHMpO1xuMzEwMTpcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2bHN0YXRzLVx1MDAzZXN5bmNwKTtcbjMxMDI6XHR9XG4zMTAzOlx0XG4zMTA0Olx0c3RhdGljIGlubGluZSB2b2lkIGRldl9kc3RhdHNfcnhfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NTYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoIFJlbGF0ZWQgdG8gTmV0d29yayBTdGF0aXN0aWNzIGFuZCBJbnRlcnJ1cHQgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgcGF0Y2gsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3ZlIG1vdmVkIGBsb2NhbF9iaF9kaXNhYmxlKClgIGluIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4gVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKClgLiBJIGFscmVhZHkga25vdyB0aGF0IGZ1bmN0aW9uLCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgb3Igd2hlbiBkZWFsaW5nIHdpdGggbG9ja2RlcCBvciBzZXFjb3VudCwgaXQgbmVlZHMgZWl0aGVyIGJvdHRvbS1oYWxmIChCSCkgZGlzYWJsZWQgb3IgcHJlZW1wdGlvbiBkaXNhYmxlZC4gVGhpcyBpcyBiZWNhdXNlIGl0IHVzZXMgYHU2NF9zdGF0c191cGRhdGVfYmVnaW4oJmFtcDt0c3RhdHMtJmd0O3N5bmNwKWAsIGFuZCB0aGF0JiMzOTtzIGNyaXRpY2FsIGZvciBwcmV2ZW50aW5nIHJhY2UgY29uZGl0aW9ucyBvciBkZWFkbG9ja3Mgd2l0aCBzb2Z0aXJxcyDigJMgb3IsIG1vcmUgZ2VuZXJhbGx5LCBlbnN1cmluZyBwZXItQ1BVIHVwZGF0ZSBzYWZldHkuCgpUaGUgb3JpZ2luYWwgY29kZSBoYWQgYGxvY2FsX2JoX2Rpc2FibGUoKWAgKmFmdGVyKiB0aGUgY2FsbHMgdG8gYm90aCBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi0mZ3Q7bGVuKWAgYW5kIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItJmd0O2xlbilgLiBUaGUgcGF0Y2ggbW92ZXMgYGxvY2FsX2JoX2Rpc2FibGUoKWAgKmJlZm9yZSogdGhvc2UgdHdvIGNhbGxzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCYjMzk7cyB0aGUgcmF0aW9uYWxlPyBUaGV5JiMzOTtyZSBjbGVhcmx5IHRyeWluZyB0byBlbnN1cmUgdGhhdCB0aG9zZSBzdGF0aXN0aWNzIHVwZGF0ZXMgYW5kIExFRCB0cmlnZ2VyIGNhbGxzIGhhcHBlbiBpbiBhIGNvbnRleHQgd2hlcmUgQkhzIGFyZSBkaXNhYmxlZC4gVGhhdCYjMzk7cyBnb29kIHByYWN0aWNlIGZvciB0aG9zZSBraW5kcyBvZiBzdGF0cy4KCk5vdywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNoZWNrIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItJmd0O2xlbilgIHRvIG1ha2Ugc3VyZSAqaXQqIGlzbiYjMzk7dCBjYWxsaW5nIGFueXRoaW5nIHRoYXQgY291bGQgY2F1c2UgYSBwcm9ibGVtLiBXZSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhpcyBtb3ZlIG9mIGBsb2NhbF9iaF9kaXNhYmxlKClgIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGlzc3VlcyBvciBpbmFkdmVydGVudGx5IG1hc2sgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gdGhlIGBsZWRfdHJpZ190eGAgZnVuY3Rpb24sIHNpbmNlIGl0IGlzIG5vdyB3aXRoaW4gdGhlIEJIIGRpc2FibGVkIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2xlZC5oPTcwPXN0YXRpYyBpbmxpbmUgdm9pZFxubmV0L21hYzgwMjExL2xlZC5oOjcxOmllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGludCBieXRlcylcbm5ldC9tYWM4MDIxMS9sZWQuaC03Mi17XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDQwNT12b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00NDk4LVx0aWYgKGxlbilcbm5ldC9tYWM4MDIxMS90eC5jOjQ0OTk6XHRcdGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIGxlbik7XG5uZXQvbWFjODAyMTEvdHguYy00NTAwLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDc1MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQ4MjMtXG5uZXQvbWFjODAyMTEvdHguYzo0ODI0Olx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgbGVuKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQ4MjUtXG4tLVxubmV0L21hYzgwMjExL3R4LmM9NjU3MT1pbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY2OTEtXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5uZXQvbWFjODAyMTEvdHguYzo2NjkyOlx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLVx1MDAzZWxlbik7XG5uZXQvbWFjODAyMTEvdHguYy02NjkzLVx0aWVlZTgwMjExX3htaXQoc2RhdGEsIHN0YSwgc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNTMKCQkJCQkJCW91dHB1dDogMTc2CgkJCQkJCQl0aG91Z2h0czogMjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvbmN1cnJlbmN5IEZpeCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGVzc2VudGlhbGx5IGEgY29uY3VycmVuY3kgZml4LiBJdCYjMzk7cyBtb3ZpbmcgdGhlIGBsb2NhbF9iaF9kaXNhYmxlKClgIHNjb3BlIHRvIGluY2x1ZGUgdGhlIHN0YXQgdXBkYXRlczogYGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItJmd0O2xlbilgIGFuZCBgaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLSZndDtsZW4pYC4gVGhlIGdvYWwgaXMgdG8gZW5zdXJlIHRob3NlIHBlci1DUFUgc3RhdHMgdXBkYXRlcyBhcmUgYXRvbWljIGJ5IGRpc2FibGluZyBib3R0b20gaGFsdmVzLiBUaGlzIHByZXZlbnRzIGludGVycnVwdGlvbnMgZnJvbSBzb2Z0aXJxcywgbWl0aWdhdGluZyBwb3RlbnRpYWwgd2FybmluZ3MsIGRlYWRsb2Nrcywgb3IgZGF0YSByYWNlcy4KCk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTGV0JiMzOTtzIGFuYWx5emUuCgoqICAgKipNZW1vcnkgQWxsb2NhdGlvbnM6KiogTm8sIHRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4KKiAgICoqVXNlci9LZXJuZWwgRGF0YSBUcmFuc2ZlcjoqKiBObywgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnZvbHZlIGFueSBgY29weV90b191c2VyYCwgbmV0bGluayBjYWxscywgb3IgaW9jdGwgb3BlcmF0aW9ucy4KKiAgICoqVW5pbml0aWFsaXplZCBEYXRhOioqIE5vLCB0aGUgcGF0Y2ggZG9lc24mIzM5O3QgdG91Y2ggZXhpc3RpbmcgZGF0YSBzdHJ1Y3R1cmVzIG9yIGZpZWxkcyBpbiBhIHdheSB0aGF0IHdvdWxkIGxlYXZlIHRoZW0gdW5pbml0aWFsaXplZC4KKiAgICoqQm91bmRzIENoZWNrcy9MZW5ndGggQ2FsY3VsYXRpb25zOioqIE5vLCB0aGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgcmVhZHMuIEl0JiMzOTtzIGEgY29uY3VycmVuY3kgZml4IGFuZCBkb2VzbiYjMzk7dCBhZmZlY3QgdGhhdC4KClRoaXMgYWxsIHBvaW50cyB0bzogaXQmIzM5O3MgYSBzdGFuZGFyZCBsb2NraW5nL2NvbmN1cnJlbmN5IGZpeCwgc3F1YXJlbHkgaW4gdGhlIGxvY2tkZXAvS0FTQU4gZGV0ZWN0aW9uIHNwYWNlLiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgJiMzNDtOZWVkc0tNU0FOJiMzNDsgc2hvdWxkIGJlIGBmYWxzZWAuCgpJJiMzOTtsbCBkbyBhIGZpbmFsIHJ1bi10aHJvdWdoIHRvIGRvdWJsZS1jaGVjayBteSByZWFzb25pbmcuIEFuZCB0aGVuIEkgd2lsbCBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyBgbG9jYWxfYmhfZGlzYWJsZSgpYCBpbiBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCgpYCB0byBjb3ZlciBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZCgpYCBhbmQgYGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgoKWAuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGZpeCBlbnN1cmluZyBib3R0b20gaGFsdmVzIGFyZSBkaXNhYmxlZCBkdXJpbmcgcGVyLUNQVSBzdGF0aXN0aWMgdXBkYXRlcyB0byBwcmV2ZW50IGNvbmN1cnJlbmN5IGlzc3VlcyB3aXRoIHNvZnRpcnFzLlxuXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBtZW1vcnkgYWxsb2NhdGlvbnMsIGluaXRpYWxpemF0aW9uIGxvZ2ljLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBBbnkgcG90ZW50aWFsIGxvY2tpbmcgYnVncyBvciBjb25jdXJyZW5jeSB2aW9sYXRpb25zIGFyZSBjb3ZlcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIGBsb2NhbF9iaF9kaXNhYmxlKClgIGluIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KClgIHRvIGNvdmVyIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKClgIGFuZCBgaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eCgpYC4gVGhpcyBpcyBhIGxvY2tpbmcvY29uY3VycmVuY3kgZml4IGVuc3VyaW5nIGJvdHRvbSBoYWx2ZXMgYXJlIGRpc2FibGVkIGR1cmluZyBwZXItQ1BVIHN0YXRpc3RpYyB1cGRhdGVzIHRvIHByZXZlbnQgY29uY3VycmVuY3kgaXNzdWVzIHdpdGggc29mdGlycXMuXG5cblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IG1lbW9yeSBhbGxvY2F0aW9ucywgaW5pdGlhbGl6YXRpb24gbG9naWMsIGtlcm5lbC10by11c2VyIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEFueSBwb3RlbnRpYWwgbG9ja2luZyBidWdzIG9yIGNvbmN1cnJlbmN5IHZpb2xhdGlvbnMgYXJlIGNvdmVyZWQgYnkgTE9DS0RFUCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycywgbm90IEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0NzowOC45MjM3Njc1NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Njg0NDI5MTc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydFwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIGBsb2NhbF9iaF9kaXNhYmxlKClgIGluIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KClgIHRvIGNvdmVyIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKClgIGFuZCBgaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eCgpYC4gVGhpcyBpcyBhIGxvY2tpbmcvY29uY3VycmVuY3kgZml4IGVuc3VyaW5nIGJvdHRvbSBoYWx2ZXMgYXJlIGRpc2FibGVkIGR1cmluZyBwZXItQ1BVIHN0YXRpc3RpYyB1cGRhdGVzIHRvIHByZXZlbnQgY29uY3VycmVuY3kgaXNzdWVzIHdpdGggc29mdGlycXMuXFxuXFxuVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgbWVtb3J5IGFsbG9jYXRpb25zLCBpbml0aWFsaXphdGlvbiBsb2dpYywga2VybmVsLXRvLXVzZXIgY29waWVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGJ1Z3Mgb3IgY29uY3VycmVuY3kgdmlvbGF0aW9ucyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLCBub3QgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCBpbiBuZXQvbWFjODAyMTEvdHguYyBieSBtb3ZpbmcgbG9jYWxfYmhfZGlzYWJsZSgpIHRvIHByb3RlY3QgdGhlIHBlci1DUFUgVFggc3RhdGlzdGljcyB1cGRhdGUgKGRldl9zd19uZXRzdGF0c190eF9hZGQpLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIChOTDgwMjExX0NNRF9DT05UUk9MX1BPUlRfRlJBTUUpIGFuZCBjYW4gYmUgZXhlY3V0ZWQgYW5kIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyB3aXRoIHNpbXVsYXRlZCB3aXJlbGVzcyBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0NzowOC45MjM3NzU1NDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTk4OTAyMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2ZmI1MGEyNzViNDAzNWFkMjFmYzlhZDc1ZjQzODdlZTY4OWU5MjdjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDA0OjQ3OjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcXG5pbmRleCA3NGFiMjc1MzQwNzZmLi43YjFhM2M2M2U1ZGM1IDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcXG5AQCAtNjY4NywxMCArNjY4Nyw5IEBAIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbitcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxuIFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuIFxcdGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIHNrYi1cXHUwMDNlbGVuKTtcXG4tXFxuLVxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG4gXFx0aWVlZTgwMjExX3htaXQoc2RhdGEsIHN0YSwgc2tiKTtcXG4gXFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0NzoxMC40NDQyNTQzNTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQxOTAzOTczMTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCIsXG4gICAgXCJubDgwMjExX3R4X2NvbnRyb2xfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQgaW4gbmV0L21hYzgwMjExL3R4LmMgYnkgbW92aW5nIGxvY2FsX2JoX2Rpc2FibGUoKSB0byBwcm90ZWN0IHRoZSBwZXItQ1BVIFRYIHN0YXRpc3RpY3MgdXBkYXRlIChkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKS4gVGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmw4MDIxMSAoTkw4MDIxMV9DTURfQ09OVFJPTF9QT1JUX0ZSQU1FKSBhbmQgY2FuIGJlIGV4ZWN1dGVkIGFuZCBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudHMgd2l0aCBzaW11bGF0ZWQgd2lyZWxlc3MgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2ZmI1MGEyNzViNDAzNWFkMjFmYzlhZDc1ZjQzODdlZTY4OWU5MjdjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6NDc6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCA3NGFiMjc1MzQwNzZmLi43YjFhM2M2M2U1ZGM1IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbisrKyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNjY4NywxMCArNjY4Nyw5IEBAIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuK1x0bG9jYWxfYmhfZGlzYWJsZSgpO1xuIFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xuIFx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLVx1MDAzZWxlbik7XG4tXG4tXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gXHRpZWVlODAyMTFfeG1pdChzZGF0YSwgc3RhLCBza2IpO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjEwLjQ0NDI1NTcyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTgxNjc0MzgxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBPcHRpbWl6YXRpb24gaW4gYG1hYzgwMjExL3R4LmNgKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRpc3NlY3QgdGhlIGRpZmYgYW5kIGFzc2VzcyB0aGUgaW1wYWN0LiBJdCdzIGEgc21hbGwgY2hhbmdlLCBidXQgZXZlbiBzbWFsbCBjaGFuZ2VzIGluIHRoZSBgbWFjODAyMTFgIGNvcmUgY2FuIGJlIGNyaXRpY2FsLlxuXG5BbHJpZ2h0LCBsb29raW5nIGF0IHRoZSBkaWZmLCBpdCdzIGEgY29kZSByZS1hcnJhbmdlbWVudCB3aXRoaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBTcGVjaWZpY2FsbHksIHRoZSBgbG9jYWxfYmhfZGlzYWJsZSgpYCBjYWxsIGlzIGJlaW5nIG1vdmVkICpiZWZvcmUqIHRoZSBzdGF0cyB1cGRhdGUgYW5kIHRyYW5zbWlzc2lvbiBjYWxsLCB3aGVyZSBpdCB3YXMgcHJldmlvdXNseSBsb2NhdGVkIGFmdGVyLiBUaGUgc3Vic2VxdWVudCBgbG9jYWxfYmhfZW5hYmxlKClgIHJlbWFpbnMgYXQgdGhlIGVuZCwgYXMgZXhwZWN0ZWQuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGludGVuZGVkIGVmZmVjdCBvZiB0aGlzIGNoYW5nZS5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbnRleHQgdXNpbmcsIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIG90aGVyIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24uIElzIHRoaXMgdG8gcmVkdWNlIGludGVycnVwdCBsYXRlbmN5PyBPciB0byBlbnN1cmUgYXRvbWljaXR5IGluIHNvbWUgb3RoZXIgb3BlcmF0aW9uPyBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaXNhYmxpbmcgYm90dG9tIGhhbHZlcyBhdCB0aGlzIHNwZWNpZmljIHBvaW50LiBQZXJoYXBzIHRoZXJlJ3MgYSBzcGVjaWZpYyBpc3N1ZSB0aGlzIGFkZHJlc3Nlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgb3B0aW1pemF0aW9uIHdhcyBwcm9wb3NlZC4gVGhlIGFkZGl0aW9uIG9mIHRoZSBgbG9jYWxfYmhfZGlzYWJsZWAgYmVmb3JlIHRoZSBzdGF0cyB1cGRhdGUgYW5kIHRyYW5zbWlzc2lvbiBpcyB0aGUga2V5IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0NzoxNi4yNjEwMDE5N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvdHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NjcwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI2NjcwOlxcdFxcdGluZm8tXFx1MDAzZWZsYWdzID0gZmxhZ3M7XFxuNjY3MTpcXHRcXHRjdHJsX2ZsYWdzIHw9IHUzMl9lbmNvZGVfYml0cyhsaW5rX2lkLCBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOSyk7XFxuNjY3MjpcXHRcXHRpbmZvLVxcdTAwM2Vjb250cm9sLmZsYWdzID0gY3RybF9mbGFncztcXG42NjczOlxcdFxcbjY2NzQ6XFx0XFx0aWYgKCFncm91cF9hZGRyZXNzZWQpXFxuNjY3NTpcXHRcXHRcXHRpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUpO1xcbjY2NzY6XFx0XFxuNjY3NzpcXHRcXHRza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIHN0YSk7XFxuNjY3ODpcXHRcXHRpZiAoSVNfRVJSKHNrYikpIHtcXG42Njc5OlxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjY2ODA6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoc2tiKTtcXG42NjgxOlxcdFxcdH1cXG42NjgyOlxcdFxcbjY2ODM6XFx0XFx0aWYgKGxpbmtfaWQgIT0gdTMyX2dldF9iaXRzKGluZm8tXFx1MDAzZWNvbnRyb2wuZmxhZ3MsXFxuNjY4NDpcXHRcXHRcXHRcXHRcXHQgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspKSB7XFxuNjY4NTpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbjY2ODY6XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuNjY4NzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG42Njg4OlxcdFxcdH1cXG42Njg5OlxcdFxcbjY2OTA6XFx0XFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xcbjY2OTE6XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG42NjkyOlxcdFxcdGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIHNrYi1cXHUwMDNlbGVuKTtcXG42NjkzOlxcdFxcdGllZWU4MDIxMV94bWl0KHNkYXRhLCBzdGEsIHNrYik7XFxuNjY5NDpcXHRcXHRsb2NhbF9iaF9lbmFibGUoKTtcXG42Njk1OlxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjY2OTY6XFx0XFxuNjY5NzpcXHRcXHRyZXR1cm4gMDtcXG42Njk4OlxcdH1cXG42Njk5OlxcdFxcbjY3MDA6XFx0aW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG42NzAxOlxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXFxuNjcwMjpcXHR7XFxuNjcwMzpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxuNjcwNDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG42NzA1OlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuNjcwNjpcXHRcXG42NzA3OlxcdFxcdHNrYiA9IGRldl9hbGxvY19za2IobG9jYWwtXFx1MDAzZWh3LmV4dHJhX3R4X2hlYWRyb29tICsgbGVuICtcXG42NzA4OlxcdFxcdFxcdFxcdCAgICAzMCArIC8qIGhlYWRlciBzaXplICovXFxuNjcwOTpcXHRcXHRcXHRcXHQgICAgMTgpOyAvKiAxMXMgaGVhZGVyIHNpemUgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6MTYuMjYxMjMyMjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NzI3NzEyMjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0c3RhdHMgVHJhbnNhY3Rpb24gYW5kIENvbnRyb2wgUG9ydCBCZWhhdmlvcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pYCBuZWNlc3NpdGF0ZXMgYGxvY2FsX2JoX2Rpc2FibGUoKWAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYGRldl9zd19uZXRzdGF0c190eF9hZGRgIGxldmVyYWdlcyBwZXItQ1BVIHN0YXRzIHVwZGF0aW5nLCB3aGljaCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhvc2UgZGVsaWNhdGUgcGVyLUNQVSB2YXJpYWJsZXMuIFRoZXNlIHVwZGF0ZXMsIGlmIGRvbmUgaW5jb3JyZWN0bHksIHdpbGwgY2F1c2UgY29udGVudGlvbiB3aXRoIHNvZnQgaW50ZXJydXB0cy4gU28sIHRoZSBrZXJuZWwgZm9sa3MgY29ycmVjdGx5IGNob3NlIHRvIGRpc2FibGUgQm90dG9tIEhhbHZlcyAoQkhzKSBkdXJpbmcgdGhpcyBzZWN0aW9uIG9mIGNvZGUuIEkgc2VlIHRoYXQgdGhlcmUgd2FzIGEgY29tbWl0LCA2ZmI1MGEyNzViNDAsIHdoZXJlIHRoaXMgd2FzIGV4cGxpY2l0bHkgYWRkcmVzc2VkIGJ5IG1vdmluZyB0aGUgYGxvY2FsX2JoX2Rpc2FibGUoKWAgY2FsbCBhYm92ZSB0aGUgYGRldl9zd19uZXRzdGF0c190eF9hZGRgIGNhbGwuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcHJlY2F1dGlvbiB0byBwcmV2ZW50IGxvY2tkZXAgYXNzZXJ0aW9ucyBvciByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiBCSC9zb2Z0aXJxIGhhbmRsZXJzIGFuZCB0aGUgc3RhdHMgdXBkYXRlcy5cblxuTm93LCBsZXQncyBzaGlmdCBnZWFycyBhbmQgbG9vayBhdCBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIEkgd2FudCB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLCBob3cgaXQncyBpbnZva2VkLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgd2hldGhlciB0aGlzIGZ1bmN0aW9uIGlzIGV2ZW4gcmVhY2hhYmxlIHZpYSBTeXprYWxsZXIgaW4gbXkgdGVzdHMuIEkgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBzaXRlcyBmb3IgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgIGRpcmVjdGx5LiBJIHdpbGwgYWxzbyBleGFtaW5lIGl0cyByZWxhdGlvbnNoaXAgdG8gYHdpcGh5YCwgYG5sODAyMTFgLCBhbmQgYG1hYzgwMjExYCBjb250cm9sIHBvcnQgcGF0aHMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvc3NpYmxlIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjg3LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6MjEuOTg4OTQ3Njc0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMTM4ODkyOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHhfY29udHJvbF9wb3J0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2NmZzgwMjExLmg9NDg0Mz1zdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNTIyMS0gKlxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6NTIyMjogKiBAdHhfY29udHJvbF9wb3J0OiBUWCBhIGNvbnRyb2wgcG9ydCBmcmFtZSAoRUFQb0wpLiAgVGhlIG5vZW5jcnlwdCBwYXJhbWV0ZXJcXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTUyMjMtICpcXHR0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLiBBIEBjb29raWVcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg9NTI4MD1zdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNTYwNy1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjU2MDg6XFx0aW50XFx0KCp0eF9jb250cm9sX3BvcnQpKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC01NjA5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oPTk2NDI9c3RhdGljIGlubGluZSB2b2lkIGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk2NTktICogQHdkZXY6IHdpcmVsZXNzIGRldmljZSByZWNlaXZpbmcgdGhlIGZyYW1lXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo5NjYwOiAqIEBjb29raWU6IENvb2tpZSByZXR1cm5lZCBieSBjZmc4MDIxMV9vcHM6OnR4X2NvbnRyb2xfcG9ydCgpXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05NjYxLSAqIEBidWY6IERhdGEgZnJhbWUgKGhlYWRlciArIGJvZHkpXFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk2NjYtICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgYSBjb250cm9sIHBvcnQgZnJhbWUgd2FzIHJlcXVlc3RlZCB0byBiZVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6OTY2NzogKiB0cmFuc21pdHRlZCB3aXRoIGNmZzgwMjExX29wczo6dHhfY29udHJvbF9wb3J0KCkgdG8gcmVwb3J0IHRoZSBUWCBzdGF0dXMgb2ZcXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk2NjgtICogdGhlIHRyYW5zbWlzc2lvbiBhdHRlbXB0Llxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU5ODY9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTYwODAtXFx0LnNldF9tdWx0aWNhc3RfdG9fdW5pY2FzdCA9IGllZWU4MDIxMV9zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3QsXFxubmV0L21hYzgwMjExL2NmZy5jOjYwODE6XFx0LnR4X2NvbnRyb2xfcG9ydCA9IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQsXFxubmV0L21hYzgwMjExL2NmZy5jLTYwODItXFx0LmdldF90eHFfc3RhdHMgPSBpZWVlODAyMTFfZ2V0X3R4cV9zdGF0cyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTIyNTU9dm9pZCBpZWVlODAyMTFfY2xlYXJfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMjU2OmludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjI1Ny1cXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NjU0MD12b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNjU3MC1cXG5uZXQvbWFjODAyMTEvdHguYzo2NTcxOmludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L21hYzgwMjExL3R4LmMtNjU3Mi1cXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xMjkzMz1zdGF0aWMgaW50IHZhbGlkYXRlX3BhZV9vdmVyX25sODAyMTEoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xMjk0MC1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjEyOTQxOlxcdGlmICghcmRldi1cXHUwMDNlb3BzLVxcdTAwM2V0eF9jb250cm9sX3BvcnQgfHxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTEyOTQyLVxcdCAgICAhd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xODUwND1zdGF0aWMgaW50IG5sODAyMTFfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU0NS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4NTQ2OnN0YXRpYyBpbnQgbmw4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NTQ3LXtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg1NjQtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxODU2NTpcXHRpZiAoIXJkZXYtXFx1MDAzZW9wcy1cXHUwMDNldHhfY29udHJvbF9wb3J0KVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg1NjYtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODYwMi1cXHRjb29raWUgPSBkb250X3dhaXRfZm9yX2FjayA/IDAgOiBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg2MDM6XFx0ZXJyID0gcmRldl90eF9jb250cm9sX3BvcnQocmRldiwgZGV2LCBidWYsIGxlbixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NjA0LVxcdFxcdFxcdFxcdCAgIGRlc3QsIGNwdV90b19iZTE2KHByb3RvKSwgbm9lbmNyeXB0LCBsaW5rX2lkLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTc0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDgxLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwNDgyOlxcdFxcdC5kb2l0ID0gbmw4MDIxMV90eF9jb250cm9sX3BvcnQsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDQ4My1cXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbi0tXFxubmV0L3dpcmVsZXNzL3JkZXYtb3BzLmg9NzY0PXN0YXRpYyBpbmxpbmUgaW50IHJkZXZfbWdtdF90eChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03NzUtXFxubmV0L3dpcmVsZXNzL3JkZXYtb3BzLmg6Nzc2OnN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03NzctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03ODMtXFx0aW50IHJldDtcXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaDo3ODQ6XFx0dHJhY2VfcmRldl90eF9jb250cm9sX3BvcnQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxcbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oLTc4NS1cXHRcXHRcXHRcXHQgICBkZXN0LCBwcm90bywgbm9lbmNyeXB0LCBsaW5rKTtcXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaDo3ODY6XFx0cmV0ID0gcmRldi1cXHUwMDNlb3BzLVxcdTAwM2V0eF9jb250cm9sX3BvcnQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxcbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oLTc4Ny1cXHRcXHRcXHRcXHRcXHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcXG4tLVxcbm5ldC93aXJlbGVzcy90cmFjZS5oPTIyMjQ9VFJBQ0VfRVZFTlQocmRldl9tZ210X3R4LFxcbi0tXFxubmV0L3dpcmVsZXNzL3RyYWNlLmgtMjI1My1cXG5uZXQvd2lyZWxlc3MvdHJhY2UuaDoyMjU0OlRSQUNFX0VWRU5UKHJkZXZfdHhfY29udHJvbF9wb3J0LFxcbm5ldC93aXJlbGVzcy90cmFjZS5oLTIyNTUtXFx0VFBfUFJPVE8oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6MjUuMjAyODQzMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwMjE5Njk5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBTaXR1YXRpb24qKlxuXG5Pa2F5LCBzbyBtYWM4MDIxMSBpcyAqZGVmaW5pdGVseSogd2l0aGluIHN5emthbGxlcidzIHJlYWNoLCBhbmQgdGhlIHN5c3RlbSB1c2VzIGl0LiBUaGUgcHJlc2VuY2Ugb2YgdGhlIG1hYzgwMjExX2h3c2ltIHZpcnR1YWwgZGV2aWNlIGlzIGEgc29saWQgaW5kaWNhdG9yLCBlc3BlY2lhbGx5IHNpbmNlIHN5emthbGxlciBpcyBhY3RpdmVseSBwb2tpbmcgYXQgaXQgdmlhIG5sODAyMTEgbmV0bGluayBtZXNzYWdlcywgaW5jbHVkaW5nIHRob3NlIGNydWNpYWwgTkw4MDIxMV9DTURfQ09OVFJPTF9QT1JUX0ZSQU1FIGFuZCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgIGNvbW1hbmRzLiBUaGF0IGxldmVsIG9mIHRhcmdldGVkIGludGVyYWN0aW9uIHN1Z2dlc3RzIGEgZGVlcCBpbnRlZ3JhdGlvbiwgd2hpY2ggbWVhbnMgdGhlcmUncyBwcm9iYWJseSBhIHdvcnRod2hpbGUgYXR0YWNrIHN1cmZhY2UuXG5cbk15IG5leHQgaW1tZWRpYXRlIHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBzY3J1dGluaXplIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyBmb3IgYm90aCBtYWM4MDIxMSBpdHNlbGYgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBgbWFjODAyMTFfaHdzaW1gLiBVbmRlcnN0YW5kaW5nIHRob3NlIGRlcGVuZGVuY2llcyB3aWxsIHJldmVhbCB0aGUgcHJlY29uZGl0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgdGhhdCBtYWtlIHRoZXNlIGNvbXBvbmVudHMgYWNjZXNzaWJsZSBhbmQsIGJ5IGV4dGVuc2lvbiwgd2hlcmUgdGhlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgbWlnaHQgbGllLiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgdGFyZ2V0ZWQgZnV6emluZyBjYW1wYWlnbiBpbiB0aGlzIGFyZWEuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkyNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjI4LjIyNDgxNzE5OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDg5MjQ3OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXFxubmV0L21hYzgwMjExL0tjb25maWctMjAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVxcdGJvb2xcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVxcdHN0cmluZ1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjcxLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXFx0aW50IFxcXCJTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXFxcIiBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjI4LjkzMzc0NjAzNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUyMDg3NzA0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgTUFDODAyMTFgIENvbmZpZ3VyYXRpb24gU3BhY2UqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiBlbnRyeSwgc28gSSdtIGhlYWRpbmcgc3RyYWlnaHQgdG8gYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMgaXMgY3J1Y2lhbCBmb3IgZGVidWdnaW5nLCBwZXJmb3JtYW5jZSB0dW5pbmcsIGFuZCBqdXN0IGdlbmVyYWxseSBrbm93aW5nIHdoYXQncyBwb3NzaWJsZS4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdmFyaW91cyBmZWF0dXJlcyBhcmUgY29uZGl0aW9uYWxseSBlbmFibGVkIGFuZCBkaXNhYmxlZC4gQXJlIHRoZXJlIGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZiwgcGVyaGFwcyBzb21lIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNhdXNlIGdyaWVmIGRvd24gdGhlIGxpbmU/IFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZDsgZ2V0dGluZyBhIGZpcm0gZ3Jhc3Agb24gdGhlIEtjb25maWcgaXMgZXNzZW50aWFsLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6OTQ3MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjM0LjE0MjUxODg2MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1BQzgwMjExXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNfQ0JDX01BQ1NcXG4gICA3OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcXG4gICA4OlxcdFxcdHNlbGVjdCBDUllQVE9fQUVTXFxuICAgOTpcXHRcXHRzZWxlY3QgQ1JZUFRPX0NDTVxcbiAgMTA6XFx0XFx0c2VsZWN0IENSWVBUT19HQ01cXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xMVxcbiAgMTQ6XFx0XFx0ICBuZXR3b3JraW5nIHN0YWNrLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb21tZW50IFxcXCJDRkc4MDIxMSBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBNQUM4MDIxMVxcXCJcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBNQUM4MDIxMSAhPSBuXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG4gIDIyOlxcdFxcdGJvb2xcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxuICAyNTpcXHRcXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjM0LjE0MjU4NDAxMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDEwMDUwODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqQ2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIE1BQzgwMjExX0hXU0lNKipcblxuUmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGlzIHRlc3RpbmcgZnJhbWV3b3JrLCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIGZvciBgTUFDODAyMTFfSFdTSU1gLiBJdCdzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byBrbm93IHdoZXJlIHRoZSBkZXBlbmRlbmNpZXMgbGllIGFuZCBleGFjdGx5ICp3aGF0KiBpcyBlbmFibGluZyB0aGlzIGBtYWM4MDIxMWAgdGVzdGluZyBkcml2ZXIuIFdlIGNhbid0IGFmZm9yZCBhbnkgc3VycHJpc2VzIGhlcmUuIEtub3dpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB1cCBmcm9udCB3aWxsIHNhdmUgYSB3b3JsZCBvZiBodXJ0IGluIGRlYnVnZ2luZyBsYXRlciBvbi4gSXQncyBhYm91dCBiZWluZyBlZmZpY2llbnQ7IGtub3dpbmcgdGhlIGFyY2hpdGVjdHVyZSBpcyBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDY3LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0NzozNi4xNTI2MzY1NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5ODg5NjQ0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUM4MDIxMV9IV1NJTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlOjE6b2JqLSQoQ09ORklHX01BQzgwMjExX0hXU0lNKVxcdCs9IG1hYzgwMjExX2h3c2ltLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1xcdFxcdCs9IG1hYzgwMjExX2h3c2ltX21haW4ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjk6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MTA6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MjE3PXN0cnVjdCBod3NpbV90eF9yYXRlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzAtICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMxOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUzogVXNlIFJUUy9DVFMgZXhjaGFuZ2UgZm9yIHRoaXMgcmF0ZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMy0gKlxcdFRoaXMgaXMgc2V0IGlmIHRoZSBjdXJyZW50IEJTUyByZXF1aXJlcyBFUlAgcHJvdGVjdGlvbi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M6IEhUIHJhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DUzogVkhUIE1DUyByYXRlLCBpbiB0aGlzIGNhc2UgdGhlIGlkeCBmaWVsZCBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcXHRzcGxpdCBpbnRvIGEgaGlnaGVyIDQgYml0cyAoTnNzKSBhbmQgbG93ZXIgNCBiaXRzIChNQ1MgbnVtYmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzg6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEOiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJhdGUgc2hvdWxkIGJlIHVzZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXFx0aW4gR3JlZW5maWVsZCBtb2RlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDA6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDogSW5kaWNhdGVzIGlmIHRoZSBDaGFubmVsIFdpZHRoIHNob3VsZCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcXHQ0MCBNSHouXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0MjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgODAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDQtICpcXHQoODArODAgaXNuJ3Qgc3VwcG9ydGVkIHlldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTogVGhlIGZyYW1lIHNob3VsZCBiZSB0cmFuc21pdHRlZCBvbiBib3RoIG9mXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ni0gKlxcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDctICpcXHROTDgwMjExX0NIQU5fSFQ0ME1JTlVTIG9yIE5MODAyMTFfQ0hBTl9IVDQwUExVUy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ5LSAqXFx0cmF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yNTE9ZW51bSBod3NpbV90eF9yYXRlX2ZsYWdzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjUyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXFx0XFx0PSBCSVQoMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1RcXHRcXHQ9IEJJVCgxKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU0OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRVxcdD0gQklUKDIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1Ni1cXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTc6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTXFx0XFx0XFx0PSBCSVQoMyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRFxcdFxcdD0gQklUKDQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTk6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIXFx0XFx0PSBCSVQoNSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MDpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVxcdFxcdD0gQklUKDYpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0lcXHRcXHQ9IEJJVCg3KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1NcXHRcXHRcXHQ9IEJJVCg4KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSFxcdFxcdD0gQklUKDkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjQ6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSFxcdFxcdD0gQklUKDEwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MzI4PWVudW0gaHdzaW1fcmF0ZV9pbmZvX2F0dHJpYnV0ZXMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MzQ4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTA6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0lfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjExOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9JX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oPTE2NT12b2lkIGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjE2ODojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9JX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE3Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE4LXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX211bHRpY2FzdF9ncm91cCBod3NpbV9tY2dycHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3Mjg6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDMtc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmh3c2ltX3Zxc1tIV1NJTV9OVU1fVlFTXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NzU9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzktXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9SVFNfQ1RTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODA6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODEtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgyOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4My1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODQ6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg1LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19NQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NjpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODctXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODg6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODktXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTkwOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5MS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfRFVQX0RBVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5MjpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5My1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5NDpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5NS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVkhUX01DUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk2OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTctXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzgwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk4OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5OS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNjAwOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2MDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDg5PXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUwMDojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTAxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUxMT1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUxNC1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUxNTpcXHRcXHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTE2LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUxOT1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MzU6XFx0V0FSTl9PTihpICE9IE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTY1Mj1zdGF0aWMgY29uc3QgdTggaWZ0eXBlc19leHRfY2FwYV9hcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjYxOiNkZWZpbmUgTUFDODAyMTFfSFdTSU1fTUxEX0NBUEFfT1BTXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NjItXFx0RklFTERfUFJFUF9DT05TVChJRUVFODAyMTFfTUxEX0NBUF9PUF9USURfVE9fTElOS19NQVBfTkVHX1NVUFAsIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2Njc9c3RhdGljIGNvbnN0IHN0cnVjdCB3aXBoeV9pZnR5cGVfZXh0X2NhcGFiIG1hYzgwMjExX2h3c2ltX2lmdHlwZXNfZXh0X2NhcGFbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NzQtXFx0XFx0XFx0XFx0ICAgIElFRUU4MDIxMV9FTUxfQ0FQX0VNTE1SX1NVUFBPUlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTY3NTpcXHRcXHQubWxkX2NhcGFfYW5kX29wcyA9IE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01Njc2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTU2PXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNTc6XFx0Lm5hbWUgPSBcXFwiTUFDODAyMTFfSFdTSU1cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxNTgtXFx0LnZlcnNpb24gPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzQ3Nj1zdGF0aWMgdm9pZCBod3NpbV92aXJ0aW9fcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NDg1Oi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBkZXZpY2UgaWQgdGFibGUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDg2LXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0ODc6XFx0eyBWSVJUSU9fSURfTUFDODAyMTFfSFdTSU0sIFZJUlRJT19ERVZfQU5ZX0lEIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ4OC1cXHR7IDAgfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVxcdFxcdG1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0yMTY9dm9pZCBtYWM4MDIxMV9od3NpbV9uYW5fcngoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3My1cXHRpZiAoKHNsb3QgIT0gU0xPVF8yNEdIWl9EVyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6Mjc0OlxcdCAgICAgZGF0YS1cXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjc1LVxcdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00MzYtXFx0XFx0ICAgIChjZyA9PSBvd25fY2cgXFx1MDAyNlxcdTAwMjYgZnJhbWVfYW1yIFxcdTAwM2UgY3Vycl9hbXIpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Mzc6XFx0XFx0ICAgIGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVxcdFxcdFxcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00NjgtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDcwLVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz02MTI9bWFjODAyMTFfaHdzaW1fbmFuX2V4ZWNfc3RhdGVfdHJhbnNpdGlvbnMoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyNS1cXHRpZiAoZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2MgMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNjpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcXHRlbHNlIGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyOC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2U9IDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjk6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMwOlxcdGVsc2UgaWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzMS1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNlPSAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzM6XFx0ZWxzZSBpZiAoZGF0YS1cXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNjIDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzU6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NDEtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NDI6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVxcdCAgICAhaHJ0aW1lcl9hY3RpdmUoXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0OlxcdFxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfV0FSTVVQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSBOQU5fV0FSTVVQX0RXU1Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY2MS1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Njk1PW1hYzgwMjExX2h3c2ltX25hbl90eF9iZWFjb24oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1MC1cXHRuYW5fYXR0ci5sZW5ndGggPSBjcHVfdG9fbGUxNihzaXplb2YobWFzdGVyX2luZGljYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcXHRpZiAoZGF0YS1cXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVxcdFxcdG1hc3Rlcl9pbmRpY2F0aW9uLm1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03NzQ9bWFjODAyMTFfaHdzaW1fbmFuX3Nsb3RfdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MDctXFx0XFx0dHhfc3luY19iZWFjb24gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA4OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA5OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODEwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9ODY3PW1hYzgwMjExX2h3c2ltX25hbl9kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVxcdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODA6XFx0XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODgxOlxcdFxcdCAgICBkYXRhLVxcdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXFx0XFx0XFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz05MDk9aW50IG1hYzgwMjExX2h3c2ltX25hbl9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI2LVxcdFxcdC8qIFN0YXJ0IGluIHRoZSBcXFwic2NhblxcXCIgcGhhc2UgYW5kIHN0YXkgdGhlcmUgZm9yIGEgbGl0dGxlIGJpdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI4LVxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXFx0XFx0ZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cXHUwMDNlbWFzdGVyX3ByZWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo5MzE6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXFx0XFx0bWVtc2V0KFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uY3VycmVudF9hbWksIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXFx0XFx0cmV0dXJuIGNoYW5uZWwtXFx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6ODojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlxcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMzpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xNC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE3OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxOTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTIwLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTEwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19pZHMuaC01Ny0jZGVmaW5lIFZJUlRJT19JRF9SUE1CXFx0XFx0XFx0MjggLyogdmlydGlvIHJwbWIgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2lkcy5oOjU4OiNkZWZpbmUgVklSVElPX0lEX01BQzgwMjExX0hXU0lNXFx0MjkgLyogdmlydGlvIG1hYzgwMjExLWh3c2ltICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19pZHMuaC01OS0jZGVmaW5lIFZJUlRJT19JRF9WSURFT19FTkNPREVSXFx0XFx0MzAgLyogdmlydGlvIHZpZGVvIGVuY29kZXIgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6MzguNDUxNTM3NTMzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0MzU5MTc5ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRXhhbWluaW5nIGBuZXQvbWFjODAyMTEvdHguY2AgLSBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBGaXJzdCB0aGluZydzIGZpcnN0LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGNvZGUgdGhhdCdzIGJlZW4gbW9kaWZpZWQuIFRoZSBmaWxlIEknbSB0YXJnZXRpbmcgaXMgYG5ldC9tYWM4MDIxMS90eC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAgZnVuY3Rpb24uIEdvdHRhIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55IHN1YnRsZSBjaGFuZ2VzLCBzbyBJJ20gZ29pbmcgdG8gcmVhZCAqdGhhdCBlbnRpcmUgZnVuY3Rpb24qLCBsaW5lIGJ5IGxpbmUuIE5vIHNob3J0Y3V0cyBoZXJlOyBhIHRob3JvdWdoIHVuZGVyc3RhbmRpbmcgaXMgcGFyYW1vdW50LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBpbnRyaWNhY2llcyBvZiB0aGUgbWFjODAyMTEgc3RhY2suIFdlIGNhbid0IGFmZm9yZCB0byBtaXNzIGV2ZW4gYSB0aW55IGRldGFpbC4gTGV0J3MgbWFrZSBzdXJlIG91ciBtb2RpZmljYXRpb25zIGFyZW4ndCBpbXBhY3RpbmcgYW55dGhpbmcgZWxzZSB1bmV4cGVjdGVkbHkuIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzYwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6NDAuODg3NDU4NzYzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDM4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvdHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NTcwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNjU3MDpcXHRcXG42NTcxOlxcdGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuNjU3MjpcXHRcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbjY1NzM6XFx0XFx0XFx0XFx0ICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCxcXG42NTc0OlxcdFxcdFxcdFxcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgY29va2llKVxcbjY1NzU6XFx0e1xcbjY1NzY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbjY1Nzc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuNjU3ODpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XFxuNjU3OTpcXHRcXHRib29sIGdyb3VwX2FkZHJlc3NlZDtcXG42NTgwOlxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xcbjY1ODE6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG42NTgyOlxcdFxcdHN0cnVjdCBldGhoZHIgKmVoZHI7XFxuNjU4MzpcXHRcXHR1MzIgY3RybF9mbGFncyA9IDA7XFxuNjU4NDpcXHRcXHR1MzIgZmxhZ3MgPSAwO1xcbjY1ODU6XFx0XFx0aW50IGVycjtcXG42NTg2OlxcdFxcbjY1ODc6XFx0XFx0LyogbXV0ZXggbG9jayBpcyBvbmx5IG5lZWRlZCBmb3IgaW5jcmVtZW50aW5nIHRoZSBjb29raWUgY291bnRlciAqL1xcbjY1ODg6XFx0XFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG42NTg5OlxcdFxcbjY1OTA6XFx0XFx0LyogT25seSBhY2NlcHQgQ09OVFJPTF9QT1JUX1BST1RPQ09MIGNvbmZpZ3VyZWQgaW4gQ09OTkVDVC9BU1NPQ0lBVEVcXG42NTkxOlxcdFxcdCAqIG9yIFByZS1BdXRoZW50aWNhdGlvblxcbjY1OTI6XFx0XFx0ICovXFxuNjU5MzpcXHRcXHRpZiAocHJvdG8gIT0gc2RhdGEtXFx1MDAzZWNvbnRyb2xfcG9ydF9wcm90b2NvbCBcXHUwMDI2XFx1MDAyNlxcbjY1OTQ6XFx0XFx0ICAgIHByb3RvICE9IGNwdV90b19iZTE2KEVUSF9QX1BSRUFVVEgpKVxcbjY1OTU6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNjU5NjpcXHRcXG42NTk3OlxcdFxcdGlmIChwcm90byA9PSBzZGF0YS1cXHUwMDNlY29udHJvbF9wb3J0X3Byb3RvY29sKVxcbjY1OTg6XFx0XFx0XFx0Y3RybF9mbGFncyB8PSBJRUVFODAyMTFfVFhfQ1RSTF9QT1JUX0NUUkxfUFJPVE8gfFxcbjY1OTk6XFx0XFx0XFx0XFx0ICAgICAgSUVFRTgwMjExX1RYX0NUUkxfU0tJUF9NUEFUSF9MT09LVVA7XFxuNjYwMDpcXHRcXG42NjAxOlxcdFxcdGlmICh1bmVuY3J5cHRlZClcXG42NjAyOlxcdFxcdFxcdGZsYWdzIHw9IElFRUU4MDIxMV9UWF9JTlRGTF9ET05UX0VOQ1JZUFQ7XFxuNjYwMzpcXHRcXG42NjA0OlxcdFxcdGZsYWdzIHw9IElFRUU4MDIxMV9UWF9JTlRGTF9OTDgwMjExX0ZSQU1FX1RYO1xcbjY2MDU6XFx0XFxuNjYwNjpcXHRcXHRza2IgPSBkZXZfYWxsb2Nfc2tiKGxvY2FsLVxcdTAwM2Vody5leHRyYV90eF9oZWFkcm9vbSArXFxuNjYwNzpcXHRcXHRcXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBldGhoZHIpICsgbGVuKTtcXG42NjA4OlxcdFxcdGlmICghc2tiKVxcbjY2MDk6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuNjYxMDpcXHRcXG42NjExOlxcdFxcdHNrYl9yZXNlcnZlKHNrYiwgbG9jYWwtXFx1MDAzZWh3LmV4dHJhX3R4X2hlYWRyb29tICsgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTtcXG42NjEyOlxcdFxcbjY2MTM6XFx0XFx0c2tiX3B1dF9kYXRhKHNrYiwgYnVmLCBsZW4pO1xcbjY2MTQ6XFx0XFxuNjYxNTpcXHRcXHRlaGRyID0gc2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xcbjY2MTY6XFx0XFx0bWVtY3B5KGVoZHItXFx1MDAzZWhfZGVzdCwgZGVzdCwgRVRIX0FMRU4pO1xcbjY2MTc6XFx0XFxuNjYxODpcXHRcXHQvKiB3ZSBtYXkgb3ZlcnJpZGUgdGhlIFNBIGZvciBNTE8gU1RBIGxhdGVyICovXFxuNjYxOTpcXHRcXHRpZiAobGlua19pZCBcXHUwMDNjIDApIHtcXG42NjIwOlxcdFxcdFxcdGxpbmtfaWQgPSBJRUVFODAyMTFfTElOS19VTlNQRUNJRklFRDtcXG42NjIxOlxcdFxcdFxcdG1lbWNweShlaGRyLVxcdTAwM2VoX3NvdXJjZSwgc2RhdGEtXFx1MDAzZXZpZi5hZGRyLCBFVEhfQUxFTik7XFxuNjYyMjpcXHRcXHR9IGVsc2Uge1xcbjY2MjM6XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mO1xcbjY2MjQ6XFx0XFxuNjYyNTpcXHRcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuNjYyNjpcXHRcXHRcXHRsaW5rX2NvbmYgPSByY3VfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZXZpZi5saW5rX2NvbmZbbGlua19pZF0pO1xcbjY2Mjc6XFx0XFx0XFx0aWYgKCFsaW5rX2NvbmYpIHtcXG42NjI4OlxcdFxcdFxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG42NjI5OlxcdFxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjY2MzA6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9MSU5LO1xcbjY2MzE6XFx0XFx0XFx0fVxcbjY2MzI6XFx0XFx0XFx0bWVtY3B5KGVoZHItXFx1MDAzZWhfc291cmNlLCBsaW5rX2NvbmYtXFx1MDAzZWFkZHIsIEVUSF9BTEVOKTtcXG42NjMzOlxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjY2MzQ6XFx0XFx0fVxcbjY2MzU6XFx0XFxuNjYzNjpcXHRcXHRlaGRyLVxcdTAwM2VoX3Byb3RvID0gcHJvdG87XFxuNjYzNzpcXHRcXG42NjM4OlxcdFxcdHNrYi1cXHUwMDNlZGV2ID0gZGV2O1xcbjY2Mzk6XFx0XFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IHByb3RvO1xcbjY2NDA6XFx0XFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XFxuNjY0MTpcXHRcXHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xcbjY2NDI6XFx0XFxuNjY0MzpcXHRcXHQvKiB1cGRhdGUgUW9TIGhlYWRlciB0byBwcmlvcml0aXplIGNvbnRyb2wgcG9ydCBmcmFtZXMgaWYgcG9zc2libGUsXFxuNjY0NDpcXHRcXHQgKiBwcmlvcml0aXphdGlvbiBhbHNvIGhhcHBlbnMgZm9yIGNvbnRyb2wgcG9ydCBmcmFtZXMgc2VuZCBvdmVyXFxuNjY0NTpcXHRcXHQgKiBBRl9QQUNLRVRcXG42NjQ2OlxcdFxcdCAqL1xcbjY2NDc6XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbjY2NDg6XFx0XFx0ZXJyID0gaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc2RhdGEsIHNrYiwgXFx1MDAyNnN0YSk7XFxuNjY0OTpcXHRcXHRpZiAoZXJyKSB7XFxuNjY1MDpcXHRcXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuNjY1MTpcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG42NjUyOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuNjY1MzpcXHRcXHR9XFxuNjY1NDpcXHRcXG42NjU1OlxcdFxcdGdyb3VwX2FkZHJlc3NlZCA9IElTX0VSUihzdGEpO1xcbjY2NTY6XFx0XFx0aWYgKElTX0VSUihzdGEpKVxcbjY2NTc6XFx0XFx0XFx0c3RhID0gTlVMTDtcXG42NjU4OlxcdFxcbjY2NTk6XFx0XFx0c2tiX3NldF9xdWV1ZV9tYXBwaW5nKHNrYiwgaWVlZTgwMjExX3NlbGVjdF9xdWV1ZShzZGF0YSwgc3RhLCBza2IpKTtcXG42NjYwOlxcdFxcbjY2NjE6XFx0XFx0LypcXG42NjYyOlxcdFxcdCAqIGZvciBNTE8gU1RBLCB0aGUgU0Egc2hvdWxkIGJlIHRoZSBBUCBNTEQgYWRkcmVzcywgYnV0XFxuNjY2MzpcXHRcXHQgKiB0aGUgbGluayBJRCBoYXMgYmVlbiBzZWxlY3RlZCBhbHJlYWR5XFxuNjY2NDpcXHRcXHQgKi9cXG42NjY1OlxcdFxcdGlmIChzdGEgXFx1MDAyNlxcdTAwMjYgc3RhLVxcdTAwM2VzdGEubWxvKVxcbjY2NjY6XFx0XFx0XFx0bWVtY3B5KGVoZHItXFx1MDAzZWhfc291cmNlLCBzZGF0YS1cXHUwMDNldmlmLmFkZHIsIEVUSF9BTEVOKTtcXG42NjY3OlxcdFxcbjY2Njg6XFx0XFx0aW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcXG42NjY5OlxcdFxcdG1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6NDAuODg3NzgxMjAzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NjU1MjU1ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIGhhcyBrZXllZCBpbiBvbiB0aGUgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L21hYzgwMjExL3R4LmNgLiBJIGNhbiBzZWUgaW1tZWRpYXRlbHkgdGhhdCB0aGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGFzIGl0J3MgcGFydCBvZiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjay4gVGhlIGVudHJ5IHBvaW50IGZyb20gdXNlcnNwYWNlIGlzIHRocm91Z2ggbmw4MDIxMSwgc3BlY2lmaWNhbGx5IHRyaWdnZXJlZCBieSB0aGUgYE5MODAyMTFfQ01EX0NPTlRST0xfUE9SVF9GUkFNRWAgY29tbWFuZCwgd2hpY2ggdGhlbiBjYWxscyBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLCB3aGljaCBpbiB0dXJuIGxlYWRzIHRvIGByZGV2X3R4X2NvbnRyb2xfcG9ydGAgYW5kIHVsdGltYXRlbHkgdG8gb3VyIHRhcmdldCwgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLlxuXG5UaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGVzdGFibGlzaGVzIHJlYWNoYWJpbGl0eSAtIHVzZXJzcGFjZSBhY2Nlc3MgaXMgYSBjcml0aWNhbCB2ZWN0b3IuIFRoZSBmYWN0IHRoYXQgaXQncyB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIG1hYzgwMjExLCBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGlzIGFub3RoZXIgYmlnIHBsdXMsIGFzIGl0IG1ha2VzIGl0IG11Y2ggZWFzaWVyIHRvIHRlc3QuXG5cblNvLCBsZXQncyByZXZpZXc6IHJlYWNoYWJsZT8gWWVzLiBUb3VjaGVzIGNvcmUgbmV0d29ya2luZyBjb2RlPyBZZXMuIERlZmluaXRlbHkgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhpcyBpbml0aWFsIGFuYWx5c2lzLlxuXG5Ob3csIHRvIG1ha2Ugc3VyZSBJIGNhbiBhY3R1YWxseSBidWlsZCBhIGZ1enplciBmb3IgdGhpcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBuZWNlc3NhcnkgS2NvbmZpZyBvcHRpb25zLiBNeSBwcmVsaW1pbmFyeSBsaXN0IGxvb2tzIGxpa2UgdGhpczogYENGRzgwMjExYCwgYE1BQzgwMjExYCwgYE1BQzgwMjExX0hXU0lNYCwgYW5kIHBvc3NpYmx5IGBOTDgwMjExX1RFU1RNT0RFYC4gVGltZSB0byBkaXZlIGludG8gYG5ldC9tYWM4MDIxMS9LY29uZmlnYCBhbmQgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBHb3R0YSBiZSBjZXJ0YWluIEkgY2FuIGNvbmZpZ3VyZSBhIGJ1aWxkIHRoYXQgaW5jbHVkZXMgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMyMiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjQ0LjM1MzMwODgxOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcyMDk2MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6NDQuNDQwNTI2Mjg1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwNzUxNDE1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgQ0ZHODAyMTFgIERlcGVuZGVuY3kgVHJlZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIG1ldGljdWxvdXNseSB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYENGRzgwMjExYC4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgcG90ZW50aWFsIGNvbXBsZXhpdGllcyBoZXJlLCBnaXZlbiB0aGUgZXZvbHV0aW9uIG9mIHRoZSB3aXJlbGVzcyBzdGFjay4gSSdtIHRoaW5raW5nIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyoqOiBJdOKAmXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIga2VybmVsIGNvbmZpZ3VyYXRpb25zIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBpbmNsdXNpb24gb2YgYENGRzgwMjExYC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgc3BlY2lmaWMgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlcywgZHJpdmVycywgb3IgZ2VuZXJhbCB3aXJlbGVzcyBmZWF0dXJlIHRvZ2dsZXM/XG4qICAgKipNb2R1bGUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzKio6IEknbSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IHZhcmlvdXMgd2lyZWxlc3MgbW9kdWxlcyAoZS5nLiwgc3BlY2lmaWMgcmFkaW8gZmlybXdhcmUgc3VwcG9ydCkgcmVseSBvbiB0aGlzIGZvdW5kYXRpb25hbCBsYXllci4gQSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGlzIGVzc2VudGlhbC5cbiogICAqKkJ1aWxkLXRpbWUgaW1wbGljYXRpb25zKio6IEknbGwgYWxzbyBiZSBtaW5kZnVsIG9mIGhvdyB0aGVzZSBkZXBlbmRlbmNpZXMgYWZmZWN0IHRoZSBvdmVyYWxsIGtlcm5lbCBidWlsZCBwcm9jZXNzLCBmcm9tIGNvbXBpbGF0aW9uIHRpbWUgdG8gaW1hZ2Ugc2l6ZS5cbiogICAqKlBvdGVudGlhbCBjb25mbGljdHMqKjogSSB3YW50IHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIGJldHdlZW4gYENGRzgwMjExYCBhbmQgb3RoZXIgd2lyZWxlc3Mgc3Vic3lzdGVtcyAoZS5nLiwgZGVwcmVjYXRlZCBvciBsZWdhY3kgd2lyZWxlc3Mgc3RhY2tzKS5cbiogICAqKkRvY3VtZW50YXRpb24gYW5kIGNvbW1lbnRhcnkqKjogSSBrbm93IGhvdyBoZWxwZnVsIGNvbW1lbnRzIGNhbiBiZSwgYW5kIGhvdyB3ZWxsLW1haW50YWluZWQgS2NvbmZpZyBmaWxlcyBjYW4gbWFrZSB0aGUgZGlmZmVyZW5jZSFcblxuVGhpcyBkZWVwIGRpdmUgaXMganVzdCBhbm90aGVyIGRheSBhdCB0aGUgb2ZmaWNlIHRvIGVuc3VyZSBhIHNvbGlkIGdyYXNwIG9uIGhvdyB0aGlzIGNvcmUgY29tcG9uZW50IGlzIHVzZWQsIGFuZCB0byBmb3Jlc2VlIGFueSBmdXR1cmUgaW50ZWdyYXRpb24gY2hhbGxlbmdlcy4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgYXNzdW1wdGlvbnMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTM1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6NDcuNTE1NjcxNDEzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxNTpcXHRcXHRib29sXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBDRkc4MDIxMVxcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuICAyMDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAyMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDIyOlxcdFxcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxcbiAgMjM6XFx0XFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJ3RcXG4gIDI0OlxcdFxcdCMgKHRoaXMgaXMgaGVyZSByYXRoZXIgdGhhbiBiZWxvdyB0byBhbGxvdyBpdCB0byBiZSBhIG1vZHVsZSlcXG4gIDI1OlxcdFxcdHNlbGVjdCBDUllQVE9fU0hBMjU2IGlmIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBjZmc4MDIxMSBpcyB0aGUgTGludXggd2lyZWxlc3MgTEFOICg4MDIuMTEpIGNvbmZpZ3VyYXRpb24gQVBJLlxcbiAgMjg6XFx0XFx0ICBFbmFibGUgdGhpcyBpZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGRldmljZS5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWZlciB0byBkb2N1bWVudGF0aW9uIG9uIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIFdoZW4gYnVpbHQgYXMgYSBtb2R1bGUgaXQgd2lsbCBiZSBjYWxsZWQgY2ZnODAyMTEuXFxuICAzNTpcXHRcXG4gIDM2OlxcdGlmIENGRzgwMjExXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuICAzOTpcXHRcXHRib29sIFxcXCJubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmRcXFwiXFxuICA0MDpcXHRcXHRoZWxwXFxuICA0MTpcXHRcXHQgIFRoZSBubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmQgaGVscHMgaW1wbGVtZW50aW5nIHRoaW5ncyBsaWtlXFxuICA0MjpcXHRcXHQgIGZhY3RvcnkgY2FsaWJyYXRpb24gb3IgdmFsaWRhdGlvbiB0b29scyBmb3Igd2lyZWxlc3MgY2hpcHMuXFxuICA0MzpcXHRcXG4gIDQ0OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIE9OTFkgZm9yIGtlcm5lbHMgdGhhdCBhcmUgc3BlY2lmaWNhbGx5XFxuICA0NTpcXHRcXHQgIGJ1aWx0IGZvciBzdWNoIHB1cnBvc2VzLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRcXHQgIERlYnVnZ2luZyB0b29scyB0aGF0IGFyZSBzdXBwb3NlZCB0byBlbmQgdXAgaW4gdGhlIGhhbmRzIG9mXFxuICA0ODpcXHRcXHQgIHVzZXJzIHNob3VsZCBiZXR0ZXIgYmUgaW1wbGVtZW50ZWQgd2l0aCBkZWJ1Z2ZzLlxcbiAgNDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjQ3LjUxNTc3NTk2NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NzEzODIxNjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAgTW9kaWZpY2F0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgYEZvY3VzU3ltYm9sc2AuIEFoLCB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBJIHNlZSBpdCdzIGJlZW4gbW9kaWZpZWQuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUsIGxldCdzIGlkZW50aWZ5IHRoZSBlbnRyeSBwb2ludHMuIExvb2tzIGxpa2UgYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YCBhbmQsIG9mIGNvdXJzZSwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGl0c2VsZiwgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSB0d28gYXJlIHRoZSByZWxldmFudCB0b3VjaHBvaW50cyBvciBpZiB0aGVyZSBhcmUgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgaW4gYG5ldC9tYWM4MDIxMS90eC5jYCB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4gQWxyaWdodCwgbG9va3MgbGlrZSBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAgaXMgdGhlIGNvcmUgc3ltYm9sLCBhbmQgYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YCBwcm92aWRlcyB0aGUgbmV0bGluayBpbnRlcmZhY2UuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIGBNQUM4MDIxMWAsIG9idmlvdXNseSwgYENGRzgwMjExYCwgYW5kIGFsc28gYE1BQzgwMjExX0hXU0lNYCDigJMgdGhhdCdzIGNydWNpYWwuIEknbGwgaGF2ZSB0byBrZWVwIHRoaXMgaW4gbWluZCBhcyBJIHBlcmZvcm0gYSBkZWVwZXIgZGl2ZS5cblxuT2theSwgc2FuaXR5IGNoZWNrIHRpbWUuIFdlIGhhdmUgYEVuYWJsZUNvbmZpZ3NgOiBgW1wiTUFDODAyMTFcIiwgXCJDRkc4MDIxMVwiLCBcIk1BQzgwMjExX0hXU0lNXCJdYCwgbWF0Y2hpbmcgd2hhdCBJIGV4cGVjdGVkLiBUaGUgYEZvY3VzU3ltYm9sc2A6IGBbXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCIsIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIl1gIOKAkyBwZXJmZWN0LiBBbmQgdGhlIGtleSBpcyB0aGF0IGl0J3MgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggYWRkcmVzc2VzIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgYW5kIHRoZSBoYW5kbGluZyBvZiBib3R0b20gaGFsZiBkaXNhYmxpbmcgd2hlbiB1cGRhdGluZyBzb2Z0d2FyZSBuZXR3b3JrIHN0YXRpc3RpY3MgKmJlZm9yZSogdHJhbnNtaXR0aW5nIGNvbnRyb2wgcG9ydCBmcmFtZXMsIHdoaWNoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGBubDgwMjExYCB3aGVuIHVzaW5nIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVycyBsaWtlIG1hYzgwMjExX2h3c2ltLiBCaW5nby4gVGhpcyBpcyBkZWZpbml0ZWx5IGZ1enotd29ydGh5LCBnaXZlbiB0aGUgY29udGV4dC5cblxuVGltZSB0byBsb2cgdGhlIHJlc3VsdHMuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4NTQsIk91dHB1dFRva2VucyI6MjA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6NTIuMjI5NjAwMTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg2MjQ0ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCIsXG4gICAgXCJubDgwMjExX3R4X2NvbnRyb2xfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQgaW4gbmV0L21hYzgwMjExL3R4LmMgYnkgbW92aW5nIGxvY2FsX2JoX2Rpc2FibGUoKSB0byBwcm90ZWN0IHRoZSBwZXItQ1BVIFRYIHN0YXRpc3RpY3MgdXBkYXRlIChkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKS4gVGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmw4MDIxMSAoTkw4MDIxMV9DTURfQ09OVFJPTF9QT1JUX0ZSQU1FKSBhbmQgY2FuIGJlIGV4ZWN1dGVkIGFuZCBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudHMgd2l0aCBzaW11bGF0ZWQgd2lyZWxlc3MgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydFwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0IGluIG5ldC9tYWM4MDIxMS90eC5jIGJ5IG1vdmluZyBsb2NhbF9iaF9kaXNhYmxlKCkgdG8gcHJvdGVjdCB0aGUgcGVyLUNQVSBUWCBzdGF0aXN0aWNzIHVwZGF0ZSAoZGV2X3N3X25ldHN0YXRzX3R4X2FkZCkuIFRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5sODAyMTEgKE5MODAyMTFfQ01EX0NPTlRST0xfUE9SVF9GUkFNRSkgYW5kIGNhbiBiZSBleGVjdXRlZCBhbmQgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnRzIHdpdGggc2ltdWxhdGVkIHdpcmVsZXNzIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjUyLjM0ODIzMDM5MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM0MTk4MTUyMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0Nzo1Mi4zNDg2NDI5MTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozMzQxOTM5NjgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgYGxvY2FsX2JoX2Rpc2FibGUoKWAgaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoKWAgdG8gY292ZXIgYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAgYW5kIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KClgLiBUaGlzIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSBmaXggZW5zdXJpbmcgYm90dG9tIGhhbHZlcyBhcmUgZGlzYWJsZWQgZHVyaW5nIHBlci1DUFUgc3RhdGlzdGljIHVwZGF0ZXMgdG8gcHJldmVudCBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBzb2Z0aXJxcy5cXG5cXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBtZW1vcnkgYWxsb2NhdGlvbnMsIGluaXRpYWxpemF0aW9uIGxvZ2ljLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBBbnkgcG90ZW50aWFsIGxvY2tpbmcgYnVncyBvciBjb25jdXJyZW5jeSB2aW9sYXRpb25zIGFyZSBjb3ZlcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2ZmI1MGEyNzViNDAzNWFkMjFmYzlhZDc1ZjQzODdlZTY4OWU5MjdjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6NDc6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCA3NGFiMjc1MzQwNzZmLi43YjFhM2M2M2U1ZGM1IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbisrKyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNjY4NywxMCArNjY4Nyw5IEBAIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuK1x0bG9jYWxfYmhfZGlzYWJsZSgpO1xuIFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xuIFx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLVx1MDAzZWxlbik7XG4tXG4tXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gXHRpZWVlODAyMTFfeG1pdChzZGF0YSwgc3RhLCBza2IpO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjUyLjM0ODY0MzYzMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzIxOTIyMzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBtYWM4MDIxMSBUWCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgcGF0Y2ggaXMgaW4gYG5ldC9tYWM4MDIxMS90eC5jYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgdHJhbnNtaXNzaW9uIHBhdGguIE5vdywgbGV0IG1lIHNjcnV0aW5pemUgdGhlIGNvZGUgY2hhbmdlcy4gQWgsIEkgc2VlIGEgc21hbGwgYnV0IHBvdGVudGlhbGx5IHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbiB3aXRoaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLlxuXG5TcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgYGxvY2FsX2JoX2Rpc2FibGUoKWAgaGFzIGJlZW4gbW92ZWQgKmJlZm9yZSogdGhlIGNhbGxzIHRvIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkYCBhbmQgYGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHhgLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYGxvY2FsX2JoX2VuYWJsZSgpYCBpcyBub3cgbG9jYXRlZCBhZnRlciBgaWVlZTgwMjExX3htaXQoKWAuIFByZXZpb3VzbHksIGBsb2NhbF9iaF9kaXNhYmxlKClgIGFuZCBgbG9jYWxfYmhfZW5hYmxlKClgIHdlcmUgd3JhcHBpbmcgb25seSB0aGUgY2FsbCB0byBgaWVlZTgwMjExX3htaXQoKWAuIFRoaXMgY2hhbmdlcyB0aGUgY3JpdGljYWwgc2VjdGlvbiB3aGVyZSBpbnRlcnJ1cHRzIGFyZSBtYXNrZWQsIGV4dGVuZGluZyBpdCB0byBhbHNvIGNvdmVyIHVwZGF0aW5nIHRoZSBkZXZpY2Ugc3RhdGlzdGljcyBhbmQgdGhlIExFRCB0cmlnZ2VyLlxuXG5Ob3csIHdoeSBpcyB0aGlzIGJlaW5nIGRvbmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IGNvdWxkIGJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0byBhdm9pZCBjb250ZW50aW9uLCBvciBtYXliZSB0byBlbnN1cmUgZGF0YSBjb25zaXN0ZW5jeSBkdXJpbmcgdGhlc2UgY3JpdGljYWwgdXBkYXRlcy4gTGV0J3MgcHVsbCB1cCB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgbmV0L21hYzgwMjExL3R4LmNgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHJhdGlvbmFsZSBtb3JlIGZ1bGx5LiBMZXQncyBzZWUgaWYgSSBjYW4gZmluZCBhbiBleHBsYW5hdGlvbiB3aXRoIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2Ugc3RhdHMgdXBkYXRlcywgdGhlIExFRCB0cmlnZ2VyLCBhbmQgdGhlIHRyYW5zbWlzc2lvbiBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IGludGVycnVwdCBtb2RlbC4gU29tZXRoaW5nJ3MgZHJpdmluZyB0aGlzIG1vdmU7IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBcIndoeVwiIGFuZCBpdHMgaW1wYWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjA5LjU2Nzg3MTA0N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTgzNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxMS90eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY2NzUsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY2NzU6XFx0XFx0XFx0aWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llKTtcXG42Njc2OlxcdFxcbjY2Nzc6XFx0XFx0c2tiID0gaWVlZTgwMjExX2J1aWxkX2hkcihzZGF0YSwgc2tiLCBzdGEpO1xcbjY2Nzg6XFx0XFx0aWYgKElTX0VSUihza2IpKSB7XFxuNjY3OTpcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG42NjgwOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHNrYik7XFxuNjY4MTpcXHRcXHR9XFxuNjY4MjpcXHRcXG42NjgzOlxcdFxcdGlmIChsaW5rX2lkICE9IHUzMl9nZXRfYml0cyhpbmZvLVxcdTAwM2Vjb250cm9sLmZsYWdzLFxcbjY2ODQ6XFx0XFx0XFx0XFx0XFx0ICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKSkge1xcbjY2ODU6XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG42Njg2OlxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjY2ODc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNjY4ODpcXHRcXHR9XFxuNjY4OTpcXHRcXG42NjkwOlxcdFxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG42NjkxOlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuNjY5MjpcXHRcXHRpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXFx1MDAzZWxlbik7XFxuNjY5MzpcXHRcXHRpZWVlODAyMTFfeG1pdChzZGF0YSwgc3RhLCBza2IpO1xcbjY2OTQ6XFx0XFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuNjY5NTpcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG42Njk2OlxcdFxcbjY2OTc6XFx0XFx0cmV0dXJuIDA7XFxuNjY5ODpcXHR9XFxuNjY5OTpcXHRcXG42NzAwOlxcdGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuNjcwMTpcXHRcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxcbjY3MDI6XFx0e1xcbjY3MDM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbjY3MDQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuNjcwNTpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbjY3MDY6XFx0XFxuNjcwNzpcXHRcXHRza2IgPSBkZXZfYWxsb2Nfc2tiKGxvY2FsLVxcdTAwM2Vody5leHRyYV90eF9oZWFkcm9vbSArIGxlbiArXFxuNjcwODpcXHRcXHRcXHRcXHQgICAgMzAgKyAvKiBoZWFkZXIgc2l6ZSAqL1xcbjY3MDk6XFx0XFx0XFx0XFx0ICAgIDE4KTsgLyogMTFzIGhlYWRlciBzaXplICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjA5LjU3MDQ1ODk0NloiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDMzMjY3NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGF0IGNvZGUgc25pcHBldDpcblxuKipEaXZpbmcgaW50byB0aGUgVGltaW5nIG9mIGBsb2NhbF9iaF9kaXNhYmxlKClgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB3b25kZXJpbmcgd2h5IGBsb2NhbF9iaF9kaXNhYmxlKClgIHdhcyBtb3ZlZCB0byBiZSAqYmVmb3JlKiB0aGF0IGNhbGwgdG8gYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGVyZSdzIGEgcmVhc29uLCBhbmQgYSBnb29kIG9uZSwgZm9yIHRoYXQgcGxhY2VtZW50LlxuXG5UaGUgYGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXHUwMDNlbGVuKWAgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBJdCdzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRob3NlIHBlci1DUFUgbmV0d29yayBzdGF0aXN0aWNzLiBBbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdCBiZWluZyBjYWxsZWQgd2hlbiBpdCBpcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZCgpYCB0byBiZSBzdXJlLi4uIEkgc3VzcGVjdCBpdCdzIGFib3V0IHN5bmNocm9uaXphdGlvbiBvciBhdG9taWNpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjExLjYwMzczMDE1MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1MDYxMTEzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZfc3dfbmV0c3RhdHNfdHhfYWRkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9uZXRfZGV2aWNlLnJzdD0xNDE9c3RydWN0IHBjcHVfbHN0YXRzX19wZXJjcHUqICAgICAgICAgbHN0YXRzICAgICAgICAgICAgICAgICAgICAgIHJlYWRfbW9zdGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfbHN0YXRzX2FkZCgpXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0OjE0MjpzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0c19fcGVyY3B1KiAgICB0c3RhdHMgICAgICAgICAgICAgICAgICAgICAgcmVhZF9tb3N0bHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9zd19uZXRzdGF0c190eF9hZGQoKVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9uZXRfZGV2aWNlLnJzdC0xNDMtc3RydWN0IHBjcHVfZHN0YXRzX19wZXJjcHUqICAgICAgICAgZHN0YXRzXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pcG9pYl90eC5jPTExND1zdGF0aWMgdm9pZCBoZmkxX2lwb2liX2ZyZWVfdHgoc3RydWN0IGlwb2liX3R4cmVxICp0eCwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2lwb2liX3R4LmMtMTE4LVxcdGlmIChsaWtlbHkoIXR4LVxcdTAwM2VzZG1hX3N0YXR1cykpIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pcG9pYl90eC5jOjExOTpcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHByaXYtXFx1MDAzZW5ldGRldiwgMSwgdHgtXFx1MDAzZXNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pcG9pYl90eC5jLTEyMC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX3R4cnguYz0xMzA9bmV0ZGV2X3R4X3QgaGJnX25ldF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfdHhyeC5jLTE3MC1cXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2cmluZy1cXHUwMDNlbnR1LCBoYmdfcXVldWVfbmV4dF9wcnQobnR1LCByaW5nKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX3R4cnguYzoxNzE6XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfdHhyeC5jLTE3Mi1cXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGl0ZXgvbGl0ZXhfbGl0ZWV0aC5jPTE1ND1zdGF0aWMgbmV0ZGV2X3R4X3QgbGl0ZWV0aF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9saXRleC9saXRleF9saXRlZXRoLmMtMTg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xpdGV4L2xpdGV4X2xpdGVldGguYzoxODc6XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9saXRleC9saXRleF9saXRlZXRoLmMtMTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NDg3ND1zdGF0aWMgdm9pZCBydGxfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00OTAxLVxcdGlmICh0cC1cXHUwMDNlZGlydHlfdHggIT0gZGlydHlfdHgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0OTAyOlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCBwa3RzX2NvbXBsLCBieXRlc19jb21wbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDkwMy1cXHRcXHRXUklURV9PTkNFKHRwLVxcdTAwM2VkaXJ0eV90eCwgZGlydHlfdHgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MjY1PXN0YXRpYyBpbnQgdHhfaGFuZGxlcihzdHJ1Y3QgcnRhc2VfcmluZyAqcmluZywgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTMwNS1cXHRpZiAocmluZy1cXHUwMDNlZGlydHlfaWR4ICE9IGRpcnR5X3R4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MzA2OlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCBwa3RzX2NvbXBsLCBieXRlc19jb21wbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtMzA3LVxcdFxcdFdSSVRFX09OQ0UocmluZy1cXHUwMDNlZGlydHlfaWR4LCBkaXJ0eV90eCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTE0NTQ9c3RhdGljIGludCBhbTY1X2Nwc3dfbnVzc190eF9jb21wbF9wYWNrZXRzKHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTE1MTItXFx0XFx0YW02NV9jcHN3X251c3NfeG1pdF9mcmVlKHR4X2NobiwgZGVzY190eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYzoxNTEzOlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgcGt0X2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0xNTE0LVxcdFxcdGlmICghc2luZ2xlX3BvcnQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jPTIxOT1pbnQgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgaW50IGNobixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jLTI1Ni1cXHRcXHRcXHRza2IgPSBzd2RhdGEtXFx1MDAzZWRhdGEuc2tiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jOjI1NzpcXHRcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHNrYi1cXHUwMDNlZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMtMjU4LVxcdFxcdFxcdHRvdGFsX2J5dGVzICs9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMtMjYyLVxcdFxcdFxcdHhkcGYgPSBzd2RhdGEtXFx1MDAzZWRhdGEueGRwZjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYzoyNjM6XFx0XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZGV2LCAxLCB4ZHBmLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jLTI2NC1cXHRcXHRcXHR0b3RhbF9ieXRlcyArPSB4ZHBmLVxcdTAwM2VsZW47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYy0yNjgtXFx0XFx0XFx0cGt0X2xlbiA9IGNwcGk1X2hkZXNjX2dldF9wa3RsZW4oZGVzY190eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmM6MjY5OlxcdFxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgcGt0X2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMtMjcwLVxcdFxcdFxcdHhza19mcmFtZXNfZG9uZSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjc2VjLmM9NTM4PXN0YXRpYyB2b2lkIGNvdW50X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCByZXQsIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9tYWNzZWMuYy01NDAtXFx0aWYgKGxpa2VseShyZXQgPT0gTkVUX1hNSVRfU1VDQ0VTUyB8fCByZXQgPT0gTkVUX1hNSVRfQ04pKVxcbmRyaXZlcnMvbmV0L21hY3NlYy5jOjU0MTpcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgbGVuKTtcXG5kcml2ZXJzL25ldC9tYWNzZWMuYy01NDItfVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0a2l0LmM9OTI9c3RhdGljIG5ldGRldl90eF90IG5ldGtpdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYy0xMjEtXFx0XFx0aWYgKGxpa2VseShfX25ldGlmX3J4KHNrYikgPT0gTkVUX1JYX1NVQ0NFU1MpKSB7XFxuZHJpdmVycy9uZXQvbmV0a2l0LmM6MTIyOlxcdFxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW4pO1xcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTEyMy1cXHRcXHRcXHRkZXZfc3dfbmV0c3RhdHNfcnhfYWRkKHBlZXIsIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYy0xMjgtXFx0Y2FzZSBORVRLSVRfUkVESVJFQ1Q6XFxuZHJpdmVycy9uZXQvbmV0a2l0LmM6MTI5OlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW4pO1xcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTEzMC1cXHRcXHRza2JfZG9fcmVkaXJlY3Qoc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTE3Nzc9cHBwX3ByZXBhcmVfdHhfc2tiKHN0cnVjdCBwcHAgKnBwcCwgc3RydWN0IHNrX2J1ZmYgKipwc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTgxMy1cXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzoxODE0OlxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXFx1MDAzZWxlbiAtIFBQUF9QUk9UT19MRU4pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTE4MTUtXFxuLS1cXG5kcml2ZXJzL25ldC90dW4uYz0yMDk3PXN0YXRpYyBzc2l6ZV90IHR1bl9wdXRfdXNlcl94ZHAoc3RydWN0IHR1bl9zdHJ1Y3QgKnR1bixcXG4tLVxcbmRyaXZlcnMvbmV0L3R1bi5jLTIxMTctXFx0cHJlZW1wdF9kaXNhYmxlKCk7XFxuZHJpdmVycy9uZXQvdHVuLmM6MjExODpcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHR1bi1cXHUwMDNlZGV2LCAxLCByZXQpO1xcbmRyaXZlcnMvbmV0L3R1bi5jLTIxMTktXFx0cHJlZW1wdF9lbmFibGUoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3R1bi5jPTIxMjU9c3RhdGljIHNzaXplX3QgdHVuX3B1dF91c2VyKHN0cnVjdCB0dW5fc3RydWN0ICp0dW4sXFxuLS1cXG5kcml2ZXJzL25ldC90dW4uYy0yMjAyLVxcdHByZWVtcHRfZGlzYWJsZSgpO1xcbmRyaXZlcnMvbmV0L3R1bi5jOjIyMDM6XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZCh0dW4tXFx1MDAzZWRldiwgMSwgc2tiLVxcdTAwM2VsZW4gKyB2bGFuX2hsZW4pO1xcbmRyaXZlcnMvbmV0L3R1bi5jLTIyMDQtXFx0cHJlZW1wdF9lbmFibGUoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTk4PXN0YXRpYyBuZXRkZXZfdHhfdCBxbWltdXhfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTEyLVxcdGlmIChsaWtlbHkocmV0ID09IE5FVF9YTUlUX1NVQ0NFU1MgfHwgcmV0ID09IE5FVF9YTUlUX0NOKSlcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMTM6XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIGxlbik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTE0LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz0zNDg9c3RhdGljIG5ldGRldl90eF90IHZldGhfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTM4My1cXHRcXHRpZiAoIXVzZV9uYXBpKVxcbmRyaXZlcnMvbmV0L3ZldGguYzozODQ6XFx0XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIGxlbmd0aCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTM4NS1cXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jb3JlLmM9OTA9cXRuZl9uZXRkZXZfaGFyZF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY29yZS5jLTEyOC1cXHRcXHRxdG5mX3BhY2tldF9zZW5kX2hpX3ByaShza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NvcmUuYzoxMjk6XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY29yZS5jLTEzMC1cXHRcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS9wZWFybF9wY2llLmM9NDY0PXN0YXRpYyB2b2lkIHF0bmZfcGVhcmxfZGF0YV90eF9yZWNsYWltKHN0cnVjdCBxdG5mX3BjaWVfcGVhcmxfc3RhdGUgKnBzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS9wZWFybF9wY2llLmMtNDkxLVxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWRldikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvcGVhcmxfcGNpZS5jOjQ5MjpcXHRcXHRcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHNrYi1cXHUwMDNlZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS9wZWFybF9wY2llLmMtNDkzLVxcdFxcdFxcdFxcdGlmICh1bmxpa2VseShwcml2LVxcdTAwM2V0eF9zdG9wcGVkKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS90b3Bhel9wY2llLmM9MzkxPXN0YXRpYyB2b2lkIHF0bmZfdG9wYXpfZGF0YV90eF9yZWNsYWltKHN0cnVjdCBxdG5mX3BjaWVfdG9wYXpfc3RhdGUgKnRzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS90b3Bhel9wY2llLmMtNDIwLVxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWRldikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvdG9wYXpfcGNpZS5jOjQyMTpcXHRcXHRcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHNrYi1cXHUwMDNlZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS90b3Bhel9wY2llLmMtNDIyLVxcdFxcdFxcdFxcdGlmICh1bmxpa2VseShwcml2LVxcdTAwM2V0eF9zdG9wcGVkKSkge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0zMDcyPXN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfc3dfbmV0c3RhdHNfcnhfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBsZW4pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTMwODEtXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDozMDgyOnN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDgzLVxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IHBhY2tldHMsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX2RldmljZS5jPTMwPW5ldGRldl90eF90IGJyX2Rldl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX2RldmljZS5jLTU4LVxcbm5ldC9icmlkZ2UvYnJfZGV2aWNlLmM6NTk6XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvYnJpZGdlL2JyX2RldmljZS5jLTYwLVxcbi0tXFxubmV0L2RzYS91c2VyLmM9OTE0PXN0YXRpYyBuZXRkZXZfdHhfdCBkc2FfdXNlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvZHNhL3VzZXIuYy05MTgtXFxubmV0L2RzYS91c2VyLmM6OTE5OlxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxubmV0L2RzYS91c2VyLmMtOTIwLVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MzYzOD1pZWVlODAyMTFfeG1pdF9mYXN0X2ZpbmlzaChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTM2NTQtXFxubmV0L21hYzgwMjExL3R4LmM6MzY1NTpcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHNrYi1cXHUwMDNlZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL3R4LmMtMzY1Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ0MDU9dm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00NDg4LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQ0ODk6XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbWFjODAyMTEvdHguYy00NDkwLVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDc1MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDgxNi1cXG5uZXQvbWFjODAyMTEvdHguYzo0ODE3OlxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCBza2JzLCBsZW4pO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQ4MTgtXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz02NTcxPWludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02NjkwLVxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG5uZXQvbWFjODAyMTEvdHguYzo2NjkxOlxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL3R4LmMtNjY5Mi1cXHRpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXFx1MDAzZWxlbik7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmM9MzQ9aW50ZXJuYWxfZGV2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYy00NS1cXHRpZiAobGlrZWx5KCFlcnIpKVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzo0NjpcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKG5ldGRldiwgMSwgbGVuKTtcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtNDctXFx0ZWxzZVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jPTQyND14ZnJtaV94bWl0MihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZmxvd2kgKmZsKVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTUwOS1cXHRpZiAobmV0X3htaXRfZXZhbChlcnIpID09IDApIHtcXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM6NTEwOlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW5ndGgpO1xcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYy01MTEtXFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDg6MTMuODU0MzQ2MzEyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1NjQyMDE3NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBEZWZpbml0aW9uOiBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBmdW5jdGlvbiBkZWZpbml0aW9uLCBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZGAuIEdpdmVuIHRoZSBuYW1lLCBJJ20gaW1tZWRpYXRlbHkgZXhwZWN0aW5nIHRoaXMgdG8gYmUgcmVsYXRlZCB0byBuZXR3b3JrIHN0YXRpc3RpY3MsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgdHJhbnNtaXNzaW9uIChUWCkgc2lkZSwgbGlrZWx5IGF0IHRoZSBkZXZpY2Ugb3Igc3dpdGNoIGxldmVsLiBUaGUgXCJhZGRcIiBzdWdnZXN0cyB0aGlzIGlzIHdoZXJlIHdlJ3JlIGluY3JlbWVudGluZyBjb3VudGVycyBvciBhZGRpbmcgZGF0YSBwb2ludHMgcmVsYXRlZCB0byB0cmFuc21pdHRlZCBuZXR3b3JrIHBhY2tldHMgb3IgYnl0ZXMuIEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQg4oCTIGlzIHRoaXMgYSBwZXItcG9ydCBjb3VudGVyLCBhIGdsb2JhbCBkZXZpY2UgY291bnRlciwgb3Igc29tZXRoaW5nIG1vcmUgbnVhbmNlZD8gV2hhdCdzIHRoZSBkYXRhIHN0cnVjdHVyZSBpdCdzIG1vZGlmeWluZz8gSXMgaXQgdGhyZWFkLXNhZmU/IFRoYXQncyB3aGF0IEknbGwgYmUgbG9va2luZyBmb3IgaW4gdGhlIGRlZmluaXRpb24gaXRzZWxmLCBvciBhdCBsZWFzdCBpbiB0aGUgc3Vycm91bmRpbmcgY29kZS4gTXkgaW5pdGlhbCBoeXBvdGhlc2lzIGlzIHRoYXQgdGhpcyBwcm9iYWJseSBleGlzdHMgd2l0aGluIGEgYnJvYWRlciBzdGF0aXN0aWNzIGZyYW1ld29yaywgcGVyaGFwcyBpbnRlZ3JhdGVkIHdpdGggYSBrZXJuZWwgbW9kdWxlIG9yIHNvbWUga2luZCBvZiBkYXRhIGNvbGxlY3Rpb24gbGF5ZXIuIEknbSBjdXJpb3VzIHRvIHNlZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZnVuY3Rpb24sIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBzdGF0aXN0aWNhbCBkYXRhIGZsb3cgbG9va3MgbGlrZS4gVGhpcyBpcyB3aGVyZSB0aGUgZnVuIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODEwOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjE2LjQxODU2NTQ0MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzEzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAzMDgwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMDgwOlxcdH1cXG4zMDgxOlxcdFxcbjMwODI6XFx0c3RhdGljIGlubGluZSB2b2lkIGRldl9zd19uZXRzdGF0c190eF9hZGQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4zMDgzOlxcdFxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IHBhY2tldHMsXFxuMzA4NDpcXHRcXHRcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBsZW4pXFxuMzA4NTpcXHR7XFxuMzA4NjpcXHRcXHRzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0cyAqdHN0YXRzID0gdGhpc19jcHVfcHRyKGRldi1cXHUwMDNldHN0YXRzKTtcXG4zMDg3OlxcdFxcbjMwODg6XFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2dHN0YXRzLVxcdTAwM2VzeW5jcCk7XFxuMzA4OTpcXHRcXHR1NjRfc3RhdHNfYWRkKFxcdTAwMjZ0c3RhdHMtXFx1MDAzZXR4X2J5dGVzLCBsZW4pO1xcbjMwOTA6XFx0XFx0dTY0X3N0YXRzX2FkZChcXHUwMDI2dHN0YXRzLVxcdTAwM2V0eF9wYWNrZXRzLCBwYWNrZXRzKTtcXG4zMDkxOlxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZ0c3RhdHMtXFx1MDAzZXN5bmNwKTtcXG4zMDkyOlxcdH1cXG4zMDkzOlxcdFxcbjMwOTQ6XFx0c3RhdGljIGlubGluZSB2b2lkIGRldl9sc3RhdHNfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBsZW4pXFxuMzA5NTpcXHR7XFxuMzA5NjpcXHRcXHRzdHJ1Y3QgcGNwdV9sc3RhdHMgKmxzdGF0cyA9IHRoaXNfY3B1X3B0cihkZXYtXFx1MDAzZWxzdGF0cyk7XFxuMzA5NzpcXHRcXG4zMDk4OlxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNmxzdGF0cy1cXHUwMDNlc3luY3ApO1xcbjMwOTk6XFx0XFx0dTY0X3N0YXRzX2FkZChcXHUwMDI2bHN0YXRzLVxcdTAwM2VieXRlcywgbGVuKTtcXG4zMTAwOlxcdFxcdHU2NF9zdGF0c19pbmMoXFx1MDAyNmxzdGF0cy1cXHUwMDNlcGFja2V0cyk7XFxuMzEwMTpcXHRcXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcXHUwMDI2bHN0YXRzLVxcdTAwM2VzeW5jcCk7XFxuMzEwMjpcXHR9XFxuMzEwMzpcXHRcXG4zMTA0OlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfZHN0YXRzX3J4X2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0ODoxNi40MTkwMzk1NzFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzMyMzI1NTE3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggUmVsYXRlZCB0byBOZXR3b3JrIFN0YXRpc3RpY3MgYW5kIEludGVycnVwdCBDb250ZXh0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgcGF0Y2gsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkndmUgbW92ZWQgYGxvY2FsX2JoX2Rpc2FibGUoKWAgaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhlIGludGVyYWN0aW9uIHdpdGggYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAuIEkgYWxyZWFkeSBrbm93IHRoYXQgZnVuY3Rpb24sIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBvciB3aGVuIGRlYWxpbmcgd2l0aCBsb2NrZGVwIG9yIHNlcWNvdW50LCBpdCBuZWVkcyBlaXRoZXIgYm90dG9tLWhhbGYgKEJIKSBkaXNhYmxlZCBvciBwcmVlbXB0aW9uIGRpc2FibGVkLiBUaGlzIGlzIGJlY2F1c2UgaXQgdXNlcyBgdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZ0c3RhdHMtXHUwMDNlc3luY3ApYCwgYW5kIHRoYXQncyBjcml0aWNhbCBmb3IgcHJldmVudGluZyByYWNlIGNvbmRpdGlvbnMgb3IgZGVhZGxvY2tzIHdpdGggc29mdGlycXMg4oCTIG9yLCBtb3JlIGdlbmVyYWxseSwgZW5zdXJpbmcgcGVyLUNQVSB1cGRhdGUgc2FmZXR5LlxuXG5UaGUgb3JpZ2luYWwgY29kZSBoYWQgYGxvY2FsX2JoX2Rpc2FibGUoKWAgKmFmdGVyKiB0aGUgY2FsbHMgdG8gYm90aCBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pYCBhbmQgYGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIHNrYi1cdTAwM2VsZW4pYC4gVGhlIHBhdGNoIG1vdmVzIGBsb2NhbF9iaF9kaXNhYmxlKClgICpiZWZvcmUqIHRob3NlIHR3byBjYWxscy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyB0aGUgcmF0aW9uYWxlPyBUaGV5J3JlIGNsZWFybHkgdHJ5aW5nIHRvIGVuc3VyZSB0aGF0IHRob3NlIHN0YXRpc3RpY3MgdXBkYXRlcyBhbmQgTEVEIHRyaWdnZXIgY2FsbHMgaGFwcGVuIGluIGEgY29udGV4dCB3aGVyZSBCSHMgYXJlIGRpc2FibGVkLiBUaGF0J3MgZ29vZCBwcmFjdGljZSBmb3IgdGhvc2Uga2luZHMgb2Ygc3RhdHMuXG5cbk5vdywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNoZWNrIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXHUwMDNlbGVuKWAgdG8gbWFrZSBzdXJlICppdCogaXNuJ3QgY2FsbGluZyBhbnl0aGluZyB0aGF0IGNvdWxkIGNhdXNlIGEgcHJvYmxlbS4gV2UgbmVlZCB0byBiZSBjZXJ0YWluIHRoaXMgbW92ZSBvZiBgbG9jYWxfYmhfZGlzYWJsZSgpYCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGlzc3VlcyBvciBpbmFkdmVydGVudGx5IG1hc2sgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gdGhlIGBsZWRfdHJpZ190eGAgZnVuY3Rpb24sIHNpbmNlIGl0IGlzIG5vdyB3aXRoaW4gdGhlIEJIIGRpc2FibGVkIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0ODoxOS43NDIyOTY5NloiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MjUyMzc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9sZWQuaD03MD1zdGF0aWMgaW5saW5lIHZvaWRcXG5uZXQvbWFjODAyMTEvbGVkLmg6NzE6aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgaW50IGJ5dGVzKVxcbm5ldC9tYWM4MDIxMS9sZWQuaC03Mi17XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00NDA1PXZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDQ5OC1cXHRpZiAobGVuKVxcbm5ldC9tYWM4MDIxMS90eC5jOjQ0OTk6XFx0XFx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgbGVuKTtcXG5uZXQvbWFjODAyMTEvdHguYy00NTAwLVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDc1MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDgyMy1cXG5uZXQvbWFjODAyMTEvdHguYzo0ODI0OlxcdGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIGxlbik7XFxubmV0L21hYzgwMjExL3R4LmMtNDgyNS1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTY1NzE9aW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTY2OTEtXFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbWFjODAyMTEvdHguYzo2NjkyOlxcdGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbWFjODAyMTEvdHguYy02NjkzLVxcdGllZWU4MDIxMV94bWl0KHNkYXRhLCBzdGEsIHNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjIyLjEzNDgzNzQ3N1oiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNjMzMTczNjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvbmN1cnJlbmN5IEZpeCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSBhIGNvbmN1cnJlbmN5IGZpeC4gSXQncyBtb3ZpbmcgdGhlIGBsb2NhbF9iaF9kaXNhYmxlKClgIHNjb3BlIHRvIGluY2x1ZGUgdGhlIHN0YXQgdXBkYXRlczogYGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXHUwMDNlbGVuKWAgYW5kIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXHUwMDNlbGVuKWAuIFRoZSBnb2FsIGlzIHRvIGVuc3VyZSB0aG9zZSBwZXItQ1BVIHN0YXRzIHVwZGF0ZXMgYXJlIGF0b21pYyBieSBkaXNhYmxpbmcgYm90dG9tIGhhbHZlcy4gVGhpcyBwcmV2ZW50cyBpbnRlcnJ1cHRpb25zIGZyb20gc29mdGlycXMsIG1pdGlnYXRpbmcgcG90ZW50aWFsIHdhcm5pbmdzLCBkZWFkbG9ja3MsIG9yIGRhdGEgcmFjZXMuXG5cbk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTGV0J3MgYW5hbHl6ZS5cblxuKiAgICoqTWVtb3J5IEFsbG9jYXRpb25zOioqIE5vLCB0aGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guXG4qICAgKipVc2VyL0tlcm5lbCBEYXRhIFRyYW5zZmVyOioqIE5vLCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW52b2x2ZSBhbnkgYGNvcHlfdG9fdXNlcmAsIG5ldGxpbmsgY2FsbHMsIG9yIGlvY3RsIG9wZXJhdGlvbnMuXG4qICAgKipVbmluaXRpYWxpemVkIERhdGE6KiogTm8sIHRoZSBwYXRjaCBkb2Vzbid0IHRvdWNoIGV4aXN0aW5nIGRhdGEgc3RydWN0dXJlcyBvciBmaWVsZHMgaW4gYSB3YXkgdGhhdCB3b3VsZCBsZWF2ZSB0aGVtIHVuaW5pdGlhbGl6ZWQuXG4qICAgKipCb3VuZHMgQ2hlY2tzL0xlbmd0aCBDYWxjdWxhdGlvbnM6KiogTm8sIHRoZXJlIGFyZSBubyBtb2RpZmljYXRpb25zIHRvIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5pbml0aWFsaXplZCByZWFkcy4gSXQncyBhIGNvbmN1cnJlbmN5IGZpeCBhbmQgZG9lc24ndCBhZmZlY3QgdGhhdC5cblxuVGhpcyBhbGwgcG9pbnRzIHRvOiBpdCdzIGEgc3RhbmRhcmQgbG9ja2luZy9jb25jdXJyZW5jeSBmaXgsIHNxdWFyZWx5IGluIHRoZSBsb2NrZGVwL0tBU0FOIGRldGVjdGlvbiBzcGFjZS4gVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50IHRoYXQgXCJOZWVkc0tNU0FOXCIgc2hvdWxkIGJlIGBmYWxzZWAuXG5cbkknbGwgZG8gYSBmaW5hbCBydW4tdGhyb3VnaCB0byBkb3VibGUtY2hlY2sgbXkgcmVhc29uaW5nLiBBbmQgdGhlbiBJIHdpbGwgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNTMsIk91dHB1dFRva2VucyI6MTc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjI1Ljc2ODAxNDA3NloiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgYGxvY2FsX2JoX2Rpc2FibGUoKWAgaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoKWAgdG8gY292ZXIgYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAgYW5kIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KClgLiBUaGlzIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSBmaXggZW5zdXJpbmcgYm90dG9tIGhhbHZlcyBhcmUgZGlzYWJsZWQgZHVyaW5nIHBlci1DUFUgc3RhdGlzdGljIHVwZGF0ZXMgdG8gcHJldmVudCBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBzb2Z0aXJxcy5cXG5cXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBtZW1vcnkgYWxsb2NhdGlvbnMsIGluaXRpYWxpemF0aW9uIGxvZ2ljLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBBbnkgcG90ZW50aWFsIGxvY2tpbmcgYnVncyBvciBjb25jdXJyZW5jeSB2aW9sYXRpb25zIGFyZSBjb3ZlcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb3ZlcyBgbG9jYWxfYmhfZGlzYWJsZSgpYCBpbiBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCgpYCB0byBjb3ZlciBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZCgpYCBhbmQgYGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgoKWAuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGZpeCBlbnN1cmluZyBib3R0b20gaGFsdmVzIGFyZSBkaXNhYmxlZCBkdXJpbmcgcGVyLUNQVSBzdGF0aXN0aWMgdXBkYXRlcyB0byBwcmV2ZW50IGNvbmN1cnJlbmN5IGlzc3VlcyB3aXRoIHNvZnRpcnFzLlxcblxcblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IG1lbW9yeSBhbGxvY2F0aW9ucywgaW5pdGlhbGl6YXRpb24gbG9naWMsIGtlcm5lbC10by11c2VyIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEFueSBwb3RlbnRpYWwgbG9ja2luZyBidWdzIG9yIGNvbmN1cnJlbmN5IHZpb2xhdGlvbnMgYXJlIGNvdmVyZWQgYnkgTE9DS0RFUCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycywgbm90IEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowtb4vc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 04:19:06 +0000 UTC FinishedAt: 2026-09-10 04:48:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "c68a982815dcce5464e3bf2a31ac94f5146c04ca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "c68a982815dcce5464e3bf2a31ac94f5146c04ca", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "c7196ab3-9d14-4b9f-afe9-cebac690acc6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_tx_control_port", "nl80211_tx_control_port" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIGBsb2NhbF9iaF9kaXNhYmxlKClgIGluIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KClgIHRvIGNvdmVyIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKClgIGFuZCBgaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eCgpYC4gVGhpcyBpcyBhIGxvY2tpbmcvY29uY3VycmVuY3kgZml4IGVuc3VyaW5nIGJvdHRvbSBoYWx2ZXMgYXJlIGRpc2FibGVkIGR1cmluZyBwZXItQ1BVIHN0YXRpc3RpYyB1cGRhdGVzIHRvIHByZXZlbnQgY29uY3VycmVuY3kgaXNzdWVzIHdpdGggc29mdGlycXMuXG5cblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IG1lbW9yeSBhbGxvY2F0aW9ucywgaW5pdGlhbGl6YXRpb24gbG9naWMsIGtlcm5lbC10by11c2VyIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEFueSBwb3RlbnRpYWwgbG9ja2luZyBidWdzIG9yIGNvbmN1cnJlbmN5IHZpb2xhdGlvbnMgYXJlIGNvdmVyZWQgYnkgTE9DS0RFUCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycywgbm90IEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0IGluIG5ldC9tYWM4MDIxMS90eC5jIGJ5IG1vdmluZyBsb2NhbF9iaF9kaXNhYmxlKCkgdG8gcHJvdGVjdCB0aGUgcGVyLUNQVSBUWCBzdGF0aXN0aWNzIHVwZGF0ZSAoZGV2X3N3X25ldHN0YXRzX3R4X2FkZCkuIFRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5sODAyMTEgKE5MODAyMTFfQ01EX0NPTlRST0xfUE9SVF9GUkFNRSkgYW5kIGNhbiBiZSBleGVjdXRlZCBhbmQgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnRzIHdpdGggc2ltdWxhdGVkIHdpcmVsZXNzIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2ZmI1MGEyNzViNDAzNWFkMjFmYzlhZDc1ZjQzODdlZTY4OWU5MjdjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6NDc6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggNzRhYjI3NTM0MDc2Zi4uN2IxYTNjNjNlNWRjNSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguY1xuQEAgLTY2ODcsMTAgJiM0Mzs2Njg3LDkgQEAgaW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4mIzQzO1x0bG9jYWxfYmhfZGlzYWJsZSgpO1xuIFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xuIFx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLVx1MDAzZWxlbik7XG4tXG4tXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gXHRpZWVlODAyMTFfeG1pdChzZGF0YSwgc3RhLCBza2IpO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCBpbiBuZXQvbWFjODAyMTEvdHguYyBieSBtb3ZpbmcgbG9jYWxfYmhfZGlzYWJsZSgpIHRvIHByb3RlY3QgdGhlIHBlci1DUFUgVFggc3RhdGlzdGljcyB1cGRhdGUgKGRldl9zd19uZXRzdGF0c190eF9hZGQpLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIChOTDgwMjExX0NNRF9DT05UUk9MX1BPUlRfRlJBTUUpIGFuZCBjYW4gYmUgZXhlY3V0ZWQgYW5kIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyB3aXRoIHNpbXVsYXRlZCB3aXJlbGVzcyBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmZiNTBhMjc1YjQwMzVhZDIxZmM5YWQ3NWY0Mzg3ZWU2ODllOTI3YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDA0OjQ3OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguYwppbmRleCA3NGFiMjc1MzQwNzZmLi43YjFhM2M2M2U1ZGM1IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvdHguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguYwpAQCAtNjY4NywxMCAmIzQzOzY2ODcsOSBAQCBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKJiM0MzsJbG9jYWxfYmhfZGlzYWJsZSgpOwogCWRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItJmd0O2xlbik7CiAJaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLSZndDtsZW4pOwotCi0JbG9jYWxfYmhfZGlzYWJsZSgpOwogCWllZWU4MDIxMV94bWl0KHNkYXRhLCBzdGEsIHNrYik7CiAJbG9jYWxfYmhfZW5hYmxlKCk7CiAJcmN1X3JlYWRfdW5sb2NrKCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogT3B0aW1pemF0aW9uIGluIGBtYWM4MDIxMS90eC5jYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRpc3NlY3QgdGhlIGRpZmYgYW5kIGFzc2VzcyB0aGUgaW1wYWN0LiBJdCYjMzk7cyBhIHNtYWxsIGNoYW5nZSwgYnV0IGV2ZW4gc21hbGwgY2hhbmdlcyBpbiB0aGUgYG1hYzgwMjExYCBjb3JlIGNhbiBiZSBjcml0aWNhbC4KCkFscmlnaHQsIGxvb2tpbmcgYXQgdGhlIGRpZmYsIGl0JiMzOTtzIGEgY29kZSByZS1hcnJhbmdlbWVudCB3aXRoaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBTcGVjaWZpY2FsbHksIHRoZSBgbG9jYWxfYmhfZGlzYWJsZSgpYCBjYWxsIGlzIGJlaW5nIG1vdmVkICpiZWZvcmUqIHRoZSBzdGF0cyB1cGRhdGUgYW5kIHRyYW5zbWlzc2lvbiBjYWxsLCB3aGVyZSBpdCB3YXMgcHJldmlvdXNseSBsb2NhdGVkIGFmdGVyLiBUaGUgc3Vic2VxdWVudCBgbG9jYWxfYmhfZW5hYmxlKClgIHJlbWFpbnMgYXQgdGhlIGVuZCwgYXMgZXhwZWN0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBpbnRlbmRlZCBlZmZlY3Qgb2YgdGhpcyBjaGFuZ2UuCgpOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgY29udGV4dCB1c2luZywgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIG90aGVyIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24uIElzIHRoaXMgdG8gcmVkdWNlIGludGVycnVwdCBsYXRlbmN5PyBPciB0byBlbnN1cmUgYXRvbWljaXR5IGluIHNvbWUgb3RoZXIgb3BlcmF0aW9uPyBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaXNhYmxpbmcgYm90dG9tIGhhbHZlcyBhdCB0aGlzIHNwZWNpZmljIHBvaW50LiBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgaXNzdWUgdGhpcyBhZGRyZXNzZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIG9wdGltaXphdGlvbiB3YXMgcHJvcG9zZWQuIFRoZSBhZGRpdGlvbiBvZiB0aGUgYGxvY2FsX2JoX2Rpc2FibGVgIGJlZm9yZSB0aGUgc3RhdHMgdXBkYXRlIGFuZCB0cmFuc21pc3Npb24gaXMgdGhlIGtleSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3R4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY2NzA6XHRcdGluZm8tXHUwMDNlZmxhZ3MgPSBmbGFncztcbjY2NzE6XHRcdGN0cmxfZmxhZ3MgfD0gdTMyX2VuY29kZV9iaXRzKGxpbmtfaWQsIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKTtcbjY2NzI6XHRcdGluZm8tXHUwMDNlY29udHJvbC5mbGFncyA9IGN0cmxfZmxhZ3M7XG42NjczOlx0XG42Njc0Olx0XHRpZiAoIWdyb3VwX2FkZHJlc3NlZClcbjY2NzU6XHRcdFx0aWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llKTtcbjY2NzY6XHRcbjY2Nzc6XHRcdHNrYiA9IGllZWU4MDIxMV9idWlsZF9oZHIoc2RhdGEsIHNrYiwgc3RhKTtcbjY2Nzg6XHRcdGlmIChJU19FUlIoc2tiKSkge1xuNjY3OTpcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjY2ODA6XHRcdFx0cmV0dXJuIFBUUl9FUlIoc2tiKTtcbjY2ODE6XHRcdH1cbjY2ODI6XHRcbjY2ODM6XHRcdGlmIChsaW5rX2lkICE9IHUzMl9nZXRfYml0cyhpbmZvLVx1MDAzZWNvbnRyb2wuZmxhZ3MsXG42Njg0Olx0XHRcdFx0XHQgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspKSB7XG42Njg1Olx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xuNjY4NjpcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjY2ODc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG42Njg4Olx0XHR9XG42Njg5Olx0XG42NjkwOlx0XHRsb2NhbF9iaF9kaXNhYmxlKCk7XG42NjkxOlx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG42NjkyOlx0XHRpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXHUwMDNlbGVuKTtcbjY2OTM6XHRcdGllZWU4MDIxMV94bWl0KHNkYXRhLCBzdGEsIHNrYik7XG42Njk0Olx0XHRsb2NhbF9iaF9lbmFibGUoKTtcbjY2OTU6XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuNjY5NjpcdFxuNjY5NzpcdFx0cmV0dXJuIDA7XG42Njk4Olx0fVxuNjY5OTpcdFxuNjcwMDpcdGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG42NzAxOlx0XHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbjY3MDI6XHR7XG42NzAzOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG42NzA0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuNjcwNTpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbjY3MDY6XHRcbjY3MDc6XHRcdHNrYiA9IGRldl9hbGxvY19za2IobG9jYWwtXHUwMDNlaHcuZXh0cmFfdHhfaGVhZHJvb20gJiM0MzsgbGVuICYjNDM7XG42NzA4Olx0XHRcdFx0ICAgIDMwICYjNDM7IC8qIGhlYWRlciBzaXplICovXG42NzA5Olx0XHRcdFx0ICAgIDE4KTsgLyogMTFzIGhlYWRlciBzaXplICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4NwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDIyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHN0YXRzIFRyYW5zYWN0aW9uIGFuZCBDb250cm9sIFBvcnQgQmVoYXZpb3IqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi0mZ3Q7bGVuKWAgbmVjZXNzaXRhdGVzIGBsb2NhbF9iaF9kaXNhYmxlKClgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZGAgbGV2ZXJhZ2VzIHBlci1DUFUgc3RhdHMgdXBkYXRpbmcsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhvc2UgZGVsaWNhdGUgcGVyLUNQVSB2YXJpYWJsZXMuIFRoZXNlIHVwZGF0ZXMsIGlmIGRvbmUgaW5jb3JyZWN0bHksIHdpbGwgY2F1c2UgY29udGVudGlvbiB3aXRoIHNvZnQgaW50ZXJydXB0cy4gU28sIHRoZSBrZXJuZWwgZm9sa3MgY29ycmVjdGx5IGNob3NlIHRvIGRpc2FibGUgQm90dG9tIEhhbHZlcyAoQkhzKSBkdXJpbmcgdGhpcyBzZWN0aW9uIG9mIGNvZGUuIEkgc2VlIHRoYXQgdGhlcmUgd2FzIGEgY29tbWl0LCA2ZmI1MGEyNzViNDAsIHdoZXJlIHRoaXMgd2FzIGV4cGxpY2l0bHkgYWRkcmVzc2VkIGJ5IG1vdmluZyB0aGUgYGxvY2FsX2JoX2Rpc2FibGUoKWAgY2FsbCBhYm92ZSB0aGUgYGRldl9zd19uZXRzdGF0c190eF9hZGRgIGNhbGwuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcHJlY2F1dGlvbiB0byBwcmV2ZW50IGxvY2tkZXAgYXNzZXJ0aW9ucyBvciByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiBCSC9zb2Z0aXJxIGhhbmRsZXJzIGFuZCB0aGUgc3RhdHMgdXBkYXRlcy4KCk5vdywgbGV0JiMzOTtzIHNoaWZ0IGdlYXJzIGFuZCBsb29rIGF0IGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UsIGhvdyBpdCYjMzk7cyBpbnZva2VkLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgd2hldGhlciB0aGlzIGZ1bmN0aW9uIGlzIGV2ZW4gcmVhY2hhYmxlIHZpYSBTeXprYWxsZXIgaW4gbXkgdGVzdHMuIEkgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBzaXRlcyBmb3IgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgIGRpcmVjdGx5LiBJIHdpbGwgYWxzbyBleGFtaW5lIGl0cyByZWxhdGlvbnNoaXAgdG8gYHdpcGh5YCwgYG5sODAyMTFgLCBhbmQgYG1hYzgwMjExYCBjb250cm9sIHBvcnQgcGF0aHMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvc3NpYmxlIGF0dGFjayBzdXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3R4X2NvbnRyb2xfcG9ydCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9jZmc4MDIxMS5oPTQ4NDM9c3RydWN0IG1nbXRfZnJhbWVfcmVncyB7XG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC01MjIxLSAqXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjUyMjI6ICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTUyMjMtICpcdHRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuIEEgQGNvb2tpZVxuLS1cbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg9NTI4MD1zdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbi0tXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTU2MDctXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjU2MDg6XHRpbnRcdCgqdHhfY29udHJvbF9wb3J0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC01NjA5LVx0XHRcdFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oPTk2NDI9c3RhdGljIGlubGluZSB2b2lkIGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05NjU5LSAqIEB3ZGV2OiB3aXJlbGVzcyBkZXZpY2UgcmVjZWl2aW5nIHRoZSBmcmFtZVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo5NjYwOiAqIEBjb29raWU6IENvb2tpZSByZXR1cm5lZCBieSBjZmc4MDIxMV9vcHM6OnR4X2NvbnRyb2xfcG9ydCgpXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk2NjEtICogQGJ1ZjogRGF0YSBmcmFtZSAoaGVhZGVyICYjNDM7IGJvZHkpXG4tLVxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05NjY2LSAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIGEgY29udHJvbCBwb3J0IGZyYW1lIHdhcyByZXF1ZXN0ZWQgdG8gYmVcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6OTY2NzogKiB0cmFuc21pdHRlZCB3aXRoIGNmZzgwMjExX29wczo6dHhfY29udHJvbF9wb3J0KCkgdG8gcmVwb3J0IHRoZSBUWCBzdGF0dXMgb2ZcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtOTY2OC0gKiB0aGUgdHJhbnNtaXNzaW9uIGF0dGVtcHQuXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU5ODY9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy02MDgwLVx0LnNldF9tdWx0aWNhc3RfdG9fdW5pY2FzdCA9IGllZWU4MDIxMV9zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3QsXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjA4MTpcdC50eF9jb250cm9sX3BvcnQgPSBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0LFxubmV0L21hYzgwMjExL2NmZy5jLTYwODItXHQuZ2V0X3R4cV9zdGF0cyA9IGllZWU4MDIxMV9nZXRfdHhxX3N0YXRzLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTIyNTU9dm9pZCBpZWVlODAyMTFfY2xlYXJfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIyNTY6aW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyNTctXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcbi0tXG5uZXQvbWFjODAyMTEvdHguYz02NTQwPXZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNjU3MC1cbm5ldC9tYWM4MDIxMS90eC5jOjY1NzE6aW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9tYWM4MDIxMS90eC5jLTY1NzItXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTEyOTMzPXN0YXRpYyBpbnQgdmFsaWRhdGVfcGFlX292ZXJfbmw4MDIxMShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xMjk0MC1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTI5NDE6XHRpZiAoIXJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydCB8fFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xMjk0Mi1cdCAgICAhd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NTA0PXN0YXRpYyBpbnQgbmw4MDIxMV9leHRlcm5hbF9hdXRoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU0NS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg1NDY6c3RhdGljIGludCBubDgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU0Ny17XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU2NC1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg1NjU6XHRpZiAoIXJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydClcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg1NjYtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NjAyLVx0Y29va2llID0gZG9udF93YWl0X2Zvcl9hY2sgPyAwIDogY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg2MDM6XHRlcnIgPSByZGV2X3R4X2NvbnRyb2xfcG9ydChyZGV2LCBkZXYsIGJ1ZiwgbGVuLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODYwNC1cdFx0XHRcdCAgIGRlc3QsIGNwdV90b19iZTE2KHByb3RvKSwgbm9lbmNyeXB0LCBsaW5rX2lkLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjA0ODEtXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjA0ODI6XHRcdC5kb2l0ID0gbmw4MDIxMV90eF9jb250cm9sX3BvcnQsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDgzLVx0XHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxuLS1cbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oPTc2ND1zdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oLTc3NS1cbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oOjc3NjpzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03NzctXHRcdFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03ODMtXHRpbnQgcmV0O1xubmV0L3dpcmVsZXNzL3JkZXYtb3BzLmg6Nzg0Olx0dHJhY2VfcmRldl90eF9jb250cm9sX3BvcnQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBidWYsIGxlbixcbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oLTc4NS1cdFx0XHRcdCAgIGRlc3QsIHByb3RvLCBub2VuY3J5cHQsIGxpbmspO1xubmV0L3dpcmVsZXNzL3JkZXYtb3BzLmg6Nzg2Olx0cmV0ID0gcmRldi1cdTAwM2VvcHMtXHUwMDNldHhfY29udHJvbF9wb3J0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIGRldiwgYnVmLCBsZW4sXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03ODctXHRcdFx0XHRcdCBkZXN0LCBwcm90bywgbm9lbmNyeXB0LCBsaW5rLCBjb29raWUpO1xuLS1cbm5ldC93aXJlbGVzcy90cmFjZS5oPTIyMjQ9VFJBQ0VfRVZFTlQocmRldl9tZ210X3R4LFxuLS1cbm5ldC93aXJlbGVzcy90cmFjZS5oLTIyNTMtXG5uZXQvd2lyZWxlc3MvdHJhY2UuaDoyMjU0OlRSQUNFX0VWRU5UKHJkZXZfdHhfY29udHJvbF9wb3J0LFxubmV0L3dpcmVsZXNzL3RyYWNlLmgtMjI1NS1cdFRQX1BST1RPKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkyNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgU2l0dWF0aW9uKioKCk9rYXksIHNvIG1hYzgwMjExIGlzICpkZWZpbml0ZWx5KiB3aXRoaW4gc3l6a2FsbGVyJiMzOTtzIHJlYWNoLCBhbmQgdGhlIHN5c3RlbSB1c2VzIGl0LiBUaGUgcHJlc2VuY2Ugb2YgdGhlIG1hYzgwMjExX2h3c2ltIHZpcnR1YWwgZGV2aWNlIGlzIGEgc29saWQgaW5kaWNhdG9yLCBlc3BlY2lhbGx5IHNpbmNlIHN5emthbGxlciBpcyBhY3RpdmVseSBwb2tpbmcgYXQgaXQgdmlhIG5sODAyMTEgbmV0bGluayBtZXNzYWdlcywgaW5jbHVkaW5nIHRob3NlIGNydWNpYWwgTkw4MDIxMV9DTURfQ09OVFJPTF9QT1JUX0ZSQU1FIGFuZCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgIGNvbW1hbmRzLiBUaGF0IGxldmVsIG9mIHRhcmdldGVkIGludGVyYWN0aW9uIHN1Z2dlc3RzIGEgZGVlcCBpbnRlZ3JhdGlvbiwgd2hpY2ggbWVhbnMgdGhlcmUmIzM5O3MgcHJvYmFibHkgYSB3b3J0aHdoaWxlIGF0dGFjayBzdXJmYWNlLgoKTXkgbmV4dCBpbW1lZGlhdGUgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBib3RoIG1hYzgwMjExIGl0c2VsZiBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGBtYWM4MDIxMV9od3NpbWAuIFVuZGVyc3RhbmRpbmcgdGhvc2UgZGVwZW5kZW5jaWVzIHdpbGwgcmV2ZWFsIHRoZSBwcmVjb25kaXRpb25zIGFuZCBjb25maWd1cmF0aW9ucyB0aGF0IG1ha2UgdGhlc2UgY29tcG9uZW50cyBhY2Nlc3NpYmxlIGFuZCwgYnkgZXh0ZW5zaW9uLCB3aGVyZSB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBtaWdodCBsaWUuIFRoaXMgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSB0YXJnZXRlZCBmdXp6aW5nIGNhbXBhaWduIGluIHRoaXMgYXJlYS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDcyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBNQUM4MDIxMWAgQ29uZmlndXJhdGlvbiBTcGFjZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiBlbnRyeSwgc28gSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IHRvIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgd2lyZWxlc3Mgc3RhY2ssIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBjb21waWxlLXRpbWUgb3B0aW9ucyBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIHR1bmluZywgYW5kIGp1c3QgZ2VuZXJhbGx5IGtub3dpbmcgd2hhdCYjMzk7cyBwb3NzaWJsZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHZhcmlvdXMgZmVhdHVyZXMgYXJlIGNvbmRpdGlvbmFsbHkgZW5hYmxlZCBhbmQgZGlzYWJsZWQuIEFyZSB0aGVyZSBhbnkgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIHBlcmhhcHMgc29tZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBjYXVzZSBncmllZiBkb3duIHRoZSBsaW5lPyBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQ7IGdldHRpbmcgYSBmaXJtIGdyYXNwIG9uIHRoZSBLY29uZmlnIGlzIGVzc2VudGlhbC4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTUFDODAyMTFcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRzZWxlY3QgQ1JZUFRPXG4gICA2Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNfQ0JDX01BQ1NcbiAgIDc6XHRcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcbiAgIDg6XHRcdHNlbGVjdCBDUllQVE9fQUVTXG4gICA5Olx0XHRzZWxlY3QgQ1JZUFRPX0NDTVxuICAxMDpcdFx0c2VsZWN0IENSWVBUT19HQ01cbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xMVxuICAxNDpcdFx0ICBuZXR3b3JraW5nIHN0YWNrLlxuICAxNTpcdFxuICAxNjpcdGNvbW1lbnQgXCYjMzQ7Q0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxuICAxODpcdFxuICAxOTpcdGlmIE1BQzgwMjExICE9IG5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTUFDODAyMTFfSEFTX1JDXG4gIDIyOlx0XHRib29sXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG4gIDI1Olx0XHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA2NwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlOgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgTUFDODAyMTFfSFdTSU0qKgoKUmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGlzIHRlc3RpbmcgZnJhbWV3b3JrLCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIGZvciBgTUFDODAyMTFfSFdTSU1gLiBJdCYjMzk7cyBhbHdheXMgYSBnb29kIGlkZWEgdG8ga25vdyB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGxpZSBhbmQgZXhhY3RseSAqd2hhdCogaXMgZW5hYmxpbmcgdGhpcyBgbWFjODAyMTFgIHRlc3RpbmcgZHJpdmVyLiBXZSBjYW4mIzM5O3QgYWZmb3JkIGFueSBzdXJwcmlzZXMgaGVyZS4gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHVwIGZyb250IHdpbGwgc2F2ZSBhIHdvcmxkIG9mIGh1cnQgaW4gZGVidWdnaW5nIGxhdGVyIG9uLiBJdCYjMzk7cyBhYm91dCBiZWluZyBlZmZpY2llbnQ7IGtub3dpbmcgdGhlIGFyY2hpdGVjdHVyZSBpcyBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvTWFrZWZpbGU6MTpvYmotJChDT05GSUdfTUFDODAyMTFfSFdTSU0pXHQmIzQzOz0gbWFjODAyMTFfaHdzaW0ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS0yLW1hYzgwMjExX2h3c2ltLW9ianNcdFx0JiM0Mzs9IG1hYzgwMjExX2h3c2ltX21haW4ub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC04LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjk6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoxMDojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTExLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yMTc9c3RydWN0IGh3c2ltX3R4X3JhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzAtICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzE6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTOiBVc2UgUlRTL0NUUyBleGNoYW5nZSBmb3IgdGhpcyByYXRlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUOiBDVFMtdG8tc2VsZiBwcm90ZWN0aW9uIGlzIHJlcXVpcmVkLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMy0gKlx0VGhpcyBpcyBzZXQgaWYgdGhlIGN1cnJlbnQgQlNTIHJlcXVpcmVzIEVSUCBwcm90ZWN0aW9uLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFOiBVc2Ugc2hvcnQgcHJlYW1ibGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M6IEhUIHJhdGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM2OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTOiBWSFQgTUNTIHJhdGUsIGluIHRoaXMgY2FzZSB0aGUgaWR4IGZpZWxkIGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM3LSAqXHRzcGxpdCBpbnRvIGEgaGlnaGVyIDQgYml0cyAoTnNzKSBhbmQgbG93ZXIgNCBiaXRzIChNQ1MgbnVtYmVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfR1JFRU5fRklFTEQ6IEluZGljYXRlcyB3aGV0aGVyIHRoaXMgcmF0ZSBzaG91bGQgYmUgdXNlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzOS0gKlx0aW4gR3JlZW5maWVsZCBtb2RlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0MDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgaWYgdGhlIENoYW5uZWwgV2lkdGggc2hvdWxkIGJlXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQxLSAqXHQ0MCBNSHouXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEg6IEluZGljYXRlcyA4MCBNSHogdHJhbnNtaXNzaW9uXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQzOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgMTYwIE1IeiB0cmFuc21pc3Npb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDQtICpcdCg4MCYjNDM7ODAgaXNuJiMzOTt0IHN1cHBvcnRlZCB5ZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTogVGhlIGZyYW1lIHNob3VsZCBiZSB0cmFuc21pdHRlZCBvbiBib3RoIG9mXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ2LSAqXHR0aGUgYWRqYWNlbnQgMjAgTUh6IGNoYW5uZWxzLCBpZiB0aGUgY3VycmVudCBjaGFubmVsIHR5cGUgaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDctICpcdE5MODAyMTFfQ0hBTl9IVDQwTUlOVVMgb3IgTkw4MDIxMV9DSEFOX0hUNDBQTFVTLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0ODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k6IFNob3J0IEd1YXJkIGludGVydmFsIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ5LSAqXHRyYXRlLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yNTE9ZW51bSBod3NpbV90eF9yYXRlX2ZsYWdzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTI6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUU1x0XHQ9IEJJVCgwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTM6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1RcdFx0PSBCSVQoMSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU0Olx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFXHQ9IEJJVCgyKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjU2LVx0LyogcmF0ZSBpbmRleCBpcyBhbiBIVC9WSFQgTUNTIGluc3RlYWQgb2YgYW4gaW5kZXggKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTc6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1NcdFx0XHQ9IEJJVCgzKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTg6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRFx0XHQ9IEJJVCg0KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTk6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEhcdFx0PSBCSVQoNSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYwOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEFcdFx0PSBCSVQoNiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYxOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0lcdFx0PSBCSVQoNyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYyOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DU1x0XHRcdD0gQklUKDgpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSFx0XHQ9IEJJVCg5KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjQ6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIXHRcdD0gQklUKDEwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNjUtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MzI4PWVudW0gaHdzaW1fcmF0ZV9pbmZvX2F0dHJpYnV0ZXMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0zNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MzQ4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0ggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTA6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0lfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTE6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX0lfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg9MTY1PXZvaWQgaWVlZTgwMjExX2h3c2ltX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTY4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0lfSCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE3Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTgtc3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX211bHRpY2FzdF9ncm91cCBod3NpbV9tY2dycHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3Mjg6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwMjovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gcXVldWVzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDMtc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmh3c2ltX3Zxc1tIV1NJTV9OVU1fVlFTXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNTc1PXN0YXRpYyBpbmxpbmUgdTE2IHRyYW5zX3R4X3JhdGVfZmxhZ3NfaWVlZTJod3NpbShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnJhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3OS1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgwOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTgxLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgyOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4My1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NDpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODUtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX01DUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODY6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg3LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODg6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODktXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1OTA6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTkxLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19EVVBfREFUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1OTI6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTMtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5NDpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5NS1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVkhUX01DUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1OTY6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5Ny1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfODBfTUhaX1dJRFRIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5ODpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTktXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzE2MF9NSFpfV0lEVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNjAwOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2MDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ4OT1zdGF0aWMgY29uc3QgY2hhciBtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MDA6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOIEFSUkFZX1NJWkUobWFjODAyMTFfaHdzaW1fZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTAxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM1MTE9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTE0LVx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUxNTpcdFx0cmV0dXJuIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTE2LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUxOT1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MzU6XHRXQVJOX09OKGkgIT0gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTM2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjUyPXN0YXRpYyBjb25zdCB1OCBpZnR5cGVzX2V4dF9jYXBhX2FwW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2NjE6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFNcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjYyLVx0RklFTERfUFJFUF9DT05TVChJRUVFODAyMTFfTUxEX0NBUF9PUF9USURfVE9fTElOS19NQVBfTkVHX1NVUFAsIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTY2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHdpcGh5X2lmdHlwZV9leHRfY2FwYWIgbWFjODAyMTFfaHdzaW1faWZ0eXBlc19leHRfY2FwYVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NzQtXHRcdFx0XHQgICAgSUVFRTgwMjExX0VNTF9DQVBfRU1MTVJfU1VQUE9SVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2NzU6XHRcdC5tbGRfY2FwYV9hbmRfb3BzID0gTUFDODAyMTFfSFdTSU1fTUxEX0NBUEFfT1BTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY3Ni1cdH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzE1Nj1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNTc6XHQubmFtZSA9IFwmIzM0O01BQzgwMjExX0hXU0lNXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE1OC1cdC52ZXJzaW9uID0gMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03NDc2PXN0YXRpYyB2b2lkIGh3c2ltX3ZpcnRpb19yZW1vdmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0ODU6LyogTUFDODAyMTFfSFdTSU0gdmlydGlvIGRldmljZSBpZCB0YWJsZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ4Ni1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0ODc6XHR7IFZJUlRJT19JRF9NQUM4MDIxMV9IV1NJTSwgVklSVElPX0RFVl9BTllfSUQgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0ODgtXHR7IDAgfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzg9c3RhdGljIHU2NCBod3NpbV9uYW5fZ2V0X21hc3Rlcl9yYW5rKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgzOlx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04NC1cdFx0bWFzdGVyX3ByZWYgPSBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTIxNj12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9yeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3My1cdGlmICgoc2xvdCAhPSBTTE9UXzI0R0haX0RXIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoyNzQ6XHQgICAgIGRhdGEtXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0yNzUtXHQgICAgcnhfc3RhdHVzLmZyZXEgIT0gMjQzNylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzNi1cdFx0ICAgIChjZyA9PSBvd25fY2cgXHUwMDI2XHUwMDI2IGZyYW1lX2FtciBcdTAwM2UgY3Vycl9hbXIpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjQzNzpcdFx0ICAgIGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzOC1cdFx0XHQvKiBBdm9pZCBhIHN0YXRlIHRyYW5zaXRpb24gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ2OC1cdFx0XHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDY5Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00NzAtXHRcdFx0ZGF0YS1cdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTYxMj1tYWM4MDIxMV9od3NpbV9uYW5fZXhlY19zdGF0ZV90cmFuc2l0aW9ucyhzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyNS1cdGlmIChkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2MgMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjI2Olx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjc6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjI4LVx0XHQgZGF0YS1cdTAwM2VuYW4ubWFzdGVyX3RyYW5zaXRpb25fc2NvcmUgXHUwMDNlPSAzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjk6XHRcdGRhdGEtXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzA6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzMS1cdFx0IGRhdGEtXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2U9IDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMjpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzM6XHRlbHNlIGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzQtXHRcdCBkYXRhLVx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXHUwMDNjIDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzNTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0MS1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NDI6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0My1cdCAgICAhaHJ0aW1lcl9hY3RpdmUoXHUwMDI2ZGF0YS1cdTAwM2VuYW4uZGlzY292ZXJ5X2JlYWNvbl90aW1lcikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NDpcdFx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NTpcdFx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1Ni1cdFx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSBOQU5fV0FSTVVQX0RXU1Q7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTktXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY2MDpcdFx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjYxLVx0XHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz02OTU9bWFjODAyMTFfaHdzaW1fbmFuX3R4X2JlYWNvbihzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1MC1cdG5hbl9hdHRyLmxlbmd0aCA9IGNwdV90b19sZTE2KHNpemVvZihtYXN0ZXJfaW5kaWNhdGlvbikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo3NTE6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1Mi1cdFx0bWFzdGVyX2luZGljYXRpb24ubWFzdGVyX3ByZWYgPSBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTc3ND1tYWM4MDIxMV9od3NpbV9uYW5fc2xvdF90aW1lcihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MDctXHRcdHR4X3N5bmNfYmVhY29uID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA4Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4MDk6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODEwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9ODY3PW1hYzgwMjExX2h3c2ltX25hbl9kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg3OS1cdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXHUwMDI2ZGF0YS1cdTAwM2VuYW4uc3RhdGVfbG9jaykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODA6XHRcdGlmIChkYXRhLVx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODE6XHRcdCAgICBkYXRhLVx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODgyLVx0XHRcdHJldHVybiBIUlRJTUVSX05PUkVTVEFSVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTkwOT1pbnQgbWFjODAyMTFfaHdzaW1fbmFuX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI2LVx0XHQvKiBTdGFydCBpbiB0aGUgXCYjMzQ7c2NhblwmIzM0OyBwaGFzZSBhbmQgc3RheSB0aGVyZSBmb3IgYSBsaXR0bGUgYml0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkyNzpcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI4LVx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMwLVx0XHRkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfcHJlZiA9IGNvbmYtXHUwMDNlbWFzdGVyX3ByZWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkzMTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMyLVx0XHRtZW1zZXQoXHUwMDI2ZGF0YS1cdTAwM2VuYW4uY3VycmVudF9hbWksIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0xMjI2PWJvb2wgbWFjODAyMTFfaHdzaW1fbmFuX3JlY2VpdmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoxMjM2Olx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM3LVx0XHRyZXR1cm4gY2hhbm5lbC1cdTAwM2VjZW50ZXJfZnJlcSA9PSAyNDM3O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6NzojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6ODojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTA9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcGhhc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMTpcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMjpcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEzOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xNC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTY9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcm9sZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE3Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxODpcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE5Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTIwLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD05OT12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9sb2NhbF9zY2hlZF9jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMDI6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fTkFOX0ggKi9cbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2lkcy5oLTU3LSNkZWZpbmUgVklSVElPX0lEX1JQTUJcdFx0XHQyOCAvKiB2aXJ0aW8gcnBtYiAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19pZHMuaDo1ODojZGVmaW5lIFZJUlRJT19JRF9NQUM4MDIxMV9IV1NJTVx0MjkgLyogdmlydGlvIG1hYzgwMjExLWh3c2ltICovXG5pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2lkcy5oLTU5LSNkZWZpbmUgVklSVElPX0lEX1ZJREVPX0VOQ09ERVJcdFx0MzAgLyogdmlydGlvIHZpZGVvIGVuY29kZXIgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzNjAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkV4YW1pbmluZyBgbmV0L21hYzgwMjExL3R4LmNgIC0gQSBEZWVwIERpdmUqKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEZpcnN0IHRoaW5nJiMzOTtzIGZpcnN0LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGNvZGUgdGhhdCYjMzk7cyBiZWVuIG1vZGlmaWVkLiBUaGUgZmlsZSBJJiMzOTttIHRhcmdldGluZyBpcyBgbmV0L21hYzgwMjExL3R4LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YCBmdW5jdGlvbi4gR290dGEgbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55IHN1YnRsZSBjaGFuZ2VzLCBzbyBJJiMzOTttIGdvaW5nIHRvIHJlYWQgKnRoYXQgZW50aXJlIGZ1bmN0aW9uKiwgbGluZSBieSBsaW5lLiBObyBzaG9ydGN1dHMgaGVyZTsgYSB0aG9yb3VnaCB1bmRlcnN0YW5kaW5nIGlzIHBhcmFtb3VudCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaW50cmljYWNpZXMgb2YgdGhlIG1hYzgwMjExIHN0YWNrLiBXZSBjYW4mIzM5O3QgYWZmb3JkIHRvIG1pc3MgZXZlbiBhIHRpbnkgZGV0YWlsLiBMZXQmIzM5O3MgbWFrZSBzdXJlIG91ciBtb2RpZmljYXRpb25zIGFyZW4mIzM5O3QgaW1wYWN0aW5nIGFueXRoaW5nIGVsc2UgdW5leHBlY3RlZGx5LiBUaW1lIHRvIHJvbGwgdXAgbXkgc2xlZXZlcyBhbmQgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS90eC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjU3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NjU3MDpcdFxuNjU3MTpcdGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG42NTcyOlx0XHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcbjY1NzM6XHRcdFx0XHQgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLFxuNjU3NDpcdFx0XHRcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgY29va2llKVxuNjU3NTpcdHtcbjY1NzY6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbjY1Nzc6XHRcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG42NTc4Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XG42NTc5Olx0XHRib29sIGdyb3VwX2FkZHJlc3NlZDtcbjY1ODA6XHRcdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xuNjU4MTpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbjY1ODI6XHRcdHN0cnVjdCBldGhoZHIgKmVoZHI7XG42NTgzOlx0XHR1MzIgY3RybF9mbGFncyA9IDA7XG42NTg0Olx0XHR1MzIgZmxhZ3MgPSAwO1xuNjU4NTpcdFx0aW50IGVycjtcbjY1ODY6XHRcbjY1ODc6XHRcdC8qIG11dGV4IGxvY2sgaXMgb25seSBuZWVkZWQgZm9yIGluY3JlbWVudGluZyB0aGUgY29va2llIGNvdW50ZXIgKi9cbjY1ODg6XHRcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbjY1ODk6XHRcbjY1OTA6XHRcdC8qIE9ubHkgYWNjZXB0IENPTlRST0xfUE9SVF9QUk9UT0NPTCBjb25maWd1cmVkIGluIENPTk5FQ1QvQVNTT0NJQVRFXG42NTkxOlx0XHQgKiBvciBQcmUtQXV0aGVudGljYXRpb25cbjY1OTI6XHRcdCAqL1xuNjU5MzpcdFx0aWYgKHByb3RvICE9IHNkYXRhLVx1MDAzZWNvbnRyb2xfcG9ydF9wcm90b2NvbCBcdTAwMjZcdTAwMjZcbjY1OTQ6XHRcdCAgICBwcm90byAhPSBjcHVfdG9fYmUxNihFVEhfUF9QUkVBVVRIKSlcbjY1OTU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG42NTk2Olx0XG42NTk3Olx0XHRpZiAocHJvdG8gPT0gc2RhdGEtXHUwMDNlY29udHJvbF9wb3J0X3Byb3RvY29sKVxuNjU5ODpcdFx0XHRjdHJsX2ZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVFJMX1BPUlRfQ1RSTF9QUk9UTyB8XG42NTk5Olx0XHRcdFx0ICAgICAgSUVFRTgwMjExX1RYX0NUUkxfU0tJUF9NUEFUSF9MT09LVVA7XG42NjAwOlx0XG42NjAxOlx0XHRpZiAodW5lbmNyeXB0ZWQpXG42NjAyOlx0XHRcdGZsYWdzIHw9IElFRUU4MDIxMV9UWF9JTlRGTF9ET05UX0VOQ1JZUFQ7XG42NjAzOlx0XG42NjA0Olx0XHRmbGFncyB8PSBJRUVFODAyMTFfVFhfSU5URkxfTkw4MDIxMV9GUkFNRV9UWDtcbjY2MDU6XHRcbjY2MDY6XHRcdHNrYiA9IGRldl9hbGxvY19za2IobG9jYWwtXHUwMDNlaHcuZXh0cmFfdHhfaGVhZHJvb20gJiM0MztcbjY2MDc6XHRcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBldGhoZHIpICYjNDM7IGxlbik7XG42NjA4Olx0XHRpZiAoIXNrYilcbjY2MDk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG42NjEwOlx0XG42NjExOlx0XHRza2JfcmVzZXJ2ZShza2IsIGxvY2FsLVx1MDAzZWh3LmV4dHJhX3R4X2hlYWRyb29tICYjNDM7IHNpemVvZihzdHJ1Y3QgZXRoaGRyKSk7XG42NjEyOlx0XG42NjEzOlx0XHRza2JfcHV0X2RhdGEoc2tiLCBidWYsIGxlbik7XG42NjE0Olx0XG42NjE1Olx0XHRlaGRyID0gc2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xuNjYxNjpcdFx0bWVtY3B5KGVoZHItXHUwMDNlaF9kZXN0LCBkZXN0LCBFVEhfQUxFTik7XG42NjE3Olx0XG42NjE4Olx0XHQvKiB3ZSBtYXkgb3ZlcnJpZGUgdGhlIFNBIGZvciBNTE8gU1RBIGxhdGVyICovXG42NjE5Olx0XHRpZiAobGlua19pZCBcdTAwM2MgMCkge1xuNjYyMDpcdFx0XHRsaW5rX2lkID0gSUVFRTgwMjExX0xJTktfVU5TUEVDSUZJRUQ7XG42NjIxOlx0XHRcdG1lbWNweShlaGRyLVx1MDAzZWhfc291cmNlLCBzZGF0YS1cdTAwM2V2aWYuYWRkciwgRVRIX0FMRU4pO1xuNjYyMjpcdFx0fSBlbHNlIHtcbjY2MjM6XHRcdFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mO1xuNjYyNDpcdFxuNjYyNTpcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG42NjI2Olx0XHRcdGxpbmtfY29uZiA9IHJjdV9kZXJlZmVyZW5jZShzZGF0YS1cdTAwM2V2aWYubGlua19jb25mW2xpbmtfaWRdKTtcbjY2Mjc6XHRcdFx0aWYgKCFsaW5rX2NvbmYpIHtcbjY2Mjg6XHRcdFx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG42NjI5Olx0XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG42NjMwOlx0XHRcdFx0cmV0dXJuIC1FTk9MSU5LO1xuNjYzMTpcdFx0XHR9XG42NjMyOlx0XHRcdG1lbWNweShlaGRyLVx1MDAzZWhfc291cmNlLCBsaW5rX2NvbmYtXHUwMDNlYWRkciwgRVRIX0FMRU4pO1xuNjYzMzpcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjY2MzQ6XHRcdH1cbjY2MzU6XHRcbjY2MzY6XHRcdGVoZHItXHUwMDNlaF9wcm90byA9IHByb3RvO1xuNjYzNzpcdFxuNjYzODpcdFx0c2tiLVx1MDAzZWRldiA9IGRldjtcbjY2Mzk6XHRcdHNrYi1cdTAwM2Vwcm90b2NvbCA9IHByb3RvO1xuNjY0MDpcdFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XG42NjQxOlx0XHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xuNjY0MjpcdFxuNjY0MzpcdFx0LyogdXBkYXRlIFFvUyBoZWFkZXIgdG8gcHJpb3JpdGl6ZSBjb250cm9sIHBvcnQgZnJhbWVzIGlmIHBvc3NpYmxlLFxuNjY0NDpcdFx0ICogcHJpb3JpdGl6YXRpb24gYWxzbyBoYXBwZW5zIGZvciBjb250cm9sIHBvcnQgZnJhbWVzIHNlbmQgb3ZlclxuNjY0NTpcdFx0ICogQUZfUEFDS0VUXG42NjQ2Olx0XHQgKi9cbjY2NDc6XHRcdHJjdV9yZWFkX2xvY2soKTtcbjY2NDg6XHRcdGVyciA9IGllZWU4MDIxMV9sb29rdXBfcmFfc3RhKHNkYXRhLCBza2IsIFx1MDAyNnN0YSk7XG42NjQ5Olx0XHRpZiAoZXJyKSB7XG42NjUwOlx0XHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbjY2NTE6XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG42NjUyOlx0XHRcdHJldHVybiBlcnI7XG42NjUzOlx0XHR9XG42NjU0Olx0XG42NjU1Olx0XHRncm91cF9hZGRyZXNzZWQgPSBJU19FUlIoc3RhKTtcbjY2NTY6XHRcdGlmIChJU19FUlIoc3RhKSlcbjY2NTc6XHRcdFx0c3RhID0gTlVMTDtcbjY2NTg6XHRcbjY2NTk6XHRcdHNrYl9zZXRfcXVldWVfbWFwcGluZyhza2IsIGllZWU4MDIxMV9zZWxlY3RfcXVldWUoc2RhdGEsIHN0YSwgc2tiKSk7XG42NjYwOlx0XG42NjYxOlx0XHQvKlxuNjY2MjpcdFx0ICogZm9yIE1MTyBTVEEsIHRoZSBTQSBzaG91bGQgYmUgdGhlIEFQIE1MRCBhZGRyZXNzLCBidXRcbjY2NjM6XHRcdCAqIHRoZSBsaW5rIElEIGhhcyBiZWVuIHNlbGVjdGVkIGFscmVhZHlcbjY2NjQ6XHRcdCAqL1xuNjY2NTpcdFx0aWYgKHN0YSBcdTAwMjZcdTAwMjYgc3RhLVx1MDAzZXN0YS5tbG8pXG42NjY2Olx0XHRcdG1lbWNweShlaGRyLVx1MDAzZWhfc291cmNlLCBzZGF0YS1cdTAwM2V2aWYuYWRkciwgRVRIX0FMRU4pO1xuNjY2NzpcdFxuNjY2ODpcdFx0aW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcbjY2Njk6XHRcdG1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMjIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gaGFzIGtleWVkIGluIG9uIHRoZSBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAgZnVuY3Rpb24gd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AuIEkgY2FuIHNlZSBpbW1lZGlhdGVseSB0aGF0IHRoaXMgaXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgYXMgaXQmIzM5O3MgcGFydCBvZiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjay4gVGhlIGVudHJ5IHBvaW50IGZyb20gdXNlcnNwYWNlIGlzIHRocm91Z2ggbmw4MDIxMSwgc3BlY2lmaWNhbGx5IHRyaWdnZXJlZCBieSB0aGUgYE5MODAyMTFfQ01EX0NPTlRST0xfUE9SVF9GUkFNRWAgY29tbWFuZCwgd2hpY2ggdGhlbiBjYWxscyBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLCB3aGljaCBpbiB0dXJuIGxlYWRzIHRvIGByZGV2X3R4X2NvbnRyb2xfcG9ydGAgYW5kIHVsdGltYXRlbHkgdG8gb3VyIHRhcmdldCwgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLgoKVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBlc3RhYmxpc2hlcyByZWFjaGFiaWxpdHkgLSB1c2Vyc3BhY2UgYWNjZXNzIGlzIGEgY3JpdGljYWwgdmVjdG9yLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIHVzZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHdpdGggbWFjODAyMTEsIGxpa2UgYG1hYzgwMjExX2h3c2ltYCwgaXMgYW5vdGhlciBiaWcgcGx1cywgYXMgaXQgbWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gdGVzdC4KClNvLCBsZXQmIzM5O3MgcmV2aWV3OiByZWFjaGFibGU/IFllcy4gVG91Y2hlcyBjb3JlIG5ldHdvcmtpbmcgY29kZT8gWWVzLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcsIGJhc2VkIG9uIHRoaXMgaW5pdGlhbCBhbmFseXNpcy4KCk5vdywgdG8gbWFrZSBzdXJlIEkgY2FuIGFjdHVhbGx5IGJ1aWxkIGEgZnV6emVyIGZvciB0aGlzLCBJIG5lZWQgdG8gY2hlY2sgdGhlIG5lY2Vzc2FyeSBLY29uZmlnIG9wdGlvbnMuIE15IHByZWxpbWluYXJ5IGxpc3QgbG9va3MgbGlrZSB0aGlzOiBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBgTUFDODAyMTFfSFdTSU1gLCBhbmQgcG9zc2libHkgYE5MODAyMTFfVEVTVE1PREVgLiBUaW1lIHRvIGRpdmUgaW50byBgbmV0L21hYzgwMjExL0tjb25maWdgIGFuZCBgbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlc2UgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBHb3R0YSBiZSBjZXJ0YWluIEkgY2FuIGNvbmZpZ3VyZSBhIGJ1aWxkIHRoYXQgaW5jbHVkZXMgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXHRib29sIFwmIzM0O2VuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDthbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXHRzdHJpbmcgXCYjMzQ7YWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O2NmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVx0Ym9vbCBcJiMzNDtlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTM1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBDRkc4MDIxMWAgRGVwZW5kZW5jeSBUcmVlKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYG5ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgdHJhY2UgdGhlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBDRkc4MDIxMWAuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgc29tZSBwb3RlbnRpYWwgY29tcGxleGl0aWVzIGhlcmUsIGdpdmVuIHRoZSBldm9sdXRpb24gb2YgdGhlIHdpcmVsZXNzIHN0YWNrLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqQ29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzKio6IEl04oCZcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgY29uZmlndXJhdGlvbnMgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGluY2x1c2lvbiBvZiBgQ0ZHODAyMTFgLiBBcmUgd2UgdGFsa2luZyBhYm91dCBzcGVjaWZpYyBoYXJkd2FyZSBhcmNoaXRlY3R1cmVzLCBkcml2ZXJzLCBvciBnZW5lcmFsIHdpcmVsZXNzIGZlYXR1cmUgdG9nZ2xlcz8KKiAgICoqTW9kdWxlLXNwZWNpZmljIGRlcGVuZGVuY2llcyoqOiBJJiMzOTttIGFsc28gaW50ZXJlc3RlZCBpbiBob3cgdmFyaW91cyB3aXJlbGVzcyBtb2R1bGVzIChlLmcuLCBzcGVjaWZpYyByYWRpbyBmaXJtd2FyZSBzdXBwb3J0KSByZWx5IG9uIHRoaXMgZm91bmRhdGlvbmFsIGxheWVyLiBBIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY3kgZ3JhcGggaXMgZXNzZW50aWFsLgoqICAgKipCdWlsZC10aW1lIGltcGxpY2F0aW9ucyoqOiBJJiMzOTtsbCBhbHNvIGJlIG1pbmRmdWwgb2YgaG93IHRoZXNlIGRlcGVuZGVuY2llcyBhZmZlY3QgdGhlIG92ZXJhbGwga2VybmVsIGJ1aWxkIHByb2Nlc3MsIGZyb20gY29tcGlsYXRpb24gdGltZSB0byBpbWFnZSBzaXplLgoqICAgKipQb3RlbnRpYWwgY29uZmxpY3RzKio6IEkgd2FudCB0byBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBiZXR3ZWVuIGBDRkc4MDIxMWAgYW5kIG90aGVyIHdpcmVsZXNzIHN1YnN5c3RlbXMgKGUuZy4sIGRlcHJlY2F0ZWQgb3IgbGVnYWN5IHdpcmVsZXNzIHN0YWNrcykuCiogICAqKkRvY3VtZW50YXRpb24gYW5kIGNvbW1lbnRhcnkqKjogSSBrbm93IGhvdyBoZWxwZnVsIGNvbW1lbnRzIGNhbiBiZSwgYW5kIGhvdyB3ZWxsLW1haW50YWluZWQgS2NvbmZpZyBmaWxlcyBjYW4gbWFrZSB0aGUgZGlmZmVyZW5jZSEKClRoaXMgZGVlcCBkaXZlIGlzIGp1c3QgYW5vdGhlciBkYXkgYXQgdGhlIG9mZmljZSB0byBlbnN1cmUgYSBzb2xpZCBncmFzcCBvbiBob3cgdGhpcyBjb3JlIGNvbXBvbmVudCBpcyB1c2VkLCBhbmQgdG8gZm9yZXNlZSBhbnkgZnV0dXJlIGludGVncmF0aW9uIGNoYWxsZW5nZXMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGFueSBhc3N1bXB0aW9ucyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTU6XHRcdGJvb2xcbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgQ0ZHODAyMTFcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcbiAgMjA6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMjE6XHRcdHNlbGVjdCBDUkMzMlxuICAyMjpcdFx0IyBtYXkgbmVlZCB0byB1cGRhdGUgdGhpcyB3aGVuIGNlcnRpZmljYXRlcyBhcmUgY2hhbmdlZCBhbmQgYXJlXG4gIDIzOlx0XHQjIHVzaW5nIGEgZGlmZmVyZW50IGFsZ29yaXRobSwgdGhvdWdoIHJpZ2h0IG5vdyB0aGV5IHNob3VsZG4mIzM5O3RcbiAgMjQ6XHRcdCMgKHRoaXMgaXMgaGVyZSByYXRoZXIgdGhhbiBiZWxvdyB0byBhbGxvdyBpdCB0byBiZSBhIG1vZHVsZSlcbiAgMjU6XHRcdHNlbGVjdCBDUllQVE9fU0hBMjU2IGlmIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xuICAyNjpcdFx0aGVscFxuICAyNzpcdFx0ICBjZmc4MDIxMSBpcyB0aGUgTGludXggd2lyZWxlc3MgTEFOICg4MDIuMTEpIGNvbmZpZ3VyYXRpb24gQVBJLlxuICAyODpcdFx0ICBFbmFibGUgdGhpcyBpZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGRldmljZS5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVmZXIgdG8gZG9jdW1lbnRhdGlvbiBvbiB0aGUgd2lyZWxlc3Mgd2lraTpcbiAgMzE6XHRcbiAgMzI6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vZGV2ZWxvcGVycy9Eb2N1bWVudGF0aW9uL2NmZzgwMjExXG4gIDMzOlx0XG4gIDM0Olx0XHQgIFdoZW4gYnVpbHQgYXMgYSBtb2R1bGUgaXQgd2lsbCBiZSBjYWxsZWQgY2ZnODAyMTEuXG4gIDM1Olx0XG4gIDM2Olx0aWYgQ0ZHODAyMTFcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgTkw4MDIxMV9URVNUTU9ERVxuICAzOTpcdFx0Ym9vbCBcJiMzNDtubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmRcJiMzNDtcbiAgNDA6XHRcdGhlbHBcbiAgNDE6XHRcdCAgVGhlIG5sODAyMTEgdGVzdG1vZGUgY29tbWFuZCBoZWxwcyBpbXBsZW1lbnRpbmcgdGhpbmdzIGxpa2VcbiAgNDI6XHRcdCAgZmFjdG9yeSBjYWxpYnJhdGlvbiBvciB2YWxpZGF0aW9uIHRvb2xzIGZvciB3aXJlbGVzcyBjaGlwcy5cbiAgNDM6XHRcbiAgNDQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIE9OTFkgZm9yIGtlcm5lbHMgdGhhdCBhcmUgc3BlY2lmaWNhbGx5XG4gIDQ1Olx0XHQgIGJ1aWx0IGZvciBzdWNoIHB1cnBvc2VzLlxuICA0NjpcdFxuICA0NzpcdFx0ICBEZWJ1Z2dpbmcgdG9vbHMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gZW5kIHVwIGluIHRoZSBoYW5kcyBvZlxuICA0ODpcdFx0ICB1c2VycyBzaG91bGQgYmV0dGVyIGJlIGltcGxlbWVudGVkIHdpdGggZGVidWdmcy5cbiAgNDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4NTQKCQkJCQkJCW91dHB1dDogMjA4CgkJCQkJCQl0aG91Z2h0czogMzk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAgTW9kaWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gbG9vayBhdCBgRm9jdXNTeW1ib2xzYC4gQWgsIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIEkgc2VlIGl0JiMzOTtzIGJlZW4gbW9kaWZpZWQuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUsIGxldCYjMzk7cyBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnRzLiBMb29rcyBsaWtlIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAgYW5kLCBvZiBjb3Vyc2UsIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpdHNlbGYsIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlc2UgdHdvIGFyZSB0aGUgcmVsZXZhbnQgdG91Y2hwb2ludHMgb3IgaWYgdGhlcmUgYXJlIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGluIGBuZXQvbWFjODAyMTEvdHguY2AgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuIEFscmlnaHQsIGxvb2tzIGxpa2UgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgIGlzIHRoZSBjb3JlIHN5bWJvbCwgYW5kIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAgcHJvdmlkZXMgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCBgTUFDODAyMTFgLCBvYnZpb3VzbHksIGBDRkc4MDIxMWAsIGFuZCBhbHNvIGBNQUM4MDIxMV9IV1NJTWAg4oCTIHRoYXQmIzM5O3MgY3J1Y2lhbC4gSSYjMzk7bGwgaGF2ZSB0byBrZWVwIHRoaXMgaW4gbWluZCBhcyBJIHBlcmZvcm0gYSBkZWVwZXIgZGl2ZS4KCk9rYXksIHNhbml0eSBjaGVjayB0aW1lLiBXZSBoYXZlIGBFbmFibGVDb25maWdzYDogYFsmIzM0O01BQzgwMjExJiMzNDssICYjMzQ7Q0ZHODAyMTEmIzM0OywgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7XWAsIG1hdGNoaW5nIHdoYXQgSSBleHBlY3RlZC4gVGhlIGBGb2N1c1N5bWJvbHNgOiBgWyYjMzQ7aWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7LCAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDtdYCDigJMgcGVyZmVjdC4gQW5kIHRoZSBrZXkgaXMgdGhhdCBpdCYjMzk7cyBgV29ydGhGdXp6aW5nOiB0cnVlYC4gVGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgc3luY2hyb25pemF0aW9uIGlzc3VlcyBhbmQgdGhlIGhhbmRsaW5nIG9mIGJvdHRvbSBoYWxmIGRpc2FibGluZyB3aGVuIHVwZGF0aW5nIHNvZnR3YXJlIG5ldHdvcmsgc3RhdGlzdGljcyAqYmVmb3JlKiB0cmFuc21pdHRpbmcgY29udHJvbCBwb3J0IGZyYW1lcywgd2hpY2ggaXMgcmVhY2hhYmxlIHRocm91Z2ggYG5sODAyMTFgIHdoZW4gdXNpbmcgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXJzIGxpa2UgbWFjODAyMTFfaHdzaW0uIEJpbmdvLiBUaGlzIGlzIGRlZmluaXRlbHkgZnV6ei13b3J0aHksIGdpdmVuIHRoZSBjb250ZXh0LgoKVGltZSB0byBsb2cgdGhlIHJlc3VsdHMuIExldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCBpbiBuZXQvbWFjODAyMTEvdHguYyBieSBtb3ZpbmcgbG9jYWxfYmhfZGlzYWJsZSgpIHRvIHByb3RlY3QgdGhlIHBlci1DUFUgVFggc3RhdGlzdGljcyB1cGRhdGUgKGRldl9zd19uZXRzdGF0c190eF9hZGQpLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIChOTDgwMjExX0NNRF9DT05UUk9MX1BPUlRfRlJBTUUpIGFuZCBjYW4gYmUgZXhlY3V0ZWQgYW5kIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyB3aXRoIHNpbXVsYXRlZCB3aXJlbGVzcyBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCBpbiBuZXQvbWFjODAyMTEvdHguYyBieSBtb3ZpbmcgbG9jYWxfYmhfZGlzYWJsZSgpIHRvIHByb3RlY3QgdGhlIHBlci1DUFUgVFggc3RhdGlzdGljcyB1cGRhdGUgKGRldl9zd19uZXRzdGF0c190eF9hZGQpLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIChOTDgwMjExX0NNRF9DT05UUk9MX1BPUlRfRlJBTUUpIGFuZCBjYW4gYmUgZXhlY3V0ZWQgYW5kIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyB3aXRoIHNpbXVsYXRlZCB3aXJlbGVzcyBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgYGxvY2FsX2JoX2Rpc2FibGUoKWAgaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoKWAgdG8gY292ZXIgYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAgYW5kIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KClgLiBUaGlzIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSBmaXggZW5zdXJpbmcgYm90dG9tIGhhbHZlcyBhcmUgZGlzYWJsZWQgZHVyaW5nIHBlci1DUFUgc3RhdGlzdGljIHVwZGF0ZXMgdG8gcHJldmVudCBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBzb2Z0aXJxcy5cblxuVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgbWVtb3J5IGFsbG9jYXRpb25zLCBpbml0aWFsaXphdGlvbiBsb2dpYywga2VybmVsLXRvLXVzZXIgY29waWVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGJ1Z3Mgb3IgY29uY3VycmVuY3kgdmlvbGF0aW9ucyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLCBub3QgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2ZmI1MGEyNzViNDAzNWFkMjFmYzlhZDc1ZjQzODdlZTY4OWU5MjdjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMDQ6NDc6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jCmluZGV4IDc0YWIyNzUzNDA3NmYuLjdiMWEzYzYzZTVkYzUgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jCkBAIC02Njg3LDEwICYjNDM7NjY4Nyw5IEBAIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAomIzQzOwlsb2NhbF9iaF9kaXNhYmxlKCk7CiAJZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi0mZ3Q7bGVuKTsKIAlpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItJmd0O2xlbik7Ci0KLQlsb2NhbF9iaF9kaXNhYmxlKCk7CiAJaWVlZTgwMjExX3htaXQoc2RhdGEsIHN0YSwgc2tiKTsKIAlsb2NhbF9iaF9lbmFibGUoKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgbWFjODAyMTEgVFggUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgcGF0Y2ggaXMgaW4gYG5ldC9tYWM4MDIxMS90eC5jYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIHRyYW5zbWlzc2lvbiBwYXRoLiBOb3csIGxldCBtZSBzY3J1dGluaXplIHRoZSBjb2RlIGNoYW5nZXMuIEFoLCBJIHNlZSBhIHNtYWxsIGJ1dCBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBtb2RpZmljYXRpb24gd2l0aGluIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBgbG9jYWxfYmhfZGlzYWJsZSgpYCBoYXMgYmVlbiBtb3ZlZCAqYmVmb3JlKiB0aGUgY2FsbHMgdG8gYGRldl9zd19uZXRzdGF0c190eF9hZGRgIGFuZCBgaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eGAsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBgbG9jYWxfYmhfZW5hYmxlKClgIGlzIG5vdyBsb2NhdGVkIGFmdGVyIGBpZWVlODAyMTFfeG1pdCgpYC4gUHJldmlvdXNseSwgYGxvY2FsX2JoX2Rpc2FibGUoKWAgYW5kIGBsb2NhbF9iaF9lbmFibGUoKWAgd2VyZSB3cmFwcGluZyBvbmx5IHRoZSBjYWxsIHRvIGBpZWVlODAyMTFfeG1pdCgpYC4gVGhpcyBjaGFuZ2VzIHRoZSBjcml0aWNhbCBzZWN0aW9uIHdoZXJlIGludGVycnVwdHMgYXJlIG1hc2tlZCwgZXh0ZW5kaW5nIGl0IHRvIGFsc28gY292ZXIgdXBkYXRpbmcgdGhlIGRldmljZSBzdGF0aXN0aWNzIGFuZCB0aGUgTEVEIHRyaWdnZXIuCgpOb3csIHdoeSBpcyB0aGlzIGJlaW5nIGRvbmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IGNvdWxkIGJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0byBhdm9pZCBjb250ZW50aW9uLCBvciBtYXliZSB0byBlbnN1cmUgZGF0YSBjb25zaXN0ZW5jeSBkdXJpbmcgdGhlc2UgY3JpdGljYWwgdXBkYXRlcy4gTGV0JiMzOTtzIHB1bGwgdXAgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYG5ldC9tYWM4MDIxMS90eC5jYCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCByYXRpb25hbGUgbW9yZSBmdWxseS4gTGV0JiMzOTtzIHNlZSBpZiBJIGNhbiBmaW5kIGFuIGV4cGxhbmF0aW9uIHdpdGggYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2Ugc3RhdHMgdXBkYXRlcywgdGhlIExFRCB0cmlnZ2VyLCBhbmQgdGhlIHRyYW5zbWlzc2lvbiBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IGludGVycnVwdCBtb2RlbC4gU29tZXRoaW5nJiMzOTtzIGRyaXZpbmcgdGhpcyBtb3ZlOyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgJiMzNDt3aHkmIzM0OyBhbmQgaXRzIGltcGFjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3R4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2Njc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzY2NzU6XHRcdFx0aWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llKTtcbjY2NzY6XHRcbjY2Nzc6XHRcdHNrYiA9IGllZWU4MDIxMV9idWlsZF9oZHIoc2RhdGEsIHNrYiwgc3RhKTtcbjY2Nzg6XHRcdGlmIChJU19FUlIoc2tiKSkge1xuNjY3OTpcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjY2ODA6XHRcdFx0cmV0dXJuIFBUUl9FUlIoc2tiKTtcbjY2ODE6XHRcdH1cbjY2ODI6XHRcbjY2ODM6XHRcdGlmIChsaW5rX2lkICE9IHUzMl9nZXRfYml0cyhpbmZvLVx1MDAzZWNvbnRyb2wuZmxhZ3MsXG42Njg0Olx0XHRcdFx0XHQgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspKSB7XG42Njg1Olx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBza2IpO1xuNjY4NjpcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbjY2ODc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG42Njg4Olx0XHR9XG42Njg5Olx0XG42NjkwOlx0XHRsb2NhbF9iaF9kaXNhYmxlKCk7XG42NjkxOlx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG42NjkyOlx0XHRpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXHUwMDNlbGVuKTtcbjY2OTM6XHRcdGllZWU4MDIxMV94bWl0KHNkYXRhLCBzdGEsIHNrYik7XG42Njk0Olx0XHRsb2NhbF9iaF9lbmFibGUoKTtcbjY2OTU6XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuNjY5NjpcdFxuNjY5NzpcdFx0cmV0dXJuIDA7XG42Njk4Olx0fVxuNjY5OTpcdFxuNjcwMDpcdGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG42NzAxOlx0XHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbjY3MDI6XHR7XG42NzAzOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG42NzA0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuNjcwNTpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbjY3MDY6XHRcbjY3MDc6XHRcdHNrYiA9IGRldl9hbGxvY19za2IobG9jYWwtXHUwMDNlaHcuZXh0cmFfdHhfaGVhZHJvb20gJiM0MzsgbGVuICYjNDM7XG42NzA4Olx0XHRcdFx0ICAgIDMwICYjNDM7IC8qIGhlYWRlciBzaXplICovXG42NzA5Olx0XHRcdFx0ICAgIDE4KTsgLyogMTFzIGhlYWRlciBzaXplICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzkKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoYXQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byB0aGUgVGltaW5nIG9mIGBsb2NhbF9iaF9kaXNhYmxlKClgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHdvbmRlcmluZyB3aHkgYGxvY2FsX2JoX2Rpc2FibGUoKWAgd2FzIG1vdmVkIHRvIGJlICpiZWZvcmUqIHRoYXQgY2FsbCB0byBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZCgpYC4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoZXJlJiMzOTtzIGEgcmVhc29uLCBhbmQgYSBnb29kIG9uZSwgZm9yIHRoYXQgcGxhY2VtZW50LgoKVGhlIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLSZndDtsZW4pYCBmdW5jdGlvbiBpcyB0aGUga2V5IGhlcmUuIEl0JiMzOTtzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRob3NlIHBlci1DUFUgbmV0d29yayBzdGF0aXN0aWNzLiBBbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdCBiZWluZyBjYWxsZWQgd2hlbiBpdCBpcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAgdG8gYmUgc3VyZS4uLiBJIHN1c3BlY3QgaXQmIzM5O3MgYWJvdXQgc3luY2hyb25pemF0aW9uIG9yIGF0b21pY2l0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2X3N3X25ldHN0YXRzX3R4X2FkZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvbmV0X2RldmljZS5yc3Q9MTQxPXN0cnVjdCBwY3B1X2xzdGF0c19fcGVyY3B1KiAgICAgICAgIGxzdGF0cyAgICAgICAgICAgICAgICAgICAgICByZWFkX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2xzdGF0c19hZGQoKVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0OjE0MjpzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0c19fcGVyY3B1KiAgICB0c3RhdHMgICAgICAgICAgICAgICAgICAgICAgcmVhZF9tb3N0bHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9zd19uZXRzdGF0c190eF9hZGQoKVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0LTE0My1zdHJ1Y3QgcGNwdV9kc3RhdHNfX3BlcmNwdSogICAgICAgICBkc3RhdHNcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pcG9pYl90eC5jPTExND1zdGF0aWMgdm9pZCBoZmkxX2lwb2liX2ZyZWVfdHgoc3RydWN0IGlwb2liX3R4cmVxICp0eCwgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pcG9pYl90eC5jLTExOC1cdGlmIChsaWtlbHkoIXR4LVx1MDAzZXNkbWFfc3RhdHVzKSkge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvaXBvaWJfdHguYzoxMTk6XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQocHJpdi1cdTAwM2VuZXRkZXYsIDEsIHR4LVx1MDAzZXNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEvaXBvaWJfdHguYy0xMjAtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ190eHJ4LmM9MTMwPW5ldGRldl90eF90IGhiZ19uZXRfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ190eHJ4LmMtMTcwLVx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2cmluZy1cdTAwM2VudHUsIGhiZ19xdWV1ZV9uZXh0X3BydChudHUsIHJpbmcpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ190eHJ4LmM6MTcxOlx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX3R4cnguYy0xNzItXHRyZXR1cm4gTkVUREVWX1RYX09LO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xpdGV4L2xpdGV4X2xpdGVldGguYz0xNTQ9c3RhdGljIG5ldGRldl90eF90IGxpdGVldGhfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xpdGV4L2xpdGV4X2xpdGVldGguYy0xODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9saXRleC9saXRleF9saXRlZXRoLmM6MTg3Olx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGl0ZXgvbGl0ZXhfbGl0ZWV0aC5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYz00ODc0PXN0YXRpYyB2b2lkIHJ0bF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRsODE2OV9wcml2YXRlICp0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00OTAxLVx0aWYgKHRwLVx1MDAzZWRpcnR5X3R4ICE9IGRpcnR5X3R4KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0OTAyOlx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgcGt0c19jb21wbCwgYnl0ZXNfY29tcGwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDkwMy1cdFx0V1JJVEVfT05DRSh0cC1cdTAwM2VkaXJ0eV90eCwgZGlydHlfdHgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTI2NT1zdGF0aWMgaW50IHR4X2hhbmRsZXIoc3RydWN0IHJ0YXNlX3JpbmcgKnJpbmcsIGludCBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtMzA1LVx0aWYgKHJpbmctXHUwMDNlZGlydHlfaWR4ICE9IGRpcnR5X3R4KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzozMDY6XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCBwa3RzX2NvbXBsLCBieXRlc19jb21wbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zMDctXHRcdFdSSVRFX09OQ0UocmluZy1cdTAwM2VkaXJ0eV9pZHgsIGRpcnR5X3R4KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTE0NTQ9c3RhdGljIGludCBhbTY1X2Nwc3dfbnVzc190eF9jb21wbF9wYWNrZXRzKHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0xNTEyLVx0XHRhbTY1X2Nwc3dfbnVzc194bWl0X2ZyZWUodHhfY2huLCBkZXNjX3R4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM6MTUxMzpcdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZGV2LCAxLCBwa3RfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMTUxNC1cdFx0aWYgKCFzaW5nbGVfcG9ydCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jPTIxOT1pbnQgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgaW50IGNobixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYy0yNTYtXHRcdFx0c2tiID0gc3dkYXRhLVx1MDAzZWRhdGEuc2tiO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmM6MjU3Olx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoc2tiLVx1MDAzZWRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYy0yNTgtXHRcdFx0dG90YWxfYnl0ZXMgJiM0Mzs9IHNrYi1cdTAwM2VsZW47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMtMjYyLVx0XHRcdHhkcGYgPSBzd2RhdGEtXHUwMDNlZGF0YS54ZHBmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmM6MjYzOlx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgeGRwZi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMtMjY0LVx0XHRcdHRvdGFsX2J5dGVzICYjNDM7PSB4ZHBmLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYy0yNjgtXHRcdFx0cGt0X2xlbiA9IGNwcGk1X2hkZXNjX2dldF9wa3RsZW4oZGVzY190eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYzoyNjk6XHRcdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZGV2LCAxLCBwa3RfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jLTI3MC1cdFx0XHR4c2tfZnJhbWVzX2RvbmUmIzQzOyYjNDM7O1xuLS1cbmRyaXZlcnMvbmV0L21hY3NlYy5jPTUzOD1zdGF0aWMgdm9pZCBjb3VudF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgcmV0LCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L21hY3NlYy5jLTU0MC1cdGlmIChsaWtlbHkocmV0ID09IE5FVF9YTUlUX1NVQ0NFU1MgfHwgcmV0ID09IE5FVF9YTUlUX0NOKSlcbmRyaXZlcnMvbmV0L21hY3NlYy5jOjU0MTpcdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIGxlbik7XG5kcml2ZXJzL25ldC9tYWNzZWMuYy01NDItfVxuLS1cbmRyaXZlcnMvbmV0L25ldGtpdC5jPTkyPXN0YXRpYyBuZXRkZXZfdHhfdCBuZXRraXRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L25ldGtpdC5jLTEyMS1cdFx0aWYgKGxpa2VseShfX25ldGlmX3J4KHNrYikgPT0gTkVUX1JYX1NVQ0NFU1MpKSB7XG5kcml2ZXJzL25ldC9uZXRraXQuYzoxMjI6XHRcdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIGxlbik7XG5kcml2ZXJzL25ldC9uZXRraXQuYy0xMjMtXHRcdFx0ZGV2X3N3X25ldHN0YXRzX3J4X2FkZChwZWVyLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L25ldGtpdC5jLTEyOC1cdGNhc2UgTkVUS0lUX1JFRElSRUNUOlxuZHJpdmVycy9uZXQvbmV0a2l0LmM6MTI5Olx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgbGVuKTtcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTEzMC1cdFx0c2tiX2RvX3JlZGlyZWN0KHNrYik7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM9MTc3Nz1wcHBfcHJlcGFyZV90eF9za2Ioc3RydWN0IHBwcCAqcHBwLCBzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTgxMy1cbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jOjE4MTQ6XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbiAtIFBQUF9QUk9UT19MRU4pO1xuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTgxNS1cbi0tXG5kcml2ZXJzL25ldC90dW4uYz0yMDk3PXN0YXRpYyBzc2l6ZV90IHR1bl9wdXRfdXNlcl94ZHAoc3RydWN0IHR1bl9zdHJ1Y3QgKnR1bixcbi0tXG5kcml2ZXJzL25ldC90dW4uYy0yMTE3LVx0cHJlZW1wdF9kaXNhYmxlKCk7XG5kcml2ZXJzL25ldC90dW4uYzoyMTE4Olx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZCh0dW4tXHUwMDNlZGV2LCAxLCByZXQpO1xuZHJpdmVycy9uZXQvdHVuLmMtMjExOS1cdHByZWVtcHRfZW5hYmxlKCk7XG4tLVxuZHJpdmVycy9uZXQvdHVuLmM9MjEyNT1zdGF0aWMgc3NpemVfdCB0dW5fcHV0X3VzZXIoc3RydWN0IHR1bl9zdHJ1Y3QgKnR1bixcbi0tXG5kcml2ZXJzL25ldC90dW4uYy0yMjAyLVx0cHJlZW1wdF9kaXNhYmxlKCk7XG5kcml2ZXJzL25ldC90dW4uYzoyMjAzOlx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZCh0dW4tXHUwMDNlZGV2LCAxLCBza2ItXHUwMDNlbGVuICYjNDM7IHZsYW5faGxlbik7XG5kcml2ZXJzL25ldC90dW4uYy0yMjA0LVx0cHJlZW1wdF9lbmFibGUoKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYz05OD1zdGF0aWMgbmV0ZGV2X3R4X3QgcW1pbXV4X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYy0xMTItXHRpZiAobGlrZWx5KHJldCA9PSBORVRfWE1JVF9TVUNDRVNTIHx8IHJldCA9PSBORVRfWE1JVF9DTikpXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMTM6XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW4pO1xuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTE0LVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYz0zNDg9c3RhdGljIG5ldGRldl90eF90IHZldGhfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3ZldGguYy0zODMtXHRcdGlmICghdXNlX25hcGkpXG5kcml2ZXJzL25ldC92ZXRoLmM6Mzg0Olx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW5ndGgpO1xuZHJpdmVycy9uZXQvdmV0aC5jLTM4NS1cdFx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NvcmUuYz05MD1xdG5mX25ldGRldl9oYXJkX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY29yZS5jLTEyOC1cdFx0cXRuZl9wYWNrZXRfc2VuZF9oaV9wcmkoc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NvcmUuYzoxMjk6XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jb3JlLmMtMTMwLVx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvcGVhcmxfcGNpZS5jPTQ2ND1zdGF0aWMgdm9pZCBxdG5mX3BlYXJsX2RhdGFfdHhfcmVjbGFpbShzdHJ1Y3QgcXRuZl9wY2llX3BlYXJsX3N0YXRlICpwcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9wY2llL3BlYXJsX3BjaWUuYy00OTEtXHRcdFx0aWYgKHNrYi1cdTAwM2VkZXYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvcGVhcmxfcGNpZS5jOjQ5MjpcdFx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoc2tiLVx1MDAzZWRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9wY2llL3BlYXJsX3BjaWUuYy00OTMtXHRcdFx0XHRpZiAodW5saWtlbHkocHJpdi1cdTAwM2V0eF9zdG9wcGVkKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvdG9wYXpfcGNpZS5jPTM5MT1zdGF0aWMgdm9pZCBxdG5mX3RvcGF6X2RhdGFfdHhfcmVjbGFpbShzdHJ1Y3QgcXRuZl9wY2llX3RvcGF6X3N0YXRlICp0cylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9wY2llL3RvcGF6X3BjaWUuYy00MjAtXHRcdFx0aWYgKHNrYi1cdTAwM2VkZXYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvdG9wYXpfcGNpZS5jOjQyMTpcdFx0XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoc2tiLVx1MDAzZWRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9wY2llL3RvcGF6X3BjaWUuYy00MjItXHRcdFx0XHRpZiAodW5saWtlbHkocHJpdi1cdTAwM2V0eF9zdG9wcGVkKSkge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MzA3Mj1zdGF0aWMgaW5saW5lIHZvaWQgZGV2X3N3X25ldHN0YXRzX3J4X2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbGVuKVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMzA4MS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MzA4MjpzdGF0aWMgaW5saW5lIHZvaWQgZGV2X3N3X25ldHN0YXRzX3R4X2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDgzLVx0XHRcdFx0XHQgIHVuc2lnbmVkIGludCBwYWNrZXRzLFxuLS1cbm5ldC9icmlkZ2UvYnJfZGV2aWNlLmM9MzA9bmV0ZGV2X3R4X3QgYnJfZGV2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvYnJpZGdlL2JyX2RldmljZS5jLTU4LVxubmV0L2JyaWRnZS9icl9kZXZpY2UuYzo1OTpcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXHUwMDNlbGVuKTtcbm5ldC9icmlkZ2UvYnJfZGV2aWNlLmMtNjAtXG4tLVxubmV0L2RzYS91c2VyLmM9OTE0PXN0YXRpYyBuZXRkZXZfdHhfdCBkc2FfdXNlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2RzYS91c2VyLmMtOTE4LVxubmV0L2RzYS91c2VyLmM6OTE5Olx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xubmV0L2RzYS91c2VyLmMtOTIwLVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTM2Mzg9aWVlZTgwMjExX3htaXRfZmFzdF9maW5pc2goc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzY1NC1cbm5ldC9tYWM4MDIxMS90eC5jOjM2NTU6XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHNrYi1cdTAwM2VkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xubmV0L21hYzgwMjExL3R4LmMtMzY1Ni1cbi0tXG5uZXQvbWFjODAyMTEvdHguYz00NDA1PXZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQ0ODgtXG5uZXQvbWFjODAyMTEvdHguYzo0NDg5Olx0XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5uZXQvbWFjODAyMTEvdHguYy00NDkwLVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ3NTE9c3RhdGljIHZvaWQgaWVlZTgwMjExXzgwMjNfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00ODE2LVxubmV0L21hYzgwMjExL3R4LmM6NDgxNzpcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCBza2JzLCBsZW4pO1xubmV0L21hYzgwMjExL3R4LmMtNDgxOC1cbi0tXG5uZXQvbWFjODAyMTEvdHguYz02NTcxPWludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNjY5MC1cdGxvY2FsX2JoX2Rpc2FibGUoKTtcbm5ldC9tYWM4MDIxMS90eC5jOjY2OTE6XHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5uZXQvbWFjODAyMTEvdHguYy02NjkyLVx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLVx1MDAzZWxlbik7XG4tLVxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jPTM0PWludGVybmFsX2Rldl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxubmV0L29wZW52c3dpdGNoL3Zwb3J0LWludGVybmFsX2Rldi5jLTQ1LVx0aWYgKGxpa2VseSghZXJyKSlcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzo0NjpcdFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsIGxlbik7XG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtNDctXHRlbHNlXG4tLVxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jPTQyND14ZnJtaV94bWl0MihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZmxvd2kgKmZsKVxuLS1cbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYy01MDktXHRpZiAobmV0X3htaXRfZXZhbChlcnIpID09IDApIHtcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYzo1MTA6XHRcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW5ndGgpO1xubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTUxMS1cdH0gZWxzZSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMDkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gRGVmaW5pdGlvbjogYGRldl9zd19uZXRzdGF0c190eF9hZGRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBmdW5jdGlvbiBkZWZpbml0aW9uLCBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZGAuIEdpdmVuIHRoZSBuYW1lLCBJJiMzOTttIGltbWVkaWF0ZWx5IGV4cGVjdGluZyB0aGlzIHRvIGJlIHJlbGF0ZWQgdG8gbmV0d29yayBzdGF0aXN0aWNzLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIHRyYW5zbWlzc2lvbiAoVFgpIHNpZGUsIGxpa2VseSBhdCB0aGUgZGV2aWNlIG9yIHN3aXRjaCBsZXZlbC4gVGhlICYjMzQ7YWRkJiMzNDsgc3VnZ2VzdHMgdGhpcyBpcyB3aGVyZSB3ZSYjMzk7cmUgaW5jcmVtZW50aW5nIGNvdW50ZXJzIG9yIGFkZGluZyBkYXRhIHBvaW50cyByZWxhdGVkIHRvIHRyYW5zbWl0dGVkIG5ldHdvcmsgcGFja2V0cyBvciBieXRlcy4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQg4oCTIGlzIHRoaXMgYSBwZXItcG9ydCBjb3VudGVyLCBhIGdsb2JhbCBkZXZpY2UgY291bnRlciwgb3Igc29tZXRoaW5nIG1vcmUgbnVhbmNlZD8gV2hhdCYjMzk7cyB0aGUgZGF0YSBzdHJ1Y3R1cmUgaXQmIzM5O3MgbW9kaWZ5aW5nPyBJcyBpdCB0aHJlYWQtc2FmZT8gVGhhdCYjMzk7cyB3aGF0IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGluIHRoZSBkZWZpbml0aW9uIGl0c2VsZiwgb3IgYXQgbGVhc3QgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUuIE15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMgcHJvYmFibHkgZXhpc3RzIHdpdGhpbiBhIGJyb2FkZXIgc3RhdGlzdGljcyBmcmFtZXdvcmssIHBlcmhhcHMgaW50ZWdyYXRlZCB3aXRoIGEga2VybmVsIG1vZHVsZSBvciBzb21lIGtpbmQgb2YgZGF0YSBjb2xsZWN0aW9uIGxheWVyLiBJJiMzOTttIGN1cmlvdXMgdG8gc2VlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBmdW5jdGlvbiwgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0sIGFuZCB3aGF0IHRoZSBvdmVyYWxsIHN0YXRpc3RpY2FsIGRhdGEgZmxvdyBsb29rcyBsaWtlLiBUaGlzIGlzIHdoZXJlIHRoZSBmdW4gYmVnaW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMwODA6XHR9XG4zMDgxOlx0XG4zMDgyOlx0c3RhdGljIGlubGluZSB2b2lkIGRldl9zd19uZXRzdGF0c190eF9hZGQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbjMwODM6XHRcdFx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgcGFja2V0cyxcbjMwODQ6XHRcdFx0XHRcdFx0ICB1bnNpZ25lZCBpbnQgbGVuKVxuMzA4NTpcdHtcbjMwODY6XHRcdHN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICp0c3RhdHMgPSB0aGlzX2NwdV9wdHIoZGV2LVx1MDAzZXRzdGF0cyk7XG4zMDg3Olx0XG4zMDg4Olx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNnRzdGF0cy1cdTAwM2VzeW5jcCk7XG4zMDg5Olx0XHR1NjRfc3RhdHNfYWRkKFx1MDAyNnRzdGF0cy1cdTAwM2V0eF9ieXRlcywgbGVuKTtcbjMwOTA6XHRcdHU2NF9zdGF0c19hZGQoXHUwMDI2dHN0YXRzLVx1MDAzZXR4X3BhY2tldHMsIHBhY2tldHMpO1xuMzA5MTpcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2dHN0YXRzLVx1MDAzZXN5bmNwKTtcbjMwOTI6XHR9XG4zMDkzOlx0XG4zMDk0Olx0c3RhdGljIGlubGluZSB2b2lkIGRldl9sc3RhdHNfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBsZW4pXG4zMDk1Olx0e1xuMzA5NjpcdFx0c3RydWN0IHBjcHVfbHN0YXRzICpsc3RhdHMgPSB0aGlzX2NwdV9wdHIoZGV2LVx1MDAzZWxzdGF0cyk7XG4zMDk3Olx0XG4zMDk4Olx0XHR1NjRfc3RhdHNfdXBkYXRlX2JlZ2luKFx1MDAyNmxzdGF0cy1cdTAwM2VzeW5jcCk7XG4zMDk5Olx0XHR1NjRfc3RhdHNfYWRkKFx1MDAyNmxzdGF0cy1cdTAwM2VieXRlcywgbGVuKTtcbjMxMDA6XHRcdHU2NF9zdGF0c19pbmMoXHUwMDI2bHN0YXRzLVx1MDAzZXBhY2tldHMpO1xuMzEwMTpcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2bHN0YXRzLVx1MDAzZXN5bmNwKTtcbjMxMDI6XHR9XG4zMTAzOlx0XG4zMTA0Olx0c3RhdGljIGlubGluZSB2b2lkIGRldl9kc3RhdHNfcnhfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4NTYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoIFJlbGF0ZWQgdG8gTmV0d29yayBTdGF0aXN0aWNzIGFuZCBJbnRlcnJ1cHQgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgcGF0Y2gsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3ZlIG1vdmVkIGBsb2NhbF9iaF9kaXNhYmxlKClgIGluIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4gVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKClgLiBJIGFscmVhZHkga25vdyB0aGF0IGZ1bmN0aW9uLCBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgb3Igd2hlbiBkZWFsaW5nIHdpdGggbG9ja2RlcCBvciBzZXFjb3VudCwgaXQgbmVlZHMgZWl0aGVyIGJvdHRvbS1oYWxmIChCSCkgZGlzYWJsZWQgb3IgcHJlZW1wdGlvbiBkaXNhYmxlZC4gVGhpcyBpcyBiZWNhdXNlIGl0IHVzZXMgYHU2NF9zdGF0c191cGRhdGVfYmVnaW4oJmFtcDt0c3RhdHMtJmd0O3N5bmNwKWAsIGFuZCB0aGF0JiMzOTtzIGNyaXRpY2FsIGZvciBwcmV2ZW50aW5nIHJhY2UgY29uZGl0aW9ucyBvciBkZWFkbG9ja3Mgd2l0aCBzb2Z0aXJxcyDigJMgb3IsIG1vcmUgZ2VuZXJhbGx5LCBlbnN1cmluZyBwZXItQ1BVIHVwZGF0ZSBzYWZldHkuCgpUaGUgb3JpZ2luYWwgY29kZSBoYWQgYGxvY2FsX2JoX2Rpc2FibGUoKWAgKmFmdGVyKiB0aGUgY2FsbHMgdG8gYm90aCBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi0mZ3Q7bGVuKWAgYW5kIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItJmd0O2xlbilgLiBUaGUgcGF0Y2ggbW92ZXMgYGxvY2FsX2JoX2Rpc2FibGUoKWAgKmJlZm9yZSogdGhvc2UgdHdvIGNhbGxzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCYjMzk7cyB0aGUgcmF0aW9uYWxlPyBUaGV5JiMzOTtyZSBjbGVhcmx5IHRyeWluZyB0byBlbnN1cmUgdGhhdCB0aG9zZSBzdGF0aXN0aWNzIHVwZGF0ZXMgYW5kIExFRCB0cmlnZ2VyIGNhbGxzIGhhcHBlbiBpbiBhIGNvbnRleHQgd2hlcmUgQkhzIGFyZSBkaXNhYmxlZC4gVGhhdCYjMzk7cyBnb29kIHByYWN0aWNlIGZvciB0aG9zZSBraW5kcyBvZiBzdGF0cy4KCk5vdywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNoZWNrIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItJmd0O2xlbilgIHRvIG1ha2Ugc3VyZSAqaXQqIGlzbiYjMzk7dCBjYWxsaW5nIGFueXRoaW5nIHRoYXQgY291bGQgY2F1c2UgYSBwcm9ibGVtLiBXZSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhpcyBtb3ZlIG9mIGBsb2NhbF9iaF9kaXNhYmxlKClgIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGlzc3VlcyBvciBpbmFkdmVydGVudGx5IG1hc2sgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gdGhlIGBsZWRfdHJpZ190eGAgZnVuY3Rpb24sIHNpbmNlIGl0IGlzIG5vdyB3aXRoaW4gdGhlIEJIIGRpc2FibGVkIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2xlZC5oPTcwPXN0YXRpYyBpbmxpbmUgdm9pZFxubmV0L21hYzgwMjExL2xlZC5oOjcxOmllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGludCBieXRlcylcbm5ldC9tYWM4MDIxMS9sZWQuaC03Mi17XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDQwNT12b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00NDk4LVx0aWYgKGxlbilcbm5ldC9tYWM4MDIxMS90eC5jOjQ0OTk6XHRcdGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIGxlbik7XG5uZXQvbWFjODAyMTEvdHguYy00NTAwLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDc1MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQ4MjMtXG5uZXQvbWFjODAyMTEvdHguYzo0ODI0Olx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgbGVuKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQ4MjUtXG4tLVxubmV0L21hYzgwMjExL3R4LmM9NjU3MT1pbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY2OTEtXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgc2tiLVx1MDAzZWxlbik7XG5uZXQvbWFjODAyMTEvdHguYzo2NjkyOlx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLVx1MDAzZWxlbik7XG5uZXQvbWFjODAyMTEvdHguYy02NjkzLVx0aWVlZTgwMjExX3htaXQoc2RhdGEsIHN0YSwgc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNTMKCQkJCQkJCW91dHB1dDogMTc2CgkJCQkJCQl0aG91Z2h0czogMjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvbmN1cnJlbmN5IEZpeCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGVzc2VudGlhbGx5IGEgY29uY3VycmVuY3kgZml4LiBJdCYjMzk7cyBtb3ZpbmcgdGhlIGBsb2NhbF9iaF9kaXNhYmxlKClgIHNjb3BlIHRvIGluY2x1ZGUgdGhlIHN0YXQgdXBkYXRlczogYGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItJmd0O2xlbilgIGFuZCBgaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLSZndDtsZW4pYC4gVGhlIGdvYWwgaXMgdG8gZW5zdXJlIHRob3NlIHBlci1DUFUgc3RhdHMgdXBkYXRlcyBhcmUgYXRvbWljIGJ5IGRpc2FibGluZyBib3R0b20gaGFsdmVzLiBUaGlzIHByZXZlbnRzIGludGVycnVwdGlvbnMgZnJvbSBzb2Z0aXJxcywgbWl0aWdhdGluZyBwb3RlbnRpYWwgd2FybmluZ3MsIGRlYWRsb2Nrcywgb3IgZGF0YSByYWNlcy4KCk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTGV0JiMzOTtzIGFuYWx5emUuCgoqICAgKipNZW1vcnkgQWxsb2NhdGlvbnM6KiogTm8sIHRoZXJlIGFyZSBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4KKiAgICoqVXNlci9LZXJuZWwgRGF0YSBUcmFuc2ZlcjoqKiBObywgdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnZvbHZlIGFueSBgY29weV90b191c2VyYCwgbmV0bGluayBjYWxscywgb3IgaW9jdGwgb3BlcmF0aW9ucy4KKiAgICoqVW5pbml0aWFsaXplZCBEYXRhOioqIE5vLCB0aGUgcGF0Y2ggZG9lc24mIzM5O3QgdG91Y2ggZXhpc3RpbmcgZGF0YSBzdHJ1Y3R1cmVzIG9yIGZpZWxkcyBpbiBhIHdheSB0aGF0IHdvdWxkIGxlYXZlIHRoZW0gdW5pbml0aWFsaXplZC4KKiAgICoqQm91bmRzIENoZWNrcy9MZW5ndGggQ2FsY3VsYXRpb25zOioqIE5vLCB0aGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgcmVhZHMuIEl0JiMzOTtzIGEgY29uY3VycmVuY3kgZml4IGFuZCBkb2VzbiYjMzk7dCBhZmZlY3QgdGhhdC4KClRoaXMgYWxsIHBvaW50cyB0bzogaXQmIzM5O3MgYSBzdGFuZGFyZCBsb2NraW5nL2NvbmN1cnJlbmN5IGZpeCwgc3F1YXJlbHkgaW4gdGhlIGxvY2tkZXAvS0FTQU4gZGV0ZWN0aW9uIHNwYWNlLiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgJiMzNDtOZWVkc0tNU0FOJiMzNDsgc2hvdWxkIGJlIGBmYWxzZWAuCgpJJiMzOTtsbCBkbyBhIGZpbmFsIHJ1bi10aHJvdWdoIHRvIGRvdWJsZS1jaGVjayBteSByZWFzb25pbmcuIEFuZCB0aGVuIEkgd2lsbCBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyBgbG9jYWxfYmhfZGlzYWJsZSgpYCBpbiBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCgpYCB0byBjb3ZlciBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZCgpYCBhbmQgYGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgoKWAuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGZpeCBlbnN1cmluZyBib3R0b20gaGFsdmVzIGFyZSBkaXNhYmxlZCBkdXJpbmcgcGVyLUNQVSBzdGF0aXN0aWMgdXBkYXRlcyB0byBwcmV2ZW50IGNvbmN1cnJlbmN5IGlzc3VlcyB3aXRoIHNvZnRpcnFzLlxuXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBtZW1vcnkgYWxsb2NhdGlvbnMsIGluaXRpYWxpemF0aW9uIGxvZ2ljLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBBbnkgcG90ZW50aWFsIGxvY2tpbmcgYnVncyBvciBjb25jdXJyZW5jeSB2aW9sYXRpb25zIGFyZSBjb3ZlcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIGBsb2NhbF9iaF9kaXNhYmxlKClgIGluIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KClgIHRvIGNvdmVyIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKClgIGFuZCBgaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eCgpYC4gVGhpcyBpcyBhIGxvY2tpbmcvY29uY3VycmVuY3kgZml4IGVuc3VyaW5nIGJvdHRvbSBoYWx2ZXMgYXJlIGRpc2FibGVkIGR1cmluZyBwZXItQ1BVIHN0YXRpc3RpYyB1cGRhdGVzIHRvIHByZXZlbnQgY29uY3VycmVuY3kgaXNzdWVzIHdpdGggc29mdGlycXMuXG5cblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IG1lbW9yeSBhbGxvY2F0aW9ucywgaW5pdGlhbGl6YXRpb24gbG9naWMsIGtlcm5lbC10by11c2VyIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEFueSBwb3RlbnRpYWwgbG9ja2luZyBidWdzIG9yIGNvbmN1cnJlbmN5IHZpb2xhdGlvbnMgYXJlIGNvdmVyZWQgYnkgTE9DS0RFUCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycywgbm90IEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0NzowOC45MjM3Njc1NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Njg0NDI5MTc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydFwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIGBsb2NhbF9iaF9kaXNhYmxlKClgIGluIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KClgIHRvIGNvdmVyIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKClgIGFuZCBgaWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eCgpYC4gVGhpcyBpcyBhIGxvY2tpbmcvY29uY3VycmVuY3kgZml4IGVuc3VyaW5nIGJvdHRvbSBoYWx2ZXMgYXJlIGRpc2FibGVkIGR1cmluZyBwZXItQ1BVIHN0YXRpc3RpYyB1cGRhdGVzIHRvIHByZXZlbnQgY29uY3VycmVuY3kgaXNzdWVzIHdpdGggc29mdGlycXMuXFxuXFxuVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgbWVtb3J5IGFsbG9jYXRpb25zLCBpbml0aWFsaXphdGlvbiBsb2dpYywga2VybmVsLXRvLXVzZXIgY29waWVzLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gQW55IHBvdGVudGlhbCBsb2NraW5nIGJ1Z3Mgb3IgY29uY3VycmVuY3kgdmlvbGF0aW9ucyBhcmUgY292ZXJlZCBieSBMT0NLREVQIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLCBub3QgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCBpbiBuZXQvbWFjODAyMTEvdHguYyBieSBtb3ZpbmcgbG9jYWxfYmhfZGlzYWJsZSgpIHRvIHByb3RlY3QgdGhlIHBlci1DUFUgVFggc3RhdGlzdGljcyB1cGRhdGUgKGRldl9zd19uZXRzdGF0c190eF9hZGQpLiBUaGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBubDgwMjExIChOTDgwMjExX0NNRF9DT05UUk9MX1BPUlRfRlJBTUUpIGFuZCBjYW4gYmUgZXhlY3V0ZWQgYW5kIGZ1enplZCBpbiBzdGFuZGFyZCB2aXJ0dWFsIGVudmlyb25tZW50cyB3aXRoIHNpbXVsYXRlZCB3aXJlbGVzcyBoYXJkd2FyZSBsaWtlIG1hYzgwMjExX2h3c2ltLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0NzowOC45MjM3NzU1NDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTk4OTAyMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2ZmI1MGEyNzViNDAzNWFkMjFmYzlhZDc1ZjQzODdlZTY4OWU5MjdjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDA0OjQ3OjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcXG5pbmRleCA3NGFiMjc1MzQwNzZmLi43YjFhM2M2M2U1ZGM1IDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcXG5AQCAtNjY4NywxMCArNjY4Nyw5IEBAIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbitcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxuIFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuIFxcdGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIHNrYi1cXHUwMDNlbGVuKTtcXG4tXFxuLVxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG4gXFx0aWVlZTgwMjExX3htaXQoc2RhdGEsIHN0YSwgc2tiKTtcXG4gXFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0NzoxMC40NDQyNTQzNTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQxOTAzOTczMTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCIsXG4gICAgXCJubDgwMjExX3R4X2NvbnRyb2xfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQgaW4gbmV0L21hYzgwMjExL3R4LmMgYnkgbW92aW5nIGxvY2FsX2JoX2Rpc2FibGUoKSB0byBwcm90ZWN0IHRoZSBwZXItQ1BVIFRYIHN0YXRpc3RpY3MgdXBkYXRlIChkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKS4gVGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmw4MDIxMSAoTkw4MDIxMV9DTURfQ09OVFJPTF9QT1JUX0ZSQU1FKSBhbmQgY2FuIGJlIGV4ZWN1dGVkIGFuZCBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudHMgd2l0aCBzaW11bGF0ZWQgd2lyZWxlc3MgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2ZmI1MGEyNzViNDAzNWFkMjFmYzlhZDc1ZjQzODdlZTY4OWU5MjdjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6NDc6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCA3NGFiMjc1MzQwNzZmLi43YjFhM2M2M2U1ZGM1IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbisrKyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNjY4NywxMCArNjY4Nyw5IEBAIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuK1x0bG9jYWxfYmhfZGlzYWJsZSgpO1xuIFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xuIFx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLVx1MDAzZWxlbik7XG4tXG4tXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gXHRpZWVlODAyMTFfeG1pdChzZGF0YSwgc3RhLCBza2IpO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjEwLjQ0NDI1NTcyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTgxNjc0MzgxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBPcHRpbWl6YXRpb24gaW4gYG1hYzgwMjExL3R4LmNgKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRpc3NlY3QgdGhlIGRpZmYgYW5kIGFzc2VzcyB0aGUgaW1wYWN0LiBJdCdzIGEgc21hbGwgY2hhbmdlLCBidXQgZXZlbiBzbWFsbCBjaGFuZ2VzIGluIHRoZSBgbWFjODAyMTFgIGNvcmUgY2FuIGJlIGNyaXRpY2FsLlxuXG5BbHJpZ2h0LCBsb29raW5nIGF0IHRoZSBkaWZmLCBpdCdzIGEgY29kZSByZS1hcnJhbmdlbWVudCB3aXRoaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBTcGVjaWZpY2FsbHksIHRoZSBgbG9jYWxfYmhfZGlzYWJsZSgpYCBjYWxsIGlzIGJlaW5nIG1vdmVkICpiZWZvcmUqIHRoZSBzdGF0cyB1cGRhdGUgYW5kIHRyYW5zbWlzc2lvbiBjYWxsLCB3aGVyZSBpdCB3YXMgcHJldmlvdXNseSBsb2NhdGVkIGFmdGVyLiBUaGUgc3Vic2VxdWVudCBgbG9jYWxfYmhfZW5hYmxlKClgIHJlbWFpbnMgYXQgdGhlIGVuZCwgYXMgZXhwZWN0ZWQuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGludGVuZGVkIGVmZmVjdCBvZiB0aGlzIGNoYW5nZS5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbnRleHQgdXNpbmcsIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIG90aGVyIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24uIElzIHRoaXMgdG8gcmVkdWNlIGludGVycnVwdCBsYXRlbmN5PyBPciB0byBlbnN1cmUgYXRvbWljaXR5IGluIHNvbWUgb3RoZXIgb3BlcmF0aW9uPyBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaXNhYmxpbmcgYm90dG9tIGhhbHZlcyBhdCB0aGlzIHNwZWNpZmljIHBvaW50LiBQZXJoYXBzIHRoZXJlJ3MgYSBzcGVjaWZpYyBpc3N1ZSB0aGlzIGFkZHJlc3Nlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgb3B0aW1pemF0aW9uIHdhcyBwcm9wb3NlZC4gVGhlIGFkZGl0aW9uIG9mIHRoZSBgbG9jYWxfYmhfZGlzYWJsZWAgYmVmb3JlIHRoZSBzdGF0cyB1cGRhdGUgYW5kIHRyYW5zbWlzc2lvbiBpcyB0aGUga2V5IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0NzoxNi4yNjEwMDE5N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvdHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NjcwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI2NjcwOlxcdFxcdGluZm8tXFx1MDAzZWZsYWdzID0gZmxhZ3M7XFxuNjY3MTpcXHRcXHRjdHJsX2ZsYWdzIHw9IHUzMl9lbmNvZGVfYml0cyhsaW5rX2lkLCBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOSyk7XFxuNjY3MjpcXHRcXHRpbmZvLVxcdTAwM2Vjb250cm9sLmZsYWdzID0gY3RybF9mbGFncztcXG42NjczOlxcdFxcbjY2NzQ6XFx0XFx0aWYgKCFncm91cF9hZGRyZXNzZWQpXFxuNjY3NTpcXHRcXHRcXHRpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUpO1xcbjY2NzY6XFx0XFxuNjY3NzpcXHRcXHRza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIHN0YSk7XFxuNjY3ODpcXHRcXHRpZiAoSVNfRVJSKHNrYikpIHtcXG42Njc5OlxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjY2ODA6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoc2tiKTtcXG42NjgxOlxcdFxcdH1cXG42NjgyOlxcdFxcbjY2ODM6XFx0XFx0aWYgKGxpbmtfaWQgIT0gdTMyX2dldF9iaXRzKGluZm8tXFx1MDAzZWNvbnRyb2wuZmxhZ3MsXFxuNjY4NDpcXHRcXHRcXHRcXHRcXHQgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspKSB7XFxuNjY4NTpcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihcXHUwMDI2bG9jYWwtXFx1MDAzZWh3LCBza2IpO1xcbjY2ODY6XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuNjY4NzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG42Njg4OlxcdFxcdH1cXG42Njg5OlxcdFxcbjY2OTA6XFx0XFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xcbjY2OTE6XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG42NjkyOlxcdFxcdGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIHNrYi1cXHUwMDNlbGVuKTtcXG42NjkzOlxcdFxcdGllZWU4MDIxMV94bWl0KHNkYXRhLCBzdGEsIHNrYik7XFxuNjY5NDpcXHRcXHRsb2NhbF9iaF9lbmFibGUoKTtcXG42Njk1OlxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjY2OTY6XFx0XFxuNjY5NzpcXHRcXHRyZXR1cm4gMDtcXG42Njk4OlxcdH1cXG42Njk5OlxcdFxcbjY3MDA6XFx0aW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG42NzAxOlxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXFxuNjcwMjpcXHR7XFxuNjcwMzpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxuNjcwNDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG42NzA1OlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuNjcwNjpcXHRcXG42NzA3OlxcdFxcdHNrYiA9IGRldl9hbGxvY19za2IobG9jYWwtXFx1MDAzZWh3LmV4dHJhX3R4X2hlYWRyb29tICsgbGVuICtcXG42NzA4OlxcdFxcdFxcdFxcdCAgICAzMCArIC8qIGhlYWRlciBzaXplICovXFxuNjcwOTpcXHRcXHRcXHRcXHQgICAgMTgpOyAvKiAxMXMgaGVhZGVyIHNpemUgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6MTYuMjYxMjMyMjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NzI3NzEyMjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0c3RhdHMgVHJhbnNhY3Rpb24gYW5kIENvbnRyb2wgUG9ydCBCZWhhdmlvcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pYCBuZWNlc3NpdGF0ZXMgYGxvY2FsX2JoX2Rpc2FibGUoKWAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYGRldl9zd19uZXRzdGF0c190eF9hZGRgIGxldmVyYWdlcyBwZXItQ1BVIHN0YXRzIHVwZGF0aW5nLCB3aGljaCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhvc2UgZGVsaWNhdGUgcGVyLUNQVSB2YXJpYWJsZXMuIFRoZXNlIHVwZGF0ZXMsIGlmIGRvbmUgaW5jb3JyZWN0bHksIHdpbGwgY2F1c2UgY29udGVudGlvbiB3aXRoIHNvZnQgaW50ZXJydXB0cy4gU28sIHRoZSBrZXJuZWwgZm9sa3MgY29ycmVjdGx5IGNob3NlIHRvIGRpc2FibGUgQm90dG9tIEhhbHZlcyAoQkhzKSBkdXJpbmcgdGhpcyBzZWN0aW9uIG9mIGNvZGUuIEkgc2VlIHRoYXQgdGhlcmUgd2FzIGEgY29tbWl0LCA2ZmI1MGEyNzViNDAsIHdoZXJlIHRoaXMgd2FzIGV4cGxpY2l0bHkgYWRkcmVzc2VkIGJ5IG1vdmluZyB0aGUgYGxvY2FsX2JoX2Rpc2FibGUoKWAgY2FsbCBhYm92ZSB0aGUgYGRldl9zd19uZXRzdGF0c190eF9hZGRgIGNhbGwuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgcHJlY2F1dGlvbiB0byBwcmV2ZW50IGxvY2tkZXAgYXNzZXJ0aW9ucyBvciByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiBCSC9zb2Z0aXJxIGhhbmRsZXJzIGFuZCB0aGUgc3RhdHMgdXBkYXRlcy5cblxuTm93LCBsZXQncyBzaGlmdCBnZWFycyBhbmQgbG9vayBhdCBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIEkgd2FudCB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLCBob3cgaXQncyBpbnZva2VkLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgd2hldGhlciB0aGlzIGZ1bmN0aW9uIGlzIGV2ZW4gcmVhY2hhYmxlIHZpYSBTeXprYWxsZXIgaW4gbXkgdGVzdHMuIEkgbmVlZCB0byBjaGVjayB0aGUgY2FsbCBzaXRlcyBmb3IgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgIGRpcmVjdGx5LiBJIHdpbGwgYWxzbyBleGFtaW5lIGl0cyByZWxhdGlvbnNoaXAgdG8gYHdpcGh5YCwgYG5sODAyMTFgLCBhbmQgYG1hYzgwMjExYCBjb250cm9sIHBvcnQgcGF0aHMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHBvc3NpYmxlIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjg3LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6MjEuOTg4OTQ3Njc0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMTM4ODkyOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHhfY29udHJvbF9wb3J0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2NmZzgwMjExLmg9NDg0Mz1zdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNTIyMS0gKlxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6NTIyMjogKiBAdHhfY29udHJvbF9wb3J0OiBUWCBhIGNvbnRyb2wgcG9ydCBmcmFtZSAoRUFQb0wpLiAgVGhlIG5vZW5jcnlwdCBwYXJhbWV0ZXJcXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTUyMjMtICpcXHR0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLiBBIEBjb29raWVcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg9NTI4MD1zdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmgtNTYwNy1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oOjU2MDg6XFx0aW50XFx0KCp0eF9jb250cm9sX3BvcnQpKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC01NjA5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oPTk2NDI9c3RhdGljIGlubGluZSB2b2lkIGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk2NTktICogQHdkZXY6IHdpcmVsZXNzIGRldmljZSByZWNlaXZpbmcgdGhlIGZyYW1lXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaDo5NjYwOiAqIEBjb29raWU6IENvb2tpZSByZXR1cm5lZCBieSBjZmc4MDIxMV9vcHM6OnR4X2NvbnRyb2xfcG9ydCgpXFxuaW5jbHVkZS9uZXQvY2ZnODAyMTEuaC05NjYxLSAqIEBidWY6IERhdGEgZnJhbWUgKGhlYWRlciArIGJvZHkpXFxuLS1cXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk2NjYtICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgYSBjb250cm9sIHBvcnQgZnJhbWUgd2FzIHJlcXVlc3RlZCB0byBiZVxcbmluY2x1ZGUvbmV0L2NmZzgwMjExLmg6OTY2NzogKiB0cmFuc21pdHRlZCB3aXRoIGNmZzgwMjExX29wczo6dHhfY29udHJvbF9wb3J0KCkgdG8gcmVwb3J0IHRoZSBUWCBzdGF0dXMgb2ZcXG5pbmNsdWRlL25ldC9jZmc4MDIxMS5oLTk2NjgtICogdGhlIHRyYW5zbWlzc2lvbiBhdHRlbXB0Llxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU5ODY9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTYwODAtXFx0LnNldF9tdWx0aWNhc3RfdG9fdW5pY2FzdCA9IGllZWU4MDIxMV9zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3QsXFxubmV0L21hYzgwMjExL2NmZy5jOjYwODE6XFx0LnR4X2NvbnRyb2xfcG9ydCA9IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQsXFxubmV0L21hYzgwMjExL2NmZy5jLTYwODItXFx0LmdldF90eHFfc3RhdHMgPSBpZWVlODAyMTFfZ2V0X3R4cV9zdGF0cyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTIyNTU9dm9pZCBpZWVlODAyMTFfY2xlYXJfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMjU2OmludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjI1Ny1cXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NjU0MD12b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNjU3MC1cXG5uZXQvbWFjODAyMTEvdHguYzo2NTcxOmludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L21hYzgwMjExL3R4LmMtNjU3Mi1cXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xMjkzMz1zdGF0aWMgaW50IHZhbGlkYXRlX3BhZV9vdmVyX25sODAyMTEoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xMjk0MC1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjEyOTQxOlxcdGlmICghcmRldi1cXHUwMDNlb3BzLVxcdTAwM2V0eF9jb250cm9sX3BvcnQgfHxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTEyOTQyLVxcdCAgICAhd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xODUwND1zdGF0aWMgaW50IG5sODAyMTFfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU0NS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4NTQ2OnN0YXRpYyBpbnQgbmw4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NTQ3LXtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg1NjQtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxODU2NTpcXHRpZiAoIXJkZXYtXFx1MDAzZW9wcy1cXHUwMDNldHhfY29udHJvbF9wb3J0KVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg1NjYtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODYwMi1cXHRjb29raWUgPSBkb250X3dhaXRfZm9yX2FjayA/IDAgOiBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg2MDM6XFx0ZXJyID0gcmRldl90eF9jb250cm9sX3BvcnQocmRldiwgZGV2LCBidWYsIGxlbixcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NjA0LVxcdFxcdFxcdFxcdCAgIGRlc3QsIGNwdV90b19iZTE2KHByb3RvKSwgbm9lbmNyeXB0LCBsaW5rX2lkLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTc0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDgxLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwNDgyOlxcdFxcdC5kb2l0ID0gbmw4MDIxMV90eF9jb250cm9sX3BvcnQsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDQ4My1cXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbi0tXFxubmV0L3dpcmVsZXNzL3JkZXYtb3BzLmg9NzY0PXN0YXRpYyBpbmxpbmUgaW50IHJkZXZfbWdtdF90eChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03NzUtXFxubmV0L3dpcmVsZXNzL3JkZXYtb3BzLmg6Nzc2OnN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03NzctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaC03ODMtXFx0aW50IHJldDtcXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaDo3ODQ6XFx0dHJhY2VfcmRldl90eF9jb250cm9sX3BvcnQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxcbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oLTc4NS1cXHRcXHRcXHRcXHQgICBkZXN0LCBwcm90bywgbm9lbmNyeXB0LCBsaW5rKTtcXG5uZXQvd2lyZWxlc3MvcmRldi1vcHMuaDo3ODY6XFx0cmV0ID0gcmRldi1cXHUwMDNlb3BzLVxcdTAwM2V0eF9jb250cm9sX3BvcnQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxcbm5ldC93aXJlbGVzcy9yZGV2LW9wcy5oLTc4Ny1cXHRcXHRcXHRcXHRcXHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcXG4tLVxcbm5ldC93aXJlbGVzcy90cmFjZS5oPTIyMjQ9VFJBQ0VfRVZFTlQocmRldl9tZ210X3R4LFxcbi0tXFxubmV0L3dpcmVsZXNzL3RyYWNlLmgtMjI1My1cXG5uZXQvd2lyZWxlc3MvdHJhY2UuaDoyMjU0OlRSQUNFX0VWRU5UKHJkZXZfdHhfY29udHJvbF9wb3J0LFxcbm5ldC93aXJlbGVzcy90cmFjZS5oLTIyNTUtXFx0VFBfUFJPVE8oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6MjUuMjAyODQzMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwMjE5Njk5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBTaXR1YXRpb24qKlxuXG5Pa2F5LCBzbyBtYWM4MDIxMSBpcyAqZGVmaW5pdGVseSogd2l0aGluIHN5emthbGxlcidzIHJlYWNoLCBhbmQgdGhlIHN5c3RlbSB1c2VzIGl0LiBUaGUgcHJlc2VuY2Ugb2YgdGhlIG1hYzgwMjExX2h3c2ltIHZpcnR1YWwgZGV2aWNlIGlzIGEgc29saWQgaW5kaWNhdG9yLCBlc3BlY2lhbGx5IHNpbmNlIHN5emthbGxlciBpcyBhY3RpdmVseSBwb2tpbmcgYXQgaXQgdmlhIG5sODAyMTEgbmV0bGluayBtZXNzYWdlcywgaW5jbHVkaW5nIHRob3NlIGNydWNpYWwgTkw4MDIxMV9DTURfQ09OVFJPTF9QT1JUX0ZSQU1FIGFuZCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgIGNvbW1hbmRzLiBUaGF0IGxldmVsIG9mIHRhcmdldGVkIGludGVyYWN0aW9uIHN1Z2dlc3RzIGEgZGVlcCBpbnRlZ3JhdGlvbiwgd2hpY2ggbWVhbnMgdGhlcmUncyBwcm9iYWJseSBhIHdvcnRod2hpbGUgYXR0YWNrIHN1cmZhY2UuXG5cbk15IG5leHQgaW1tZWRpYXRlIHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBzY3J1dGluaXplIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyBmb3IgYm90aCBtYWM4MDIxMSBpdHNlbGYgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBgbWFjODAyMTFfaHdzaW1gLiBVbmRlcnN0YW5kaW5nIHRob3NlIGRlcGVuZGVuY2llcyB3aWxsIHJldmVhbCB0aGUgcHJlY29uZGl0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgdGhhdCBtYWtlIHRoZXNlIGNvbXBvbmVudHMgYWNjZXNzaWJsZSBhbmQsIGJ5IGV4dGVuc2lvbiwgd2hlcmUgdGhlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgbWlnaHQgbGllLiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgdGFyZ2V0ZWQgZnV6emluZyBjYW1wYWlnbiBpbiB0aGlzIGFyZWEuIEl0J3MgdGltZSB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkyNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjI4LjIyNDgxNzE5OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDg5MjQ3OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXFxubmV0L21hYzgwMjExL0tjb25maWctMjAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVxcdGJvb2xcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVxcdHN0cmluZ1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjcxLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXFx0aW50IFxcXCJTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXFxcIiBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjI4LjkzMzc0NjAzNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUyMDg3NzA0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgTUFDODAyMTFgIENvbmZpZ3VyYXRpb24gU3BhY2UqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiBlbnRyeSwgc28gSSdtIGhlYWRpbmcgc3RyYWlnaHQgdG8gYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gSXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMgaXMgY3J1Y2lhbCBmb3IgZGVidWdnaW5nLCBwZXJmb3JtYW5jZSB0dW5pbmcsIGFuZCBqdXN0IGdlbmVyYWxseSBrbm93aW5nIHdoYXQncyBwb3NzaWJsZS4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdmFyaW91cyBmZWF0dXJlcyBhcmUgY29uZGl0aW9uYWxseSBlbmFibGVkIGFuZCBkaXNhYmxlZC4gQXJlIHRoZXJlIGFueSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZiwgcGVyaGFwcyBzb21lIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNhdXNlIGdyaWVmIGRvd24gdGhlIGxpbmU/IFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZDsgZ2V0dGluZyBhIGZpcm0gZ3Jhc3Agb24gdGhlIEtjb25maWcgaXMgZXNzZW50aWFsLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6OTQ3MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjM0LjE0MjUxODg2MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1BQzgwMjExXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNfQ0JDX01BQ1NcXG4gICA3OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcXG4gICA4OlxcdFxcdHNlbGVjdCBDUllQVE9fQUVTXFxuICAgOTpcXHRcXHRzZWxlY3QgQ1JZUFRPX0NDTVxcbiAgMTA6XFx0XFx0c2VsZWN0IENSWVBUT19HQ01cXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xMVxcbiAgMTQ6XFx0XFx0ICBuZXR3b3JraW5nIHN0YWNrLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb21tZW50IFxcXCJDRkc4MDIxMSBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBNQUM4MDIxMVxcXCJcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBNQUM4MDIxMSAhPSBuXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG4gIDIyOlxcdFxcdGJvb2xcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxuICAyNTpcXHRcXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjM0LjE0MjU4NDAxMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDEwMDUwODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqQ2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIE1BQzgwMjExX0hXU0lNKipcblxuUmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGlzIHRlc3RpbmcgZnJhbWV3b3JrLCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIGZvciBgTUFDODAyMTFfSFdTSU1gLiBJdCdzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byBrbm93IHdoZXJlIHRoZSBkZXBlbmRlbmNpZXMgbGllIGFuZCBleGFjdGx5ICp3aGF0KiBpcyBlbmFibGluZyB0aGlzIGBtYWM4MDIxMWAgdGVzdGluZyBkcml2ZXIuIFdlIGNhbid0IGFmZm9yZCBhbnkgc3VycHJpc2VzIGhlcmUuIEtub3dpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB1cCBmcm9udCB3aWxsIHNhdmUgYSB3b3JsZCBvZiBodXJ0IGluIGRlYnVnZ2luZyBsYXRlciBvbi4gSXQncyBhYm91dCBiZWluZyBlZmZpY2llbnQ7IGtub3dpbmcgdGhlIGFyY2hpdGVjdHVyZSBpcyBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDY3LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0NzozNi4xNTI2MzY1NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5ODg5NjQ0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUM4MDIxMV9IV1NJTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlOjE6b2JqLSQoQ09ORklHX01BQzgwMjExX0hXU0lNKVxcdCs9IG1hYzgwMjExX2h3c2ltLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1xcdFxcdCs9IG1hYzgwMjExX2h3c2ltX21haW4ub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjk6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MTA6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MjE3PXN0cnVjdCBod3NpbV90eF9yYXRlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzAtICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMxOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUzogVXNlIFJUUy9DVFMgZXhjaGFuZ2UgZm9yIHRoaXMgcmF0ZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMy0gKlxcdFRoaXMgaXMgc2V0IGlmIHRoZSBjdXJyZW50IEJTUyByZXF1aXJlcyBFUlAgcHJvdGVjdGlvbi5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19NQ1M6IEhUIHJhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DUzogVkhUIE1DUyByYXRlLCBpbiB0aGlzIGNhc2UgdGhlIGlkeCBmaWVsZCBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcXHRzcGxpdCBpbnRvIGEgaGlnaGVyIDQgYml0cyAoTnNzKSBhbmQgbG93ZXIgNCBiaXRzIChNQ1MgbnVtYmVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzg6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEOiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHJhdGUgc2hvdWxkIGJlIHVzZWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXFx0aW4gR3JlZW5maWVsZCBtb2RlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDA6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDogSW5kaWNhdGVzIGlmIHRoZSBDaGFubmVsIFdpZHRoIHNob3VsZCBiZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcXHQ0MCBNSHouXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0MjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgODAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDQtICpcXHQoODArODAgaXNuJ3Qgc3VwcG9ydGVkIHlldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ1OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQTogVGhlIGZyYW1lIHNob3VsZCBiZSB0cmFuc21pdHRlZCBvbiBib3RoIG9mXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ni0gKlxcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDctICpcXHROTDgwMjExX0NIQU5fSFQ0ME1JTlVTIG9yIE5MODAyMTFfQ0hBTl9IVDQwUExVUy5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ5LSAqXFx0cmF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0yNTE9ZW51bSBod3NpbV90eF9yYXRlX2ZsYWdzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjUyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXFx0XFx0PSBCSVQoMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1RcXHRcXHQ9IEJJVCgxKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU0OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRVxcdD0gQklUKDIpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1Ni1cXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTc6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTXFx0XFx0XFx0PSBCSVQoMyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRFxcdFxcdD0gQklUKDQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTk6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIXFx0XFx0PSBCSVQoNSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MDpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVxcdFxcdD0gQklUKDYpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0lcXHRcXHQ9IEJJVCg3KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYyOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1NcXHRcXHRcXHQ9IEJJVCg4KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSFxcdFxcdD0gQklUKDkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjQ6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSFxcdFxcdD0gQklUKDEwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MzI4PWVudW0gaHdzaW1fcmF0ZV9pbmZvX2F0dHJpYnV0ZXMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MzQ4OiNlbmRpZiAvKiBfX01BQzgwMjExX0hXU0lNX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmg6MTA6I2lmbmRlZiBfX01BQzgwMjExX0hXU0lNX0lfSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjExOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9JX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oPTE2NT12b2lkIGllZWU4MDIxMV9od3NpbV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjE2ODojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9JX0ggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE3Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE4LXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX211bHRpY2FzdF9ncm91cCBod3NpbV9tY2dycHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3Mjg6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBwb2xpY3kgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy05MDMtc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKmh3c2ltX3Zxc1tIV1NJTV9OVU1fVlFTXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NzU9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzktXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9SVFNfQ1RTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODA6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODEtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgyOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4My1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODQ6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg1LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19NQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NjpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODctXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODg6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODktXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTkwOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5MS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfRFVQX0RBVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5MjpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5My1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU5NDpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5NS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfVkhUX01DUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk2OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1OTctXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzgwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTk4OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5OS1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNjAwOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2MDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDg5PXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUwMDojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTAxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUxMT1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUxNC1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUxNTpcXHRcXHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTE2LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzUxOT1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM1MzU6XFx0V0FSTl9PTihpICE9IE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NTY1Mj1zdGF0aWMgY29uc3QgdTggaWZ0eXBlc19leHRfY2FwYV9hcFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo1NjYxOiNkZWZpbmUgTUFDODAyMTFfSFdTSU1fTUxEX0NBUEFfT1BTXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NjItXFx0RklFTERfUFJFUF9DT05TVChJRUVFODAyMTFfTUxEX0NBUF9PUF9USURfVE9fTElOS19NQVBfTkVHX1NVUFAsIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2Njc9c3RhdGljIGNvbnN0IHN0cnVjdCB3aXBoeV9pZnR5cGVfZXh0X2NhcGFiIG1hYzgwMjExX2h3c2ltX2lmdHlwZXNfZXh0X2NhcGFbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2NzQtXFx0XFx0XFx0XFx0ICAgIElFRUU4MDIxMV9FTUxfQ0FQX0VNTE1SX1NVUFBPUlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTY3NTpcXHRcXHQubWxkX2NhcGFfYW5kX29wcyA9IE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01Njc2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTU2PXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNTc6XFx0Lm5hbWUgPSBcXFwiTUFDODAyMTFfSFdTSU1cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxNTgtXFx0LnZlcnNpb24gPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzQ3Nj1zdGF0aWMgdm9pZCBod3NpbV92aXJ0aW9fcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NDg1Oi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBkZXZpY2UgaWQgdGFibGUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDg2LXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjc0ODc6XFx0eyBWSVJUSU9fSURfTUFDODAyMTFfSFdTSU0sIFZJUlRJT19ERVZfQU5ZX0lEIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQ4OC1cXHR7IDAgfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVxcdFxcdG1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0yMTY9dm9pZCBtYWM4MDIxMV9od3NpbV9uYW5fcngoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3My1cXHRpZiAoKHNsb3QgIT0gU0xPVF8yNEdIWl9EVyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6Mjc0OlxcdCAgICAgZGF0YS1cXHUwMDNlbmFuLnBoYXNlICE9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjc1LVxcdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00MzYtXFx0XFx0ICAgIChjZyA9PSBvd25fY2cgXFx1MDAyNlxcdTAwMjYgZnJhbWVfYW1yIFxcdTAwM2UgY3Vycl9hbXIpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Mzc6XFx0XFx0ICAgIGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVxcdFxcdFxcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy00NjgtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDcwLVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz02MTI9bWFjODAyMTFfaHdzaW1fbmFuX2V4ZWNfc3RhdGVfdHJhbnNpdGlvbnMoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyNS1cXHRpZiAoZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2MgMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNjpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcXHRlbHNlIGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYyOC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFxcdTAwM2U9IDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjk6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMwOlxcdGVsc2UgaWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzMS1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNlPSAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzM6XFx0ZWxzZSBpZiAoZGF0YS1cXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cXHRcXHQgZGF0YS1cXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNjIDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MzU6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NDEtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NDI6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVxcdCAgICAhaHJ0aW1lcl9hY3RpdmUoXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0OlxcdFxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfV0FSTVVQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSBOQU5fV0FSTVVQX0RXU1Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY2MS1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Njk1PW1hYzgwMjExX2h3c2ltX25hbl90eF9iZWFjb24oc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1MC1cXHRuYW5fYXR0ci5sZW5ndGggPSBjcHVfdG9fbGUxNihzaXplb2YobWFzdGVyX2luZGljYXRpb24pKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcXHRpZiAoZGF0YS1cXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVxcdFxcdG1hc3Rlcl9pbmRpY2F0aW9uLm1hc3Rlcl9wcmVmID0gZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03NzQ9bWFjODAyMTFfaHdzaW1fbmFuX3Nsb3RfdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MDctXFx0XFx0dHhfc3luY19iZWFjb24gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA4OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODA5OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODEwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9ODY3PW1hYzgwMjExX2h3c2ltX25hbl9kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVxcdHNjb3BlZF9ndWFyZChzcGlubG9jaywgXFx1MDAyNmRhdGEtXFx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4ODA6XFx0XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTiB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODgxOlxcdFxcdCAgICBkYXRhLVxcdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXFx0XFx0XFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz05MDk9aW50IG1hYzgwMjExX2h3c2ltX25hbl9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI2LVxcdFxcdC8qIFN0YXJ0IGluIHRoZSBcXFwic2NhblxcXCIgcGhhc2UgYW5kIHN0YXkgdGhlcmUgZm9yIGEgbGl0dGxlIGJpdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTI4LVxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXFx0XFx0ZGF0YS1cXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cXHUwMDNlbWFzdGVyX3ByZWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo5MzE6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXFx0XFx0bWVtc2V0KFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uY3VycmVudF9hbWksIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXFx0XFx0cmV0dXJuIGNoYW5uZWwtXFx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6ODojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlxcdE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9XQVJNVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMzpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xNC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE3OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4OlxcdE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxOTpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTIwLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTEwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19pZHMuaC01Ny0jZGVmaW5lIFZJUlRJT19JRF9SUE1CXFx0XFx0XFx0MjggLyogdmlydGlvIHJwbWIgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2lkcy5oOjU4OiNkZWZpbmUgVklSVElPX0lEX01BQzgwMjExX0hXU0lNXFx0MjkgLyogdmlydGlvIG1hYzgwMjExLWh3c2ltICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19pZHMuaC01OS0jZGVmaW5lIFZJUlRJT19JRF9WSURFT19FTkNPREVSXFx0XFx0MzAgLyogdmlydGlvIHZpZGVvIGVuY29kZXIgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6MzguNDUxNTM3NTMzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0MzU5MTc5ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRXhhbWluaW5nIGBuZXQvbWFjODAyMTEvdHguY2AgLSBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBGaXJzdCB0aGluZydzIGZpcnN0LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGNvZGUgdGhhdCdzIGJlZW4gbW9kaWZpZWQuIFRoZSBmaWxlIEknbSB0YXJnZXRpbmcgaXMgYG5ldC9tYWM4MDIxMS90eC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAgZnVuY3Rpb24uIEdvdHRhIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55IHN1YnRsZSBjaGFuZ2VzLCBzbyBJJ20gZ29pbmcgdG8gcmVhZCAqdGhhdCBlbnRpcmUgZnVuY3Rpb24qLCBsaW5lIGJ5IGxpbmUuIE5vIHNob3J0Y3V0cyBoZXJlOyBhIHRob3JvdWdoIHVuZGVyc3RhbmRpbmcgaXMgcGFyYW1vdW50LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBpbnRyaWNhY2llcyBvZiB0aGUgbWFjODAyMTEgc3RhY2suIFdlIGNhbid0IGFmZm9yZCB0byBtaXNzIGV2ZW4gYSB0aW55IGRldGFpbC4gTGV0J3MgbWFrZSBzdXJlIG91ciBtb2RpZmljYXRpb25zIGFyZW4ndCBpbXBhY3RpbmcgYW55dGhpbmcgZWxzZSB1bmV4cGVjdGVkbHkuIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzYwLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6NDAuODg3NDU4NzYzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDM4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvdHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NTcwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNjU3MDpcXHRcXG42NTcxOlxcdGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuNjU3MjpcXHRcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbjY1NzM6XFx0XFx0XFx0XFx0ICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCxcXG42NTc0OlxcdFxcdFxcdFxcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgY29va2llKVxcbjY1NzU6XFx0e1xcbjY1NzY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbjY1Nzc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuNjU3ODpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XFxuNjU3OTpcXHRcXHRib29sIGdyb3VwX2FkZHJlc3NlZDtcXG42NTgwOlxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xcbjY1ODE6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG42NTgyOlxcdFxcdHN0cnVjdCBldGhoZHIgKmVoZHI7XFxuNjU4MzpcXHRcXHR1MzIgY3RybF9mbGFncyA9IDA7XFxuNjU4NDpcXHRcXHR1MzIgZmxhZ3MgPSAwO1xcbjY1ODU6XFx0XFx0aW50IGVycjtcXG42NTg2OlxcdFxcbjY1ODc6XFx0XFx0LyogbXV0ZXggbG9jayBpcyBvbmx5IG5lZWRlZCBmb3IgaW5jcmVtZW50aW5nIHRoZSBjb29raWUgY291bnRlciAqL1xcbjY1ODg6XFx0XFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG42NTg5OlxcdFxcbjY1OTA6XFx0XFx0LyogT25seSBhY2NlcHQgQ09OVFJPTF9QT1JUX1BST1RPQ09MIGNvbmZpZ3VyZWQgaW4gQ09OTkVDVC9BU1NPQ0lBVEVcXG42NTkxOlxcdFxcdCAqIG9yIFByZS1BdXRoZW50aWNhdGlvblxcbjY1OTI6XFx0XFx0ICovXFxuNjU5MzpcXHRcXHRpZiAocHJvdG8gIT0gc2RhdGEtXFx1MDAzZWNvbnRyb2xfcG9ydF9wcm90b2NvbCBcXHUwMDI2XFx1MDAyNlxcbjY1OTQ6XFx0XFx0ICAgIHByb3RvICE9IGNwdV90b19iZTE2KEVUSF9QX1BSRUFVVEgpKVxcbjY1OTU6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNjU5NjpcXHRcXG42NTk3OlxcdFxcdGlmIChwcm90byA9PSBzZGF0YS1cXHUwMDNlY29udHJvbF9wb3J0X3Byb3RvY29sKVxcbjY1OTg6XFx0XFx0XFx0Y3RybF9mbGFncyB8PSBJRUVFODAyMTFfVFhfQ1RSTF9QT1JUX0NUUkxfUFJPVE8gfFxcbjY1OTk6XFx0XFx0XFx0XFx0ICAgICAgSUVFRTgwMjExX1RYX0NUUkxfU0tJUF9NUEFUSF9MT09LVVA7XFxuNjYwMDpcXHRcXG42NjAxOlxcdFxcdGlmICh1bmVuY3J5cHRlZClcXG42NjAyOlxcdFxcdFxcdGZsYWdzIHw9IElFRUU4MDIxMV9UWF9JTlRGTF9ET05UX0VOQ1JZUFQ7XFxuNjYwMzpcXHRcXG42NjA0OlxcdFxcdGZsYWdzIHw9IElFRUU4MDIxMV9UWF9JTlRGTF9OTDgwMjExX0ZSQU1FX1RYO1xcbjY2MDU6XFx0XFxuNjYwNjpcXHRcXHRza2IgPSBkZXZfYWxsb2Nfc2tiKGxvY2FsLVxcdTAwM2Vody5leHRyYV90eF9oZWFkcm9vbSArXFxuNjYwNzpcXHRcXHRcXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBldGhoZHIpICsgbGVuKTtcXG42NjA4OlxcdFxcdGlmICghc2tiKVxcbjY2MDk6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuNjYxMDpcXHRcXG42NjExOlxcdFxcdHNrYl9yZXNlcnZlKHNrYiwgbG9jYWwtXFx1MDAzZWh3LmV4dHJhX3R4X2hlYWRyb29tICsgc2l6ZW9mKHN0cnVjdCBldGhoZHIpKTtcXG42NjEyOlxcdFxcbjY2MTM6XFx0XFx0c2tiX3B1dF9kYXRhKHNrYiwgYnVmLCBsZW4pO1xcbjY2MTQ6XFx0XFxuNjYxNTpcXHRcXHRlaGRyID0gc2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGV0aGhkcikpO1xcbjY2MTY6XFx0XFx0bWVtY3B5KGVoZHItXFx1MDAzZWhfZGVzdCwgZGVzdCwgRVRIX0FMRU4pO1xcbjY2MTc6XFx0XFxuNjYxODpcXHRcXHQvKiB3ZSBtYXkgb3ZlcnJpZGUgdGhlIFNBIGZvciBNTE8gU1RBIGxhdGVyICovXFxuNjYxOTpcXHRcXHRpZiAobGlua19pZCBcXHUwMDNjIDApIHtcXG42NjIwOlxcdFxcdFxcdGxpbmtfaWQgPSBJRUVFODAyMTFfTElOS19VTlNQRUNJRklFRDtcXG42NjIxOlxcdFxcdFxcdG1lbWNweShlaGRyLVxcdTAwM2VoX3NvdXJjZSwgc2RhdGEtXFx1MDAzZXZpZi5hZGRyLCBFVEhfQUxFTik7XFxuNjYyMjpcXHRcXHR9IGVsc2Uge1xcbjY2MjM6XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mO1xcbjY2MjQ6XFx0XFxuNjYyNTpcXHRcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuNjYyNjpcXHRcXHRcXHRsaW5rX2NvbmYgPSByY3VfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZXZpZi5saW5rX2NvbmZbbGlua19pZF0pO1xcbjY2Mjc6XFx0XFx0XFx0aWYgKCFsaW5rX2NvbmYpIHtcXG42NjI4OlxcdFxcdFxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG42NjI5OlxcdFxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjY2MzA6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9MSU5LO1xcbjY2MzE6XFx0XFx0XFx0fVxcbjY2MzI6XFx0XFx0XFx0bWVtY3B5KGVoZHItXFx1MDAzZWhfc291cmNlLCBsaW5rX2NvbmYtXFx1MDAzZWFkZHIsIEVUSF9BTEVOKTtcXG42NjMzOlxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjY2MzQ6XFx0XFx0fVxcbjY2MzU6XFx0XFxuNjYzNjpcXHRcXHRlaGRyLVxcdTAwM2VoX3Byb3RvID0gcHJvdG87XFxuNjYzNzpcXHRcXG42NjM4OlxcdFxcdHNrYi1cXHUwMDNlZGV2ID0gZGV2O1xcbjY2Mzk6XFx0XFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IHByb3RvO1xcbjY2NDA6XFx0XFx0c2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNrYik7XFxuNjY0MTpcXHRcXHRza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO1xcbjY2NDI6XFx0XFxuNjY0MzpcXHRcXHQvKiB1cGRhdGUgUW9TIGhlYWRlciB0byBwcmlvcml0aXplIGNvbnRyb2wgcG9ydCBmcmFtZXMgaWYgcG9zc2libGUsXFxuNjY0NDpcXHRcXHQgKiBwcmlvcml0aXphdGlvbiBhbHNvIGhhcHBlbnMgZm9yIGNvbnRyb2wgcG9ydCBmcmFtZXMgc2VuZCBvdmVyXFxuNjY0NTpcXHRcXHQgKiBBRl9QQUNLRVRcXG42NjQ2OlxcdFxcdCAqL1xcbjY2NDc6XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbjY2NDg6XFx0XFx0ZXJyID0gaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc2RhdGEsIHNrYiwgXFx1MDAyNnN0YSk7XFxuNjY0OTpcXHRcXHRpZiAoZXJyKSB7XFxuNjY1MDpcXHRcXHRcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuNjY1MTpcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG42NjUyOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuNjY1MzpcXHRcXHR9XFxuNjY1NDpcXHRcXG42NjU1OlxcdFxcdGdyb3VwX2FkZHJlc3NlZCA9IElTX0VSUihzdGEpO1xcbjY2NTY6XFx0XFx0aWYgKElTX0VSUihzdGEpKVxcbjY2NTc6XFx0XFx0XFx0c3RhID0gTlVMTDtcXG42NjU4OlxcdFxcbjY2NTk6XFx0XFx0c2tiX3NldF9xdWV1ZV9tYXBwaW5nKHNrYiwgaWVlZTgwMjExX3NlbGVjdF9xdWV1ZShzZGF0YSwgc3RhLCBza2IpKTtcXG42NjYwOlxcdFxcbjY2NjE6XFx0XFx0LypcXG42NjYyOlxcdFxcdCAqIGZvciBNTE8gU1RBLCB0aGUgU0Egc2hvdWxkIGJlIHRoZSBBUCBNTEQgYWRkcmVzcywgYnV0XFxuNjY2MzpcXHRcXHQgKiB0aGUgbGluayBJRCBoYXMgYmVlbiBzZWxlY3RlZCBhbHJlYWR5XFxuNjY2NDpcXHRcXHQgKi9cXG42NjY1OlxcdFxcdGlmIChzdGEgXFx1MDAyNlxcdTAwMjYgc3RhLVxcdTAwM2VzdGEubWxvKVxcbjY2NjY6XFx0XFx0XFx0bWVtY3B5KGVoZHItXFx1MDAzZWhfc291cmNlLCBzZGF0YS1cXHUwMDNldmlmLmFkZHIsIEVUSF9BTEVOKTtcXG42NjY3OlxcdFxcbjY2Njg6XFx0XFx0aW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcXG42NjY5OlxcdFxcdG1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6NDAuODg3NzgxMjAzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NjU1MjU1ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIGhhcyBrZXllZCBpbiBvbiB0aGUgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L21hYzgwMjExL3R4LmNgLiBJIGNhbiBzZWUgaW1tZWRpYXRlbHkgdGhhdCB0aGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGFzIGl0J3MgcGFydCBvZiB0aGUgY29yZSBtYWM4MDIxMSBzdGFjay4gVGhlIGVudHJ5IHBvaW50IGZyb20gdXNlcnNwYWNlIGlzIHRocm91Z2ggbmw4MDIxMSwgc3BlY2lmaWNhbGx5IHRyaWdnZXJlZCBieSB0aGUgYE5MODAyMTFfQ01EX0NPTlRST0xfUE9SVF9GUkFNRWAgY29tbWFuZCwgd2hpY2ggdGhlbiBjYWxscyBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLCB3aGljaCBpbiB0dXJuIGxlYWRzIHRvIGByZGV2X3R4X2NvbnRyb2xfcG9ydGAgYW5kIHVsdGltYXRlbHkgdG8gb3VyIHRhcmdldCwgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLlxuXG5UaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGVzdGFibGlzaGVzIHJlYWNoYWJpbGl0eSAtIHVzZXJzcGFjZSBhY2Nlc3MgaXMgYSBjcml0aWNhbCB2ZWN0b3IuIFRoZSBmYWN0IHRoYXQgaXQncyB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aXRoIG1hYzgwMjExLCBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGlzIGFub3RoZXIgYmlnIHBsdXMsIGFzIGl0IG1ha2VzIGl0IG11Y2ggZWFzaWVyIHRvIHRlc3QuXG5cblNvLCBsZXQncyByZXZpZXc6IHJlYWNoYWJsZT8gWWVzLiBUb3VjaGVzIGNvcmUgbmV0d29ya2luZyBjb2RlPyBZZXMuIERlZmluaXRlbHkgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhpcyBpbml0aWFsIGFuYWx5c2lzLlxuXG5Ob3csIHRvIG1ha2Ugc3VyZSBJIGNhbiBhY3R1YWxseSBidWlsZCBhIGZ1enplciBmb3IgdGhpcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBuZWNlc3NhcnkgS2NvbmZpZyBvcHRpb25zLiBNeSBwcmVsaW1pbmFyeSBsaXN0IGxvb2tzIGxpa2UgdGhpczogYENGRzgwMjExYCwgYE1BQzgwMjExYCwgYE1BQzgwMjExX0hXU0lNYCwgYW5kIHBvc3NpYmx5IGBOTDgwMjExX1RFU1RNT0RFYC4gVGltZSB0byBkaXZlIGludG8gYG5ldC9tYWM4MDIxMS9LY29uZmlnYCBhbmQgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBHb3R0YSBiZSBjZXJ0YWluIEkgY2FuIGNvbmZpZ3VyZSBhIGJ1aWxkIHRoYXQgaW5jbHVkZXMgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTMyMiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjQ0LjM1MzMwODgxOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcyMDk2MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXFx0Ym9vbCBcXFwiZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cXHRib29sIFxcXCJjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cXHRib29sIFxcXCJyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVxcdGJvb2wgXFxcImFsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVxcdHN0cmluZyBcXFwiYWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cXHRib29sIFxcXCJjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cXHRib29sIFxcXCJlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJzdXBwb3J0IENSREFcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6NDQuNDQwNTI2Mjg1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwNzUxNDE1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgQ0ZHODAyMTFgIERlcGVuZGVuY3kgVHJlZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIG1ldGljdWxvdXNseSB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYENGRzgwMjExYC4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgcG90ZW50aWFsIGNvbXBsZXhpdGllcyBoZXJlLCBnaXZlbiB0aGUgZXZvbHV0aW9uIG9mIHRoZSB3aXJlbGVzcyBzdGFjay4gSSdtIHRoaW5raW5nIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyoqOiBJdOKAmXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIga2VybmVsIGNvbmZpZ3VyYXRpb25zIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBpbmNsdXNpb24gb2YgYENGRzgwMjExYC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgc3BlY2lmaWMgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlcywgZHJpdmVycywgb3IgZ2VuZXJhbCB3aXJlbGVzcyBmZWF0dXJlIHRvZ2dsZXM/XG4qICAgKipNb2R1bGUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzKio6IEknbSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IHZhcmlvdXMgd2lyZWxlc3MgbW9kdWxlcyAoZS5nLiwgc3BlY2lmaWMgcmFkaW8gZmlybXdhcmUgc3VwcG9ydCkgcmVseSBvbiB0aGlzIGZvdW5kYXRpb25hbCBsYXllci4gQSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGlzIGVzc2VudGlhbC5cbiogICAqKkJ1aWxkLXRpbWUgaW1wbGljYXRpb25zKio6IEknbGwgYWxzbyBiZSBtaW5kZnVsIG9mIGhvdyB0aGVzZSBkZXBlbmRlbmNpZXMgYWZmZWN0IHRoZSBvdmVyYWxsIGtlcm5lbCBidWlsZCBwcm9jZXNzLCBmcm9tIGNvbXBpbGF0aW9uIHRpbWUgdG8gaW1hZ2Ugc2l6ZS5cbiogICAqKlBvdGVudGlhbCBjb25mbGljdHMqKjogSSB3YW50IHRvIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIGJldHdlZW4gYENGRzgwMjExYCBhbmQgb3RoZXIgd2lyZWxlc3Mgc3Vic3lzdGVtcyAoZS5nLiwgZGVwcmVjYXRlZCBvciBsZWdhY3kgd2lyZWxlc3Mgc3RhY2tzKS5cbiogICAqKkRvY3VtZW50YXRpb24gYW5kIGNvbW1lbnRhcnkqKjogSSBrbm93IGhvdyBoZWxwZnVsIGNvbW1lbnRzIGNhbiBiZSwgYW5kIGhvdyB3ZWxsLW1haW50YWluZWQgS2NvbmZpZyBmaWxlcyBjYW4gbWFrZSB0aGUgZGlmZmVyZW5jZSFcblxuVGhpcyBkZWVwIGRpdmUgaXMganVzdCBhbm90aGVyIGRheSBhdCB0aGUgb2ZmaWNlIHRvIGVuc3VyZSBhIHNvbGlkIGdyYXNwIG9uIGhvdyB0aGlzIGNvcmUgY29tcG9uZW50IGlzIHVzZWQsIGFuZCB0byBmb3Jlc2VlIGFueSBmdXR1cmUgaW50ZWdyYXRpb24gY2hhbGxlbmdlcy4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgYXNzdW1wdGlvbnMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTM1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6NDcuNTE1NjcxNDEzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxNTpcXHRcXHRib29sXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBDRkc4MDIxMVxcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuICAxOTpcXHRcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuICAyMDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAyMTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDIyOlxcdFxcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxcbiAgMjM6XFx0XFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJ3RcXG4gIDI0OlxcdFxcdCMgKHRoaXMgaXMgaGVyZSByYXRoZXIgdGhhbiBiZWxvdyB0byBhbGxvdyBpdCB0byBiZSBhIG1vZHVsZSlcXG4gIDI1OlxcdFxcdHNlbGVjdCBDUllQVE9fU0hBMjU2IGlmIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBjZmc4MDIxMSBpcyB0aGUgTGludXggd2lyZWxlc3MgTEFOICg4MDIuMTEpIGNvbmZpZ3VyYXRpb24gQVBJLlxcbiAgMjg6XFx0XFx0ICBFbmFibGUgdGhpcyBpZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGRldmljZS5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWZlciB0byBkb2N1bWVudGF0aW9uIG9uIHRoZSB3aXJlbGVzcyB3aWtpOlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIFdoZW4gYnVpbHQgYXMgYSBtb2R1bGUgaXQgd2lsbCBiZSBjYWxsZWQgY2ZnODAyMTEuXFxuICAzNTpcXHRcXG4gIDM2OlxcdGlmIENGRzgwMjExXFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxuICAzOTpcXHRcXHRib29sIFxcXCJubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmRcXFwiXFxuICA0MDpcXHRcXHRoZWxwXFxuICA0MTpcXHRcXHQgIFRoZSBubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmQgaGVscHMgaW1wbGVtZW50aW5nIHRoaW5ncyBsaWtlXFxuICA0MjpcXHRcXHQgIGZhY3RvcnkgY2FsaWJyYXRpb24gb3IgdmFsaWRhdGlvbiB0b29scyBmb3Igd2lyZWxlc3MgY2hpcHMuXFxuICA0MzpcXHRcXG4gIDQ0OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIE9OTFkgZm9yIGtlcm5lbHMgdGhhdCBhcmUgc3BlY2lmaWNhbGx5XFxuICA0NTpcXHRcXHQgIGJ1aWx0IGZvciBzdWNoIHB1cnBvc2VzLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRcXHQgIERlYnVnZ2luZyB0b29scyB0aGF0IGFyZSBzdXBwb3NlZCB0byBlbmQgdXAgaW4gdGhlIGhhbmRzIG9mXFxuICA0ODpcXHRcXHQgIHVzZXJzIHNob3VsZCBiZXR0ZXIgYmUgaW1wbGVtZW50ZWQgd2l0aCBkZWJ1Z2ZzLlxcbiAgNDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjQ3LjUxNTc3NTk2NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NzEzODIxNjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAgTW9kaWZpY2F0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgYEZvY3VzU3ltYm9sc2AuIEFoLCB0aGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBJIHNlZSBpdCdzIGJlZW4gbW9kaWZpZWQuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUsIGxldCdzIGlkZW50aWZ5IHRoZSBlbnRyeSBwb2ludHMuIExvb2tzIGxpa2UgYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YCBhbmQsIG9mIGNvdXJzZSwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGl0c2VsZiwgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVzZSB0d28gYXJlIHRoZSByZWxldmFudCB0b3VjaHBvaW50cyBvciBpZiB0aGVyZSBhcmUgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMgaW4gYG5ldC9tYWM4MDIxMS90eC5jYCB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4gQWxyaWdodCwgbG9va3MgbGlrZSBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAgaXMgdGhlIGNvcmUgc3ltYm9sLCBhbmQgYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YCBwcm92aWRlcyB0aGUgbmV0bGluayBpbnRlcmZhY2UuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIGBNQUM4MDIxMWAsIG9idmlvdXNseSwgYENGRzgwMjExYCwgYW5kIGFsc28gYE1BQzgwMjExX0hXU0lNYCDigJMgdGhhdCdzIGNydWNpYWwuIEknbGwgaGF2ZSB0byBrZWVwIHRoaXMgaW4gbWluZCBhcyBJIHBlcmZvcm0gYSBkZWVwZXIgZGl2ZS5cblxuT2theSwgc2FuaXR5IGNoZWNrIHRpbWUuIFdlIGhhdmUgYEVuYWJsZUNvbmZpZ3NgOiBgW1wiTUFDODAyMTFcIiwgXCJDRkc4MDIxMVwiLCBcIk1BQzgwMjExX0hXU0lNXCJdYCwgbWF0Y2hpbmcgd2hhdCBJIGV4cGVjdGVkLiBUaGUgYEZvY3VzU3ltYm9sc2A6IGBbXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCIsIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIl1gIOKAkyBwZXJmZWN0LiBBbmQgdGhlIGtleSBpcyB0aGF0IGl0J3MgYFdvcnRoRnV6emluZzogdHJ1ZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggYWRkcmVzc2VzIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgYW5kIHRoZSBoYW5kbGluZyBvZiBib3R0b20gaGFsZiBkaXNhYmxpbmcgd2hlbiB1cGRhdGluZyBzb2Z0d2FyZSBuZXR3b3JrIHN0YXRpc3RpY3MgKmJlZm9yZSogdHJhbnNtaXR0aW5nIGNvbnRyb2wgcG9ydCBmcmFtZXMsIHdoaWNoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGBubDgwMjExYCB3aGVuIHVzaW5nIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVycyBsaWtlIG1hYzgwMjExX2h3c2ltLiBCaW5nby4gVGhpcyBpcyBkZWZpbml0ZWx5IGZ1enotd29ydGh5LCBnaXZlbiB0aGUgY29udGV4dC5cblxuVGltZSB0byBsb2cgdGhlIHJlc3VsdHMuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4NTQsIk91dHB1dFRva2VucyI6MjA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDc6NTIuMjI5NjAwMTlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg2MjQ0ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCIsXG4gICAgXCJubDgwMjExX3R4X2NvbnRyb2xfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQgaW4gbmV0L21hYzgwMjExL3R4LmMgYnkgbW92aW5nIGxvY2FsX2JoX2Rpc2FibGUoKSB0byBwcm90ZWN0IHRoZSBwZXItQ1BVIFRYIHN0YXRpc3RpY3MgdXBkYXRlIChkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKS4gVGhpcyBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmw4MDIxMSAoTkw4MDIxMV9DTURfQ09OVFJPTF9QT1JUX0ZSQU1FKSBhbmQgY2FuIGJlIGV4ZWN1dGVkIGFuZCBmdXp6ZWQgaW4gc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudHMgd2l0aCBzaW11bGF0ZWQgd2lyZWxlc3MgaGFyZHdhcmUgbGlrZSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydFwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0IGluIG5ldC9tYWM4MDIxMS90eC5jIGJ5IG1vdmluZyBsb2NhbF9iaF9kaXNhYmxlKCkgdG8gcHJvdGVjdCB0aGUgcGVyLUNQVSBUWCBzdGF0aXN0aWNzIHVwZGF0ZSAoZGV2X3N3X25ldHN0YXRzX3R4X2FkZCkuIFRoaXMgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5sODAyMTEgKE5MODAyMTFfQ01EX0NPTlRST0xfUE9SVF9GUkFNRSkgYW5kIGNhbiBiZSBleGVjdXRlZCBhbmQgZnV6emVkIGluIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnRzIHdpdGggc2ltdWxhdGVkIHdpcmVsZXNzIGhhcmR3YXJlIGxpa2UgbWFjODAyMTFfaHdzaW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjUyLjM0ODIzMDM5MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM0MTk4MTUyMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0Nzo1Mi4zNDg2NDI5MTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozMzQxOTM5NjgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgYGxvY2FsX2JoX2Rpc2FibGUoKWAgaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoKWAgdG8gY292ZXIgYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAgYW5kIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KClgLiBUaGlzIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSBmaXggZW5zdXJpbmcgYm90dG9tIGhhbHZlcyBhcmUgZGlzYWJsZWQgZHVyaW5nIHBlci1DUFUgc3RhdGlzdGljIHVwZGF0ZXMgdG8gcHJldmVudCBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBzb2Z0aXJxcy5cXG5cXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBtZW1vcnkgYWxsb2NhdGlvbnMsIGluaXRpYWxpemF0aW9uIGxvZ2ljLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBBbnkgcG90ZW50aWFsIGxvY2tpbmcgYnVncyBvciBjb25jdXJyZW5jeSB2aW9sYXRpb25zIGFyZSBjb3ZlcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2ZmI1MGEyNzViNDAzNWFkMjFmYzlhZDc1ZjQzODdlZTY4OWU5MjdjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDQ6NDc6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCA3NGFiMjc1MzQwNzZmLi43YjFhM2M2M2U1ZGM1IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbisrKyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNjY4NywxMCArNjY4Nyw5IEBAIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuK1x0bG9jYWxfYmhfZGlzYWJsZSgpO1xuIFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pO1xuIFx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgc2tiLVx1MDAzZWxlbik7XG4tXG4tXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gXHRpZWVlODAyMTFfeG1pdChzZGF0YSwgc3RhLCBza2IpO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ3OjUyLjM0ODY0MzYzMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzIxOTIyMzAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBtYWM4MDIxMSBUWCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgcGF0Y2ggaXMgaW4gYG5ldC9tYWM4MDIxMS90eC5jYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgdHJhbnNtaXNzaW9uIHBhdGguIE5vdywgbGV0IG1lIHNjcnV0aW5pemUgdGhlIGNvZGUgY2hhbmdlcy4gQWgsIEkgc2VlIGEgc21hbGwgYnV0IHBvdGVudGlhbGx5IHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbiB3aXRoaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLlxuXG5TcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgYGxvY2FsX2JoX2Rpc2FibGUoKWAgaGFzIGJlZW4gbW92ZWQgKmJlZm9yZSogdGhlIGNhbGxzIHRvIGBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkYCBhbmQgYGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHhgLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYGxvY2FsX2JoX2VuYWJsZSgpYCBpcyBub3cgbG9jYXRlZCBhZnRlciBgaWVlZTgwMjExX3htaXQoKWAuIFByZXZpb3VzbHksIGBsb2NhbF9iaF9kaXNhYmxlKClgIGFuZCBgbG9jYWxfYmhfZW5hYmxlKClgIHdlcmUgd3JhcHBpbmcgb25seSB0aGUgY2FsbCB0byBgaWVlZTgwMjExX3htaXQoKWAuIFRoaXMgY2hhbmdlcyB0aGUgY3JpdGljYWwgc2VjdGlvbiB3aGVyZSBpbnRlcnJ1cHRzIGFyZSBtYXNrZWQsIGV4dGVuZGluZyBpdCB0byBhbHNvIGNvdmVyIHVwZGF0aW5nIHRoZSBkZXZpY2Ugc3RhdGlzdGljcyBhbmQgdGhlIExFRCB0cmlnZ2VyLlxuXG5Ob3csIHdoeSBpcyB0aGlzIGJlaW5nIGRvbmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IGNvdWxkIGJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0byBhdm9pZCBjb250ZW50aW9uLCBvciBtYXliZSB0byBlbnN1cmUgZGF0YSBjb25zaXN0ZW5jeSBkdXJpbmcgdGhlc2UgY3JpdGljYWwgdXBkYXRlcy4gTGV0J3MgcHVsbCB1cCB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBgbmV0L21hYzgwMjExL3R4LmNgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIHJhdGlvbmFsZSBtb3JlIGZ1bGx5LiBMZXQncyBzZWUgaWYgSSBjYW4gZmluZCBhbiBleHBsYW5hdGlvbiB3aXRoIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhvc2Ugc3RhdHMgdXBkYXRlcywgdGhlIExFRCB0cmlnZ2VyLCBhbmQgdGhlIHRyYW5zbWlzc2lvbiBmdW5jdGlvbiB3aXRoIHRoZSBjdXJyZW50IGludGVycnVwdCBtb2RlbC4gU29tZXRoaW5nJ3MgZHJpdmluZyB0aGlzIG1vdmU7IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBcIndoeVwiIGFuZCBpdHMgaW1wYWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjA5LjU2Nzg3MTA0N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTgzNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxMS90eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY2NzUsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjY2NzU6XFx0XFx0XFx0aWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llKTtcXG42Njc2OlxcdFxcbjY2Nzc6XFx0XFx0c2tiID0gaWVlZTgwMjExX2J1aWxkX2hkcihzZGF0YSwgc2tiLCBzdGEpO1xcbjY2Nzg6XFx0XFx0aWYgKElTX0VSUihza2IpKSB7XFxuNjY3OTpcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG42NjgwOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHNrYik7XFxuNjY4MTpcXHRcXHR9XFxuNjY4MjpcXHRcXG42NjgzOlxcdFxcdGlmIChsaW5rX2lkICE9IHUzMl9nZXRfYml0cyhpbmZvLVxcdTAwM2Vjb250cm9sLmZsYWdzLFxcbjY2ODQ6XFx0XFx0XFx0XFx0XFx0ICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKSkge1xcbjY2ODU6XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXFx1MDAyNmxvY2FsLVxcdTAwM2Vodywgc2tiKTtcXG42Njg2OlxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbjY2ODc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuNjY4ODpcXHRcXHR9XFxuNjY4OTpcXHRcXG42NjkwOlxcdFxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG42NjkxOlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuNjY5MjpcXHRcXHRpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXFx1MDAzZWxlbik7XFxuNjY5MzpcXHRcXHRpZWVlODAyMTFfeG1pdChzZGF0YSwgc3RhLCBza2IpO1xcbjY2OTQ6XFx0XFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuNjY5NTpcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG42Njk2OlxcdFxcbjY2OTc6XFx0XFx0cmV0dXJuIDA7XFxuNjY5ODpcXHR9XFxuNjY5OTpcXHRcXG42NzAwOlxcdGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuNjcwMTpcXHRcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxcbjY3MDI6XFx0e1xcbjY3MDM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbjY3MDQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuNjcwNTpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbjY3MDY6XFx0XFxuNjcwNzpcXHRcXHRza2IgPSBkZXZfYWxsb2Nfc2tiKGxvY2FsLVxcdTAwM2Vody5leHRyYV90eF9oZWFkcm9vbSArIGxlbiArXFxuNjcwODpcXHRcXHRcXHRcXHQgICAgMzAgKyAvKiBoZWFkZXIgc2l6ZSAqL1xcbjY3MDk6XFx0XFx0XFx0XFx0ICAgIDE4KTsgLyogMTFzIGhlYWRlciBzaXplICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjA5LjU3MDQ1ODk0NloiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDMzMjY3NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGF0IGNvZGUgc25pcHBldDpcblxuKipEaXZpbmcgaW50byB0aGUgVGltaW5nIG9mIGBsb2NhbF9iaF9kaXNhYmxlKClgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB3b25kZXJpbmcgd2h5IGBsb2NhbF9iaF9kaXNhYmxlKClgIHdhcyBtb3ZlZCB0byBiZSAqYmVmb3JlKiB0aGF0IGNhbGwgdG8gYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGVyZSdzIGEgcmVhc29uLCBhbmQgYSBnb29kIG9uZSwgZm9yIHRoYXQgcGxhY2VtZW50LlxuXG5UaGUgYGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXHUwMDNlbGVuKWAgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBJdCdzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRob3NlIHBlci1DUFUgbmV0d29yayBzdGF0aXN0aWNzLiBBbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBpdCBiZWluZyBjYWxsZWQgd2hlbiBpdCBpcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZCgpYCB0byBiZSBzdXJlLi4uIEkgc3VzcGVjdCBpdCdzIGFib3V0IHN5bmNocm9uaXphdGlvbiBvciBhdG9taWNpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjExLjYwMzczMDE1MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1MDYxMTEzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZfc3dfbmV0c3RhdHNfdHhfYWRkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9uZXRfZGV2aWNlLnJzdD0xNDE9c3RydWN0IHBjcHVfbHN0YXRzX19wZXJjcHUqICAgICAgICAgbHN0YXRzICAgICAgICAgICAgICAgICAgICAgIHJlYWRfbW9zdGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfbHN0YXRzX2FkZCgpXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0OjE0MjpzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0c19fcGVyY3B1KiAgICB0c3RhdHMgICAgICAgICAgICAgICAgICAgICAgcmVhZF9tb3N0bHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9zd19uZXRzdGF0c190eF9hZGQoKVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9uZXRfZGV2aWNlLnJzdC0xNDMtc3RydWN0IHBjcHVfZHN0YXRzX19wZXJjcHUqICAgICAgICAgZHN0YXRzXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pcG9pYl90eC5jPTExND1zdGF0aWMgdm9pZCBoZmkxX2lwb2liX2ZyZWVfdHgoc3RydWN0IGlwb2liX3R4cmVxICp0eCwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL2lwb2liX3R4LmMtMTE4LVxcdGlmIChsaWtlbHkoIXR4LVxcdTAwM2VzZG1hX3N0YXR1cykpIHtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pcG9pYl90eC5jOjExOTpcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHByaXYtXFx1MDAzZW5ldGRldiwgMSwgdHgtXFx1MDAzZXNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvaGZpMS9pcG9pYl90eC5jLTEyMC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX3R4cnguYz0xMzA9bmV0ZGV2X3R4X3QgaGJnX25ldF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfdHhyeC5jLTE3MC1cXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2cmluZy1cXHUwMDNlbnR1LCBoYmdfcXVldWVfbmV4dF9wcnQobnR1LCByaW5nKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX3R4cnguYzoxNzE6XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfdHhyeC5jLTE3Mi1cXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGl0ZXgvbGl0ZXhfbGl0ZWV0aC5jPTE1ND1zdGF0aWMgbmV0ZGV2X3R4X3QgbGl0ZWV0aF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9saXRleC9saXRleF9saXRlZXRoLmMtMTg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xpdGV4L2xpdGV4X2xpdGVldGguYzoxODc6XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZXRkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9saXRleC9saXRleF9saXRlZXRoLmMtMTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmM9NDg3ND1zdGF0aWMgdm9pZCBydGxfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bDgxNjlfcHJpdmF0ZSAqdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYy00OTAxLVxcdGlmICh0cC1cXHUwMDNlZGlydHlfdHggIT0gZGlydHlfdHgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5X21haW4uYzo0OTAyOlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCBwa3RzX2NvbXBsLCBieXRlc19jb21wbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9yODE2OV9tYWluLmMtNDkwMy1cXHRcXHRXUklURV9PTkNFKHRwLVxcdTAwM2VkaXJ0eV90eCwgZGlydHlfdHgpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MjY1PXN0YXRpYyBpbnQgdHhfaGFuZGxlcihzdHJ1Y3QgcnRhc2VfcmluZyAqcmluZywgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTMwNS1cXHRpZiAocmluZy1cXHUwMDNlZGlydHlfaWR4ICE9IGRpcnR5X3R4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MzA2OlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCBwa3RzX2NvbXBsLCBieXRlc19jb21wbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtMzA3LVxcdFxcdFdSSVRFX09OQ0UocmluZy1cXHUwMDNlZGlydHlfaWR4LCBkaXJ0eV90eCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTE0NTQ9c3RhdGljIGludCBhbTY1X2Nwc3dfbnVzc190eF9jb21wbF9wYWNrZXRzKHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTE1MTItXFx0XFx0YW02NV9jcHN3X251c3NfeG1pdF9mcmVlKHR4X2NobiwgZGVzY190eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYzoxNTEzOlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgcGt0X2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0xNTE0LVxcdFxcdGlmICghc2luZ2xlX3BvcnQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jPTIxOT1pbnQgZW1hY190eF9jb21wbGV0ZV9wYWNrZXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgaW50IGNobixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jLTI1Ni1cXHRcXHRcXHRza2IgPSBzd2RhdGEtXFx1MDAzZWRhdGEuc2tiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jOjI1NzpcXHRcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHNrYi1cXHUwMDNlZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMtMjU4LVxcdFxcdFxcdHRvdGFsX2J5dGVzICs9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMtMjYyLVxcdFxcdFxcdHhkcGYgPSBzd2RhdGEtXFx1MDAzZWRhdGEueGRwZjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYzoyNjM6XFx0XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZGV2LCAxLCB4ZHBmLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX2NvbW1vbi5jLTI2NC1cXHRcXHRcXHR0b3RhbF9ieXRlcyArPSB4ZHBmLVxcdTAwM2VsZW47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19jb21tb24uYy0yNjgtXFx0XFx0XFx0cGt0X2xlbiA9IGNwcGk1X2hkZXNjX2dldF9wa3RsZW4oZGVzY190eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmM6MjY5OlxcdFxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQobmRldiwgMSwgcGt0X2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfY29tbW9uLmMtMjcwLVxcdFxcdFxcdHhza19mcmFtZXNfZG9uZSsrO1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjc2VjLmM9NTM4PXN0YXRpYyB2b2lkIGNvdW50X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCByZXQsIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9tYWNzZWMuYy01NDAtXFx0aWYgKGxpa2VseShyZXQgPT0gTkVUX1hNSVRfU1VDQ0VTUyB8fCByZXQgPT0gTkVUX1hNSVRfQ04pKVxcbmRyaXZlcnMvbmV0L21hY3NlYy5jOjU0MTpcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKGRldiwgMSwgbGVuKTtcXG5kcml2ZXJzL25ldC9tYWNzZWMuYy01NDItfVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0a2l0LmM9OTI9c3RhdGljIG5ldGRldl90eF90IG5ldGtpdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYy0xMjEtXFx0XFx0aWYgKGxpa2VseShfX25ldGlmX3J4KHNrYikgPT0gTkVUX1JYX1NVQ0NFU1MpKSB7XFxuZHJpdmVycy9uZXQvbmV0a2l0LmM6MTIyOlxcdFxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW4pO1xcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTEyMy1cXHRcXHRcXHRkZXZfc3dfbmV0c3RhdHNfcnhfYWRkKHBlZXIsIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRraXQuYy0xMjgtXFx0Y2FzZSBORVRLSVRfUkVESVJFQ1Q6XFxuZHJpdmVycy9uZXQvbmV0a2l0LmM6MTI5OlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW4pO1xcbmRyaXZlcnMvbmV0L25ldGtpdC5jLTEzMC1cXHRcXHRza2JfZG9fcmVkaXJlY3Qoc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTE3Nzc9cHBwX3ByZXBhcmVfdHhfc2tiKHN0cnVjdCBwcHAgKnBwcCwgc3RydWN0IHNrX2J1ZmYgKipwc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTgxMy1cXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzoxODE0OlxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXFx1MDAzZWxlbiAtIFBQUF9QUk9UT19MRU4pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTE4MTUtXFxuLS1cXG5kcml2ZXJzL25ldC90dW4uYz0yMDk3PXN0YXRpYyBzc2l6ZV90IHR1bl9wdXRfdXNlcl94ZHAoc3RydWN0IHR1bl9zdHJ1Y3QgKnR1bixcXG4tLVxcbmRyaXZlcnMvbmV0L3R1bi5jLTIxMTctXFx0cHJlZW1wdF9kaXNhYmxlKCk7XFxuZHJpdmVycy9uZXQvdHVuLmM6MjExODpcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHR1bi1cXHUwMDNlZGV2LCAxLCByZXQpO1xcbmRyaXZlcnMvbmV0L3R1bi5jLTIxMTktXFx0cHJlZW1wdF9lbmFibGUoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3R1bi5jPTIxMjU9c3RhdGljIHNzaXplX3QgdHVuX3B1dF91c2VyKHN0cnVjdCB0dW5fc3RydWN0ICp0dW4sXFxuLS1cXG5kcml2ZXJzL25ldC90dW4uYy0yMjAyLVxcdHByZWVtcHRfZGlzYWJsZSgpO1xcbmRyaXZlcnMvbmV0L3R1bi5jOjIyMDM6XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZCh0dW4tXFx1MDAzZWRldiwgMSwgc2tiLVxcdTAwM2VsZW4gKyB2bGFuX2hsZW4pO1xcbmRyaXZlcnMvbmV0L3R1bi5jLTIyMDQtXFx0cHJlZW1wdF9lbmFibGUoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jPTk4PXN0YXRpYyBuZXRkZXZfdHhfdCBxbWltdXhfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTEyLVxcdGlmIChsaWtlbHkocmV0ID09IE5FVF9YTUlUX1NVQ0NFU1MgfHwgcmV0ID09IE5FVF9YTUlUX0NOKSlcXG5kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYzoxMTM6XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIGxlbik7XFxuZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMtMTE0LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3ZldGguYz0zNDg9c3RhdGljIG5ldGRldl90eF90IHZldGhfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdmV0aC5jLTM4My1cXHRcXHRpZiAoIXVzZV9uYXBpKVxcbmRyaXZlcnMvbmV0L3ZldGguYzozODQ6XFx0XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIGxlbmd0aCk7XFxuZHJpdmVycy9uZXQvdmV0aC5jLTM4NS1cXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jb3JlLmM9OTA9cXRuZl9uZXRkZXZfaGFyZF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY29yZS5jLTEyOC1cXHRcXHRxdG5mX3BhY2tldF9zZW5kX2hpX3ByaShza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NvcmUuYzoxMjk6XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChuZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY29yZS5jLTEzMC1cXHRcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS9wZWFybF9wY2llLmM9NDY0PXN0YXRpYyB2b2lkIHF0bmZfcGVhcmxfZGF0YV90eF9yZWNsYWltKHN0cnVjdCBxdG5mX3BjaWVfcGVhcmxfc3RhdGUgKnBzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS9wZWFybF9wY2llLmMtNDkxLVxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWRldikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvcGVhcmxfcGNpZS5jOjQ5MjpcXHRcXHRcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHNrYi1cXHUwMDNlZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS9wZWFybF9wY2llLmMtNDkzLVxcdFxcdFxcdFxcdGlmICh1bmxpa2VseShwcml2LVxcdTAwM2V0eF9zdG9wcGVkKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS90b3Bhel9wY2llLmM9MzkxPXN0YXRpYyB2b2lkIHF0bmZfdG9wYXpfZGF0YV90eF9yZWNsYWltKHN0cnVjdCBxdG5mX3BjaWVfdG9wYXpfc3RhdGUgKnRzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS90b3Bhel9wY2llLmMtNDIwLVxcdFxcdFxcdGlmIChza2ItXFx1MDAzZWRldikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL3BjaWUvdG9wYXpfcGNpZS5jOjQyMTpcXHRcXHRcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHNrYi1cXHUwMDNlZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvcGNpZS90b3Bhel9wY2llLmMtNDIyLVxcdFxcdFxcdFxcdGlmICh1bmxpa2VseShwcml2LVxcdTAwM2V0eF9zdG9wcGVkKSkge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0zMDcyPXN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfc3dfbmV0c3RhdHNfcnhfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBsZW4pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTMwODEtXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDozMDgyOnN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zMDgzLVxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IHBhY2tldHMsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX2RldmljZS5jPTMwPW5ldGRldl90eF90IGJyX2Rldl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvYnJpZGdlL2JyX2RldmljZS5jLTU4LVxcbm5ldC9icmlkZ2UvYnJfZGV2aWNlLmM6NTk6XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvYnJpZGdlL2JyX2RldmljZS5jLTYwLVxcbi0tXFxubmV0L2RzYS91c2VyLmM9OTE0PXN0YXRpYyBuZXRkZXZfdHhfdCBkc2FfdXNlcl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvZHNhL3VzZXIuYy05MTgtXFxubmV0L2RzYS91c2VyLmM6OTE5OlxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxubmV0L2RzYS91c2VyLmMtOTIwLVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9MzYzOD1pZWVlODAyMTFfeG1pdF9mYXN0X2ZpbmlzaChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTM2NTQtXFxubmV0L21hYzgwMjExL3R4LmM6MzY1NTpcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKHNrYi1cXHUwMDNlZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL3R4LmMtMzY1Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ0MDU9dm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00NDg4LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQ0ODk6XFx0XFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbWFjODAyMTEvdHguYy00NDkwLVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDc1MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDgxNi1cXG5uZXQvbWFjODAyMTEvdHguYzo0ODE3OlxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCBza2JzLCBsZW4pO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQ4MTgtXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz02NTcxPWludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02NjkwLVxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG5uZXQvbWFjODAyMTEvdHguYzo2NjkxOlxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXFx1MDAzZWxlbik7XFxubmV0L21hYzgwMjExL3R4LmMtNjY5Mi1cXHRpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXFx1MDAzZWxlbik7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmM9MzQ9aW50ZXJuYWxfZGV2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYy00NS1cXHRpZiAobGlrZWx5KCFlcnIpKVxcbm5ldC9vcGVudnN3aXRjaC92cG9ydC1pbnRlcm5hbF9kZXYuYzo0NjpcXHRcXHRkZXZfc3dfbmV0c3RhdHNfdHhfYWRkKG5ldGRldiwgMSwgbGVuKTtcXG5uZXQvb3BlbnZzd2l0Y2gvdnBvcnQtaW50ZXJuYWxfZGV2LmMtNDctXFx0ZWxzZVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jPTQyND14ZnJtaV94bWl0MihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZmxvd2kgKmZsKVxcbi0tXFxubmV0L3hmcm0veGZybV9pbnRlcmZhY2VfY29yZS5jLTUwOS1cXHRpZiAobmV0X3htaXRfZXZhbChlcnIpID09IDApIHtcXG5uZXQveGZybS94ZnJtX2ludGVyZmFjZV9jb3JlLmM6NTEwOlxcdFxcdGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBsZW5ndGgpO1xcbm5ldC94ZnJtL3hmcm1faW50ZXJmYWNlX2NvcmUuYy01MTEtXFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDQ6NDg6MTMuODU0MzQ2MzEyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1NjQyMDE3NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBEZWZpbml0aW9uOiBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBmdW5jdGlvbiBkZWZpbml0aW9uLCBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZGAuIEdpdmVuIHRoZSBuYW1lLCBJJ20gaW1tZWRpYXRlbHkgZXhwZWN0aW5nIHRoaXMgdG8gYmUgcmVsYXRlZCB0byBuZXR3b3JrIHN0YXRpc3RpY3MsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgdHJhbnNtaXNzaW9uIChUWCkgc2lkZSwgbGlrZWx5IGF0IHRoZSBkZXZpY2Ugb3Igc3dpdGNoIGxldmVsLiBUaGUgXCJhZGRcIiBzdWdnZXN0cyB0aGlzIGlzIHdoZXJlIHdlJ3JlIGluY3JlbWVudGluZyBjb3VudGVycyBvciBhZGRpbmcgZGF0YSBwb2ludHMgcmVsYXRlZCB0byB0cmFuc21pdHRlZCBuZXR3b3JrIHBhY2tldHMgb3IgYnl0ZXMuIEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQg4oCTIGlzIHRoaXMgYSBwZXItcG9ydCBjb3VudGVyLCBhIGdsb2JhbCBkZXZpY2UgY291bnRlciwgb3Igc29tZXRoaW5nIG1vcmUgbnVhbmNlZD8gV2hhdCdzIHRoZSBkYXRhIHN0cnVjdHVyZSBpdCdzIG1vZGlmeWluZz8gSXMgaXQgdGhyZWFkLXNhZmU/IFRoYXQncyB3aGF0IEknbGwgYmUgbG9va2luZyBmb3IgaW4gdGhlIGRlZmluaXRpb24gaXRzZWxmLCBvciBhdCBsZWFzdCBpbiB0aGUgc3Vycm91bmRpbmcgY29kZS4gTXkgaW5pdGlhbCBoeXBvdGhlc2lzIGlzIHRoYXQgdGhpcyBwcm9iYWJseSBleGlzdHMgd2l0aGluIGEgYnJvYWRlciBzdGF0aXN0aWNzIGZyYW1ld29yaywgcGVyaGFwcyBpbnRlZ3JhdGVkIHdpdGggYSBrZXJuZWwgbW9kdWxlIG9yIHNvbWUga2luZCBvZiBkYXRhIGNvbGxlY3Rpb24gbGF5ZXIuIEknbSBjdXJpb3VzIHRvIHNlZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgZnVuY3Rpb24sIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBzdGF0aXN0aWNhbCBkYXRhIGZsb3cgbG9va3MgbGlrZS4gVGhpcyBpcyB3aGVyZSB0aGUgZnVuIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODEwOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjE2LjQxODU2NTQ0MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzEzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAzMDgwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzMDgwOlxcdH1cXG4zMDgxOlxcdFxcbjMwODI6XFx0c3RhdGljIGlubGluZSB2b2lkIGRldl9zd19uZXRzdGF0c190eF9hZGQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4zMDgzOlxcdFxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgaW50IHBhY2tldHMsXFxuMzA4NDpcXHRcXHRcXHRcXHRcXHRcXHQgIHVuc2lnbmVkIGludCBsZW4pXFxuMzA4NTpcXHR7XFxuMzA4NjpcXHRcXHRzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0cyAqdHN0YXRzID0gdGhpc19jcHVfcHRyKGRldi1cXHUwMDNldHN0YXRzKTtcXG4zMDg3OlxcdFxcbjMwODg6XFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2dHN0YXRzLVxcdTAwM2VzeW5jcCk7XFxuMzA4OTpcXHRcXHR1NjRfc3RhdHNfYWRkKFxcdTAwMjZ0c3RhdHMtXFx1MDAzZXR4X2J5dGVzLCBsZW4pO1xcbjMwOTA6XFx0XFx0dTY0X3N0YXRzX2FkZChcXHUwMDI2dHN0YXRzLVxcdTAwM2V0eF9wYWNrZXRzLCBwYWNrZXRzKTtcXG4zMDkxOlxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZ0c3RhdHMtXFx1MDAzZXN5bmNwKTtcXG4zMDkyOlxcdH1cXG4zMDkzOlxcdFxcbjMwOTQ6XFx0c3RhdGljIGlubGluZSB2b2lkIGRldl9sc3RhdHNfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBsZW4pXFxuMzA5NTpcXHR7XFxuMzA5NjpcXHRcXHRzdHJ1Y3QgcGNwdV9sc3RhdHMgKmxzdGF0cyA9IHRoaXNfY3B1X3B0cihkZXYtXFx1MDAzZWxzdGF0cyk7XFxuMzA5NzpcXHRcXG4zMDk4OlxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNmxzdGF0cy1cXHUwMDNlc3luY3ApO1xcbjMwOTk6XFx0XFx0dTY0X3N0YXRzX2FkZChcXHUwMDI2bHN0YXRzLVxcdTAwM2VieXRlcywgbGVuKTtcXG4zMTAwOlxcdFxcdHU2NF9zdGF0c19pbmMoXFx1MDAyNmxzdGF0cy1cXHUwMDNlcGFja2V0cyk7XFxuMzEwMTpcXHRcXHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcXHUwMDI2bHN0YXRzLVxcdTAwM2VzeW5jcCk7XFxuMzEwMjpcXHR9XFxuMzEwMzpcXHRcXG4zMTA0OlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfZHN0YXRzX3J4X2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0ODoxNi40MTkwMzk1NzFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzMyMzI1NTE3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggUmVsYXRlZCB0byBOZXR3b3JrIFN0YXRpc3RpY3MgYW5kIEludGVycnVwdCBDb250ZXh0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgcGF0Y2gsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkndmUgbW92ZWQgYGxvY2FsX2JoX2Rpc2FibGUoKWAgaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhlIGludGVyYWN0aW9uIHdpdGggYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAuIEkgYWxyZWFkeSBrbm93IHRoYXQgZnVuY3Rpb24sIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBvciB3aGVuIGRlYWxpbmcgd2l0aCBsb2NrZGVwIG9yIHNlcWNvdW50LCBpdCBuZWVkcyBlaXRoZXIgYm90dG9tLWhhbGYgKEJIKSBkaXNhYmxlZCBvciBwcmVlbXB0aW9uIGRpc2FibGVkLiBUaGlzIGlzIGJlY2F1c2UgaXQgdXNlcyBgdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZ0c3RhdHMtXHUwMDNlc3luY3ApYCwgYW5kIHRoYXQncyBjcml0aWNhbCBmb3IgcHJldmVudGluZyByYWNlIGNvbmRpdGlvbnMgb3IgZGVhZGxvY2tzIHdpdGggc29mdGlycXMg4oCTIG9yLCBtb3JlIGdlbmVyYWxseSwgZW5zdXJpbmcgcGVyLUNQVSB1cGRhdGUgc2FmZXR5LlxuXG5UaGUgb3JpZ2luYWwgY29kZSBoYWQgYGxvY2FsX2JoX2Rpc2FibGUoKWAgKmFmdGVyKiB0aGUgY2FsbHMgdG8gYm90aCBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cdTAwM2VsZW4pYCBhbmQgYGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIHNrYi1cdTAwM2VsZW4pYC4gVGhlIHBhdGNoIG1vdmVzIGBsb2NhbF9iaF9kaXNhYmxlKClgICpiZWZvcmUqIHRob3NlIHR3byBjYWxscy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyB0aGUgcmF0aW9uYWxlPyBUaGV5J3JlIGNsZWFybHkgdHJ5aW5nIHRvIGVuc3VyZSB0aGF0IHRob3NlIHN0YXRpc3RpY3MgdXBkYXRlcyBhbmQgTEVEIHRyaWdnZXIgY2FsbHMgaGFwcGVuIGluIGEgY29udGV4dCB3aGVyZSBCSHMgYXJlIGRpc2FibGVkLiBUaGF0J3MgZ29vZCBwcmFjdGljZSBmb3IgdGhvc2Uga2luZHMgb2Ygc3RhdHMuXG5cbk5vdywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNoZWNrIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXHUwMDNlbGVuKWAgdG8gbWFrZSBzdXJlICppdCogaXNuJ3QgY2FsbGluZyBhbnl0aGluZyB0aGF0IGNvdWxkIGNhdXNlIGEgcHJvYmxlbS4gV2UgbmVlZCB0byBiZSBjZXJ0YWluIHRoaXMgbW92ZSBvZiBgbG9jYWxfYmhfZGlzYWJsZSgpYCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGlzc3VlcyBvciBpbmFkdmVydGVudGx5IG1hc2sgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW4gdGhlIGBsZWRfdHJpZ190eGAgZnVuY3Rpb24sIHNpbmNlIGl0IGlzIG5vdyB3aXRoaW4gdGhlIEJIIGRpc2FibGVkIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNDo0ODoxOS43NDIyOTY5NloiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MjUyMzc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9sZWQuaD03MD1zdGF0aWMgaW5saW5lIHZvaWRcXG5uZXQvbWFjODAyMTEvbGVkLmg6NzE6aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgaW50IGJ5dGVzKVxcbm5ldC9tYWM4MDIxMS9sZWQuaC03Mi17XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00NDA1PXZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDQ5OC1cXHRpZiAobGVuKVxcbm5ldC9tYWM4MDIxMS90eC5jOjQ0OTk6XFx0XFx0aWVlZTgwMjExX3RwdF9sZWRfdHJpZ190eChsb2NhbCwgbGVuKTtcXG5uZXQvbWFjODAyMTEvdHguYy00NTAwLVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDc1MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDgyMy1cXG5uZXQvbWFjODAyMTEvdHguYzo0ODI0OlxcdGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIGxlbik7XFxubmV0L21hYzgwMjExL3R4LmMtNDgyNS1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTY1NzE9aW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTY2OTEtXFx0ZGV2X3N3X25ldHN0YXRzX3R4X2FkZChkZXYsIDEsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbWFjODAyMTEvdHguYzo2NjkyOlxcdGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgobG9jYWwsIHNrYi1cXHUwMDNlbGVuKTtcXG5uZXQvbWFjODAyMTEvdHguYy02NjkzLVxcdGllZWU4MDIxMV94bWl0KHNkYXRhLCBzdGEsIHNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjIyLjEzNDgzNzQ3N1oiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNjMzMTczNjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvbmN1cnJlbmN5IEZpeCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSBhIGNvbmN1cnJlbmN5IGZpeC4gSXQncyBtb3ZpbmcgdGhlIGBsb2NhbF9iaF9kaXNhYmxlKClgIHNjb3BlIHRvIGluY2x1ZGUgdGhlIHN0YXQgdXBkYXRlczogYGRldl9zd19uZXRzdGF0c190eF9hZGQoZGV2LCAxLCBza2ItXHUwMDNlbGVuKWAgYW5kIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KGxvY2FsLCBza2ItXHUwMDNlbGVuKWAuIFRoZSBnb2FsIGlzIHRvIGVuc3VyZSB0aG9zZSBwZXItQ1BVIHN0YXRzIHVwZGF0ZXMgYXJlIGF0b21pYyBieSBkaXNhYmxpbmcgYm90dG9tIGhhbHZlcy4gVGhpcyBwcmV2ZW50cyBpbnRlcnJ1cHRpb25zIGZyb20gc29mdGlycXMsIG1pdGlnYXRpbmcgcG90ZW50aWFsIHdhcm5pbmdzLCBkZWFkbG9ja3MsIG9yIGRhdGEgcmFjZXMuXG5cbk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gTGV0J3MgYW5hbHl6ZS5cblxuKiAgICoqTWVtb3J5IEFsbG9jYXRpb25zOioqIE5vLCB0aGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guXG4qICAgKipVc2VyL0tlcm5lbCBEYXRhIFRyYW5zZmVyOioqIE5vLCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW52b2x2ZSBhbnkgYGNvcHlfdG9fdXNlcmAsIG5ldGxpbmsgY2FsbHMsIG9yIGlvY3RsIG9wZXJhdGlvbnMuXG4qICAgKipVbmluaXRpYWxpemVkIERhdGE6KiogTm8sIHRoZSBwYXRjaCBkb2Vzbid0IHRvdWNoIGV4aXN0aW5nIGRhdGEgc3RydWN0dXJlcyBvciBmaWVsZHMgaW4gYSB3YXkgdGhhdCB3b3VsZCBsZWF2ZSB0aGVtIHVuaW5pdGlhbGl6ZWQuXG4qICAgKipCb3VuZHMgQ2hlY2tzL0xlbmd0aCBDYWxjdWxhdGlvbnM6KiogTm8sIHRoZXJlIGFyZSBubyBtb2RpZmljYXRpb25zIHRvIGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5pbml0aWFsaXplZCByZWFkcy4gSXQncyBhIGNvbmN1cnJlbmN5IGZpeCBhbmQgZG9lc24ndCBhZmZlY3QgdGhhdC5cblxuVGhpcyBhbGwgcG9pbnRzIHRvOiBpdCdzIGEgc3RhbmRhcmQgbG9ja2luZy9jb25jdXJyZW5jeSBmaXgsIHNxdWFyZWx5IGluIHRoZSBsb2NrZGVwL0tBU0FOIGRldGVjdGlvbiBzcGFjZS4gVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50IHRoYXQgXCJOZWVkc0tNU0FOXCIgc2hvdWxkIGJlIGBmYWxzZWAuXG5cbkknbGwgZG8gYSBmaW5hbCBydW4tdGhyb3VnaCB0byBkb3VibGUtY2hlY2sgbXkgcmVhc29uaW5nLiBBbmQgdGhlbiBJIHdpbGwgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNTMsIk91dHB1dFRva2VucyI6MTc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA0OjQ4OjI1Ljc2ODAxNDA3NloiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgYGxvY2FsX2JoX2Rpc2FibGUoKWAgaW4gYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoKWAgdG8gY292ZXIgYGRldl9zd19uZXRzdGF0c190eF9hZGQoKWAgYW5kIGBpZWVlODAyMTFfdHB0X2xlZF90cmlnX3R4KClgLiBUaGlzIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSBmaXggZW5zdXJpbmcgYm90dG9tIGhhbHZlcyBhcmUgZGlzYWJsZWQgZHVyaW5nIHBlci1DUFUgc3RhdGlzdGljIHVwZGF0ZXMgdG8gcHJldmVudCBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBzb2Z0aXJxcy5cXG5cXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBtZW1vcnkgYWxsb2NhdGlvbnMsIGluaXRpYWxpemF0aW9uIGxvZ2ljLCBrZXJuZWwtdG8tdXNlciBjb3BpZXMsIG9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBBbnkgcG90ZW50aWFsIGxvY2tpbmcgYnVncyBvciBjb25jdXJyZW5jeSB2aW9sYXRpb25zIGFyZSBjb3ZlcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb3ZlcyBgbG9jYWxfYmhfZGlzYWJsZSgpYCBpbiBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCgpYCB0byBjb3ZlciBgZGV2X3N3X25ldHN0YXRzX3R4X2FkZCgpYCBhbmQgYGllZWU4MDIxMV90cHRfbGVkX3RyaWdfdHgoKWAuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGZpeCBlbnN1cmluZyBib3R0b20gaGFsdmVzIGFyZSBkaXNhYmxlZCBkdXJpbmcgcGVyLUNQVSBzdGF0aXN0aWMgdXBkYXRlcyB0byBwcmV2ZW50IGNvbmN1cnJlbmN5IGlzc3VlcyB3aXRoIHNvZnRpcnFzLlxcblxcblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IG1lbW9yeSBhbGxvY2F0aW9ucywgaW5pdGlhbGl6YXRpb24gbG9naWMsIGtlcm5lbC10by11c2VyIGNvcGllcywgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIEFueSBwb3RlbnRpYWwgbG9ja2luZyBidWdzIG9yIGNvbmN1cnJlbmN5IHZpb2xhdGlvbnMgYXJlIGNvdmVyZWQgYnkgTE9DS0RFUCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycywgbm90IEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowtb4vc[1] Phase: Succeeded StartedAt: 2026-09-10 04:48:36 +0000 UTC FinishedAt: 2026-09-10 04:48:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-10 04:48:36 +0000 UTC FinishedAt: 2026-09-10 04:48:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2] Phase: Succeeded StartedAt: 2026-09-10 04:48:36 +0000 UTC FinishedAt: 2026-09-10 08:28:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-10 04:48:36 +0000 UTC FinishedAt: 2026-09-10 08:28:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-10 04:48:36 +0000 UTC FinishedAt: 2026-09-10 04:48:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-10 04:48:36 +0000 UTC FinishedAt: 2026-09-10 04:48:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtb4vc/series-workflowtb4vc-convert-artifact-3498530840/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-10 04:48:46 +0000 UTC FinishedAt: 2026-09-10 05:04:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-10 04:48:46 +0000 UTC FinishedAt: 2026-09-10 05:04:44 +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:*92d1a548-3e4e-44f1-ab8e-7a1b87e5f7c8,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-workflowtb4vc/series-workflowtb4vc-convert-artifact-3498530840/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": "b81f59f8-41c2-4497-b5eb-c98dccdba788", "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-workflowtb4vc/series-workflowtb4vc-build-action-783717710/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-10 04:48:46 +0000 UTC FinishedAt: 2026-09-10 05:04:34 +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:*92d1a548-3e4e-44f1-ab8e-7a1b87e5f7c8,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-workflowtb4vc/series-workflowtb4vc-convert-artifact-3498530840/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": "b81f59f8-41c2-4497-b5eb-c98dccdba788", "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-workflowtb4vc/series-workflowtb4vc-build-action-783717710/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-10 05:04:44 +0000 UTC FinishedAt: 2026-09-10 05:04:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-10 05:04:44 +0000 UTC FinishedAt: 2026-09-10 05:04:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-10 05:04:44 +0000 UTC FinishedAt: 2026-09-10 05:04:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-10 05:04:44 +0000 UTC FinishedAt: 2026-09-10 05:04:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtb4vc/series-workflowtb4vc-convert-artifact-3008905087/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-10 05:04:54 +0000 UTC FinishedAt: 2026-09-10 05:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-10 05:04:54 +0000 UTC FinishedAt: 2026-09-10 05:06:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b81f59f8-41c2-4497-b5eb-c98dccdba788,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-workflowtb4vc/series-workflowtb4vc-build-action-783717710/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-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-10 05:06:47 +0000 UTC FinishedAt: 2026-09-10 05:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-10 05:06:47 +0000 UTC FinishedAt: 2026-09-10 05:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-10 05:06:47 +0000 UTC FinishedAt: 2026-09-10 05:22:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-10 05:06:47 +0000 UTC FinishedAt: 2026-09-10 05:22:58 +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:*92d1a548-3e4e-44f1-ab8e-7a1b87e5f7c8,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-workflowtb4vc/series-workflowtb4vc-convert-artifact-3008905087/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": "86d71ef0-0941-4f4d-abbd-1c376784fe52", "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-workflowtb4vc/series-workflowtb4vc-build-action-258672019/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-10 05:06:47 +0000 UTC FinishedAt: 2026-09-10 05:22:48 +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:*92d1a548-3e4e-44f1-ab8e-7a1b87e5f7c8,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-workflowtb4vc/series-workflowtb4vc-convert-artifact-3008905087/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": "86d71ef0-0941-4f4d-abbd-1c376784fe52", "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-workflowtb4vc/series-workflowtb4vc-build-action-258672019/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-10 05:22:58 +0000 UTC FinishedAt: 2026-09-10 05:22:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-10 05:22:58 +0000 UTC FinishedAt: 2026-09-10 05:22:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-10 05:22:58 +0000 UTC FinishedAt: 2026-09-10 05:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-10 05:22:58 +0000 UTC FinishedAt: 2026-09-10 05:24:45 +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:*86d71ef0-0941-4f4d-abbd-1c376784fe52,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-workflowtb4vc/series-workflowtb4vc-build-action-258672019/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-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-10 05:24:54 +0000 UTC FinishedAt: 2026-09-10 08:28:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-10 05:24:54 +0000 UTC FinishedAt: 2026-09-10 08:28: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":["ieee80211_tx_control_port","nl80211_tx_control_port"],"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:*b81f59f8-41c2-4497-b5eb-c98dccdba788,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*86d71ef0-0941-4f4d-abbd-1c376784fe52,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-workflowtb4vc/series-workflowtb4vc-build-action-783717710/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-workflowtb4vc/series-workflowtb4vc-build-action-258672019/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-10 05:24:54 +0000 UTC FinishedAt: 2026-09-10 05:25:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-10 05:24:54 +0000 UTC FinishedAt: 2026-09-10 05:24:58 +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":["ieee80211_tx_control_port","nl80211_tx_control_port"],"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-workflowtb4vc/series-workflowtb4vc-convert-artifact-3912183576/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-10 05:24:54 +0000 UTC FinishedAt: 2026-09-10 05:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-10 05:24:54 +0000 UTC FinishedAt: 2026-09-10 05:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-10 05:24:54 +0000 UTC FinishedAt: 2026-09-10 05:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-10 05:25:04 +0000 UTC FinishedAt: 2026-09-10 08:28:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtb4vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_tx_control_port","nl80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c68a982815dcce5464e3bf2a31ac94f5146c04ca","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"c7196ab3-9d14-4b9f-afe9-cebac690acc6","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-10 05:25:04 +0000 UTC FinishedAt: 2026-09-10 08:28:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b81f59f8-41c2-4497-b5eb-c98dccdba788,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*86d71ef0-0941-4f4d-abbd-1c376784fe52,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-workflowtb4vc/series-workflowtb4vc-build-action-783717710/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-workflowtb4vc/series-workflowtb4vc-build-action-258672019/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-workflowtb4vc/series-workflowtb4vc-convert-artifact-3912183576/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,}