Name: series-workflowqzmf4 Phase: Succeeded StartedAt: 2026-07-19 08:31:50 +0000 UTC FinishedAt: 2026-07-19 09:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[0] Phase: Succeeded StartedAt: 2026-07-19 08:31:50 +0000 UTC FinishedAt: 2026-07-19 08:39:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[0].run-triage Phase: Succeeded StartedAt: 2026-07-19 08:31:50 +0000 UTC FinishedAt: 2026-07-19 08:39:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7603E" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7603E" ], "series_id": "a87a5507-c5bd-484d-a9b8-afe9e33d3691" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7603_check_eeprom", "mt7603_eeprom_init", "mt76pci_probe" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzYwM0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2MDNfY2hlY2tfZWVwcm9tJiMzNDssCiAgICAmIzM0O210NzYwM19lZXByb21faW5pdCYjMzQ7LAogICAgJiMzNDttdDc2cGNpX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgRUVQUk9NIG1hZ2ljIHZhbHVlICgweDc1OTIpIHRvIGBtdDc2MDNfY2hlY2tfZWVwcm9tYCwgYWxsb3dpbmcgdGhlIE1UNzYwMyB3aXJlbGVzcyBkcml2ZXIgdG8gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemUgZGV2aWNlcyB3aXRoIHRoaXMgRUVQUk9NIHNpZ25hdHVyZSBpbnN0ZWFkIG9mIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkYzlmNDZmMmRiYjUxYTFmZDI1ZTY1ZjE2OTFlNTk3NTEwNjFkOTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMDg6Mzg6MTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1xuaW5kZXggYjg5ZGIyZGI2NTczN2UuLjA1ZjdhYWVmYWY4OWI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jXG5AQCAtMTQyLDYgJiM0MzsxNDIsNyBAQCBzdGF0aWMgaW50IG10NzYwM19jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gXHRjYXNlIDB4NzYyODpcbiBcdGNhc2UgMHg3NjAzOlxuIFx0Y2FzZSAweDc2MDA6XG4mIzQzO1x0Y2FzZSAweDc1OTI6XG4gXHRcdHJldHVybiAwO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NjAzRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzYwM19jaGVja19lZXByb20mIzM0OywKICAgICYjMzQ7bXQ3NjAzX2VlcHJvbV9pbml0JiMzNDssCiAgICAmIzM0O210NzZwY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBFRVBST00gbWFnaWMgdmFsdWUgKDB4NzU5MikgdG8gYG10NzYwM19jaGVja19lZXByb21gLCBhbGxvd2luZyB0aGUgTVQ3NjAzIHdpcmVsZXNzIGRyaXZlciB0byBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZSBkZXZpY2VzIHdpdGggdGhpcyBFRVBST00gc2lnbmF0dXJlIGluc3RlYWQgb2YgcmV0dXJuaW5nIGAtRUlOVkFMYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZpY2UgcHJvYmUvaW5pdGlhbGl6YXRpb24gcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGM5ZjQ2ZjJkYmI1MWExZmQyNWU2NWYxNjkxZTU5NzUxMDYxZDk2MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDE5IDA4OjM4OjEwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYwppbmRleCBiODlkYjJkYjY1NzM3ZS4uMDVmN2FhZWZhZjg5YjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jCkBAIC0xNDIsNiAmIzQzOzE0Miw3IEBAIHN0YXRpYyBpbnQgbXQ3NjAzX2NoZWNrX2VlcHJvbShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldikKIAljYXNlIDB4NzYyODoKIAljYXNlIDB4NzYwMzoKIAljYXNlIDB4NzYwMDoKJiM0MzsJY2FzZSAweDc1OTI6CiAJCXJldHVybiAwOwogCWRlZmF1bHQ6CiAJCXJldHVybiAtRUlOVkFMOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODcwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NjAzIERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNhc2UsIGAweDc1OTJgLCBpbnRvIHRoZSBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAgZnVuY3Rpb24gd2l0aGluIHRoZSBgbXQ3NjAzYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgZWVwcm9tLmNgLiBUaGlzIGlzIGZvciB0aGUgTWVkaWFUZWsgTVQ3NjAzIHdpcmVsZXNzIGNoaXBzZXQsIHdoaWNoIGlzIGEgZmFpcmx5IGNvbW1vbiBwaWVjZSBvZiBoYXJkd2FyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8gV2lyZWxlc3MgZHJpdmVycyBhcmUgdXN1YWxseSBwcmltZSB0YXJnZXRzLiBJIHR5cGljYWxseSBzdGFydCBieSBleHBsb3JpbmcgbWV0aG9kcyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGlzIGlzIGEgKnNwZWNpZmljKiBoYXJkd2FyZSBkcml2ZXIsIHRoZSBNVDc2MDMuIFRoYXQgY2hhbmdlcyB0aGluZ3MuIEl0JiMzOTtzIGEgUENJZS9VU0IvU0RJTyBkcml2ZXIsIHdoaWNoIG1lYW5zIHRoZXJlIG1pZ2h0IGJlIGRpZmZlcmVudCBhdHRhY2sgc3VyZmFjZXMgY29tcGFyZWQgdG8gdGhlIG1vcmUgZ2VuZXJpYyBtYWM4MDIxMSBpbnRlcmZhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgZHJpdmVyIGlzIGZ1enplYWJsZSwgc28gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2AgZGlyZWN0b3J5IHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHBvdGVudGlhbC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2JlYWNvbi5jJiMzNDssCiAgICAmIzM0O2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZG1hLmMmIzM0OywKICAgICYjMzQ7ZWVwcm9tLmMmIzM0OywKICAgICYjMzQ7ZWVwcm9tLmgmIzM0OywKICAgICYjMzQ7aW5pdC5jJiMzNDssCiAgICAmIzM0O21hYy5jJiMzNDssCiAgICAmIzM0O21hYy5oJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttY3UuYyYjMzQ7LAogICAgJiMzNDttY3UuaCYjMzQ7LAogICAgJiMzNDttdDc2MDMuaCYjMzQ7LAogICAgJiMzNDtwY2kuYyYjMzQ7LAogICAgJiMzNDtyZWdzLmgmIzM0OywKICAgICYjMzQ7c29jLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDkKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlYmFzZSBhbmQgSSBzZWUgYHBjaS5jYCBhbmQgYHNvYy5jYCDigJMgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IFBDSWUgZHJpdmVycyBjb3VsZCBiZSBwb3RlbnRpYWxseSBmdXp6ZWQgd2l0aCBzeXprYWxsZXImIzM5O3MgcHNldWRvLVBDSSBkZXZpY2UsIGFzc3VtaW5nIGl0JiMzOTtzIHN1cHBvcnRlZC4gQnV0LCBhcyB3ZSBhbGwga25vdywgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBvZnRlbiBwcmVzZW50IGNoYWxsZW5nZXMgZm9yIGZ1enppbmcsIHVubGVzcyB0aGV5IGxldmVyYWdlIGEgbW9yZSBjb21tb24gaW50ZXJmYWNlLCBsaWtlIFVTQi4gTHVja2lseSwgc3l6a2FsbGVyIGhhcyBhIGdvb2QgZHVtbXkgVVNCIHNldHVwLiBXYWl0IGEgbWludXRlLCBkaWRu4oCZdCBzeXprYWxsZXIgaW50cm9kdWNlIHN1cHBvcnQgZm9yIGZ1enppbmcgUENJIGRldmljZXMgdGhyb3VnaCB2UENJIHJlY2VudGx5PyBUaGF0IGNvdWxkIGJlIGEgZ2FtZS1jaGFuZ2VyIGZvciB0aGlzIGFuYWx5c2lzLiBOb3csIEkgc2hvdWxkIHNoaWZ0IG15IGF0dGVudGlvbiB0byBjaGVja2luZyBpZiBhIGZ1bmN0aW9uIGxpa2UgYG10NzYwM19jaGVja19lZXByb21gIGlzIGFjdHVhbGx5IHJlYWNoYWJsZS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCBpZiB0aGlzIHBhdGggaXMgYWNjZXNzaWJsZSBmb3IgZXhwbG9pdGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzYwM19jaGVja19lZXByb20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTI2PW10NzYwM19lZXByb21fbG9hZChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jLTEzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jOjEzNzpzdGF0aWMgaW50IG10NzYwM19jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xMzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jPTE1Nz1pbnQgbXQ3NjAzX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTY2LVx0aWYgKGRldi1cdTAwM2VtdDc2Lm90cC5kYXRhKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxNjc6XHRcdGlmIChtdDc2MDNfY2hlY2tfZWVwcm9tKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTY4LVx0XHRcdG10NzYwM19hcHBseV9jYWxfZnJlZV9kYXRhKGRldiwgZGV2LVx1MDAzZW10NzYub3RwLmRhdGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNjMKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVHJhY2luZyB0aGUgRUVQUk9NIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYG10NzYwM19lZXByb21faW5pdGAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBpcyBpdHMgY2FsbCBzdGFjay4gV2hlcmUgaXMgdGhpcyB0aGluZyBnZXR0aW5nIGludm9rZWQgZnJvbT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGVudHJ5IHBvaW50LCB0aGUgaW1tZWRpYXRlIGNhbGxlci4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGlzIGZ1bmN0aW9uIGFuZCBzZWUgaG93IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmbG93cy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBjaGVjayB0aGUgY2FsbCByZWZlcmVuY2VzIGFuZCB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aCB0aGF0IGxlYWRzIHRvIHRoaXMgcG9pbnQuIFRoaXMmIzM5O2xsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBFRVBST00gaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGlzIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2MDNfZWVwcm9tX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTUyPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2ODgoc3RydWN0IG10NzYwM19kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxNTc6aW50IG10NzYwM19lZXByb21faW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTU4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9Mjc4PW10NzYwM19pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTI4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzoyODQ6XHRyZXQgPSBtdDc2MDNfZWVwcm9tX2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy0yODUtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oPTE4Mz12b2lkIG10NzYwM191bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oOjE4NDppbnQgbXQ3NjAzX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmgtMTg1LWludCBtdDc2MDNfZG1hX2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgSGFyZHdhcmUgU2V0dXA6IEEgRGVlcCBEaXZlKioKCk9rYXksIHNvIGBtdDc2MDNfaW5pdF9oYXJkd2FyZWAgaXMgZmlyaW5nIHVwIGR1cmluZyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHBoYXNlLiBNYWtlcyBzZW5zZS4gQnV0IG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogYW0gSSBkZWFsaW5nIHdpdGggYSBQQ0kgZGV2aWNlIG9yIGEgVVNCIGltcGxlbWVudGF0aW9uIGhlcmU/IFRpbWUgdG8gZGlnIGluIGFuZCBjbGFyaWZ5IHRoZSBhcmNoaXRlY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGlzIFBDSSBvciBVU0IsIHRvIGtub3cgd2hlcmUgdG8gZmluZCB0aGUgYW5zd2Vycy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBkcml2ZXIgZmlsZXM6IHNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmNgIGFuZCBhbHNvIGBzb2MuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhpcyBoYXJkd2FyZSBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jPTc0Nj1zdGF0aWMgdm9pZCBfX2V4aXQgbXQ3NjAzX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jOjc1NDptb2R1bGVfaW5pdChtdDc2MDNfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzU1LW1vZHVsZV9leGl0KG10NzYwM19leGl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMxNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG10NzYwM19pbml0YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGUgYG10NzYwM19pbml0YCBmdW5jdGlvbi4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciB0aGlzIHBhcnRpY3VsYXIgTVQ3NjAzIGNoaXBzZXQgZHJpdmVyLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgc3RhbmRhcmQgc3R1ZmYg4oCTIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24sIERNQSBzZXR1cCwgaW50ZXJydXB0IGVuYWJsaW5nLiBCdXQgSSYjMzk7bSBhbHNvIGxvb2tpbmcgZm9yIGFueXRoaW5nIHNwZWNpZmljIHRvIHRoaXMgbW9kZWwsIGFueSBxdWlya3Mgb3Igb3B0aW1pemF0aW9ucyB0aGV5JiMzOTt2ZSBpbXBsZW1lbnRlZC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSByZWdpc3RlciBzZXR1cCwgb2YgY291cnNlIC0gdW5kZXJzdGFuZGluZyB0aGVpciBpbml0aWFsIHJlZ2lzdGVyIHZhbHVlcyBhbmQgYW55IGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIGlzIGNyaXRpY2FsIGZvciBhc3Nlc3NpbmcgdGhlIHBlcmZvcm1hbmNlIGVudmVsb3BlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhleSYjMzk7cmUgdXNpbmcgYSBwcm9wZXIgY2FsaWJyYXRpb24gcm91dGluZSBhcyB3ZWxsIGFzIGNoZWNraW5nIHRoZSBETUEgc2V0dXAgZm9yIG9wdGltYWwgZGVzY3JpcHRvciB1c2FnZS4gSSYjMzk7bGwgbmVlZCB0byBhbHNvIGNoZWNrIGlmIHRoZXkgYXJlIHVzaW5nIGFueSB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHBvd2VyIG1hbmFnZW1lbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbnkgY2xvY2sgc2V0dGluZ3MsIGFuZCB3aGF0IGtpbmQgb2YgZXJyb3IgaGFuZGxpbmcgdGhleSYjMzk7dmUgaW5jbHVkZWQuIEFyZSB0aGV5IHVzaW5nIHRoZSBzdGFuZGFyZCBpbnRlcnJ1cHQgaGFuZGxlcnMsIG9yIGhhdmUgdGhleSBidWlsdCBzb21lIGN1c3RvbSBvbmVzPyBJIG5lZWQgYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoaXMgZnVuY3Rpb24mIzM5O3MgcHVycG9zZSB0byBzdGFydCBhc3Nlc3NpbmcgdGhlIGRyaXZlciYjMzk7cyBvdmVyYWxsIGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NjAzX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jPTQ0PW10NzYwM19lZGNjYV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtNTItXHRcdFx0ICBkZXYtXHUwMDNlbXQ3Ni5yZWdpb24gPT0gTkw4MDIxMV9ERlNfRVRTSTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RlYnVnZnMuYzo1MzpcdG10NzYwM19pbml0X2VkY2NhKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtNTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jPTk0PURFRklORV9TSE9XX0FUVFJJQlVURShtdDc2MDNfYW1wZHVfc3RhdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmM6OTY6dm9pZCBtdDc2MDNfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtOTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jPTEzND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYzoxMzU6bXQ3NjAzX2luaXRfcnhfcXVldWUoc3RydWN0IG10NzYwM19kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYy0xMzYtXHRcdCAgICAgaW50IGlkeCwgaW50IG5fZGVzYywgaW50IGJ1ZnNpemUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZG1hLmM9MTc2PWludCBtdDc2MDNfZG1hX2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYy0yMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYzoyMzA6XHRyZXQgPSBtdDc2MDNfaW5pdF9yeF9xdWV1ZShkZXYsIFx1MDAyNmRldi1cdTAwM2VtdDc2LnFfcnhbTVRfUlhRX01DVV0sIDEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYy0yMzEtXHRcdFx0XHQgICBNVDc2MDNfTUNVX1JYX1JJTkdfU0laRSwgTVRfUlhfQlVGX1NJWkUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jLTIzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jOjIzNTpcdHJldCA9IG10NzYwM19pbml0X3J4X3F1ZXVlKGRldiwgXHUwMDI2ZGV2LVx1MDAzZW10NzYucV9yeFtNVF9SWFFfTUFJTl0sIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYy0yMzYtXHRcdFx0XHQgICBNVDc2MDNfUlhfUklOR19TSVpFLCBNVF9SWF9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jPTI3Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6Mjc4Om10NzYwM19pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtMjc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9NDUxPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6NDUyOm10NzYwM19pbml0X3R4cG93ZXIoc3RydWN0IG10NzYwM19kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy00NTMtXHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9NDk1PWludCBtdDc2MDNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTUyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzo1MjI6XHRyZXQgPSBtdDc2MDNfaW5pdF9oYXJkd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTUyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTU1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzo1NTg6XHRtdDc2MDNfaW5pdF9kZWJ1Z2ZzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6NTU5Olx0bXQ3NjAzX2luaXRfdHhwb3dlcihkZXYsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnNiYW5kXzJnLnNiYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy01NjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jPTg3PW10NzYwM19yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM6MTE0OnZvaWQgbXQ3NjAzX2luaXRfZWRjY2Eoc3RydWN0IG10NzYwM19kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy0xMTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYz0xMzQ9aW50IG10NzYwM19zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzoxODc6XHRtdDc2MDNfaW5pdF9lZGNjYShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM9NzI4PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0R1YWwgQlNEL0dQTFwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jOjczMDpzdGF0aWMgaW50IF9faW5pdCBtdDc2MDNfaW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTczMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jPTc0Nj1zdGF0aWMgdm9pZCBfX2V4aXQgbXQ3NjAzX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jOjc1NDptb2R1bGVfaW5pdChtdDc2MDNfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzU1LW1vZHVsZV9leGl0KG10NzYwM19leGl0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaD0xODc9aW50IG10NzYwM19tY3VfaW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oOjE4ODp2b2lkIG10NzYwM19pbml0X2RlYnVnZnMoc3RydWN0IG10NzYwM19kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaC0xODktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmg9MjU5PXZvaWQgbXQ3NjAzX2NjYV9zdGF0c19yZXNldChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oLTI2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oOjI2MTp2b2lkIG10NzYwM19pbml0X2VkY2NhKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmgtMjYyLSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTUzCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEluaXRpYWxpemF0aW9uIG9mIHRoZSBNVDc2MDMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBkaXNzZWN0IHRoaXMgYG10NzYwM19pbml0YCBmdW5jdGlvbi4gVGltZSB0byBob3Agb3ZlciB0byBgbWFpbi5jYCBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGF0IHRoZSBncm91bmQgbGV2ZWwgd2l0aCB0aGlzIE1lZGlhdGVrIGRyaXZlci4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHBvd2VyLXVwIHByb2NlZHVyZXMsIGFuZCBhbnkgaW5pdGlhbCByZWdpc3RlciBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgY2xvY2sgZW5hYmxlIGNvbW1hbmRzLCBQSFkgcmVzZXQgY3ljbGVzLCBhbmQgYW55IGVhcmx5IERNQSBzZXR1cCB0aGF0IHRoZXkgbWlnaHQgcGVyZm9ybS4gSXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBpcyBzdHJ1Y3R1cmVkIHRvIGhhbmRsZSBwb3RlbnRpYWwgaGFyZHdhcmUgdmFyaWF0aW9ucyBvciBzcGVjaWZpYyByZXZpc2lvbiBxdWlya3MuIFVsdGltYXRlbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBmb3VuZGF0aW9uYWwgc3RlcHMgdGhlIGRyaXZlciB0YWtlcyB0byBnZXQgdGhhdCBNVDc2MDMgcmFkaW8gb3BlcmF0aW9uYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3MjU6XHR9O1xuIDcyNjpcdFxuIDcyNzpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtNZWRpYVRlayBNVDc2MDNFIGFuZCBNVDc2eDggd2lyZWxlc3MgZHJpdmVyXCYjMzQ7KTtcbiA3Mjg6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuIDcyOTpcdFxuIDczMDpcdHN0YXRpYyBpbnQgX19pbml0IG10NzYwM19pbml0KHZvaWQpXG4gNzMxOlx0e1xuIDczMjpcdFx0aW50IHJldDtcbiA3MzM6XHRcbiA3MzQ6XHRcdHJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZtdDc2X3dtYWNfZHJpdmVyKTtcbiA3MzU6XHRcdGlmIChyZXQpXG4gNzM2Olx0XHRcdHJldHVybiByZXQ7XG4gNzM3Olx0XG4gNzM4Olx0I2lmZGVmIENPTkZJR19QQ0lcbiA3Mzk6XHRcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bXQ3NjAzX3BjaV9kcml2ZXIpO1xuIDc0MDpcdFx0aWYgKHJldClcbiA3NDE6XHRcdFx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2bXQ3Nl93bWFjX2RyaXZlcik7XG4gNzQyOlx0I2VuZGlmXG4gNzQzOlx0XHRyZXR1cm4gcmV0O1xuIDc0NDpcdH1cbiA3NDU6XHRcbiA3NDY6XHRzdGF0aWMgdm9pZCBfX2V4aXQgbXQ3NjAzX2V4aXQodm9pZClcbiA3NDc6XHR7XG4gNzQ4Olx0I2lmZGVmIENPTkZJR19QQ0lcbiA3NDk6XHRcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZtdDc2MDNfcGNpX2RyaXZlcik7XG4gNzUwOlx0I2VuZGlmXG4gNzUxOlx0XHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZtdDc2X3dtYWNfZHJpdmVyKTtcbiA3NTI6XHR9XG4gNzUzOlx0XG4gNzU0Olx0bW9kdWxlX2luaXQobXQ3NjAzX2luaXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjE5CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBNVDc2IERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgY291cGxlIG9mIGRyaXZlcnMgcmVnaXN0ZXJpbmcgaGVyZTogYG10NzZfd21hY19kcml2ZXJgIGFuZCBgbXQ3NjAzX3BjaV9kcml2ZXJgLiBHaXZlbiB0aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGggc3l6a2FsbGVyLCB3aGljaCwgYXMgd2Uga25vdywgY2FuIGhhbmRsZSB2UENJLCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgaW50byB0aG9zZSBQQ0kgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBtdDc2MDNfcGNpX2RyaXZlcmAuIExldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBpbiBgcGNpLmNgIGFuZCBzZWUgd2hhdCBvcHBvcnR1bml0aWVzIGZvciBmdXp6aW5nIHdlIGNhbiBmaW5kIHdpdGhpbiB0aGlzIHNwZWNpZmljIGRyaXZlci4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzYwM19wY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYz03MzA9c3RhdGljIGludCBfX2luaXQgbXQ3NjAzX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzM4LSNpZmRlZiBDT05GSUdfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM6NzM5Olx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZtdDc2MDNfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzQwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM9NzQ2PXN0YXRpYyB2b2lkIF9fZXhpdCBtdDc2MDNfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy03NDgtI2lmZGVmIENPTkZJR19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzo3NDk6XHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bXQ3NjAzX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTc1MC0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaD0xNjE9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzYwM19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaDoxNjI6ZXh0ZXJuIHN0cnVjdCBwY2lfZHJpdmVyIG10NzYwM19wY2lfZHJpdmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmgtMTYzLWV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10NzZfd21hY19kcml2ZXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmM9NzY9TU9EVUxFX0ZJUk1XQVJFKE1UNzYwM19GSVJNV0FSRV9FMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9wY2kuYy03Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL3BjaS5jOjc4OnN0cnVjdCBwY2lfZHJpdmVyIG10NzYwM19wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmMtNzktXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTEzCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBtdDc2MDNfcGNpX2RyaXZlciBEZWZpbml0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBtdDc2MDNfcGNpX2RyaXZlcmAgZGVmaW5pdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCBzcGVjaWZpY2FsbHkgYXJlIHdlIGV4YW1pbmluZyBoZXJlPyYjMzQ7IEFyZSB3ZSBmb2N1c2luZyBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzLCB0aGUgZnVuY3Rpb24gcG9pbnRlcnMsIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgb3IgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgUENJIGRyaXZlcj8gS25vd2luZyB0aGUgY29udGV4dCBpcyBrZXkgdG8gYSBwcm9kdWN0aXZlIGFuYWx5c2lzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhpcyBpcyB0aGUgY29yZSBkcml2ZXIgaW1wbGVtZW50YXRpb24gaXRzZWxmIG9yIGEgd3JhcHBlciwgbWF5YmUgaGFuZGxpbmcgYm9hcmQtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIHBvd2VyIG1hbmFnZW1lbnQgYXNwZWN0cyBmb3IgdGhpcyBwYXJ0aWN1bGFyIE1UNzYwMyBjaGlwc2V0LiBGcm9tIHRoZXJlLCBJJiMzOTtsbCBwcm9iYWJseSBiZSBtYXBwaW5nIGZ1bmN0aW9uIGNhbGxzIHRvIHVuZGVybHlpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIGFuZCBpbnRlcnJ1cHRzLiBJJiMzOTtkIGJlIGxvb2tpbmcgZm9yIHRoZSBjcnVjaWFsIGBwY2lfZGV2aWNlX2lkYCB0YWJsZSB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgcmV2aXNpb25zIG9yIHZhcmlhdGlvbnMgdGhpcyBkcml2ZXIgc3VwcG9ydHMuIEkmIzM5O2QgZXhwZWN0IHRvIHNlZSB0aGUgc3RhbmRhcmQgYHByb2JlYCBhbmQgYHJlbW92ZWAgZnVuY3Rpb25zLCBvYnZpb3VzbHkuIFRoZSBkZXZpbCwgYXMgYWx3YXlzLCBpcyBpbiB0aGUgZGV0YWlscyDigJMgc28gSeKAmWxsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHJlc291cmNlIGFsbG9jYXRpb24gc3RyYXRlZ2llcywgcGFydGljdWxhcmx5IG1lbW9yeSBtYXBwaW5nIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcuIEFyZSB0aGV5IHVzaW5nIHRoZSBzdGFuZGFyZCBQQ0kgRE1BIEFQSXMgb3IgY3VzdG9tIHNvbHV0aW9ucz8gQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwgYmUga2VlcGluZyBhIGtlZW4gZXllIG91dCBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3Igc3luY2hyb25pemF0aW9uIGlzc3VlcywgZXNwZWNpYWxseSBpZiB0aGUgY29kZSBtYWtlcyBoZWF2eSB1c2Ugb2YgaW50ZXJydXB0cyBvciBzaGFyZWQgbWVtb3J5LiBGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBjb2RlJiMzOTtzIG92ZXJhbGwgcXVhbGl0eSBhbmQgYWRoZXJlbmNlIHRvIGtlcm5lbCBjb2Rpbmcgc3RhbmRhcmRzIHRvIGdldCBhIGZlZWwgZm9yIG1haW50YWluYWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzA6XHRcbiAgNzE6XHRcdG10NzYwM191bnJlZ2lzdGVyX2RldmljZShkZXYpO1xuICA3MjpcdH1cbiAgNzM6XHRcbiAgNzQ6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbXQ3NnBjaV9kZXZpY2VfdGFibGUpO1xuICA3NTpcdE1PRFVMRV9GSVJNV0FSRShNVDc2MDNfRklSTVdBUkVfRTEpO1xuICA3NjpcdE1PRFVMRV9GSVJNV0FSRShNVDc2MDNfRklSTVdBUkVfRTIpO1xuICA3NzpcdFxuICA3ODpcdHN0cnVjdCBwY2lfZHJpdmVyIG10NzYwM19wY2lfZHJpdmVyID0ge1xuICA3OTpcdFx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbiAgODA6XHRcdC5pZF90YWJsZVx0PSBtdDc2cGNpX2RldmljZV90YWJsZSxcbiAgODE6XHRcdC5wcm9iZVx0XHQ9IG10NzZwY2lfcHJvYmUsXG4gIDgyOlx0XHQucmVtb3ZlXHRcdD0gbXQ3NnBjaV9yZW1vdmUsXG4gIDgzOlx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTEzMwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIFBDSSBEZXZpY2UgUHJvYmUqKgoKQWxyaWdodCwgdGhlIHN5c3RlbSYjMzk7cyBqdXN0IGRpc2NvdmVyZWQgYSBQQ0kgZGV2aWNlIOKAkyBzcGVjaWZpY2FsbHksIG9uZSB1c2luZyB0aGUgYG10NzZwY2lgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGBtdDc2cGNpX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBjcml0aWNhbCBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlIGluaXRpYWwgc2V0dXAgYW5kIGNvbmZpZ3VyYXRpb24gd2hlbiB0aGUgZHJpdmVyIHJlY29nbml6ZXMgKml0cyogZGV2aWNlLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0JiMzOTtzIGRvaW5nLCB3aGF0IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGl0JiMzOTtzIG9yY2hlc3RyYXRpbmcsIGFuZCBob3cgaXQmIzM5O3MgYXNzb2NpYXRpbmcgaXRzZWxmIHdpdGggdGhpcyBuZXcgcGllY2Ugb2YgaGFyZHdhcmUuIExldCYjMzk7cyBnZXQgcmlnaHQgaW50byB0aGUgY29kZSBmb3IgYG10NzZwY2lfcHJvYmVgIGFuZCBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdFxuICAgMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2kuaFx1MDAzZVxuICAgNjpcdFxuICAgNzpcdCNpbmNsdWRlIFwmIzM0O210NzYwMy5oXCYjMzQ7XG4gICA4Olx0XG4gICA5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzZwY2lfZGV2aWNlX3RhYmxlW10gPSB7XG4gIDEwOlx0XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjAzKSB9LFxuICAxMTpcdFx0eyB9LFxuICAxMjpcdH07XG4gIDEzOlx0XG4gIDE0Olx0c3RhdGljIGludFxuICAxNTpcdG10NzZwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbiAgMTY6XHR7XG4gIDE3Olx0XHRzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2O1xuICAxODpcdFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xuICAxOTpcdFx0aW50IHJldDtcbiAgMjA6XHRcbiAgMjE6XHRcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiAgMjI6XHRcdGlmIChyZXQpXG4gIDIzOlx0XHRcdHJldHVybiByZXQ7XG4gIDI0Olx0XG4gIDI1Olx0XHRyZXQgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKDApLCBwY2lfbmFtZShwZGV2KSk7XG4gIDI2Olx0XHRpZiAocmV0KVxuICAyNzpcdFx0XHRyZXR1cm4gcmV0O1xuICAyODpcdFxuICAyOTpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gIDMwOlx0XG4gIDMxOlx0XHRyZXQgPSBkbWFfc2V0X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuICAzMjpcdFx0aWYgKHJldClcbiAgMzM6XHRcdFx0cmV0dXJuIHJldDtcbiAgMzQ6XHRcbiAgMzU6XHRcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBcdTAwMjZtdDc2MDNfb3BzLFxuICAzNjpcdFx0XHRcdFx0IFx1MDAyNm10NzYwM19kcnZfb3BzKTtcbiAgMzc6XHRcdGlmICghbWRldilcbiAgMzg6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gIDM5Olx0XG4gIDQwOlx0XHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzYwM19kZXYsIG10NzYpO1xuICA0MTpcdFx0bXQ3Nl9tbWlvX2luaXQobWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSk7XG4gIDQyOlx0XG4gIDQzOlx0XHRtZGV2LVx1MDAzZXJldiA9IChtdDc2X3JyKGRldiwgTVRfSFdfQ0hJUElEKSBcdTAwM2NcdTAwM2MgMTYpIHxcbiAgNDQ6XHRcdFx0ICAgIChtdDc2X3JyKGRldiwgTVRfSFdfUkVWKSBcdTAwMjYgMHhmZik7XG4gIDQ1Olx0XHRkZXZfaW5mbyhtZGV2LVx1MDAzZWRldiwgXCYjMzQ7QVNJQyByZXZpc2lvbjogJTA0eFxcblwmIzM0OywgbWRldi1cdTAwM2VyZXYpO1xuICA0NjpcdFxuICA0NzpcdFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9NQVNLX0NTUiwgMCk7XG4gIDQ4Olx0XG4gIDQ5Olx0XHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXHUwMDNlZGV2LCBwZGV2LVx1MDAzZWlycSwgbXQ3NjAzX2lycV9oYW5kbGVyLFxuICA1MDpcdFx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XG4gIDUxOlx0XHRpZiAocmV0KVxuICA1MjpcdFx0XHRnb3RvIGVycm9yO1xuICA1MzpcdFxuICA1NDpcdFx0cmV0ID0gbXQ3NjAzX3JlZ2lzdGVyX2RldmljZShkZXYpO1xuICA1NTpcdFx0aWYgKHJldClcbiAgNTY6XHRcdFx0Z290byBlcnJvcjtcbiAgNTc6XHRcbiAgNTg6XHRcdHJldHVybiAwO1xuICA1OTpcdGVycm9yOlxuICA2MDpcdFx0bXQ3Nl9mcmVlX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gIDYxOlx0XG4gIDYyOlx0XHRyZXR1cm4gcmV0O1xuICA2MzpcdH1cbiAgNjQ6XHRcbiAgNjU6XHRzdGF0aWMgdm9pZFxuICA2NjpcdG10NzZwY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuICA2NzpcdHtcbiAgNjg6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiAgNjk6XHRcdHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzYwM19kZXYsIG10NzYpO1xuICA3MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQwOQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFRVBST00gSW5pdGlhbGl6YXRpb24gRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYG10NzYwM2AgZHJpdmVyLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBmbG93IGluIGBtdDc2MDNfcmVnaXN0ZXJfZGV2aWNlYCBsZWFkcyB1cyBkb3duIGEgcHJldHR5IHNwZWNpZmljIHBhdGguIEl0IGNhbGxzIGBtdDc2MDNfaW5pdF9oYXJkd2FyZWAsIHdoaWNoIG1ha2VzIHNlbnNlIGFzIHRoZSBpbml0aWFsIHNldHVwIGZ1bmN0aW9uLiBBbmQsIGNydWNpYWwgdG8gdGhpcyBpbnZlc3RpZ2F0aW9uLCB0aGF0IGZ1bmN0aW9uIHRoZW4gY2FsbHMgYG10NzYwM19lZXByb21faW5pdGAuIFRoZSBFRVBST00gaXMgYWx3YXlzIGEgY3JpdGljYWwgcGFydCBvZiBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi4KCk5vdywgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIGNoYW5nZSwgc3BlY2lmaWNhbGx5LCBhZGRpbmcgYDB4NzU5MmAgdG8gdGhlIGZ1bmN0aW9uIGBtdDc2MDNfY2hlY2tfZWVwcm9tYC4gTXkgZmlyc3QgdGhvdWdodCBpczogJiMzNDtXaHkgdGhpcyBzcGVjaWZpYyB2YWx1ZT8gV2hlcmUgaXMgdGhpcyBFRVBST00gdmFsdWUgZGVyaXZlZCBmcm9tPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoYXQgY2hlY2sgYW5kIGhvdyB0aGlzIG5ldyB2YWx1ZSBmaXRzIGluLgoKVGhlcmVmb3JlLCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgZnVuY3Rpb24sIGBtdDc2MDNfY2hlY2tfZWVwcm9tYCwgdG8gZ2V0IGEgZ3JpcCBvbiB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIHNlZSBob3cgaXQgdXNlcyBhbmQgaW50ZXJwcmV0cyB0aGUgRUVQUk9NIGRhdGEuIFRoYXQgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGFkZGl0aW9uIG9mIGAweDc1OTJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTM3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMzc6XHRzdGF0aWMgaW50IG10NzYwM19jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gMTM4Olx0e1xuIDEzOTpcdFx0dTE2IHZhbCA9IGdldF91bmFsaWduZWRfbGUxNihkZXYtXHUwMDNlZWVwcm9tLmRhdGEpO1xuIDE0MDpcdFxuIDE0MTpcdFx0c3dpdGNoICh2YWwpIHtcbiAxNDI6XHRcdGNhc2UgMHg3NjI4OlxuIDE0MzpcdFx0Y2FzZSAweDc2MDM6XG4gMTQ0Olx0XHRjYXNlIDB4NzYwMDpcbiAxNDU6XHRcdGNhc2UgMHg3NTkyOlxuIDE0NjpcdFx0XHRyZXR1cm4gMDtcbiAxNDc6XHRcdGRlZmF1bHQ6XG4gMTQ4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDE0OTpcdFx0fVxuIDE1MDpcdH1cbiAxNTE6XHRcbiAxNTI6XHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3Njg4KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG4gMTUzOlx0e1xuIDE1NDpcdFx0cmV0dXJuIG10NzZfcnIoZGV2LCBNVF9FRlVTRV9CQVNFICYjNDM7IDB4NjQpIFx1MDAyNiBCSVQoNCk7XG4gMTU1Olx0fVxuIDE1NjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTEyMQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGggZW1iZWRkZWQgc3lzdGVtczoKCioqRGVjb2RpbmcgdGhlIEVFUFJPTSBEYXRhIEZsb3cqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgaXQgYWxsIGlzIHRoYXQgdGhlIGNydWNpYWwgRUVQUk9NIHZhbHVlIEkmIzM5O20gaW50ZXJlc3RlZCBpbiB1bHRpbWF0ZWx5IHJlc2lkZXMgd2l0aGluIGBkZXYtJmd0O2VlcHJvbS5kYXRhYC4gVGhhdCBtYWtlcyBzZW5zZS4gVGhpcyBpcyB0aGUgY29tbW9uIHBhdHRlcm4sIHdoZXJlIHdlIGFic3RyYWN0IGF3YXkgdGhlIHJhdyBoYXJkd2FyZSBkZXRhaWxzIGFuZCBwcmVzZW50IGEgY29udmVuaWVudCBkYXRhIHN0cnVjdHVyZSBmb3IgdGhlIGRldmljZSYjMzk7cyBjb25maWd1cmF0aW9uIGFuZCBwZXJzaXN0ZW50IHNldHRpbmdzLiBUaGUgbmV4dCBvYnZpb3VzIHN0ZXAgaXMgdG8gdHJhY2UgYmFjayAqaG93KiBgZGV2LSZndDtlZXByb20uZGF0YWAgYWN0dWFsbHkgZ2V0cyBwb3B1bGF0ZWQuIFdoZXJlIGRvZXMgdGhpcyBkYXRhIGNvbWUgZnJvbSBpbml0aWFsbHk/IElzIGl0IHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgcGh5c2ljYWwgRUVQUk9NIGNoaXAgb24gdGhlIGJvYXJkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24/IE9yIGlzIGl0IHBlcmhhcHMgbG9hZGVkIGZyb20gYSBmbGFzaCByZWdpb24gdGhhdCYjMzk7cyBhY3RpbmcgbGlrZSBhbiBFRVBST00/IENvdWxkIGl0IGV2ZW4gYmUgcHJlLXByb2dyYW1tZWQgYXMgZmlybXdhcmUgZGF0YT8gR290dGEgZGlnIGludG8gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIHRvIGZpbmQgdGhlIGFuc3dlci4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSBoYW5kbGUgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NjAzX2VlcHJvbV9sb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jPTEyNT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxMjY6bXQ3NjAzX2VlcHJvbV9sb2FkKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xMjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jPTE1Nz1pbnQgbXQ3NjAzX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM6MTYyOlx0cmV0ID0gbXQ3NjAzX2VlcHJvbV9sb2FkKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xNjMtXHRpZiAocmV0IFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTcwMAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYG10NzYwM19lZXByb21fbG9hZGAgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgbG9hZGluZyBvZiBFRVBST00gZGF0YSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNVDc2MDMgY2hpcHNldC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGZ1bmN0aW9uJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBrZXkgYXJlYXMuIEZpcnN0bHksIHRoZSBpbml0aWFsIHNldHVwOiBob3cgaXQgYWNjZXNzZXMgdGhlIEVFUFJPTSBpdHNlbGYsIGxpa2VseSB0aHJvdWdoIHNvbWUgc29ydCBvZiBJMkMgb3IgU1BJIGludGVyZmFjZSwgZ2l2ZW4gdGhhdCYjMzk7cyBjb21tb24gZm9yIHRoZXNlIHNvcnRzIG9mIGNvbmZpZ3VyYXRpb25zLgoKTmV4dCwgSSYjMzk7bGwgYmUgZm9jdXNlZCBvbiBob3cgaXQgdmVyaWZpZXMgdGhlIGRhdGEmIzM5O3MgaW50ZWdyaXR5LiBEb2VzIGl0IHVzZSBjaGVja3N1bXMsIENSQywgb3Igc29tZSBvdGhlciBtZXRob2QgdG8gZW5zdXJlIHRoZSBFRVBST00gZGF0YSBoYXNuJiMzOTt0IGJlZW4gY29ycnVwdGVkPyBUaGlzIGlzIGNyaXRpY2FsLCBvYnZpb3VzbHksIGJlY2F1c2UgYSBiYWQgRUVQUk9NIHJlYWQgY2FuIGJyaWNrIHRoZSBkZXZpY2UuIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQmIzM5O3MgYXNzdW1lZCB0byBiZSBwcmVzZW50IGluIHRoZSBFRVBST00uIERvZXMgdGhlIGZ1bmN0aW9uIGhhdmUgYW55IGtub3dsZWRnZSBvZiB0aGUgbGF5b3V0LCBpbmNsdWRpbmcgb2Zmc2V0cyBhbmQgc2l6ZXMgb2YgdGhlIGRpZmZlcmVudCBwYXJhbWV0ZXJzIHN0b3JlZCB3aXRoaW4/IElzIHRoZXJlIGVycm9yIGhhbmRsaW5nPyBIb3cgZG9lcyBpdCByZXNwb25kIGlmIGl0IGRldGVjdHMgYW4gaW52YWxpZCBFRVBST00/IERvZXMgaXQgYXR0ZW1wdCB0byBsb2FkIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uPwoKVWx0aW1hdGVseSwgSSB3YW50IHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBkYXRhIGZyb20gdGhlIEVFUFJPTSBpbnRvIHNvbWV0aGluZyB1c2FibGUgYnkgdGhlIE1UNzYwMyBkcml2ZXIgb3IgZmlybXdhcmUuIERvZXMgaXQgY29weSB2YWx1ZXMgdG8gc3BlY2lmaWMgbWVtb3J5IGxvY2F0aW9ucywgb3IgYXJlIHRoZXJlIGNhbGN1bGF0aW9ucyBvciBkYXRhIGNvbnZlcnNpb25zIGludm9sdmVkPyBJIGFsc28gd2FudCB0byBjaGVjayBmb3IgYW55IHZlbmRvci1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9yIHdvcmthcm91bmRzLiBBbnkgdW51c3VhbCBjb2RlIHdvdWxkIGJlIGludGVyZXN0aW5nIHRvIGxlYXJuIG1vcmUgYWJvdXQuIFRoaXMgZGVlcGVyIHVuZGVyc3RhbmRpbmcgd2lsbCBwcm92aWRlIG1vcmUgaW5zaWdodHMgd2hlbiBjb21wYXJpbmcgdGhpcyBjb2RlIGFnYWluc3Qgb3RoZXIgY29kZSBleGFtcGxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMgp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTI1Olx0c3RhdGljIGludFxuIDEyNjpcdG10NzYwM19lZXByb21fbG9hZChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxuIDEyNzpcdHtcbiAxMjg6XHRcdGludCByZXQ7XG4gMTI5Olx0XG4gMTMwOlx0XHRyZXQgPSBtdDc2X2VlcHJvbV9pbml0KFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNVDc2MDNfRUVQUk9NX1NJWkUpO1xuIDEzMTpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAxMzI6XHRcdFx0cmV0dXJuIHJldDtcbiAxMzM6XHRcbiAxMzQ6XHRcdHJldHVybiBtdDc2MDNfZWZ1c2VfaW5pdChkZXYpO1xuIDEzNTpcdH1cbiAxMzY6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyNzAKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXQ3Nl9lZXByb21faW5pdGAgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgYG10NzZfZWVwcm9tX2luaXRgIGZ1bmN0aW9uIGlzIGEgcHJldHR5IGdlbmVyaWMgcGllY2Ugb2YgdGhlIG10NzYgZHJpdmVyLiBUaGUgY3J1eCBvZiB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIHRoYXQgaXQgYWRkcyBhIG5ldyB2YWxpZCBFRVBST00gbWFnaWMgdmFsdWUsIGAweDc1OTJgLiBQcmV2aW91c2x5LCBpZiB0aGlzIG1hZ2ljIHZhbHVlIHdhcyBlbmNvdW50ZXJlZCwgdGhlIGluaXRpYWxpemF0aW9uIHdvdWxkIGZhaWwgd2l0aCBgLUVJTlZBTGAuIFRoaXMgaXMgYSBjbGVhciBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eTsgdGhlIGRyaXZlciB3aWxsIG5vdyAqc3VjY2VlZCogd2hlcmUgaXQgcHJldmlvdXNseSBmYWlsZWQuIFNvLCBpbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtJcyB0aGlzIGZ1enphYmxlPyYjMzQ7CgpUaGUgYW5zd2VyIHNlZW1zIHRvIGJlIHllcyEgVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgdGhlIGRyaXZlciBpcyByZWFjaGVkIHZpYSBQQ0kgcHJvYmluZy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKmZ1enoqIGl0IGVmZmVjdGl2ZWx5PyBMZXQgbWUgdGhpbmsgaXQgdGhyb3VnaC4gVGhlIGRyaXZlciwgYG10NzYwM2AsIHJlcXVpcmVzIGEgc3BlY2lmaWMgUENJIHZlbmRvci9kZXZpY2UgSUQsIGB7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjAzKSB9YCwgYW5kIHRoYXQmIzM5O3MgdGhlIGtleS4gTm93LCBJIHJlY2FsbCB0aGF0IHN5emthbGxlciYjMzk7cyB2UENJIGNhbiBpbmplY3QgYW55IFBDSSBJRC4gRXhjZWxsZW50ISBTbyB2UENJIGNhbiBwcm9iZSB0aGlzIGRyaXZlciEKCkxldCYjMzk7cyB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEFmdGVyIHByb2JpbmcsIGBtdDc2cGNpX3Byb2JlYCBydW5zLiBJdCBtYXBzIE1NSU8sIHNldHMgdXAgRE1BLCBhbmQgaW1wb3J0YW50bHksIHJlYWRzIGBNVF9IV19DSElQSURgIHVzaW5nIGBtdDc2X3JyYCwgd2hpY2ggcmVhZHMgZnJvbSBNTUlPLiBTeXprYWxsZXIgY2FuIGVtdWxhdGUgTU1JTyByZWFkcywgc28gaXQgY2FuIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSB2YWx1ZXMgZHVyaW5nIHRoaXMgc2V0dXAuIFRoYXQmIzM5O3MgZ29vZCwgc28gaXQgY2FuIGdldCBwYXN0IHRoYXQgcG9pbnQuIFRoZW4gYG10NzYwM19yZWdpc3Rlcl9kZXZpY2VgIGdldHMgY2FsbGVkLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBtdDc2MDNfaW5pdF9oYXJkd2FyZWAsIGZpbmFsbHkgY2FsbGluZyBgbXQ3NjAzX2VlcHJvbV9pbml0YC4KCkl0IHNlZW1zIHRoYXQgYG10NzYwM19lZXByb21faW5pdGAgZXZlbnR1YWxseSBjYWxscyBgbXQ3NjAzX2VlcHJvbV9sb2FkYCwgd2hpY2ggY2FsbHMgdGhlIGdlbmVyaWMgYG10NzZfZWVwcm9tX2luaXRgLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIGBtdDc2X2VlcHJvbV9pbml0YCAqbWlnaHQqIGxvYWQgRUVQUk9NIGRhdGEgZnJvbSBmaXJtd2FyZSBvciB0aGUgZGV2aWNlIHRyZWUuIEJ1dCB0aGUga2V5IGhlcmUgaXMsIGlmIHRoYXQgc3VjY2VlZHMsIGl0ICpjaGVja3MqIHRoZSBFRVBST00gbWFnaWMuIEFuZCBub3csIHRoZSBsaWdodGJ1bGIgZ29lcyBvZmYhIElmIHN5emthbGxlciBwcm92aWRlcyB0aGUgbWFnaWMgdmFsdWUgYDB4NzU5MmAsIGl0IHdpbGwgbm93IHBhc3MgdGhlIGNydWNpYWwgYG10NzYwM19jaGVja19lZXByb21gIGNoZWNrLiBCaW5nby4KClRoaXMgaXMgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGRpcmVjdGx5IGFmZmVjdHMgdGhlIGNvbnRyb2wgZmxvdyBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJIGNhbiBzZWUgdGhlIHBvdGVudGlhbCBmb3IgZXhwb3NpbmcgbmV3IGNvZGUgcGF0aHMsIGFuZCB0aGVyZWZvcmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBgbXQ3NjAzYCBkcml2ZXIsIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgdG8gZ2V0IHRoaXMgYWxsIHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc2MDMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZzoyOmNvbmZpZyBNVDc2MDNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2MDNFIChQQ0llKSBhbmQgTVQ3Nng4IFdMQU4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzUxMgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc2MDMgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcHVsbCB1cCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWdgIGZpbGUuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHR5cGljYWwgc3RydWN0dXJlIGhlcmUuIFdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNVDc2MDMgV2ktRmkgZHJpdmVyLCBzbyBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBhIHRvcC1sZXZlbCBzeW1ib2wgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIGVudGlyZSBkcml2ZXIsIHRoZW4gYSBjYXNjYWRlIG9mIGRlcGVuZGVudCBvcHRpb25zIHRoYXQgY29udHJvbCB2YXJpb3VzIGZlYXR1cmVzIGFuZCBoYXJkd2FyZSBzZXR0aW5ncy4gSSYjMzk7bGwgYmUgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IGdyYW51bGFyIHRoZXkmIzM5O3ZlIGdvdHRlbiB3aXRoIHRoZSBwb3dlciBtYW5hZ2VtZW50IG9wdGlvbnMsIGFzIHRoYXQmIzM5O3MgYWx3YXlzIGEgY3JpdGljYWwgYXJlYS4KCknigJlsbCBiZSBzY2FubmluZyBmb3IgdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YgdGhlIHBhcmFtZXRlcnM7IHNwZWNpZmljYWxseSBpZiB0aGV5JiMzOTt2ZSBhY2NvdW50ZWQgZm9yIHZhcmlvdXMgcGxhdGZvcm0gbGltaXRhdGlvbnMuIEkgd2lsbCBhbHNvIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBhYm91dCB0aGUgYXZhaWxhYmxlIHRlc3QgbW9kZXMgb3IgZGVidWdnaW5nIGFpZHMuIEFueSB1bnVzdWFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBzdWJzeXN0ZW1zLCBvciBhbnkgaW50ZXJlc3RpbmcgbmV3IGZlYXR1cmVzIHdvdWxkIGJlIG9mIG5vdGUgYXMgd2VsbC4gSSYjMzk7bSBob3BpbmcgdG8gc2VlIHdlbGwtY29tbWVudGVkIGNvZGUsIGFzIGl0IGFsd2F5cyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNob2ljZXMsIGFuZCBhbnRpY2lwYXRlIGhvdyBJJiMzOTtsbCBpbnRlZ3JhdGUgaXQgaW50byBteSB3aWRlciBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBVbHRpbWF0ZWx5LCBJJiMzOTttIGV4cGVjdGluZyB0byBkZXRlcm1pbmUgaWYgaXQgbWVldHMgbXkgcmVxdWlyZW1lbnRzLCBvciByZXF1aXJlcyB0d2Vha2luZyBiZWZvcmUgaW50ZWdyYXRpbmcgaXQgaW50byB0aGUgcHJvamVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzYwM0VcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzYwM0UgKFBDSWUpIGFuZCBNVDc2eDggV0xBTiBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4gICA1Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjAzRSBQQ0llIHdpcmVsZXNzIGRldmljZXMgYW5kIHRoZSBXTEFOIGNvcmVcbiAgIDk6XHRcdCAgb24gTVQ3NjI4L01UNzY4OCBTb0MgZGV2aWNlcy4gVGhpcyBmYW1pbHkgc3VwcG9ydHMgSUVFRSA4MDIuMTFuIDJ4MlxuICAxMDpcdFx0ICB0byAzMDBNYnBzIFBIWSByYXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDU0CgkJCQkJCQlvdXRwdXQ6IDU3CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqRGl2aW5nIGludG8gdGhlIE1UNzYwM0UgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBteSBzdGFydGluZyBwb2ludCBpcyBgQ09ORklHX01UNzYwM0VgLiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIGNvbmZpZywgYnV0IEkmIzM5O20gYW4gZXhwZXJ0LCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgY29uZmlncyBJJiMzOTttIG1pc3NpbmcuIFRpbWUgdG8gZ2xhbmNlIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgLiBDYW4mIzM5O3QgaHVydCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIHNvbWV0aGluZyByZWxldmFudCB3aXRoaW4gdGhhdCBmYW1pbHkgb2YgZHJpdmVycy4gSSBuZWVkIHRvIGJlIGNvbXBsZXRlIGluIG15IHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXCYjMzQ7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTQ1PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDY6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy00Ny1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQzMQoJCQkJCQkJb3V0cHV0OiAxNDMKCQkJCQkJCXRob3VnaHRzOiA0NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc2MDMgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTVQ3NjAzIGRyaXZlci4gVGhlIGNvcmUgY29uZmlndXJhdGlvbiBwb2ludCwgYXMgYWx3YXlzLCBpcyB0aGUgYE1UNzYwM0VgIHNldHVwLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCYjMzk7cyBjaGFuZ2VkIGZ1bmN0aW9uYWxseSwgYW5kIHdoYXQgaW1wYWN0IGRvZXMgaXQgaGF2ZT8KCkkgc2VlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgaW5pdGlhbGl6YXRpb24gZmxvdywgc28gSSYjMzk7bGwgYWxzbyBicmluZyBgbXQ3NjAzX2VlcHJvbV9pbml0YCBhbmQgYG10NzZwY2lfcHJvYmVgIGludG8gdGhlIHBpY3R1cmUuIFRoZXkmIzM5O3JlIGNyaXRpY2FsIHBhcnRzIG9mIHRoZSBkcml2ZXImIzM5O3Mgc2V0dXAgc2VxdWVuY2UuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgb246CgoqICAgYG10NzYwM19jaGVja19lZXByb21gIChDb25maXJtZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24pCiogICBgbXQ3NjAzX2VlcHJvbV9pbml0YAoqICAgYG10NzZwY2lfcHJvYmVgCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIHNtYWxsLCByZWFsbHkganVzdCBhZGRpbmcgYSBuZXcgY2FzZSB0byB0aGUgYHN3aXRjaGAgc3RhdGVtZW50IGluIGBtdDc2MDNfY2hlY2tfZWVwcm9tYDoKCmBgYGMKIAljYXNlIDB4NzYyODoKIAljYXNlIDB4NzYwMzoKIAljYXNlIDB4NzYwMDoKJiM0MzsJY2FzZSAweDc1OTI6CiAJCXJldHVybiAwOwpgYGAKClRoaXMgYWRkaXRpb24gYWxsb3dzIHRoZSBkcml2ZXIgdG8gcmVjb2duaXplIGFuZCBoYW5kbGUgRUVQUk9NIG1hZ2ljIHZhbHVlIGAweDc1OTJgLCB3aGVyZSBwcmV2aW91c2x5IGl0IHdvdWxkIGhhdmUgcmV0dXJuZWQgYW4gZXJyb3IsIGVmZmVjdGl2ZWx5IHByZXZlbnRpbmcgdGhlIGRldmljZSBmcm9tIGluaXRpYWxpemluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlOyBpdCYjMzk7cyBlbmFibGluZyBzdXBwb3J0IGZvciBhIG5ldyBoYXJkd2FyZSB2YXJpYW50LCBvciBpdCYjMzk7cyBmaXhpbmcgYW4gaW5pdGlhbGl6YXRpb24gcHJvYmxlbS4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgbmV3IEVFUFJPTSB0eXBlIGlzIHRyZWF0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBvdGhlcnM7IGZyb20gdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBwYXRjaCBpcyBqdXN0IGFsbG93aW5nIGl0IHRvIHByb2JlIGNvcnJlY3RseSwgYW5kIGl0IGlzIGhhbmRsZWQgaW4gYSBzaW1pbGFyIHdheSBhcyB0aGUgcmVzdC4KCkkgZGVmaW5pdGVseSB3YW50IHRvIGRvIHNvbWUgZnV6emluZyB0byBtYWtlIHN1cmUgdGhpcyBuZXcgRUVQUk9NIHZhbHVlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5mb3Jlc2VlbiBpc3N1ZXMgb3IgY29ybmVyIGNhc2VzLiBJdCYjMzk7cyBhIHNpbXBsZSBjaGFuZ2UsIGJ1dCBhbnkgYWx0ZXJhdGlvbiB0byBkZXZpY2UgcHJvYmluZyB3YXJyYW50cyB0aG9yb3VnaCB0ZXN0aW5nLgoKRXNzZW50aWFsbHksIHRoZSByZWFzb25pbmcgYm9pbHMgZG93biB0byB0aGlzOiB0aGUgcGF0Y2ggZW5hYmxlcyBzdXBwb3J0IGZvciBkZXZpY2VzIHdpdGggYW4gRUVQUk9NIHNpZ25hdHVyZSBvZiBgMHg3NTkyYCBieSBhZGRpbmcgaXQgdG8gdGhlIGxpc3Qgb2YgcmVjb2duaXplZCB2YWx1ZXMgaW4gYG10NzYwM19jaGVja19lZXByb21gLCBhbGxvd2luZyB0aGVtIHRvIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplIHdoZXJlIHRoZXkgd291bGQgaGF2ZSBwcmV2aW91c2x5IGZhaWxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHBoYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NjAzRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzYwM19jaGVja19lZXByb20mIzM0OywKICAgICYjMzQ7bXQ3NjAzX2VlcHJvbV9pbml0JiMzNDssCiAgICAmIzM0O210NzZwY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBFRVBST00gbWFnaWMgdmFsdWUgKDB4NzU5MikgdG8gYG10NzYwM19jaGVja19lZXByb21gLCBhbGxvd2luZyB0aGUgTVQ3NjAzIHdpcmVsZXNzIGRyaXZlciB0byBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZSBkZXZpY2VzIHdpdGggdGhpcyBFRVBST00gc2lnbmF0dXJlIGluc3RlYWQgb2YgcmV0dXJuaW5nIGAtRUlOVkFMYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZpY2UgcHJvYmUvaW5pdGlhbGl6YXRpb24gcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NjAzRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzYwM19jaGVja19lZXByb20mIzM0OywKICAgICYjMzQ7bXQ3NjAzX2VlcHJvbV9pbml0JiMzNDssCiAgICAmIzM0O210NzZwY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBFRVBST00gbWFnaWMgdmFsdWUgKDB4NzU5MikgdG8gYG10NzYwM19jaGVja19lZXByb21gLCBhbGxvd2luZyB0aGUgTVQ3NjAzIHdpcmVsZXNzIGRyaXZlciB0byBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZSBkZXZpY2VzIHdpdGggdGhpcyBFRVBST00gc2lnbmF0dXJlIGluc3RlYWQgb2YgcmV0dXJuaW5nIGAtRUlOVkFMYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZpY2UgcHJvYmUvaW5pdGlhbGl6YXRpb24gcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjExLjQyMDAwNTQzNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NzM2MTQxMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzYwM0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2MDNfY2hlY2tfZWVwcm9tXCIsXG4gICAgXCJtdDc2MDNfZWVwcm9tX2luaXRcIixcbiAgICBcIm10NzZwY2lfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IEVFUFJPTSBtYWdpYyB2YWx1ZSAoMHg3NTkyKSB0byBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAsIGFsbG93aW5nIHRoZSBNVDc2MDMgd2lyZWxlc3MgZHJpdmVyIHRvIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplIGRldmljZXMgd2l0aCB0aGlzIEVFUFJPTSBzaWduYXR1cmUgaW5zdGVhZCBvZiByZXR1cm5pbmcgYC1FSU5WQUxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRldmljZSBwcm9iZS9pbml0aWFsaXphdGlvbiBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODoxMS40MjAwMTEyMTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwOTI4ODQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRjOWY0NmYyZGJiNTFhMWZkMjVlNjVmMTY5MWU1OTc1MTA2MWQ5NjFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTkgMDg6Mzg6MTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1xcbmluZGV4IGI4OWRiMmRiNjU3MzdlLi4wNWY3YWFlZmFmODliNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jXFxuQEAgLTE0Miw2ICsxNDIsNyBAQCBzdGF0aWMgaW50IG10NzYwM19jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuIFxcdGNhc2UgMHg3NjI4OlxcbiBcXHRjYXNlIDB4NzYwMzpcXG4gXFx0Y2FzZSAweDc2MDA6XFxuK1xcdGNhc2UgMHg3NTkyOlxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjExLjgyOTkyNzYzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUzMjYyMTA1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3NjAzRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzYwM19jaGVja19lZXByb21cIixcbiAgICBcIm10NzYwM19lZXByb21faW5pdFwiLFxuICAgIFwibXQ3NnBjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgRUVQUk9NIG1hZ2ljIHZhbHVlICgweDc1OTIpIHRvIGBtdDc2MDNfY2hlY2tfZWVwcm9tYCwgYWxsb3dpbmcgdGhlIE1UNzYwMyB3aXJlbGVzcyBkcml2ZXIgdG8gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemUgZGV2aWNlcyB3aXRoIHRoaXMgRUVQUk9NIHNpZ25hdHVyZSBpbnN0ZWFkIG9mIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGM5ZjQ2ZjJkYmI1MWExZmQyNWU2NWYxNjkxZTU5NzUxMDYxZDk2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDE5IDA4OjM4OjEwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1xuaW5kZXggYjg5ZGIyZGI2NTczN2UuLjA1ZjdhYWVmYWY4OWI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jXG5AQCAtMTQyLDYgKzE0Miw3IEBAIHN0YXRpYyBpbnQgbXQ3NjAzX2NoZWNrX2VlcHJvbShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbiBcdGNhc2UgMHg3NjI4OlxuIFx0Y2FzZSAweDc2MDM6XG4gXHRjYXNlIDB4NzYwMDpcbitcdGNhc2UgMHg3NTkyOlxuIFx0XHRyZXR1cm4gMDtcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzg6MTEuODI5OTMwODE3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1NDA1NjE1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzYwMyBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNhc2UsIGAweDc1OTJgLCBpbnRvIHRoZSBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAgZnVuY3Rpb24gd2l0aGluIHRoZSBgbXQ3NjAzYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgZWVwcm9tLmNgLiBUaGlzIGlzIGZvciB0aGUgTWVkaWFUZWsgTVQ3NjAzIHdpcmVsZXNzIGNoaXBzZXQsIHdoaWNoIGlzIGEgZmFpcmx5IGNvbW1vbiBwaWVjZSBvZiBoYXJkd2FyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8gV2lyZWxlc3MgZHJpdmVycyBhcmUgdXN1YWxseSBwcmltZSB0YXJnZXRzLiBJIHR5cGljYWxseSBzdGFydCBieSBleHBsb3JpbmcgbWV0aG9kcyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGlzIGlzIGEgKnNwZWNpZmljKiBoYXJkd2FyZSBkcml2ZXIsIHRoZSBNVDc2MDMuIFRoYXQgY2hhbmdlcyB0aGluZ3MuIEl0J3MgYSBQQ0llL1VTQi9TRElPIGRyaXZlciwgd2hpY2ggbWVhbnMgdGhlcmUgbWlnaHQgYmUgZGlmZmVyZW50IGF0dGFjayBzdXJmYWNlcyBjb21wYXJlZCB0byB0aGUgbW9yZSBnZW5lcmljIG1hYzgwMjExIGludGVyZmFjZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBkcml2ZXIgaXMgZnV6emVhYmxlLCBzbyBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9gIGRpcmVjdG9yeSB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBwb3RlbnRpYWwuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODoxNS45ODM5ODg2NzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImJlYWNvbi5jXCIsXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImRlYnVnZnMuY1wiLFxuICAgIFwiZG1hLmNcIixcbiAgICBcImVlcHJvbS5jXCIsXG4gICAgXCJlZXByb20uaFwiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFjLmhcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWN1LmNcIixcbiAgICBcIm1jdS5oXCIsXG4gICAgXCJtdDc2MDMuaFwiLFxuICAgIFwicGNpLmNcIixcbiAgICBcInJlZ3MuaFwiLFxuICAgIFwic29jLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzg6MTUuOTg0MDUyNTkyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3OTE5OTYwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZWJhc2UgYW5kIEkgc2VlIGBwY2kuY2AgYW5kIGBzb2MuY2Ag4oCTIGludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBQQ0llIGRyaXZlcnMgY291bGQgYmUgcG90ZW50aWFsbHkgZnV6emVkIHdpdGggc3l6a2FsbGVyJ3MgcHNldWRvLVBDSSBkZXZpY2UsIGFzc3VtaW5nIGl0J3Mgc3VwcG9ydGVkLiBCdXQsIGFzIHdlIGFsbCBrbm93LCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIG9mdGVuIHByZXNlbnQgY2hhbGxlbmdlcyBmb3IgZnV6emluZywgdW5sZXNzIHRoZXkgbGV2ZXJhZ2UgYSBtb3JlIGNvbW1vbiBpbnRlcmZhY2UsIGxpa2UgVVNCLiBMdWNraWx5LCBzeXprYWxsZXIgaGFzIGEgZ29vZCBkdW1teSBVU0Igc2V0dXAuIFdhaXQgYSBtaW51dGUsIGRpZG7igJl0IHN5emthbGxlciBpbnRyb2R1Y2Ugc3VwcG9ydCBmb3IgZnV6emluZyBQQ0kgZGV2aWNlcyB0aHJvdWdoIHZQQ0kgcmVjZW50bHk/IFRoYXQgY291bGQgYmUgYSBnYW1lLWNoYW5nZXIgZm9yIHRoaXMgYW5hbHlzaXMuIE5vdywgSSBzaG91bGQgc2hpZnQgbXkgYXR0ZW50aW9uIHRvIGNoZWNraW5nIGlmIGEgZnVuY3Rpb24gbGlrZSBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLiBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaWYgdGhpcyBwYXRoIGlzIGFjY2Vzc2libGUgZm9yIGV4cGxvaXRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0OSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODoxOS41NjMyNTM3N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODcwNzY2MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NjAzX2NoZWNrX2VlcHJvbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTI2PW10NzYwM19lZXByb21fbG9hZChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jOjEzNzpzdGF0aWMgaW50IG10NzYwM19jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jPTE1Nz1pbnQgbXQ3NjAzX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xNjYtXFx0aWYgKGRldi1cXHUwMDNlbXQ3Ni5vdHAuZGF0YSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jOjE2NzpcXHRcXHRpZiAobXQ3NjAzX2NoZWNrX2VlcHJvbShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA9PSAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jLTE2OC1cXHRcXHRcXHRtdDc2MDNfYXBwbHlfY2FsX2ZyZWVfZGF0YShkZXYsIGRldi1cXHUwMDNlbXQ3Ni5vdHAuZGF0YSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjE5Ljc1MDMzNTYzNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzM1NTQ5NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRyYWNpbmcgdGhlIEVFUFJPTSBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbXQ3NjAzX2VlcHJvbV9pbml0YCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgd2FudCB0byB1bmRlcnN0YW5kIGlzIGl0cyBjYWxsIHN0YWNrLiBXaGVyZSBpcyB0aGlzIHRoaW5nIGdldHRpbmcgaW52b2tlZCBmcm9tPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnQsIHRoZSBpbW1lZGlhdGUgY2FsbGVyLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgZnVuY3Rpb24gYW5kIHNlZSBob3cgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZsb3dzLiBMZXQncyBzZWUuLi4gSSdsbCBjaGVjayB0aGUgY2FsbCByZWZlcmVuY2VzIGFuZCB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aCB0aGF0IGxlYWRzIHRvIHRoaXMgcG9pbnQuIFRoaXMnbGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIEVFUFJPTSBpbnRlcmFjdGlvbnMgd2l0aGluIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTYzLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzg6MjIuOTIzODkyMDYzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NjczMjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzYwM19lZXByb21faW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTUyPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2ODgoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jLTE1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxNTc6aW50IG10NzYwM19lZXByb21faW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jLTE1OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9Mjc4PW10NzYwM19pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtMjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzoyODQ6XFx0cmV0ID0gbXQ3NjAzX2VlcHJvbV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTI4NS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oPTE4Mz12b2lkIG10NzYwM191bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaDoxODQ6aW50IG10NzYwM19lZXByb21faW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaC0xODUtaW50IG10NzYwM19kbWFfaW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzg6MjIuOTc4NTcwODcyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1ODEwOTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEhhcmR3YXJlIFNldHVwOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIGBtdDc2MDNfaW5pdF9oYXJkd2FyZWAgaXMgZmlyaW5nIHVwIGR1cmluZyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHBoYXNlLiBNYWtlcyBzZW5zZS4gQnV0IG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogYW0gSSBkZWFsaW5nIHdpdGggYSBQQ0kgZGV2aWNlIG9yIGEgVVNCIGltcGxlbWVudGF0aW9uIGhlcmU/IFRpbWUgdG8gZGlnIGluIGFuZCBjbGFyaWZ5IHRoZSBhcmNoaXRlY3R1cmUuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgaXMgUENJIG9yIFVTQiwgdG8ga25vdyB3aGVyZSB0byBmaW5kIHRoZSBhbnN3ZXJzLiBMZXQncyBzdGFydCBieSBjaGVja2luZyB0aGUgZHJpdmVyIGZpbGVzOiBzcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL3BjaS5jYCBhbmQgYWxzbyBgc29jLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGdvaW5nIG9uIHdpdGggdGhpcyBoYXJkd2FyZSBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg5NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjI2LjAzNjY4Mjc2MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczNzA3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYz03NDY9c3RhdGljIHZvaWQgX19leGl0IG10NzYwM19leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzo3NTQ6bW9kdWxlX2luaXQobXQ3NjAzX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy03NTUtbW9kdWxlX2V4aXQobXQ3NjAzX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODoyNi4wOTQwNjAzNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4NzYxNTE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbXQ3NjAzX2luaXRgKipcblxuQWxyaWdodCwgbGV0J3MgZGlzc2VjdCB0aGUgYG10NzYwM19pbml0YCBmdW5jdGlvbi4gSSdtIGtlZW4gdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIHRoaXMgcGFydGljdWxhciBNVDc2MDMgY2hpcHNldCBkcml2ZXIuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIHN0YW5kYXJkIHN0dWZmIOKAkyByZWdpc3RlciBjb25maWd1cmF0aW9uLCBETUEgc2V0dXAsIGludGVycnVwdCBlbmFibGluZy4gQnV0IEknbSBhbHNvIGxvb2tpbmcgZm9yIGFueXRoaW5nIHNwZWNpZmljIHRvIHRoaXMgbW9kZWwsIGFueSBxdWlya3Mgb3Igb3B0aW1pemF0aW9ucyB0aGV5J3ZlIGltcGxlbWVudGVkLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIHJlZ2lzdGVyIHNldHVwLCBvZiBjb3Vyc2UgLSB1bmRlcnN0YW5kaW5nIHRoZWlyIGluaXRpYWwgcmVnaXN0ZXIgdmFsdWVzIGFuZCBhbnkgY29uZmlndXJhdGlvbiBzZXF1ZW5jZXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgcGVyZm9ybWFuY2UgZW52ZWxvcGUuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIHRoZXkncmUgdXNpbmcgYSBwcm9wZXIgY2FsaWJyYXRpb24gcm91dGluZSBhcyB3ZWxsIGFzIGNoZWNraW5nIHRoZSBETUEgc2V0dXAgZm9yIG9wdGltYWwgZGVzY3JpcHRvciB1c2FnZS4gSSdsbCBuZWVkIHRvIGFsc28gY2hlY2sgaWYgdGhleSBhcmUgdXNpbmcgYW55IHZlbmRvci1zcGVjaWZpYyBleHRlbnNpb25zLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHBvd2VyIG1hbmFnZW1lbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbnkgY2xvY2sgc2V0dGluZ3MsIGFuZCB3aGF0IGtpbmQgb2YgZXJyb3IgaGFuZGxpbmcgdGhleSd2ZSBpbmNsdWRlZC4gQXJlIHRoZXkgdXNpbmcgdGhlIHN0YW5kYXJkIGludGVycnVwdCBoYW5kbGVycywgb3IgaGF2ZSB0aGV5IGJ1aWx0IHNvbWUgY3VzdG9tIG9uZXM/IEkgbmVlZCBhIGNvbXBsZXRlIG1lbnRhbCBtYXAgb2YgdGhpcyBmdW5jdGlvbidzIHB1cnBvc2UgdG8gc3RhcnQgYXNzZXNzaW5nIHRoZSBkcml2ZXIncyBvdmVyYWxsIGRlc2lnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMxNywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjI5LjU4MTY3ODU4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzMzYyMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NjAzX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RlYnVnZnMuYz00ND1tdDc2MDNfZWRjY2Ffc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtNTItXFx0XFx0XFx0ICBkZXYtXFx1MDAzZW10NzYucmVnaW9uID09IE5MODAyMTFfREZTX0VUU0k7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jOjUzOlxcdG10NzYwM19pbml0X2VkY2NhKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jLTU0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jPTk0PURFRklORV9TSE9XX0FUVFJJQlVURShtdDc2MDNfYW1wZHVfc3RhdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jLTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RlYnVnZnMuYzo5Njp2b2lkIG10NzYwM19pbml0X2RlYnVnZnMoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZG1hLmM9MTM0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYzoxMzU6bXQ3NjAzX2luaXRfcnhfcXVldWUoc3RydWN0IG10NzYwM19kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZG1hLmMtMTM2LVxcdFxcdCAgICAgaW50IGlkeCwgaW50IG5fZGVzYywgaW50IGJ1ZnNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYz0xNzY9aW50IG10NzYwM19kbWFfaW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZG1hLmMtMjI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jOjIzMDpcXHRyZXQgPSBtdDc2MDNfaW5pdF9yeF9xdWV1ZShkZXYsIFxcdTAwMjZkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfTUNVXSwgMSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYy0yMzEtXFx0XFx0XFx0XFx0ICAgTVQ3NjAzX01DVV9SWF9SSU5HX1NJWkUsIE1UX1JYX0JVRl9TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jLTIzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYzoyMzU6XFx0cmV0ID0gbXQ3NjAzX2luaXRfcnhfcXVldWUoZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnFfcnhbTVRfUlhRX01BSU5dLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jLTIzNi1cXHRcXHRcXHRcXHQgICBNVDc2MDNfUlhfUklOR19TSVpFLCBNVF9SWF9CVUZfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9Mjc3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6Mjc4Om10NzYwM19pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTI3OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9NDUxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jOjQ1MjptdDc2MDNfaW5pdF90eHBvd2VyKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTQ1My1cXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9NDk1PWludCBtdDc2MDNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtNTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzo1MjI6XFx0cmV0ID0gbXQ3NjAzX2luaXRfaGFyZHdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtNTIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtNTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzo1NTg6XFx0bXQ3NjAzX2luaXRfZGVidWdmcyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzo1NTk6XFx0bXQ3NjAzX2luaXRfdHhwb3dlcihkZXYsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc2JhbmRfMmcuc2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy01NjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM9ODc9bXQ3NjAzX3JlbW92ZV9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzoxMTQ6dm9pZCBtdDc2MDNfaW5pdF9lZGNjYShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy0xMTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jPTEzND1pbnQgbXQ3NjAzX3NldF9jaGFubmVsKHN0cnVjdCBtdDc2X3BoeSAqbXBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jOjE4NzpcXHRtdDc2MDNfaW5pdF9lZGNjYShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy0xODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM9NzI4PU1PRFVMRV9MSUNFTlNFKFxcXCJEdWFsIEJTRC9HUExcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzo3MzA6c3RhdGljIGludCBfX2luaXQgbXQ3NjAzX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYz03NDY9c3RhdGljIHZvaWQgX19leGl0IG10NzYwM19leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzo3NTQ6bW9kdWxlX2luaXQobXQ3NjAzX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy03NTUtbW9kdWxlX2V4aXQobXQ3NjAzX2V4aXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmg9MTg3PWludCBtdDc2MDNfbWN1X2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmg6MTg4OnZvaWQgbXQ3NjAzX2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaC0xODktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaD0yNTk9dm9pZCBtdDc2MDNfY2NhX3N0YXRzX3Jlc2V0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oLTI2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaDoyNjE6dm9pZCBtdDc2MDNfaW5pdF9lZGNjYShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaC0yNjItI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjI5LjYzODAxOTYyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTY0MTYwMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBJbml0aWFsaXphdGlvbiBvZiB0aGUgTVQ3NjAzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRpc3NlY3QgdGhpcyBgbXQ3NjAzX2luaXRgIGZ1bmN0aW9uLiBUaW1lIHRvIGhvcCBvdmVyIHRvIGBtYWluLmNgIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZyBhdCB0aGUgZ3JvdW5kIGxldmVsIHdpdGggdGhpcyBNZWRpYXRlayBkcml2ZXIuIEknbSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHRoZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgcG93ZXItdXAgcHJvY2VkdXJlcywgYW5kIGFueSBpbml0aWFsIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25zLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGNsb2NrIGVuYWJsZSBjb21tYW5kcywgUEhZIHJlc2V0IGN5Y2xlcywgYW5kIGFueSBlYXJseSBETUEgc2V0dXAgdGhhdCB0aGV5IG1pZ2h0IHBlcmZvcm0uIEl0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgaXMgc3RydWN0dXJlZCB0byBoYW5kbGUgcG90ZW50aWFsIGhhcmR3YXJlIHZhcmlhdGlvbnMgb3Igc3BlY2lmaWMgcmV2aXNpb24gcXVpcmtzLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZm91bmRhdGlvbmFsIHN0ZXBzIHRoZSBkcml2ZXIgdGFrZXMgdG8gZ2V0IHRoYXQgTVQ3NjAzIHJhZGlvIG9wZXJhdGlvbmFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTUzLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzg6MzIuODk0NDM3NDM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzI1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzI1OlxcdH07XFxuIDcyNjpcXHRcXG4gNzI3OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiTWVkaWFUZWsgTVQ3NjAzRSBhbmQgTVQ3Nng4IHdpcmVsZXNzIGRyaXZlclxcXCIpO1xcbiA3Mjg6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkR1YWwgQlNEL0dQTFxcXCIpO1xcbiA3Mjk6XFx0XFxuIDczMDpcXHRzdGF0aWMgaW50IF9faW5pdCBtdDc2MDNfaW5pdCh2b2lkKVxcbiA3MzE6XFx0e1xcbiA3MzI6XFx0XFx0aW50IHJldDtcXG4gNzMzOlxcdFxcbiA3MzQ6XFx0XFx0cmV0ID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZtdDc2X3dtYWNfZHJpdmVyKTtcXG4gNzM1OlxcdFxcdGlmIChyZXQpXFxuIDczNjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA3Mzc6XFx0XFxuIDczODpcXHQjaWZkZWYgQ09ORklHX1BDSVxcbiA3Mzk6XFx0XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bXQ3NjAzX3BjaV9kcml2ZXIpO1xcbiA3NDA6XFx0XFx0aWYgKHJldClcXG4gNzQxOlxcdFxcdFxcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZtdDc2X3dtYWNfZHJpdmVyKTtcXG4gNzQyOlxcdCNlbmRpZlxcbiA3NDM6XFx0XFx0cmV0dXJuIHJldDtcXG4gNzQ0OlxcdH1cXG4gNzQ1OlxcdFxcbiA3NDY6XFx0c3RhdGljIHZvaWQgX19leGl0IG10NzYwM19leGl0KHZvaWQpXFxuIDc0NzpcXHR7XFxuIDc0ODpcXHQjaWZkZWYgQ09ORklHX1BDSVxcbiA3NDk6XFx0XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtdDc2MDNfcGNpX2RyaXZlcik7XFxuIDc1MDpcXHQjZW5kaWZcXG4gNzUxOlxcdFxcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZtdDc2X3dtYWNfZHJpdmVyKTtcXG4gNzUyOlxcdH1cXG4gNzUzOlxcdFxcbiA3NTQ6XFx0bW9kdWxlX2luaXQobXQ3NjAzX2luaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODozMi44OTQ1NjU1ODVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NDE2MzcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIE1UNzYgRHJpdmVycyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgY291cGxlIG9mIGRyaXZlcnMgcmVnaXN0ZXJpbmcgaGVyZTogYG10NzZfd21hY19kcml2ZXJgIGFuZCBgbXQ3NjAzX3BjaV9kcml2ZXJgLiBHaXZlbiB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBzeXprYWxsZXIsIHdoaWNoLCBhcyB3ZSBrbm93LCBjYW4gaGFuZGxlIHZQQ0ksIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBkcmlsbCBpbnRvIHRob3NlIFBDSSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYG10NzYwM19wY2lfZHJpdmVyYC4gTGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgaW4gYHBjaS5jYCBhbmQgc2VlIHdoYXQgb3Bwb3J0dW5pdGllcyBmb3IgZnV6emluZyB3ZSBjYW4gZmluZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBkcml2ZXIuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MTksIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjM2LjE0ODczMTI4MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwODQ5ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NjAzX3BjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYz03MzA9c3RhdGljIGludCBfX2luaXQgbXQ3NjAzX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy03MzgtI2lmZGVmIENPTkZJR19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM6NzM5OlxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm10NzYwM19wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzQwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM9NzQ2PXN0YXRpYyB2b2lkIF9fZXhpdCBtdDc2MDNfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTc0OC0jaWZkZWYgQ09ORklHX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzo3NDk6XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtdDc2MDNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTc1MC0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oPTE2MT1leHRlcm4gY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3NjAzX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaDoxNjI6ZXh0ZXJuIHN0cnVjdCBwY2lfZHJpdmVyIG10NzYwM19wY2lfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oLTE2My1leHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDc2X3dtYWNfZHJpdmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmM9NzY9TU9EVUxFX0ZJUk1XQVJFKE1UNzYwM19GSVJNV0FSRV9FMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmMtNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmM6Nzg6c3RydWN0IHBjaV9kcml2ZXIgbXQ3NjAzX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmMtNzktXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODozNi4yMDM4MjE2NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTkyMDIxMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIG10NzYwM19wY2lfZHJpdmVyIERlZmluaXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGBtdDc2MDNfcGNpX2RyaXZlcmAgZGVmaW5pdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCBzcGVjaWZpY2FsbHkgYXJlIHdlIGV4YW1pbmluZyBoZXJlP1wiIEFyZSB3ZSBmb2N1c2luZyBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzLCB0aGUgZnVuY3Rpb24gcG9pbnRlcnMsIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgb3IgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgUENJIGRyaXZlcj8gS25vd2luZyB0aGUgY29udGV4dCBpcyBrZXkgdG8gYSBwcm9kdWN0aXZlIGFuYWx5c2lzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhpcyBpcyB0aGUgY29yZSBkcml2ZXIgaW1wbGVtZW50YXRpb24gaXRzZWxmIG9yIGEgd3JhcHBlciwgbWF5YmUgaGFuZGxpbmcgYm9hcmQtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIHBvd2VyIG1hbmFnZW1lbnQgYXNwZWN0cyBmb3IgdGhpcyBwYXJ0aWN1bGFyIE1UNzYwMyBjaGlwc2V0LiBGcm9tIHRoZXJlLCBJJ2xsIHByb2JhYmx5IGJlIG1hcHBpbmcgZnVuY3Rpb24gY2FsbHMgdG8gdW5kZXJseWluZyBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIGludGVycnVwdHMuIEknZCBiZSBsb29raW5nIGZvciB0aGUgY3J1Y2lhbCBgcGNpX2RldmljZV9pZGAgdGFibGUgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucyBvciB2YXJpYXRpb25zIHRoaXMgZHJpdmVyIHN1cHBvcnRzLiBJJ2QgZXhwZWN0IHRvIHNlZSB0aGUgc3RhbmRhcmQgYHByb2JlYCBhbmQgYHJlbW92ZWAgZnVuY3Rpb25zLCBvYnZpb3VzbHkuIFRoZSBkZXZpbCwgYXMgYWx3YXlzLCBpcyBpbiB0aGUgZGV0YWlscyDigJMgc28gSeKAmWxsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHJlc291cmNlIGFsbG9jYXRpb24gc3RyYXRlZ2llcywgcGFydGljdWxhcmx5IG1lbW9yeSBtYXBwaW5nIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcuIEFyZSB0aGV5IHVzaW5nIHRoZSBzdGFuZGFyZCBQQ0kgRE1BIEFQSXMgb3IgY3VzdG9tIHNvbHV0aW9ucz8gQW5kIG9mIGNvdXJzZSwgSSdsbCBiZSBrZWVwaW5nIGEga2VlbiBleWUgb3V0IGZvciBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBzeW5jaHJvbml6YXRpb24gaXNzdWVzLCBlc3BlY2lhbGx5IGlmIHRoZSBjb2RlIG1ha2VzIGhlYXZ5IHVzZSBvZiBpbnRlcnJ1cHRzIG9yIHNoYXJlZCBtZW1vcnkuIEZpbmFsbHksIEknbGwgYmUgbG9va2luZyB0byBxdWlja2x5IGFzc2VzcyB0aGUgY29kZSdzIG92ZXJhbGwgcXVhbGl0eSBhbmQgYWRoZXJlbmNlIHRvIGtlcm5lbCBjb2Rpbmcgc3RhbmRhcmRzIHRvIGdldCBhIGZlZWwgZm9yIG1haW50YWluYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUxMywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjM5Ljc5NTg0NTQyOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3MDpcXHRcXG4gIDcxOlxcdFxcdG10NzYwM191bnJlZ2lzdGVyX2RldmljZShkZXYpO1xcbiAgNzI6XFx0fVxcbiAgNzM6XFx0XFxuICA3NDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbXQ3NnBjaV9kZXZpY2VfdGFibGUpO1xcbiAgNzU6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzYwM19GSVJNV0FSRV9FMSk7XFxuICA3NjpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3NjAzX0ZJUk1XQVJFX0UyKTtcXG4gIDc3OlxcdFxcbiAgNzg6XFx0c3RydWN0IHBjaV9kcml2ZXIgbXQ3NjAzX3BjaV9kcml2ZXIgPSB7XFxuICA3OTpcXHRcXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuICA4MDpcXHRcXHQuaWRfdGFibGVcXHQ9IG10NzZwY2lfZGV2aWNlX3RhYmxlLFxcbiAgODE6XFx0XFx0LnByb2JlXFx0XFx0PSBtdDc2cGNpX3Byb2JlLFxcbiAgODI6XFx0XFx0LnJlbW92ZVxcdFxcdD0gbXQ3NnBjaV9yZW1vdmUsXFxuICA4MzpcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODozOS43OTU5MTIxMDhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxNTAxOTM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQQ0kgRGV2aWNlIFByb2JlKipcblxuQWxyaWdodCwgdGhlIHN5c3RlbSdzIGp1c3QgZGlzY292ZXJlZCBhIFBDSSBkZXZpY2Ug4oCTIHNwZWNpZmljYWxseSwgb25lIHVzaW5nIHRoZSBgbXQ3NnBjaWAgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgYG10NzZwY2lfcHJvYmVgIGZ1bmN0aW9uLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgY3JpdGljYWwgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBpbml0aWFsIHNldHVwIGFuZCBjb25maWd1cmF0aW9uIHdoZW4gdGhlIGRyaXZlciByZWNvZ25pemVzICppdHMqIGRldmljZS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBpdCdzIGRvaW5nLCB3aGF0IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGl0J3Mgb3JjaGVzdHJhdGluZywgYW5kIGhvdyBpdCdzIGFzc29jaWF0aW5nIGl0c2VsZiB3aXRoIHRoaXMgbmV3IHBpZWNlIG9mIGhhcmR3YXJlLiBMZXQncyBnZXQgcmlnaHQgaW50byB0aGUgY29kZSBmb3IgYG10NzZwY2lfcHJvYmVgIGFuZCBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTMzLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODo0My4wMTA5MzQxNTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0XFxuICAgMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICAgNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAgNjpcXHRcXG4gICA3OlxcdCNpbmNsdWRlIFxcXCJtdDc2MDMuaFxcXCJcXG4gICA4OlxcdFxcbiAgIDk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzZwY2lfZGV2aWNlX3RhYmxlW10gPSB7XFxuICAxMDpcXHRcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjAzKSB9LFxcbiAgMTE6XFx0XFx0eyB9LFxcbiAgMTI6XFx0fTtcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0c3RhdGljIGludFxcbiAgMTU6XFx0bXQ3NnBjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbiAgMTY6XFx0e1xcbiAgMTc6XFx0XFx0c3RydWN0IG10NzYwM19kZXYgKmRldjtcXG4gIDE4OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcXG4gIDE5OlxcdFxcdGludCByZXQ7XFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG4gIDIyOlxcdFxcdGlmIChyZXQpXFxuICAyMzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRyZXQgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKDApLCBwY2lfbmFtZShwZGV2KSk7XFxuICAyNjpcXHRcXHRpZiAocmV0KVxcbiAgMjc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdHJldCA9IGRtYV9zZXRfbWFzayhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcXG4gIDMyOlxcdFxcdGlmIChyZXQpXFxuICAzMzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgMzQ6XFx0XFxuICAzNTpcXHRcXHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBcXHUwMDI2bXQ3NjAzX29wcyxcXG4gIDM2OlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2bXQ3NjAzX2Rydl9vcHMpO1xcbiAgMzc6XFx0XFx0aWYgKCFtZGV2KVxcbiAgMzg6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdGRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3NjAzX2RldiwgbXQ3Nik7XFxuICA0MTpcXHRcXHRtdDc2X21taW9faW5pdChtZGV2LCBwY2ltX2lvbWFwX3RhYmxlKHBkZXYpWzBdKTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0bWRldi1cXHUwMDNlcmV2ID0gKG10NzZfcnIoZGV2LCBNVF9IV19DSElQSUQpIFxcdTAwM2NcXHUwMDNjIDE2KSB8XFxuICA0NDpcXHRcXHRcXHQgICAgKG10NzZfcnIoZGV2LCBNVF9IV19SRVYpIFxcdTAwMjYgMHhmZik7XFxuICA0NTpcXHRcXHRkZXZfaW5mbyhtZGV2LVxcdTAwM2VkZXYsIFxcXCJBU0lDIHJldmlzaW9uOiAlMDR4XFxcXG5cXFwiLCBtZGV2LVxcdTAwM2VyZXYpO1xcbiAgNDY6XFx0XFxuICA0NzpcXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX01BU0tfQ1NSLCAwKTtcXG4gIDQ4OlxcdFxcbiAgNDk6XFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVxcdTAwM2VkZXYsIHBkZXYtXFx1MDAzZWlycSwgbXQ3NjAzX2lycV9oYW5kbGVyLFxcbiAgNTA6XFx0XFx0XFx0XFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcXG4gIDUxOlxcdFxcdGlmIChyZXQpXFxuICA1MjpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHRyZXQgPSBtdDc2MDNfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuICA1NTpcXHRcXHRpZiAocmV0KVxcbiAgNTY6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gIDU3OlxcdFxcbiAgNTg6XFx0XFx0cmV0dXJuIDA7XFxuICA1OTpcXHRlcnJvcjpcXG4gIDYwOlxcdFxcdG10NzZfZnJlZV9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuICA2MTpcXHRcXG4gIDYyOlxcdFxcdHJldHVybiByZXQ7XFxuICA2MzpcXHR9XFxuICA2NDpcXHRcXG4gIDY1OlxcdHN0YXRpYyB2b2lkXFxuICA2NjpcXHRtdDc2cGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gIDY3OlxcdHtcXG4gIDY4OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gIDY5OlxcdFxcdHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzYwM19kZXYsIG10NzYpO1xcbiAgNzA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjQzLjAxMTA2NTM4NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDkwNTE3MTAyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFRVBST00gSW5pdGlhbGl6YXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBtdDc2MDNgIGRyaXZlciwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGRldmljZSByZWdpc3RyYXRpb24gZmxvdyBpbiBgbXQ3NjAzX3JlZ2lzdGVyX2RldmljZWAgbGVhZHMgdXMgZG93biBhIHByZXR0eSBzcGVjaWZpYyBwYXRoLiBJdCBjYWxscyBgbXQ3NjAzX2luaXRfaGFyZHdhcmVgLCB3aGljaCBtYWtlcyBzZW5zZSBhcyB0aGUgaW5pdGlhbCBzZXR1cCBmdW5jdGlvbi4gQW5kLCBjcnVjaWFsIHRvIHRoaXMgaW52ZXN0aWdhdGlvbiwgdGhhdCBmdW5jdGlvbiB0aGVuIGNhbGxzIGBtdDc2MDNfZWVwcm9tX2luaXRgLiBUaGUgRUVQUk9NIGlzIGFsd2F5cyBhIGNyaXRpY2FsIHBhcnQgb2YgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24uXG5cbk5vdywgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIGNoYW5nZSwgc3BlY2lmaWNhbGx5LCBhZGRpbmcgYDB4NzU5MmAgdG8gdGhlIGZ1bmN0aW9uIGBtdDc2MDNfY2hlY2tfZWVwcm9tYC4gTXkgZmlyc3QgdGhvdWdodCBpczogXCJXaHkgdGhpcyBzcGVjaWZpYyB2YWx1ZT8gV2hlcmUgaXMgdGhpcyBFRVBST00gdmFsdWUgZGVyaXZlZCBmcm9tP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoYXQgY2hlY2sgYW5kIGhvdyB0aGlzIG5ldyB2YWx1ZSBmaXRzIGluLlxuXG5UaGVyZWZvcmUsIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGZ1bmN0aW9uLCBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAsIHRvIGdldCBhIGdyaXAgb24gdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UuIExldCdzIHNlZSBob3cgaXQgdXNlcyBhbmQgaW50ZXJwcmV0cyB0aGUgRUVQUk9NIGRhdGEuIFRoYXQgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGFkZGl0aW9uIG9mIGAweDc1OTJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQwOSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjUzLjkxNjIzODAxNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzcsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMzc6XFx0c3RhdGljIGludCBtdDc2MDNfY2hlY2tfZWVwcm9tKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbiAxMzg6XFx0e1xcbiAxMzk6XFx0XFx0dTE2IHZhbCA9IGdldF91bmFsaWduZWRfbGUxNihkZXYtXFx1MDAzZWVlcHJvbS5kYXRhKTtcXG4gMTQwOlxcdFxcbiAxNDE6XFx0XFx0c3dpdGNoICh2YWwpIHtcXG4gMTQyOlxcdFxcdGNhc2UgMHg3NjI4OlxcbiAxNDM6XFx0XFx0Y2FzZSAweDc2MDM6XFxuIDE0NDpcXHRcXHRjYXNlIDB4NzYwMDpcXG4gMTQ1OlxcdFxcdGNhc2UgMHg3NTkyOlxcbiAxNDY6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDE0NzpcXHRcXHRkZWZhdWx0OlxcbiAxNDg6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDE0OTpcXHRcXHR9XFxuIDE1MDpcXHR9XFxuIDE1MTpcXHRcXG4gMTUyOlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2ODgoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG4gMTUzOlxcdHtcXG4gMTU0OlxcdFxcdHJldHVybiBtdDc2X3JyKGRldiwgTVRfRUZVU0VfQkFTRSArIDB4NjQpIFxcdTAwMjYgQklUKDQpO1xcbiAxNTU6XFx0fVxcbiAxNTY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjUzLjkxNjI5Mzk4NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzQyMzY3OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgb3duIHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zOlxuXG4qKkRlY29kaW5nIHRoZSBFRVBST00gRGF0YSBGbG93KipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgaXQgYWxsIGlzIHRoYXQgdGhlIGNydWNpYWwgRUVQUk9NIHZhbHVlIEknbSBpbnRlcmVzdGVkIGluIHVsdGltYXRlbHkgcmVzaWRlcyB3aXRoaW4gYGRldi1cdTAwM2VlZXByb20uZGF0YWAuIFRoYXQgbWFrZXMgc2Vuc2UuIFRoaXMgaXMgdGhlIGNvbW1vbiBwYXR0ZXJuLCB3aGVyZSB3ZSBhYnN0cmFjdCBhd2F5IHRoZSByYXcgaGFyZHdhcmUgZGV0YWlscyBhbmQgcHJlc2VudCBhIGNvbnZlbmllbnQgZGF0YSBzdHJ1Y3R1cmUgZm9yIHRoZSBkZXZpY2UncyBjb25maWd1cmF0aW9uIGFuZCBwZXJzaXN0ZW50IHNldHRpbmdzLiBUaGUgbmV4dCBvYnZpb3VzIHN0ZXAgaXMgdG8gdHJhY2UgYmFjayAqaG93KiBgZGV2LVx1MDAzZWVlcHJvbS5kYXRhYCBhY3R1YWxseSBnZXRzIHBvcHVsYXRlZC4gV2hlcmUgZG9lcyB0aGlzIGRhdGEgY29tZSBmcm9tIGluaXRpYWxseT8gSXMgaXQgcmVhZCBkaXJlY3RseSBmcm9tIHRoZSBwaHlzaWNhbCBFRVBST00gY2hpcCBvbiB0aGUgYm9hcmQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbj8gT3IgaXMgaXQgcGVyaGFwcyBsb2FkZWQgZnJvbSBhIGZsYXNoIHJlZ2lvbiB0aGF0J3MgYWN0aW5nIGxpa2UgYW4gRUVQUk9NPyBDb3VsZCBpdCBldmVuIGJlIHByZS1wcm9ncmFtbWVkIGFzIGZpcm13YXJlIGRhdGE/IEdvdHRhIGRpZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSB0byBmaW5kIHRoZSBhbnN3ZXIuIExldCdzIHNlZSBob3cgdGhleSBoYW5kbGUgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExMjEsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjU5LjY1ODY2NDQ2NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzNjMzNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NjAzX2VlcHJvbV9sb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYz0xMjU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jOjEyNjptdDc2MDNfZWVwcm9tX2xvYWQoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTU3PWludCBtdDc2MDNfZWVwcm9tX2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxNjI6XFx0cmV0ID0gbXQ3NjAzX2VlcHJvbV9sb2FkKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTYzLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODo1OS43MTUwMzM5NzNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3ODIwMzMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG10NzYwM19lZXByb21fbG9hZGAgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgbG9hZGluZyBvZiBFRVBST00gZGF0YSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNVDc2MDMgY2hpcHNldC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uIGZsb3cuIEknbGwgYmUgbG9va2luZyBmb3Iga2V5IGFyZWFzLiBGaXJzdGx5LCB0aGUgaW5pdGlhbCBzZXR1cDogaG93IGl0IGFjY2Vzc2VzIHRoZSBFRVBST00gaXRzZWxmLCBsaWtlbHkgdGhyb3VnaCBzb21lIHNvcnQgb2YgSTJDIG9yIFNQSSBpbnRlcmZhY2UsIGdpdmVuIHRoYXQncyBjb21tb24gZm9yIHRoZXNlIHNvcnRzIG9mIGNvbmZpZ3VyYXRpb25zLlxuXG5OZXh0LCBJJ2xsIGJlIGZvY3VzZWQgb24gaG93IGl0IHZlcmlmaWVzIHRoZSBkYXRhJ3MgaW50ZWdyaXR5LiBEb2VzIGl0IHVzZSBjaGVja3N1bXMsIENSQywgb3Igc29tZSBvdGhlciBtZXRob2QgdG8gZW5zdXJlIHRoZSBFRVBST00gZGF0YSBoYXNuJ3QgYmVlbiBjb3JydXB0ZWQ/IFRoaXMgaXMgY3JpdGljYWwsIG9idmlvdXNseSwgYmVjYXVzZSBhIGJhZCBFRVBST00gcmVhZCBjYW4gYnJpY2sgdGhlIGRldmljZS4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0J3MgYXNzdW1lZCB0byBiZSBwcmVzZW50IGluIHRoZSBFRVBST00uIERvZXMgdGhlIGZ1bmN0aW9uIGhhdmUgYW55IGtub3dsZWRnZSBvZiB0aGUgbGF5b3V0LCBpbmNsdWRpbmcgb2Zmc2V0cyBhbmQgc2l6ZXMgb2YgdGhlIGRpZmZlcmVudCBwYXJhbWV0ZXJzIHN0b3JlZCB3aXRoaW4/IElzIHRoZXJlIGVycm9yIGhhbmRsaW5nPyBIb3cgZG9lcyBpdCByZXNwb25kIGlmIGl0IGRldGVjdHMgYW4gaW52YWxpZCBFRVBST00/IERvZXMgaXQgYXR0ZW1wdCB0byBsb2FkIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uP1xuXG5VbHRpbWF0ZWx5LCBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIHRyYW5zZm9ybXMgdGhlIGRhdGEgZnJvbSB0aGUgRUVQUk9NIGludG8gc29tZXRoaW5nIHVzYWJsZSBieSB0aGUgTVQ3NjAzIGRyaXZlciBvciBmaXJtd2FyZS4gRG9lcyBpdCBjb3B5IHZhbHVlcyB0byBzcGVjaWZpYyBtZW1vcnkgbG9jYXRpb25zLCBvciBhcmUgdGhlcmUgY2FsY3VsYXRpb25zIG9yIGRhdGEgY29udmVyc2lvbnMgaW52b2x2ZWQ/IEkgYWxzbyB3YW50IHRvIGNoZWNrIGZvciBhbnkgdmVuZG9yLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb3Igd29ya2Fyb3VuZHMuIEFueSB1bnVzdWFsIGNvZGUgd291bGQgYmUgaW50ZXJlc3RpbmcgdG8gbGVhcm4gbW9yZSBhYm91dC4gVGhpcyBkZWVwZXIgdW5kZXJzdGFuZGluZyB3aWxsIHByb3ZpZGUgbW9yZSBpbnNpZ2h0cyB3aGVuIGNvbXBhcmluZyB0aGlzIGNvZGUgYWdhaW5zdCBvdGhlciBjb2RlIGV4YW1wbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTcwMCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM5OjAzLjM5MzIzOTg5OVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjUsXG4gIFwiTGluZUNvdW50XCI6IDEyXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMjU6XFx0c3RhdGljIGludFxcbiAxMjY6XFx0bXQ3NjAzX2VlcHJvbV9sb2FkKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuIDEyNzpcXHR7XFxuIDEyODpcXHRcXHRpbnQgcmV0O1xcbiAxMjk6XFx0XFxuIDEzMDpcXHRcXHRyZXQgPSBtdDc2X2VlcHJvbV9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1UNzYwM19FRVBST01fU0laRSk7XFxuIDEzMTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMTMyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDEzMzpcXHRcXG4gMTM0OlxcdFxcdHJldHVybiBtdDc2MDNfZWZ1c2VfaW5pdChkZXYpO1xcbiAxMzU6XFx0fVxcbiAxMzY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM5OjAzLjM5MzMwMzEzOVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjA1OTY4ODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG10NzZfZWVwcm9tX2luaXRgIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBgbXQ3Nl9lZXByb21faW5pdGAgZnVuY3Rpb24gaXMgYSBwcmV0dHkgZ2VuZXJpYyBwaWVjZSBvZiB0aGUgbXQ3NiBkcml2ZXIuIFRoZSBjcnV4IG9mIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgdGhhdCBpdCBhZGRzIGEgbmV3IHZhbGlkIEVFUFJPTSBtYWdpYyB2YWx1ZSwgYDB4NzU5MmAuIFByZXZpb3VzbHksIGlmIHRoaXMgbWFnaWMgdmFsdWUgd2FzIGVuY291bnRlcmVkLCB0aGUgaW5pdGlhbGl6YXRpb24gd291bGQgZmFpbCB3aXRoIGAtRUlOVkFMYC4gVGhpcyBpcyBhIGNsZWFyIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5OyB0aGUgZHJpdmVyIHdpbGwgbm93ICpzdWNjZWVkKiB3aGVyZSBpdCBwcmV2aW91c2x5IGZhaWxlZC4gU28sIGltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcsIFwiSXMgdGhpcyBmdXp6YWJsZT9cIlxuXG5UaGUgYW5zd2VyIHNlZW1zIHRvIGJlIHllcyEgVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgdGhlIGRyaXZlciBpcyByZWFjaGVkIHZpYSBQQ0kgcHJvYmluZy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKmZ1enoqIGl0IGVmZmVjdGl2ZWx5PyBMZXQgbWUgdGhpbmsgaXQgdGhyb3VnaC4gVGhlIGRyaXZlciwgYG10NzYwM2AsIHJlcXVpcmVzIGEgc3BlY2lmaWMgUENJIHZlbmRvci9kZXZpY2UgSUQsIGB7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjAzKSB9YCwgYW5kIHRoYXQncyB0aGUga2V5LiBOb3csIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyJ3MgdlBDSSBjYW4gaW5qZWN0IGFueSBQQ0kgSUQuIEV4Y2VsbGVudCEgU28gdlBDSSBjYW4gcHJvYmUgdGhpcyBkcml2ZXIhXG5cbkxldCdzIHRyYWNlIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gQWZ0ZXIgcHJvYmluZywgYG10NzZwY2lfcHJvYmVgIHJ1bnMuIEl0IG1hcHMgTU1JTywgc2V0cyB1cCBETUEsIGFuZCBpbXBvcnRhbnRseSwgcmVhZHMgYE1UX0hXX0NISVBJRGAgdXNpbmcgYG10NzZfcnJgLCB3aGljaCByZWFkcyBmcm9tIE1NSU8uIFN5emthbGxlciBjYW4gZW11bGF0ZSBNTUlPIHJlYWRzLCBzbyBpdCBjYW4gcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHZhbHVlcyBkdXJpbmcgdGhpcyBzZXR1cC4gVGhhdCdzIGdvb2QsIHNvIGl0IGNhbiBnZXQgcGFzdCB0aGF0IHBvaW50LiBUaGVuIGBtdDc2MDNfcmVnaXN0ZXJfZGV2aWNlYCBnZXRzIGNhbGxlZCwgd2hpY2ggaW4gdHVybiBjYWxscyBgbXQ3NjAzX2luaXRfaGFyZHdhcmVgLCBmaW5hbGx5IGNhbGxpbmcgYG10NzYwM19lZXByb21faW5pdGAuXG5cbkl0IHNlZW1zIHRoYXQgYG10NzYwM19lZXByb21faW5pdGAgZXZlbnR1YWxseSBjYWxscyBgbXQ3NjAzX2VlcHJvbV9sb2FkYCwgd2hpY2ggY2FsbHMgdGhlIGdlbmVyaWMgYG10NzZfZWVwcm9tX2luaXRgLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIGBtdDc2X2VlcHJvbV9pbml0YCAqbWlnaHQqIGxvYWQgRUVQUk9NIGRhdGEgZnJvbSBmaXJtd2FyZSBvciB0aGUgZGV2aWNlIHRyZWUuIEJ1dCB0aGUga2V5IGhlcmUgaXMsIGlmIHRoYXQgc3VjY2VlZHMsIGl0ICpjaGVja3MqIHRoZSBFRVBST00gbWFnaWMuIEFuZCBub3csIHRoZSBsaWdodGJ1bGIgZ29lcyBvZmYhIElmIHN5emthbGxlciBwcm92aWRlcyB0aGUgbWFnaWMgdmFsdWUgYDB4NzU5MmAsIGl0IHdpbGwgbm93IHBhc3MgdGhlIGNydWNpYWwgYG10NzYwM19jaGVja19lZXByb21gIGNoZWNrLiBCaW5nby5cblxuVGhpcyBpcyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZGlyZWN0bHkgYWZmZWN0cyB0aGUgY29udHJvbCBmbG93IGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEkgY2FuIHNlZSB0aGUgcG90ZW50aWFsIGZvciBleHBvc2luZyBuZXcgY29kZSBwYXRocywgYW5kIHRoZXJlZm9yZSwgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZvciB0aGUgYG10NzYwM2AgZHJpdmVyLCB0byBtYWtlIHN1cmUgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgdG8gZ2V0IHRoaXMgYWxsIHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjcwLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzk6MTEuNTk5Mjc0MDExWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODM3MTI5NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzYwM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWc6Mjpjb25maWcgTVQ3NjAzRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM5OjExLjc4Mjk5MTkxN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc2OTA0Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3NjAzIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBwdWxsIHVwIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZ2AgZmlsZS4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIHN0cnVjdHVyZSBoZXJlLiBXZSdyZSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNVDc2MDMgV2ktRmkgZHJpdmVyLCBzbyBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBhIHRvcC1sZXZlbCBzeW1ib2wgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIGVudGlyZSBkcml2ZXIsIHRoZW4gYSBjYXNjYWRlIG9mIGRlcGVuZGVudCBvcHRpb25zIHRoYXQgY29udHJvbCB2YXJpb3VzIGZlYXR1cmVzIGFuZCBoYXJkd2FyZSBzZXR0aW5ncy4gSSdsbCBiZSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgZ3JhbnVsYXIgdGhleSd2ZSBnb3R0ZW4gd2l0aCB0aGUgcG93ZXIgbWFuYWdlbWVudCBvcHRpb25zLCBhcyB0aGF0J3MgYWx3YXlzIGEgY3JpdGljYWwgYXJlYS5cblxuSeKAmWxsIGJlIHNjYW5uaW5nIGZvciB0aGUgZGVmYXVsdCBzZXR0aW5ncyBvZiB0aGUgcGFyYW1ldGVyczsgc3BlY2lmaWNhbGx5IGlmIHRoZXkndmUgYWNjb3VudGVkIGZvciB2YXJpb3VzIHBsYXRmb3JtIGxpbWl0YXRpb25zLiBJIHdpbGwgYWxzbyBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgdGhlIGF2YWlsYWJsZSB0ZXN0IG1vZGVzIG9yIGRlYnVnZ2luZyBhaWRzLiBBbnkgdW51c3VhbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3Vic3lzdGVtcywgb3IgYW55IGludGVyZXN0aW5nIG5ldyBmZWF0dXJlcyB3b3VsZCBiZSBvZiBub3RlIGFzIHdlbGwuIEknbSBob3BpbmcgdG8gc2VlIHdlbGwtY29tbWVudGVkIGNvZGUsIGFzIGl0IGFsd2F5cyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNob2ljZXMsIGFuZCBhbnRpY2lwYXRlIGhvdyBJJ2xsIGludGVncmF0ZSBpdCBpbnRvIG15IHdpZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmUuIFVsdGltYXRlbHksIEknbSBleHBlY3RpbmcgdG8gZGV0ZXJtaW5lIGlmIGl0IG1lZXRzIG15IHJlcXVpcmVtZW50cywgb3IgcmVxdWlyZXMgdHdlYWtpbmcgYmVmb3JlIGludGVncmF0aW5nIGl0IGludG8gdGhlIHByb2plY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTEyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzk6MTUuOTU5ODk5MjcyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc2MDNFXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjAzRSBQQ0llIHdpcmVsZXNzIGRldmljZXMgYW5kIHRoZSBXTEFOIGNvcmVcXG4gICA5OlxcdFxcdCAgb24gTVQ3NjI4L01UNzY4OCBTb0MgZGV2aWNlcy4gVGhpcyBmYW1pbHkgc3VwcG9ydHMgSUVFRSA4MDIuMTFuIDJ4MlxcbiAgMTA6XFx0XFx0ICB0byAzMDBNYnBzIFBIWSByYXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM5OjE1Ljk1OTk4NzYzMloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODgyNTg1Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipEaXZpbmcgaW50byB0aGUgTVQ3NjAzRSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbXkgc3RhcnRpbmcgcG9pbnQgaXMgYENPTkZJR19NVDc2MDNFYC4gVGhhdCdzIHRoZSBvYnZpb3VzIGNvbmZpZywgYnV0IEknbSBhbiBleHBlcnQsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBjb25maWdzIEknbSBtaXNzaW5nLiBUaW1lIHRvIGdsYW5jZSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYC4gQ2FuJ3QgaHVydCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbid0IG92ZXJsb29rZWQgc29tZXRoaW5nIHJlbGV2YW50IHdpdGhpbiB0aGF0IGZhbWlseSBvZiBkcml2ZXJzLiBJIG5lZWQgdG8gYmUgY29tcGxldGUgaW4gbXkgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQwNTQsIk91dHB1dFRva2VucyI6NTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM5OjE4Ljg0MjU3NTE4NloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM4MTE4MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXFxcIlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NDU9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0Njpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQ3LXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzk6MTguOTA2MzkxMDM0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNjg0NTY2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc2MDMgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIE1UNzYwMyBkcml2ZXIuIFRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gcG9pbnQsIGFzIGFsd2F5cywgaXMgdGhlIGBNVDc2MDNFYCBzZXR1cC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIHdoYXQncyBjaGFuZ2VkIGZ1bmN0aW9uYWxseSwgYW5kIHdoYXQgaW1wYWN0IGRvZXMgaXQgaGF2ZT9cblxuSSBzZWUgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGBtdDc2MDNfY2hlY2tfZWVwcm9tYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBpbml0aWFsaXphdGlvbiBmbG93LCBzbyBJJ2xsIGFsc28gYnJpbmcgYG10NzYwM19lZXByb21faW5pdGAgYW5kIGBtdDc2cGNpX3Byb2JlYCBpbnRvIHRoZSBwaWN0dXJlLiBUaGV5J3JlIGNyaXRpY2FsIHBhcnRzIG9mIHRoZSBkcml2ZXIncyBzZXR1cCBzZXF1ZW5jZS5cblxuU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gZm9jdXMgb246XG5cbiogICBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAgKENvbmZpcm1lZCBhcyBhIHN0YXRpYyBmdW5jdGlvbilcbiogICBgbXQ3NjAzX2VlcHJvbV9pbml0YFxuKiAgIGBtdDc2cGNpX3Byb2JlYFxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIHNtYWxsLCByZWFsbHkganVzdCBhZGRpbmcgYSBuZXcgY2FzZSB0byB0aGUgYHN3aXRjaGAgc3RhdGVtZW50IGluIGBtdDc2MDNfY2hlY2tfZWVwcm9tYDpcblxuYGBgY1xuIFx0Y2FzZSAweDc2Mjg6XG4gXHRjYXNlIDB4NzYwMzpcbiBcdGNhc2UgMHg3NjAwOlxuK1x0Y2FzZSAweDc1OTI6XG4gXHRcdHJldHVybiAwO1xuYGBgXG5cblRoaXMgYWRkaXRpb24gYWxsb3dzIHRoZSBkcml2ZXIgdG8gcmVjb2duaXplIGFuZCBoYW5kbGUgRUVQUk9NIG1hZ2ljIHZhbHVlIGAweDc1OTJgLCB3aGVyZSBwcmV2aW91c2x5IGl0IHdvdWxkIGhhdmUgcmV0dXJuZWQgYW4gZXJyb3IsIGVmZmVjdGl2ZWx5IHByZXZlbnRpbmcgdGhlIGRldmljZSBmcm9tIGluaXRpYWxpemluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlOyBpdCdzIGVuYWJsaW5nIHN1cHBvcnQgZm9yIGEgbmV3IGhhcmR3YXJlIHZhcmlhbnQsIG9yIGl0J3MgZml4aW5nIGFuIGluaXRpYWxpemF0aW9uIHByb2JsZW0uXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgbmV3IEVFUFJPTSB0eXBlIGlzIHRyZWF0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBvdGhlcnM7IGZyb20gdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBwYXRjaCBpcyBqdXN0IGFsbG93aW5nIGl0IHRvIHByb2JlIGNvcnJlY3RseSwgYW5kIGl0IGlzIGhhbmRsZWQgaW4gYSBzaW1pbGFyIHdheSBhcyB0aGUgcmVzdC5cblxuSSBkZWZpbml0ZWx5IHdhbnQgdG8gZG8gc29tZSBmdXp6aW5nIHRvIG1ha2Ugc3VyZSB0aGlzIG5ldyBFRVBST00gdmFsdWUgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIGNvcm5lciBjYXNlcy4gSXQncyBhIHNpbXBsZSBjaGFuZ2UsIGJ1dCBhbnkgYWx0ZXJhdGlvbiB0byBkZXZpY2UgcHJvYmluZyB3YXJyYW50cyB0aG9yb3VnaCB0ZXN0aW5nLlxuXG5Fc3NlbnRpYWxseSwgdGhlIHJlYXNvbmluZyBib2lscyBkb3duIHRvIHRoaXM6IHRoZSBwYXRjaCBlbmFibGVzIHN1cHBvcnQgZm9yIGRldmljZXMgd2l0aCBhbiBFRVBST00gc2lnbmF0dXJlIG9mIGAweDc1OTJgIGJ5IGFkZGluZyBpdCB0byB0aGUgbGlzdCBvZiByZWNvZ25pemVkIHZhbHVlcyBpbiBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAsIGFsbG93aW5nIHRoZW0gdG8gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemUgd2hlcmUgdGhleSB3b3VsZCBoYXZlIHByZXZpb3VzbHkgZmFpbGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBkZXZpY2UgcHJvYmUvaW5pdGlhbGl6YXRpb24gcGhhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDMxLCJPdXRwdXRUb2tlbnMiOjE0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozOToyNy4wNzQ4NDk1NDdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTI4Mzk3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3NjAzRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzYwM19jaGVja19lZXByb21cIixcbiAgICBcIm10NzYwM19lZXByb21faW5pdFwiLFxuICAgIFwibXQ3NnBjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgRUVQUk9NIG1hZ2ljIHZhbHVlICgweDc1OTIpIHRvIGBtdDc2MDNfY2hlY2tfZWVwcm9tYCwgYWxsb3dpbmcgdGhlIE1UNzYwMyB3aXJlbGVzcyBkcml2ZXIgdG8gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemUgZGV2aWNlcyB3aXRoIHRoaXMgRUVQUk9NIHNpZ25hdHVyZSBpbnN0ZWFkIG9mIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3NjAzRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzYwM19jaGVja19lZXByb21cIixcbiAgICBcIm10NzYwM19lZXByb21faW5pdFwiLFxuICAgIFwibXQ3NnBjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgRUVQUk9NIG1hZ2ljIHZhbHVlICgweDc1OTIpIHRvIGBtdDc2MDNfY2hlY2tfZWVwcm9tYCwgYWxsb3dpbmcgdGhlIE1UNzYwMyB3aXJlbGVzcyBkcml2ZXIgdG8gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemUgZGV2aWNlcyB3aXRoIHRoaXMgRUVQUk9NIHNpZ25hdHVyZSBpbnN0ZWFkIG9mIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowqzmf4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-19 08:31:50 +0000 UTC FinishedAt: 2026-07-19 08:39:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7603E" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7603E" ], "series_id": "a87a5507-c5bd-484d-a9b8-afe9e33d3691" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7603_check_eeprom", "mt7603_eeprom_init", "mt76pci_probe" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzYwM0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2MDNfY2hlY2tfZWVwcm9tJiMzNDssCiAgICAmIzM0O210NzYwM19lZXByb21faW5pdCYjMzQ7LAogICAgJiMzNDttdDc2cGNpX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgRUVQUk9NIG1hZ2ljIHZhbHVlICgweDc1OTIpIHRvIGBtdDc2MDNfY2hlY2tfZWVwcm9tYCwgYWxsb3dpbmcgdGhlIE1UNzYwMyB3aXJlbGVzcyBkcml2ZXIgdG8gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemUgZGV2aWNlcyB3aXRoIHRoaXMgRUVQUk9NIHNpZ25hdHVyZSBpbnN0ZWFkIG9mIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkYzlmNDZmMmRiYjUxYTFmZDI1ZTY1ZjE2OTFlNTk3NTEwNjFkOTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMDg6Mzg6MTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1xuaW5kZXggYjg5ZGIyZGI2NTczN2UuLjA1ZjdhYWVmYWY4OWI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jXG5AQCAtMTQyLDYgJiM0MzsxNDIsNyBAQCBzdGF0aWMgaW50IG10NzYwM19jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gXHRjYXNlIDB4NzYyODpcbiBcdGNhc2UgMHg3NjAzOlxuIFx0Y2FzZSAweDc2MDA6XG4mIzQzO1x0Y2FzZSAweDc1OTI6XG4gXHRcdHJldHVybiAwO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NjAzRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzYwM19jaGVja19lZXByb20mIzM0OywKICAgICYjMzQ7bXQ3NjAzX2VlcHJvbV9pbml0JiMzNDssCiAgICAmIzM0O210NzZwY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBFRVBST00gbWFnaWMgdmFsdWUgKDB4NzU5MikgdG8gYG10NzYwM19jaGVja19lZXByb21gLCBhbGxvd2luZyB0aGUgTVQ3NjAzIHdpcmVsZXNzIGRyaXZlciB0byBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZSBkZXZpY2VzIHdpdGggdGhpcyBFRVBST00gc2lnbmF0dXJlIGluc3RlYWQgb2YgcmV0dXJuaW5nIGAtRUlOVkFMYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZpY2UgcHJvYmUvaW5pdGlhbGl6YXRpb24gcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGM5ZjQ2ZjJkYmI1MWExZmQyNWU2NWYxNjkxZTU5NzUxMDYxZDk2MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDE5IDA4OjM4OjEwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYwppbmRleCBiODlkYjJkYjY1NzM3ZS4uMDVmN2FhZWZhZjg5YjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jCkBAIC0xNDIsNiAmIzQzOzE0Miw3IEBAIHN0YXRpYyBpbnQgbXQ3NjAzX2NoZWNrX2VlcHJvbShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldikKIAljYXNlIDB4NzYyODoKIAljYXNlIDB4NzYwMzoKIAljYXNlIDB4NzYwMDoKJiM0MzsJY2FzZSAweDc1OTI6CiAJCXJldHVybiAwOwogCWRlZmF1bHQ6CiAJCXJldHVybiAtRUlOVkFMOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODcwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3NjAzIERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNhc2UsIGAweDc1OTJgLCBpbnRvIHRoZSBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAgZnVuY3Rpb24gd2l0aGluIHRoZSBgbXQ3NjAzYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgZWVwcm9tLmNgLiBUaGlzIGlzIGZvciB0aGUgTWVkaWFUZWsgTVQ3NjAzIHdpcmVsZXNzIGNoaXBzZXQsIHdoaWNoIGlzIGEgZmFpcmx5IGNvbW1vbiBwaWVjZSBvZiBoYXJkd2FyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8gV2lyZWxlc3MgZHJpdmVycyBhcmUgdXN1YWxseSBwcmltZSB0YXJnZXRzLiBJIHR5cGljYWxseSBzdGFydCBieSBleHBsb3JpbmcgbWV0aG9kcyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGlzIGlzIGEgKnNwZWNpZmljKiBoYXJkd2FyZSBkcml2ZXIsIHRoZSBNVDc2MDMuIFRoYXQgY2hhbmdlcyB0aGluZ3MuIEl0JiMzOTtzIGEgUENJZS9VU0IvU0RJTyBkcml2ZXIsIHdoaWNoIG1lYW5zIHRoZXJlIG1pZ2h0IGJlIGRpZmZlcmVudCBhdHRhY2sgc3VyZmFjZXMgY29tcGFyZWQgdG8gdGhlIG1vcmUgZ2VuZXJpYyBtYWM4MDIxMSBpbnRlcmZhY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgZHJpdmVyIGlzIGZ1enplYWJsZSwgc28gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2AgZGlyZWN0b3J5IHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHBvdGVudGlhbC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2JlYWNvbi5jJiMzNDssCiAgICAmIzM0O2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZG1hLmMmIzM0OywKICAgICYjMzQ7ZWVwcm9tLmMmIzM0OywKICAgICYjMzQ7ZWVwcm9tLmgmIzM0OywKICAgICYjMzQ7aW5pdC5jJiMzNDssCiAgICAmIzM0O21hYy5jJiMzNDssCiAgICAmIzM0O21hYy5oJiMzNDssCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDttY3UuYyYjMzQ7LAogICAgJiMzNDttY3UuaCYjMzQ7LAogICAgJiMzNDttdDc2MDMuaCYjMzQ7LAogICAgJiMzNDtwY2kuYyYjMzQ7LAogICAgJiMzNDtyZWdzLmgmIzM0OywKICAgICYjMzQ7c29jLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDkKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlYmFzZSBhbmQgSSBzZWUgYHBjaS5jYCBhbmQgYHNvYy5jYCDigJMgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IFBDSWUgZHJpdmVycyBjb3VsZCBiZSBwb3RlbnRpYWxseSBmdXp6ZWQgd2l0aCBzeXprYWxsZXImIzM5O3MgcHNldWRvLVBDSSBkZXZpY2UsIGFzc3VtaW5nIGl0JiMzOTtzIHN1cHBvcnRlZC4gQnV0LCBhcyB3ZSBhbGwga25vdywgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBvZnRlbiBwcmVzZW50IGNoYWxsZW5nZXMgZm9yIGZ1enppbmcsIHVubGVzcyB0aGV5IGxldmVyYWdlIGEgbW9yZSBjb21tb24gaW50ZXJmYWNlLCBsaWtlIFVTQi4gTHVja2lseSwgc3l6a2FsbGVyIGhhcyBhIGdvb2QgZHVtbXkgVVNCIHNldHVwLiBXYWl0IGEgbWludXRlLCBkaWRu4oCZdCBzeXprYWxsZXIgaW50cm9kdWNlIHN1cHBvcnQgZm9yIGZ1enppbmcgUENJIGRldmljZXMgdGhyb3VnaCB2UENJIHJlY2VudGx5PyBUaGF0IGNvdWxkIGJlIGEgZ2FtZS1jaGFuZ2VyIGZvciB0aGlzIGFuYWx5c2lzLiBOb3csIEkgc2hvdWxkIHNoaWZ0IG15IGF0dGVudGlvbiB0byBjaGVja2luZyBpZiBhIGZ1bmN0aW9uIGxpa2UgYG10NzYwM19jaGVja19lZXByb21gIGlzIGFjdHVhbGx5IHJlYWNoYWJsZS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCBpZiB0aGlzIHBhdGggaXMgYWNjZXNzaWJsZSBmb3IgZXhwbG9pdGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzYwM19jaGVja19lZXByb20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTI2PW10NzYwM19lZXByb21fbG9hZChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jLTEzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jOjEzNzpzdGF0aWMgaW50IG10NzYwM19jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xMzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jPTE1Nz1pbnQgbXQ3NjAzX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTY2LVx0aWYgKGRldi1cdTAwM2VtdDc2Lm90cC5kYXRhKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxNjc6XHRcdGlmIChtdDc2MDNfY2hlY2tfZWVwcm9tKFx1MDAyNmRldi1cdTAwM2VtdDc2KSA9PSAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTY4LVx0XHRcdG10NzYwM19hcHBseV9jYWxfZnJlZV9kYXRhKGRldiwgZGV2LVx1MDAzZW10NzYub3RwLmRhdGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNjMKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqVHJhY2luZyB0aGUgRUVQUk9NIEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYG10NzYwM19lZXByb21faW5pdGAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBpcyBpdHMgY2FsbCBzdGFjay4gV2hlcmUgaXMgdGhpcyB0aGluZyBnZXR0aW5nIGludm9rZWQgZnJvbT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGVudHJ5IHBvaW50LCB0aGUgaW1tZWRpYXRlIGNhbGxlci4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGlzIGZ1bmN0aW9uIGFuZCBzZWUgaG93IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmbG93cy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBjaGVjayB0aGUgY2FsbCByZWZlcmVuY2VzIGFuZCB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aCB0aGF0IGxlYWRzIHRvIHRoaXMgcG9pbnQuIFRoaXMmIzM5O2xsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBFRVBST00gaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGlzIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2MDNfZWVwcm9tX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTUyPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2ODgoc3RydWN0IG10NzYwM19kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxNTc6aW50IG10NzYwM19lZXByb21faW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTU4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9Mjc4PW10NzYwM19pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTI4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzoyODQ6XHRyZXQgPSBtdDc2MDNfZWVwcm9tX2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy0yODUtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oPTE4Mz12b2lkIG10NzYwM191bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oOjE4NDppbnQgbXQ3NjAzX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmgtMTg1LWludCBtdDc2MDNfZG1hX2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgSGFyZHdhcmUgU2V0dXA6IEEgRGVlcCBEaXZlKioKCk9rYXksIHNvIGBtdDc2MDNfaW5pdF9oYXJkd2FyZWAgaXMgZmlyaW5nIHVwIGR1cmluZyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHBoYXNlLiBNYWtlcyBzZW5zZS4gQnV0IG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogYW0gSSBkZWFsaW5nIHdpdGggYSBQQ0kgZGV2aWNlIG9yIGEgVVNCIGltcGxlbWVudGF0aW9uIGhlcmU/IFRpbWUgdG8gZGlnIGluIGFuZCBjbGFyaWZ5IHRoZSBhcmNoaXRlY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGlzIFBDSSBvciBVU0IsIHRvIGtub3cgd2hlcmUgdG8gZmluZCB0aGUgYW5zd2Vycy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBkcml2ZXIgZmlsZXM6IHNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmNgIGFuZCBhbHNvIGBzb2MuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGggdGhpcyBoYXJkd2FyZSBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jPTc0Nj1zdGF0aWMgdm9pZCBfX2V4aXQgbXQ3NjAzX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jOjc1NDptb2R1bGVfaW5pdChtdDc2MDNfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzU1LW1vZHVsZV9leGl0KG10NzYwM19leGl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMxNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYG10NzYwM19pbml0YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGUgYG10NzYwM19pbml0YCBmdW5jdGlvbi4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciB0aGlzIHBhcnRpY3VsYXIgTVQ3NjAzIGNoaXBzZXQgZHJpdmVyLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgc3RhbmRhcmQgc3R1ZmYg4oCTIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24sIERNQSBzZXR1cCwgaW50ZXJydXB0IGVuYWJsaW5nLiBCdXQgSSYjMzk7bSBhbHNvIGxvb2tpbmcgZm9yIGFueXRoaW5nIHNwZWNpZmljIHRvIHRoaXMgbW9kZWwsIGFueSBxdWlya3Mgb3Igb3B0aW1pemF0aW9ucyB0aGV5JiMzOTt2ZSBpbXBsZW1lbnRlZC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSByZWdpc3RlciBzZXR1cCwgb2YgY291cnNlIC0gdW5kZXJzdGFuZGluZyB0aGVpciBpbml0aWFsIHJlZ2lzdGVyIHZhbHVlcyBhbmQgYW55IGNvbmZpZ3VyYXRpb24gc2VxdWVuY2VzIGlzIGNyaXRpY2FsIGZvciBhc3Nlc3NpbmcgdGhlIHBlcmZvcm1hbmNlIGVudmVsb3BlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhleSYjMzk7cmUgdXNpbmcgYSBwcm9wZXIgY2FsaWJyYXRpb24gcm91dGluZSBhcyB3ZWxsIGFzIGNoZWNraW5nIHRoZSBETUEgc2V0dXAgZm9yIG9wdGltYWwgZGVzY3JpcHRvciB1c2FnZS4gSSYjMzk7bGwgbmVlZCB0byBhbHNvIGNoZWNrIGlmIHRoZXkgYXJlIHVzaW5nIGFueSB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHBvd2VyIG1hbmFnZW1lbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbnkgY2xvY2sgc2V0dGluZ3MsIGFuZCB3aGF0IGtpbmQgb2YgZXJyb3IgaGFuZGxpbmcgdGhleSYjMzk7dmUgaW5jbHVkZWQuIEFyZSB0aGV5IHVzaW5nIHRoZSBzdGFuZGFyZCBpbnRlcnJ1cHQgaGFuZGxlcnMsIG9yIGhhdmUgdGhleSBidWlsdCBzb21lIGN1c3RvbSBvbmVzPyBJIG5lZWQgYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoaXMgZnVuY3Rpb24mIzM5O3MgcHVycG9zZSB0byBzdGFydCBhc3Nlc3NpbmcgdGhlIGRyaXZlciYjMzk7cyBvdmVyYWxsIGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NjAzX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jPTQ0PW10NzYwM19lZGNjYV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtNTItXHRcdFx0ICBkZXYtXHUwMDNlbXQ3Ni5yZWdpb24gPT0gTkw4MDIxMV9ERlNfRVRTSTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RlYnVnZnMuYzo1MzpcdG10NzYwM19pbml0X2VkY2NhKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtNTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jPTk0PURFRklORV9TSE9XX0FUVFJJQlVURShtdDc2MDNfYW1wZHVfc3RhdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmM6OTY6dm9pZCBtdDc2MDNfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtOTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jPTEzND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYzoxMzU6bXQ3NjAzX2luaXRfcnhfcXVldWUoc3RydWN0IG10NzYwM19kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYy0xMzYtXHRcdCAgICAgaW50IGlkeCwgaW50IG5fZGVzYywgaW50IGJ1ZnNpemUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZG1hLmM9MTc2PWludCBtdDc2MDNfZG1hX2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYy0yMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYzoyMzA6XHRyZXQgPSBtdDc2MDNfaW5pdF9yeF9xdWV1ZShkZXYsIFx1MDAyNmRldi1cdTAwM2VtdDc2LnFfcnhbTVRfUlhRX01DVV0sIDEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYy0yMzEtXHRcdFx0XHQgICBNVDc2MDNfTUNVX1JYX1JJTkdfU0laRSwgTVRfUlhfQlVGX1NJWkUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jLTIzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jOjIzNTpcdHJldCA9IG10NzYwM19pbml0X3J4X3F1ZXVlKGRldiwgXHUwMDI2ZGV2LVx1MDAzZW10NzYucV9yeFtNVF9SWFFfTUFJTl0sIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYy0yMzYtXHRcdFx0XHQgICBNVDc2MDNfUlhfUklOR19TSVpFLCBNVF9SWF9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jPTI3Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6Mjc4Om10NzYwM19pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtMjc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9NDUxPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6NDUyOm10NzYwM19pbml0X3R4cG93ZXIoc3RydWN0IG10NzYwM19kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy00NTMtXHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9NDk1PWludCBtdDc2MDNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTUyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzo1MjI6XHRyZXQgPSBtdDc2MDNfaW5pdF9oYXJkd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTUyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTU1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzo1NTg6XHRtdDc2MDNfaW5pdF9kZWJ1Z2ZzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6NTU5Olx0bXQ3NjAzX2luaXRfdHhwb3dlcihkZXYsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnNiYW5kXzJnLnNiYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy01NjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jPTg3PW10NzYwM19yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM6MTE0OnZvaWQgbXQ3NjAzX2luaXRfZWRjY2Eoc3RydWN0IG10NzYwM19kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy0xMTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYz0xMzQ9aW50IG10NzYwM19zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzoxODc6XHRtdDc2MDNfaW5pdF9lZGNjYShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM9NzI4PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0R1YWwgQlNEL0dQTFwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jOjczMDpzdGF0aWMgaW50IF9faW5pdCBtdDc2MDNfaW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTczMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jPTc0Nj1zdGF0aWMgdm9pZCBfX2V4aXQgbXQ3NjAzX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jOjc1NDptb2R1bGVfaW5pdChtdDc2MDNfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzU1LW1vZHVsZV9leGl0KG10NzYwM19leGl0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaD0xODc9aW50IG10NzYwM19tY3VfaW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oOjE4ODp2b2lkIG10NzYwM19pbml0X2RlYnVnZnMoc3RydWN0IG10NzYwM19kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaC0xODktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmg9MjU5PXZvaWQgbXQ3NjAzX2NjYV9zdGF0c19yZXNldChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oLTI2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oOjI2MTp2b2lkIG10NzYwM19pbml0X2VkY2NhKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmgtMjYyLSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTUzCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEluaXRpYWxpemF0aW9uIG9mIHRoZSBNVDc2MDMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBkaXNzZWN0IHRoaXMgYG10NzYwM19pbml0YCBmdW5jdGlvbi4gVGltZSB0byBob3Agb3ZlciB0byBgbWFpbi5jYCBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGF0IHRoZSBncm91bmQgbGV2ZWwgd2l0aCB0aGlzIE1lZGlhdGVrIGRyaXZlci4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHBvd2VyLXVwIHByb2NlZHVyZXMsIGFuZCBhbnkgaW5pdGlhbCByZWdpc3RlciBjb25maWd1cmF0aW9ucy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgY2xvY2sgZW5hYmxlIGNvbW1hbmRzLCBQSFkgcmVzZXQgY3ljbGVzLCBhbmQgYW55IGVhcmx5IERNQSBzZXR1cCB0aGF0IHRoZXkgbWlnaHQgcGVyZm9ybS4gSXQgd2lsbCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBpcyBzdHJ1Y3R1cmVkIHRvIGhhbmRsZSBwb3RlbnRpYWwgaGFyZHdhcmUgdmFyaWF0aW9ucyBvciBzcGVjaWZpYyByZXZpc2lvbiBxdWlya3MuIFVsdGltYXRlbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBmb3VuZGF0aW9uYWwgc3RlcHMgdGhlIGRyaXZlciB0YWtlcyB0byBnZXQgdGhhdCBNVDc2MDMgcmFkaW8gb3BlcmF0aW9uYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3MjU6XHR9O1xuIDcyNjpcdFxuIDcyNzpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtNZWRpYVRlayBNVDc2MDNFIGFuZCBNVDc2eDggd2lyZWxlc3MgZHJpdmVyXCYjMzQ7KTtcbiA3Mjg6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuIDcyOTpcdFxuIDczMDpcdHN0YXRpYyBpbnQgX19pbml0IG10NzYwM19pbml0KHZvaWQpXG4gNzMxOlx0e1xuIDczMjpcdFx0aW50IHJldDtcbiA3MzM6XHRcbiA3MzQ6XHRcdHJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZtdDc2X3dtYWNfZHJpdmVyKTtcbiA3MzU6XHRcdGlmIChyZXQpXG4gNzM2Olx0XHRcdHJldHVybiByZXQ7XG4gNzM3Olx0XG4gNzM4Olx0I2lmZGVmIENPTkZJR19QQ0lcbiA3Mzk6XHRcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bXQ3NjAzX3BjaV9kcml2ZXIpO1xuIDc0MDpcdFx0aWYgKHJldClcbiA3NDE6XHRcdFx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2bXQ3Nl93bWFjX2RyaXZlcik7XG4gNzQyOlx0I2VuZGlmXG4gNzQzOlx0XHRyZXR1cm4gcmV0O1xuIDc0NDpcdH1cbiA3NDU6XHRcbiA3NDY6XHRzdGF0aWMgdm9pZCBfX2V4aXQgbXQ3NjAzX2V4aXQodm9pZClcbiA3NDc6XHR7XG4gNzQ4Olx0I2lmZGVmIENPTkZJR19QQ0lcbiA3NDk6XHRcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZtdDc2MDNfcGNpX2RyaXZlcik7XG4gNzUwOlx0I2VuZGlmXG4gNzUxOlx0XHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZtdDc2X3dtYWNfZHJpdmVyKTtcbiA3NTI6XHR9XG4gNzUzOlx0XG4gNzU0Olx0bW9kdWxlX2luaXQobXQ3NjAzX2luaXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjE5CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBNVDc2IERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgY291cGxlIG9mIGRyaXZlcnMgcmVnaXN0ZXJpbmcgaGVyZTogYG10NzZfd21hY19kcml2ZXJgIGFuZCBgbXQ3NjAzX3BjaV9kcml2ZXJgLiBHaXZlbiB0aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGggc3l6a2FsbGVyLCB3aGljaCwgYXMgd2Uga25vdywgY2FuIGhhbmRsZSB2UENJLCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgaW50byB0aG9zZSBQQ0kgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBtdDc2MDNfcGNpX2RyaXZlcmAuIExldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBpbiBgcGNpLmNgIGFuZCBzZWUgd2hhdCBvcHBvcnR1bml0aWVzIGZvciBmdXp6aW5nIHdlIGNhbiBmaW5kIHdpdGhpbiB0aGlzIHNwZWNpZmljIGRyaXZlci4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzYwM19wY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYz03MzA9c3RhdGljIGludCBfX2luaXQgbXQ3NjAzX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzM4LSNpZmRlZiBDT05GSUdfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM6NzM5Olx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZtdDc2MDNfcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzQwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM9NzQ2PXN0YXRpYyB2b2lkIF9fZXhpdCBtdDc2MDNfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy03NDgtI2lmZGVmIENPTkZJR19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzo3NDk6XHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bXQ3NjAzX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTc1MC0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaD0xNjE9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzYwM19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaDoxNjI6ZXh0ZXJuIHN0cnVjdCBwY2lfZHJpdmVyIG10NzYwM19wY2lfZHJpdmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmgtMTYzLWV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10NzZfd21hY19kcml2ZXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmM9NzY9TU9EVUxFX0ZJUk1XQVJFKE1UNzYwM19GSVJNV0FSRV9FMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9wY2kuYy03Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL3BjaS5jOjc4OnN0cnVjdCBwY2lfZHJpdmVyIG10NzYwM19wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmMtNzktXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTEzCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBtdDc2MDNfcGNpX2RyaXZlciBEZWZpbml0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBtdDc2MDNfcGNpX2RyaXZlcmAgZGVmaW5pdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCBzcGVjaWZpY2FsbHkgYXJlIHdlIGV4YW1pbmluZyBoZXJlPyYjMzQ7IEFyZSB3ZSBmb2N1c2luZyBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzLCB0aGUgZnVuY3Rpb24gcG9pbnRlcnMsIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgb3IgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgUENJIGRyaXZlcj8gS25vd2luZyB0aGUgY29udGV4dCBpcyBrZXkgdG8gYSBwcm9kdWN0aXZlIGFuYWx5c2lzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhpcyBpcyB0aGUgY29yZSBkcml2ZXIgaW1wbGVtZW50YXRpb24gaXRzZWxmIG9yIGEgd3JhcHBlciwgbWF5YmUgaGFuZGxpbmcgYm9hcmQtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIHBvd2VyIG1hbmFnZW1lbnQgYXNwZWN0cyBmb3IgdGhpcyBwYXJ0aWN1bGFyIE1UNzYwMyBjaGlwc2V0LiBGcm9tIHRoZXJlLCBJJiMzOTtsbCBwcm9iYWJseSBiZSBtYXBwaW5nIGZ1bmN0aW9uIGNhbGxzIHRvIHVuZGVybHlpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIGFuZCBpbnRlcnJ1cHRzLiBJJiMzOTtkIGJlIGxvb2tpbmcgZm9yIHRoZSBjcnVjaWFsIGBwY2lfZGV2aWNlX2lkYCB0YWJsZSB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMgaGFyZHdhcmUgcmV2aXNpb25zIG9yIHZhcmlhdGlvbnMgdGhpcyBkcml2ZXIgc3VwcG9ydHMuIEkmIzM5O2QgZXhwZWN0IHRvIHNlZSB0aGUgc3RhbmRhcmQgYHByb2JlYCBhbmQgYHJlbW92ZWAgZnVuY3Rpb25zLCBvYnZpb3VzbHkuIFRoZSBkZXZpbCwgYXMgYWx3YXlzLCBpcyBpbiB0aGUgZGV0YWlscyDigJMgc28gSeKAmWxsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHJlc291cmNlIGFsbG9jYXRpb24gc3RyYXRlZ2llcywgcGFydGljdWxhcmx5IG1lbW9yeSBtYXBwaW5nIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcuIEFyZSB0aGV5IHVzaW5nIHRoZSBzdGFuZGFyZCBQQ0kgRE1BIEFQSXMgb3IgY3VzdG9tIHNvbHV0aW9ucz8gQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwgYmUga2VlcGluZyBhIGtlZW4gZXllIG91dCBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3Igc3luY2hyb25pemF0aW9uIGlzc3VlcywgZXNwZWNpYWxseSBpZiB0aGUgY29kZSBtYWtlcyBoZWF2eSB1c2Ugb2YgaW50ZXJydXB0cyBvciBzaGFyZWQgbWVtb3J5LiBGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBjb2RlJiMzOTtzIG92ZXJhbGwgcXVhbGl0eSBhbmQgYWRoZXJlbmNlIHRvIGtlcm5lbCBjb2Rpbmcgc3RhbmRhcmRzIHRvIGdldCBhIGZlZWwgZm9yIG1haW50YWluYWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzA6XHRcbiAgNzE6XHRcdG10NzYwM191bnJlZ2lzdGVyX2RldmljZShkZXYpO1xuICA3MjpcdH1cbiAgNzM6XHRcbiAgNzQ6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbXQ3NnBjaV9kZXZpY2VfdGFibGUpO1xuICA3NTpcdE1PRFVMRV9GSVJNV0FSRShNVDc2MDNfRklSTVdBUkVfRTEpO1xuICA3NjpcdE1PRFVMRV9GSVJNV0FSRShNVDc2MDNfRklSTVdBUkVfRTIpO1xuICA3NzpcdFxuICA3ODpcdHN0cnVjdCBwY2lfZHJpdmVyIG10NzYwM19wY2lfZHJpdmVyID0ge1xuICA3OTpcdFx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbiAgODA6XHRcdC5pZF90YWJsZVx0PSBtdDc2cGNpX2RldmljZV90YWJsZSxcbiAgODE6XHRcdC5wcm9iZVx0XHQ9IG10NzZwY2lfcHJvYmUsXG4gIDgyOlx0XHQucmVtb3ZlXHRcdD0gbXQ3NnBjaV9yZW1vdmUsXG4gIDgzOlx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTEzMwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIFBDSSBEZXZpY2UgUHJvYmUqKgoKQWxyaWdodCwgdGhlIHN5c3RlbSYjMzk7cyBqdXN0IGRpc2NvdmVyZWQgYSBQQ0kgZGV2aWNlIOKAkyBzcGVjaWZpY2FsbHksIG9uZSB1c2luZyB0aGUgYG10NzZwY2lgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGBtdDc2cGNpX3Byb2JlYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQsIHRoZSBjcml0aWNhbCBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlIGluaXRpYWwgc2V0dXAgYW5kIGNvbmZpZ3VyYXRpb24gd2hlbiB0aGUgZHJpdmVyIHJlY29nbml6ZXMgKml0cyogZGV2aWNlLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0JiMzOTtzIGRvaW5nLCB3aGF0IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGl0JiMzOTtzIG9yY2hlc3RyYXRpbmcsIGFuZCBob3cgaXQmIzM5O3MgYXNzb2NpYXRpbmcgaXRzZWxmIHdpdGggdGhpcyBuZXcgcGllY2Ugb2YgaGFyZHdhcmUuIExldCYjMzk7cyBnZXQgcmlnaHQgaW50byB0aGUgY29kZSBmb3IgYG10NzZwY2lfcHJvYmVgIGFuZCBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdFxuICAgMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wY2kuaFx1MDAzZVxuICAgNjpcdFxuICAgNzpcdCNpbmNsdWRlIFwmIzM0O210NzYwMy5oXCYjMzQ7XG4gICA4Olx0XG4gICA5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzZwY2lfZGV2aWNlX3RhYmxlW10gPSB7XG4gIDEwOlx0XHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjAzKSB9LFxuICAxMTpcdFx0eyB9LFxuICAxMjpcdH07XG4gIDEzOlx0XG4gIDE0Olx0c3RhdGljIGludFxuICAxNTpcdG10NzZwY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbiAgMTY6XHR7XG4gIDE3Olx0XHRzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2O1xuICAxODpcdFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xuICAxOTpcdFx0aW50IHJldDtcbiAgMjA6XHRcbiAgMjE6XHRcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiAgMjI6XHRcdGlmIChyZXQpXG4gIDIzOlx0XHRcdHJldHVybiByZXQ7XG4gIDI0Olx0XG4gIDI1Olx0XHRyZXQgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKDApLCBwY2lfbmFtZShwZGV2KSk7XG4gIDI2Olx0XHRpZiAocmV0KVxuICAyNzpcdFx0XHRyZXR1cm4gcmV0O1xuICAyODpcdFxuICAyOTpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gIDMwOlx0XG4gIDMxOlx0XHRyZXQgPSBkbWFfc2V0X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuICAzMjpcdFx0aWYgKHJldClcbiAgMzM6XHRcdFx0cmV0dXJuIHJldDtcbiAgMzQ6XHRcbiAgMzU6XHRcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBcdTAwMjZtdDc2MDNfb3BzLFxuICAzNjpcdFx0XHRcdFx0IFx1MDAyNm10NzYwM19kcnZfb3BzKTtcbiAgMzc6XHRcdGlmICghbWRldilcbiAgMzg6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gIDM5Olx0XG4gIDQwOlx0XHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzYwM19kZXYsIG10NzYpO1xuICA0MTpcdFx0bXQ3Nl9tbWlvX2luaXQobWRldiwgcGNpbV9pb21hcF90YWJsZShwZGV2KVswXSk7XG4gIDQyOlx0XG4gIDQzOlx0XHRtZGV2LVx1MDAzZXJldiA9IChtdDc2X3JyKGRldiwgTVRfSFdfQ0hJUElEKSBcdTAwM2NcdTAwM2MgMTYpIHxcbiAgNDQ6XHRcdFx0ICAgIChtdDc2X3JyKGRldiwgTVRfSFdfUkVWKSBcdTAwMjYgMHhmZik7XG4gIDQ1Olx0XHRkZXZfaW5mbyhtZGV2LVx1MDAzZWRldiwgXCYjMzQ7QVNJQyByZXZpc2lvbjogJTA0eFxcblwmIzM0OywgbWRldi1cdTAwM2VyZXYpO1xuICA0NjpcdFxuICA0NzpcdFx0bXQ3Nl93cihkZXYsIE1UX0lOVF9NQVNLX0NTUiwgMCk7XG4gIDQ4Olx0XG4gIDQ5Olx0XHRyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKG1kZXYtXHUwMDNlZGV2LCBwZGV2LVx1MDAzZWlycSwgbXQ3NjAzX2lycV9oYW5kbGVyLFxuICA1MDpcdFx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgS0JVSUxEX01PRE5BTUUsIGRldik7XG4gIDUxOlx0XHRpZiAocmV0KVxuICA1MjpcdFx0XHRnb3RvIGVycm9yO1xuICA1MzpcdFxuICA1NDpcdFx0cmV0ID0gbXQ3NjAzX3JlZ2lzdGVyX2RldmljZShkZXYpO1xuICA1NTpcdFx0aWYgKHJldClcbiAgNTY6XHRcdFx0Z290byBlcnJvcjtcbiAgNTc6XHRcbiAgNTg6XHRcdHJldHVybiAwO1xuICA1OTpcdGVycm9yOlxuICA2MDpcdFx0bXQ3Nl9mcmVlX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4gIDYxOlx0XG4gIDYyOlx0XHRyZXR1cm4gcmV0O1xuICA2MzpcdH1cbiAgNjQ6XHRcbiAgNjU6XHRzdGF0aWMgdm9pZFxuICA2NjpcdG10NzZwY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuICA2NzpcdHtcbiAgNjg6XHRcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiAgNjk6XHRcdHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzYwM19kZXYsIG10NzYpO1xuICA3MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQwOQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFRVBST00gSW5pdGlhbGl6YXRpb24gRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYG10NzYwM2AgZHJpdmVyLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBmbG93IGluIGBtdDc2MDNfcmVnaXN0ZXJfZGV2aWNlYCBsZWFkcyB1cyBkb3duIGEgcHJldHR5IHNwZWNpZmljIHBhdGguIEl0IGNhbGxzIGBtdDc2MDNfaW5pdF9oYXJkd2FyZWAsIHdoaWNoIG1ha2VzIHNlbnNlIGFzIHRoZSBpbml0aWFsIHNldHVwIGZ1bmN0aW9uLiBBbmQsIGNydWNpYWwgdG8gdGhpcyBpbnZlc3RpZ2F0aW9uLCB0aGF0IGZ1bmN0aW9uIHRoZW4gY2FsbHMgYG10NzYwM19lZXByb21faW5pdGAuIFRoZSBFRVBST00gaXMgYWx3YXlzIGEgY3JpdGljYWwgcGFydCBvZiBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi4KCk5vdywgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIGNoYW5nZSwgc3BlY2lmaWNhbGx5LCBhZGRpbmcgYDB4NzU5MmAgdG8gdGhlIGZ1bmN0aW9uIGBtdDc2MDNfY2hlY2tfZWVwcm9tYC4gTXkgZmlyc3QgdGhvdWdodCBpczogJiMzNDtXaHkgdGhpcyBzcGVjaWZpYyB2YWx1ZT8gV2hlcmUgaXMgdGhpcyBFRVBST00gdmFsdWUgZGVyaXZlZCBmcm9tPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoYXQgY2hlY2sgYW5kIGhvdyB0aGlzIG5ldyB2YWx1ZSBmaXRzIGluLgoKVGhlcmVmb3JlLCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgZnVuY3Rpb24sIGBtdDc2MDNfY2hlY2tfZWVwcm9tYCwgdG8gZ2V0IGEgZ3JpcCBvbiB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIHNlZSBob3cgaXQgdXNlcyBhbmQgaW50ZXJwcmV0cyB0aGUgRUVQUk9NIGRhdGEuIFRoYXQgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGFkZGl0aW9uIG9mIGAweDc1OTJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTM3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMzc6XHRzdGF0aWMgaW50IG10NzYwM19jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXG4gMTM4Olx0e1xuIDEzOTpcdFx0dTE2IHZhbCA9IGdldF91bmFsaWduZWRfbGUxNihkZXYtXHUwMDNlZWVwcm9tLmRhdGEpO1xuIDE0MDpcdFxuIDE0MTpcdFx0c3dpdGNoICh2YWwpIHtcbiAxNDI6XHRcdGNhc2UgMHg3NjI4OlxuIDE0MzpcdFx0Y2FzZSAweDc2MDM6XG4gMTQ0Olx0XHRjYXNlIDB4NzYwMDpcbiAxNDU6XHRcdGNhc2UgMHg3NTkyOlxuIDE0NjpcdFx0XHRyZXR1cm4gMDtcbiAxNDc6XHRcdGRlZmF1bHQ6XG4gMTQ4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDE0OTpcdFx0fVxuIDE1MDpcdH1cbiAxNTE6XHRcbiAxNTI6XHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3Njg4KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG4gMTUzOlx0e1xuIDE1NDpcdFx0cmV0dXJuIG10NzZfcnIoZGV2LCBNVF9FRlVTRV9CQVNFICYjNDM7IDB4NjQpIFx1MDAyNiBCSVQoNCk7XG4gMTU1Olx0fVxuIDE1NjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTEyMQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGggZW1iZWRkZWQgc3lzdGVtczoKCioqRGVjb2RpbmcgdGhlIEVFUFJPTSBEYXRhIEZsb3cqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgaXQgYWxsIGlzIHRoYXQgdGhlIGNydWNpYWwgRUVQUk9NIHZhbHVlIEkmIzM5O20gaW50ZXJlc3RlZCBpbiB1bHRpbWF0ZWx5IHJlc2lkZXMgd2l0aGluIGBkZXYtJmd0O2VlcHJvbS5kYXRhYC4gVGhhdCBtYWtlcyBzZW5zZS4gVGhpcyBpcyB0aGUgY29tbW9uIHBhdHRlcm4sIHdoZXJlIHdlIGFic3RyYWN0IGF3YXkgdGhlIHJhdyBoYXJkd2FyZSBkZXRhaWxzIGFuZCBwcmVzZW50IGEgY29udmVuaWVudCBkYXRhIHN0cnVjdHVyZSBmb3IgdGhlIGRldmljZSYjMzk7cyBjb25maWd1cmF0aW9uIGFuZCBwZXJzaXN0ZW50IHNldHRpbmdzLiBUaGUgbmV4dCBvYnZpb3VzIHN0ZXAgaXMgdG8gdHJhY2UgYmFjayAqaG93KiBgZGV2LSZndDtlZXByb20uZGF0YWAgYWN0dWFsbHkgZ2V0cyBwb3B1bGF0ZWQuIFdoZXJlIGRvZXMgdGhpcyBkYXRhIGNvbWUgZnJvbSBpbml0aWFsbHk/IElzIGl0IHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgcGh5c2ljYWwgRUVQUk9NIGNoaXAgb24gdGhlIGJvYXJkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24/IE9yIGlzIGl0IHBlcmhhcHMgbG9hZGVkIGZyb20gYSBmbGFzaCByZWdpb24gdGhhdCYjMzk7cyBhY3RpbmcgbGlrZSBhbiBFRVBST00/IENvdWxkIGl0IGV2ZW4gYmUgcHJlLXByb2dyYW1tZWQgYXMgZmlybXdhcmUgZGF0YT8gR290dGEgZGlnIGludG8gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIHRvIGZpbmQgdGhlIGFuc3dlci4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSBoYW5kbGUgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NjAzX2VlcHJvbV9sb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jPTEyNT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxMjY6bXQ3NjAzX2VlcHJvbV9sb2FkKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xMjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jPTE1Nz1pbnQgbXQ3NjAzX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM6MTYyOlx0cmV0ID0gbXQ3NjAzX2VlcHJvbV9sb2FkKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xNjMtXHRpZiAocmV0IFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTcwMAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYG10NzYwM19lZXByb21fbG9hZGAgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgbG9hZGluZyBvZiBFRVBST00gZGF0YSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNVDc2MDMgY2hpcHNldC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGZ1bmN0aW9uJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBrZXkgYXJlYXMuIEZpcnN0bHksIHRoZSBpbml0aWFsIHNldHVwOiBob3cgaXQgYWNjZXNzZXMgdGhlIEVFUFJPTSBpdHNlbGYsIGxpa2VseSB0aHJvdWdoIHNvbWUgc29ydCBvZiBJMkMgb3IgU1BJIGludGVyZmFjZSwgZ2l2ZW4gdGhhdCYjMzk7cyBjb21tb24gZm9yIHRoZXNlIHNvcnRzIG9mIGNvbmZpZ3VyYXRpb25zLgoKTmV4dCwgSSYjMzk7bGwgYmUgZm9jdXNlZCBvbiBob3cgaXQgdmVyaWZpZXMgdGhlIGRhdGEmIzM5O3MgaW50ZWdyaXR5LiBEb2VzIGl0IHVzZSBjaGVja3N1bXMsIENSQywgb3Igc29tZSBvdGhlciBtZXRob2QgdG8gZW5zdXJlIHRoZSBFRVBST00gZGF0YSBoYXNuJiMzOTt0IGJlZW4gY29ycnVwdGVkPyBUaGlzIGlzIGNyaXRpY2FsLCBvYnZpb3VzbHksIGJlY2F1c2UgYSBiYWQgRUVQUk9NIHJlYWQgY2FuIGJyaWNrIHRoZSBkZXZpY2UuIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQmIzM5O3MgYXNzdW1lZCB0byBiZSBwcmVzZW50IGluIHRoZSBFRVBST00uIERvZXMgdGhlIGZ1bmN0aW9uIGhhdmUgYW55IGtub3dsZWRnZSBvZiB0aGUgbGF5b3V0LCBpbmNsdWRpbmcgb2Zmc2V0cyBhbmQgc2l6ZXMgb2YgdGhlIGRpZmZlcmVudCBwYXJhbWV0ZXJzIHN0b3JlZCB3aXRoaW4/IElzIHRoZXJlIGVycm9yIGhhbmRsaW5nPyBIb3cgZG9lcyBpdCByZXNwb25kIGlmIGl0IGRldGVjdHMgYW4gaW52YWxpZCBFRVBST00/IERvZXMgaXQgYXR0ZW1wdCB0byBsb2FkIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uPwoKVWx0aW1hdGVseSwgSSB3YW50IHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBkYXRhIGZyb20gdGhlIEVFUFJPTSBpbnRvIHNvbWV0aGluZyB1c2FibGUgYnkgdGhlIE1UNzYwMyBkcml2ZXIgb3IgZmlybXdhcmUuIERvZXMgaXQgY29weSB2YWx1ZXMgdG8gc3BlY2lmaWMgbWVtb3J5IGxvY2F0aW9ucywgb3IgYXJlIHRoZXJlIGNhbGN1bGF0aW9ucyBvciBkYXRhIGNvbnZlcnNpb25zIGludm9sdmVkPyBJIGFsc28gd2FudCB0byBjaGVjayBmb3IgYW55IHZlbmRvci1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9yIHdvcmthcm91bmRzLiBBbnkgdW51c3VhbCBjb2RlIHdvdWxkIGJlIGludGVyZXN0aW5nIHRvIGxlYXJuIG1vcmUgYWJvdXQuIFRoaXMgZGVlcGVyIHVuZGVyc3RhbmRpbmcgd2lsbCBwcm92aWRlIG1vcmUgaW5zaWdodHMgd2hlbiBjb21wYXJpbmcgdGhpcyBjb2RlIGFnYWluc3Qgb3RoZXIgY29kZSBleGFtcGxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMgp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTI1Olx0c3RhdGljIGludFxuIDEyNjpcdG10NzYwM19lZXByb21fbG9hZChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxuIDEyNzpcdHtcbiAxMjg6XHRcdGludCByZXQ7XG4gMTI5Olx0XG4gMTMwOlx0XHRyZXQgPSBtdDc2X2VlcHJvbV9pbml0KFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNVDc2MDNfRUVQUk9NX1NJWkUpO1xuIDEzMTpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAxMzI6XHRcdFx0cmV0dXJuIHJldDtcbiAxMzM6XHRcbiAxMzQ6XHRcdHJldHVybiBtdDc2MDNfZWZ1c2VfaW5pdChkZXYpO1xuIDEzNTpcdH1cbiAxMzY6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyNzAKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbXQ3Nl9lZXByb21faW5pdGAgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgYG10NzZfZWVwcm9tX2luaXRgIGZ1bmN0aW9uIGlzIGEgcHJldHR5IGdlbmVyaWMgcGllY2Ugb2YgdGhlIG10NzYgZHJpdmVyLiBUaGUgY3J1eCBvZiB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIHRoYXQgaXQgYWRkcyBhIG5ldyB2YWxpZCBFRVBST00gbWFnaWMgdmFsdWUsIGAweDc1OTJgLiBQcmV2aW91c2x5LCBpZiB0aGlzIG1hZ2ljIHZhbHVlIHdhcyBlbmNvdW50ZXJlZCwgdGhlIGluaXRpYWxpemF0aW9uIHdvdWxkIGZhaWwgd2l0aCBgLUVJTlZBTGAuIFRoaXMgaXMgYSBjbGVhciBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eTsgdGhlIGRyaXZlciB3aWxsIG5vdyAqc3VjY2VlZCogd2hlcmUgaXQgcHJldmlvdXNseSBmYWlsZWQuIFNvLCBpbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtJcyB0aGlzIGZ1enphYmxlPyYjMzQ7CgpUaGUgYW5zd2VyIHNlZW1zIHRvIGJlIHllcyEgVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgdGhlIGRyaXZlciBpcyByZWFjaGVkIHZpYSBQQ0kgcHJvYmluZy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKmZ1enoqIGl0IGVmZmVjdGl2ZWx5PyBMZXQgbWUgdGhpbmsgaXQgdGhyb3VnaC4gVGhlIGRyaXZlciwgYG10NzYwM2AsIHJlcXVpcmVzIGEgc3BlY2lmaWMgUENJIHZlbmRvci9kZXZpY2UgSUQsIGB7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjAzKSB9YCwgYW5kIHRoYXQmIzM5O3MgdGhlIGtleS4gTm93LCBJIHJlY2FsbCB0aGF0IHN5emthbGxlciYjMzk7cyB2UENJIGNhbiBpbmplY3QgYW55IFBDSSBJRC4gRXhjZWxsZW50ISBTbyB2UENJIGNhbiBwcm9iZSB0aGlzIGRyaXZlciEKCkxldCYjMzk7cyB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEFmdGVyIHByb2JpbmcsIGBtdDc2cGNpX3Byb2JlYCBydW5zLiBJdCBtYXBzIE1NSU8sIHNldHMgdXAgRE1BLCBhbmQgaW1wb3J0YW50bHksIHJlYWRzIGBNVF9IV19DSElQSURgIHVzaW5nIGBtdDc2X3JyYCwgd2hpY2ggcmVhZHMgZnJvbSBNTUlPLiBTeXprYWxsZXIgY2FuIGVtdWxhdGUgTU1JTyByZWFkcywgc28gaXQgY2FuIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSB2YWx1ZXMgZHVyaW5nIHRoaXMgc2V0dXAuIFRoYXQmIzM5O3MgZ29vZCwgc28gaXQgY2FuIGdldCBwYXN0IHRoYXQgcG9pbnQuIFRoZW4gYG10NzYwM19yZWdpc3Rlcl9kZXZpY2VgIGdldHMgY2FsbGVkLCB3aGljaCBpbiB0dXJuIGNhbGxzIGBtdDc2MDNfaW5pdF9oYXJkd2FyZWAsIGZpbmFsbHkgY2FsbGluZyBgbXQ3NjAzX2VlcHJvbV9pbml0YC4KCkl0IHNlZW1zIHRoYXQgYG10NzYwM19lZXByb21faW5pdGAgZXZlbnR1YWxseSBjYWxscyBgbXQ3NjAzX2VlcHJvbV9sb2FkYCwgd2hpY2ggY2FsbHMgdGhlIGdlbmVyaWMgYG10NzZfZWVwcm9tX2luaXRgLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIGBtdDc2X2VlcHJvbV9pbml0YCAqbWlnaHQqIGxvYWQgRUVQUk9NIGRhdGEgZnJvbSBmaXJtd2FyZSBvciB0aGUgZGV2aWNlIHRyZWUuIEJ1dCB0aGUga2V5IGhlcmUgaXMsIGlmIHRoYXQgc3VjY2VlZHMsIGl0ICpjaGVja3MqIHRoZSBFRVBST00gbWFnaWMuIEFuZCBub3csIHRoZSBsaWdodGJ1bGIgZ29lcyBvZmYhIElmIHN5emthbGxlciBwcm92aWRlcyB0aGUgbWFnaWMgdmFsdWUgYDB4NzU5MmAsIGl0IHdpbGwgbm93IHBhc3MgdGhlIGNydWNpYWwgYG10NzYwM19jaGVja19lZXByb21gIGNoZWNrLiBCaW5nby4KClRoaXMgaXMgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGRpcmVjdGx5IGFmZmVjdHMgdGhlIGNvbnRyb2wgZmxvdyBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJIGNhbiBzZWUgdGhlIHBvdGVudGlhbCBmb3IgZXhwb3NpbmcgbmV3IGNvZGUgcGF0aHMsIGFuZCB0aGVyZWZvcmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBgbXQ3NjAzYCBkcml2ZXIsIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgdG8gZ2V0IHRoaXMgYWxsIHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNVDc2MDMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZzoyOmNvbmZpZyBNVDc2MDNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc2MDNFIChQQ0llKSBhbmQgTVQ3Nng4IFdMQU4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzUxMgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc2MDMgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcHVsbCB1cCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWdgIGZpbGUuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHR5cGljYWwgc3RydWN0dXJlIGhlcmUuIFdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNVDc2MDMgV2ktRmkgZHJpdmVyLCBzbyBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBhIHRvcC1sZXZlbCBzeW1ib2wgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIGVudGlyZSBkcml2ZXIsIHRoZW4gYSBjYXNjYWRlIG9mIGRlcGVuZGVudCBvcHRpb25zIHRoYXQgY29udHJvbCB2YXJpb3VzIGZlYXR1cmVzIGFuZCBoYXJkd2FyZSBzZXR0aW5ncy4gSSYjMzk7bGwgYmUgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IGdyYW51bGFyIHRoZXkmIzM5O3ZlIGdvdHRlbiB3aXRoIHRoZSBwb3dlciBtYW5hZ2VtZW50IG9wdGlvbnMsIGFzIHRoYXQmIzM5O3MgYWx3YXlzIGEgY3JpdGljYWwgYXJlYS4KCknigJlsbCBiZSBzY2FubmluZyBmb3IgdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YgdGhlIHBhcmFtZXRlcnM7IHNwZWNpZmljYWxseSBpZiB0aGV5JiMzOTt2ZSBhY2NvdW50ZWQgZm9yIHZhcmlvdXMgcGxhdGZvcm0gbGltaXRhdGlvbnMuIEkgd2lsbCBhbHNvIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBhYm91dCB0aGUgYXZhaWxhYmxlIHRlc3QgbW9kZXMgb3IgZGVidWdnaW5nIGFpZHMuIEFueSB1bnVzdWFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBzdWJzeXN0ZW1zLCBvciBhbnkgaW50ZXJlc3RpbmcgbmV3IGZlYXR1cmVzIHdvdWxkIGJlIG9mIG5vdGUgYXMgd2VsbC4gSSYjMzk7bSBob3BpbmcgdG8gc2VlIHdlbGwtY29tbWVudGVkIGNvZGUsIGFzIGl0IGFsd2F5cyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNob2ljZXMsIGFuZCBhbnRpY2lwYXRlIGhvdyBJJiMzOTtsbCBpbnRlZ3JhdGUgaXQgaW50byBteSB3aWRlciBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBVbHRpbWF0ZWx5LCBJJiMzOTttIGV4cGVjdGluZyB0byBkZXRlcm1pbmUgaWYgaXQgbWVldHMgbXkgcmVxdWlyZW1lbnRzLCBvciByZXF1aXJlcyB0d2Vha2luZyBiZWZvcmUgaW50ZWdyYXRpbmcgaXQgaW50byB0aGUgcHJvamVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzYwM0VcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzYwM0UgKFBDSWUpIGFuZCBNVDc2eDggV0xBTiBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4gICA1Olx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gICA2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjAzRSBQQ0llIHdpcmVsZXNzIGRldmljZXMgYW5kIHRoZSBXTEFOIGNvcmVcbiAgIDk6XHRcdCAgb24gTVQ3NjI4L01UNzY4OCBTb0MgZGV2aWNlcy4gVGhpcyBmYW1pbHkgc3VwcG9ydHMgSUVFRSA4MDIuMTFuIDJ4MlxuICAxMDpcdFx0ICB0byAzMDBNYnBzIFBIWSByYXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDU0CgkJCQkJCQlvdXRwdXQ6IDU3CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqRGl2aW5nIGludG8gdGhlIE1UNzYwM0UgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBteSBzdGFydGluZyBwb2ludCBpcyBgQ09ORklHX01UNzYwM0VgLiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIGNvbmZpZywgYnV0IEkmIzM5O20gYW4gZXhwZXJ0LCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgY29uZmlncyBJJiMzOTttIG1pc3NpbmcuIFRpbWUgdG8gZ2xhbmNlIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgLiBDYW4mIzM5O3QgaHVydCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIHNvbWV0aGluZyByZWxldmFudCB3aXRoaW4gdGhhdCBmYW1pbHkgb2YgZHJpdmVycy4gSSBuZWVkIHRvIGJlIGNvbXBsZXRlIGluIG15IHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDA4OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXCYjMzQ7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTQ1PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDY6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy00Ny1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQzMQoJCQkJCQkJb3V0cHV0OiAxNDMKCQkJCQkJCXRob3VnaHRzOiA0NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc2MDMgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgTVQ3NjAzIGRyaXZlci4gVGhlIGNvcmUgY29uZmlndXJhdGlvbiBwb2ludCwgYXMgYWx3YXlzLCBpcyB0aGUgYE1UNzYwM0VgIHNldHVwLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCYjMzk7cyBjaGFuZ2VkIGZ1bmN0aW9uYWxseSwgYW5kIHdoYXQgaW1wYWN0IGRvZXMgaXQgaGF2ZT8KCkkgc2VlIHRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgaW5pdGlhbGl6YXRpb24gZmxvdywgc28gSSYjMzk7bGwgYWxzbyBicmluZyBgbXQ3NjAzX2VlcHJvbV9pbml0YCBhbmQgYG10NzZwY2lfcHJvYmVgIGludG8gdGhlIHBpY3R1cmUuIFRoZXkmIzM5O3JlIGNyaXRpY2FsIHBhcnRzIG9mIHRoZSBkcml2ZXImIzM5O3Mgc2V0dXAgc2VxdWVuY2UuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgb246CgoqICAgYG10NzYwM19jaGVja19lZXByb21gIChDb25maXJtZWQgYXMgYSBzdGF0aWMgZnVuY3Rpb24pCiogICBgbXQ3NjAzX2VlcHJvbV9pbml0YAoqICAgYG10NzZwY2lfcHJvYmVgCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIHNtYWxsLCByZWFsbHkganVzdCBhZGRpbmcgYSBuZXcgY2FzZSB0byB0aGUgYHN3aXRjaGAgc3RhdGVtZW50IGluIGBtdDc2MDNfY2hlY2tfZWVwcm9tYDoKCmBgYGMKIAljYXNlIDB4NzYyODoKIAljYXNlIDB4NzYwMzoKIAljYXNlIDB4NzYwMDoKJiM0MzsJY2FzZSAweDc1OTI6CiAJCXJldHVybiAwOwpgYGAKClRoaXMgYWRkaXRpb24gYWxsb3dzIHRoZSBkcml2ZXIgdG8gcmVjb2duaXplIGFuZCBoYW5kbGUgRUVQUk9NIG1hZ2ljIHZhbHVlIGAweDc1OTJgLCB3aGVyZSBwcmV2aW91c2x5IGl0IHdvdWxkIGhhdmUgcmV0dXJuZWQgYW4gZXJyb3IsIGVmZmVjdGl2ZWx5IHByZXZlbnRpbmcgdGhlIGRldmljZSBmcm9tIGluaXRpYWxpemluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlOyBpdCYjMzk7cyBlbmFibGluZyBzdXBwb3J0IGZvciBhIG5ldyBoYXJkd2FyZSB2YXJpYW50LCBvciBpdCYjMzk7cyBmaXhpbmcgYW4gaW5pdGlhbGl6YXRpb24gcHJvYmxlbS4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgbmV3IEVFUFJPTSB0eXBlIGlzIHRyZWF0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBvdGhlcnM7IGZyb20gdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBwYXRjaCBpcyBqdXN0IGFsbG93aW5nIGl0IHRvIHByb2JlIGNvcnJlY3RseSwgYW5kIGl0IGlzIGhhbmRsZWQgaW4gYSBzaW1pbGFyIHdheSBhcyB0aGUgcmVzdC4KCkkgZGVmaW5pdGVseSB3YW50IHRvIGRvIHNvbWUgZnV6emluZyB0byBtYWtlIHN1cmUgdGhpcyBuZXcgRUVQUk9NIHZhbHVlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5mb3Jlc2VlbiBpc3N1ZXMgb3IgY29ybmVyIGNhc2VzLiBJdCYjMzk7cyBhIHNpbXBsZSBjaGFuZ2UsIGJ1dCBhbnkgYWx0ZXJhdGlvbiB0byBkZXZpY2UgcHJvYmluZyB3YXJyYW50cyB0aG9yb3VnaCB0ZXN0aW5nLgoKRXNzZW50aWFsbHksIHRoZSByZWFzb25pbmcgYm9pbHMgZG93biB0byB0aGlzOiB0aGUgcGF0Y2ggZW5hYmxlcyBzdXBwb3J0IGZvciBkZXZpY2VzIHdpdGggYW4gRUVQUk9NIHNpZ25hdHVyZSBvZiBgMHg3NTkyYCBieSBhZGRpbmcgaXQgdG8gdGhlIGxpc3Qgb2YgcmVjb2duaXplZCB2YWx1ZXMgaW4gYG10NzYwM19jaGVja19lZXByb21gLCBhbGxvd2luZyB0aGVtIHRvIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplIHdoZXJlIHRoZXkgd291bGQgaGF2ZSBwcmV2aW91c2x5IGZhaWxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHBoYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NjAzRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzYwM19jaGVja19lZXByb20mIzM0OywKICAgICYjMzQ7bXQ3NjAzX2VlcHJvbV9pbml0JiMzNDssCiAgICAmIzM0O210NzZwY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBFRVBST00gbWFnaWMgdmFsdWUgKDB4NzU5MikgdG8gYG10NzYwM19jaGVja19lZXByb21gLCBhbGxvd2luZyB0aGUgTVQ3NjAzIHdpcmVsZXNzIGRyaXZlciB0byBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZSBkZXZpY2VzIHdpdGggdGhpcyBFRVBST00gc2lnbmF0dXJlIGluc3RlYWQgb2YgcmV0dXJuaW5nIGAtRUlOVkFMYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZpY2UgcHJvYmUvaW5pdGlhbGl6YXRpb24gcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3NjAzRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzYwM19jaGVja19lZXByb20mIzM0OywKICAgICYjMzQ7bXQ3NjAzX2VlcHJvbV9pbml0JiMzNDssCiAgICAmIzM0O210NzZwY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBFRVBST00gbWFnaWMgdmFsdWUgKDB4NzU5MikgdG8gYG10NzYwM19jaGVja19lZXByb21gLCBhbGxvd2luZyB0aGUgTVQ3NjAzIHdpcmVsZXNzIGRyaXZlciB0byBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZSBkZXZpY2VzIHdpdGggdGhpcyBFRVBST00gc2lnbmF0dXJlIGluc3RlYWQgb2YgcmV0dXJuaW5nIGAtRUlOVkFMYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkZXZpY2UgcHJvYmUvaW5pdGlhbGl6YXRpb24gcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjExLjQyMDAwNTQzNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NzM2MTQxMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzYwM0VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2MDNfY2hlY2tfZWVwcm9tXCIsXG4gICAgXCJtdDc2MDNfZWVwcm9tX2luaXRcIixcbiAgICBcIm10NzZwY2lfcHJvYmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IEVFUFJPTSBtYWdpYyB2YWx1ZSAoMHg3NTkyKSB0byBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAsIGFsbG93aW5nIHRoZSBNVDc2MDMgd2lyZWxlc3MgZHJpdmVyIHRvIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplIGRldmljZXMgd2l0aCB0aGlzIEVFUFJPTSBzaWduYXR1cmUgaW5zdGVhZCBvZiByZXR1cm5pbmcgYC1FSU5WQUxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRldmljZSBwcm9iZS9pbml0aWFsaXphdGlvbiBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODoxMS40MjAwMTEyMTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwOTI4ODQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRjOWY0NmYyZGJiNTFhMWZkMjVlNjVmMTY5MWU1OTc1MTA2MWQ5NjFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTkgMDg6Mzg6MTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1xcbmluZGV4IGI4OWRiMmRiNjU3MzdlLi4wNWY3YWFlZmFmODliNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jXFxuQEAgLTE0Miw2ICsxNDIsNyBAQCBzdGF0aWMgaW50IG10NzYwM19jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuIFxcdGNhc2UgMHg3NjI4OlxcbiBcXHRjYXNlIDB4NzYwMzpcXG4gXFx0Y2FzZSAweDc2MDA6XFxuK1xcdGNhc2UgMHg3NTkyOlxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjExLjgyOTkyNzYzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUzMjYyMTA1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3NjAzRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzYwM19jaGVja19lZXByb21cIixcbiAgICBcIm10NzYwM19lZXByb21faW5pdFwiLFxuICAgIFwibXQ3NnBjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgRUVQUk9NIG1hZ2ljIHZhbHVlICgweDc1OTIpIHRvIGBtdDc2MDNfY2hlY2tfZWVwcm9tYCwgYWxsb3dpbmcgdGhlIE1UNzYwMyB3aXJlbGVzcyBkcml2ZXIgdG8gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemUgZGV2aWNlcyB3aXRoIHRoaXMgRUVQUk9NIHNpZ25hdHVyZSBpbnN0ZWFkIG9mIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGM5ZjQ2ZjJkYmI1MWExZmQyNWU2NWYxNjkxZTU5NzUxMDYxZDk2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDE5IDA4OjM4OjEwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1xuaW5kZXggYjg5ZGIyZGI2NTczN2UuLjA1ZjdhYWVmYWY4OWI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jXG5AQCAtMTQyLDYgKzE0Miw3IEBAIHN0YXRpYyBpbnQgbXQ3NjAzX2NoZWNrX2VlcHJvbShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbiBcdGNhc2UgMHg3NjI4OlxuIFx0Y2FzZSAweDc2MDM6XG4gXHRjYXNlIDB4NzYwMDpcbitcdGNhc2UgMHg3NTkyOlxuIFx0XHRyZXR1cm4gMDtcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzg6MTEuODI5OTMwODE3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE1NDA1NjE1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzYwMyBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNhc2UsIGAweDc1OTJgLCBpbnRvIHRoZSBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAgZnVuY3Rpb24gd2l0aGluIHRoZSBgbXQ3NjAzYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgZWVwcm9tLmNgLiBUaGlzIGlzIGZvciB0aGUgTWVkaWFUZWsgTVQ3NjAzIHdpcmVsZXNzIGNoaXBzZXQsIHdoaWNoIGlzIGEgZmFpcmx5IGNvbW1vbiBwaWVjZSBvZiBoYXJkd2FyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGJlIGZ1enplZD8gV2lyZWxlc3MgZHJpdmVycyBhcmUgdXN1YWxseSBwcmltZSB0YXJnZXRzLiBJIHR5cGljYWxseSBzdGFydCBieSBleHBsb3JpbmcgbWV0aG9kcyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGlzIGlzIGEgKnNwZWNpZmljKiBoYXJkd2FyZSBkcml2ZXIsIHRoZSBNVDc2MDMuIFRoYXQgY2hhbmdlcyB0aGluZ3MuIEl0J3MgYSBQQ0llL1VTQi9TRElPIGRyaXZlciwgd2hpY2ggbWVhbnMgdGhlcmUgbWlnaHQgYmUgZGlmZmVyZW50IGF0dGFjayBzdXJmYWNlcyBjb21wYXJlZCB0byB0aGUgbW9yZSBnZW5lcmljIG1hYzgwMjExIGludGVyZmFjZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBkcml2ZXIgaXMgZnV6emVhYmxlLCBzbyBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9gIGRpcmVjdG9yeSB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBwb3RlbnRpYWwuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODoxNS45ODM5ODg2NzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImJlYWNvbi5jXCIsXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImRlYnVnZnMuY1wiLFxuICAgIFwiZG1hLmNcIixcbiAgICBcImVlcHJvbS5jXCIsXG4gICAgXCJlZXByb20uaFwiLFxuICAgIFwiaW5pdC5jXCIsXG4gICAgXCJtYWMuY1wiLFxuICAgIFwibWFjLmhcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibWN1LmNcIixcbiAgICBcIm1jdS5oXCIsXG4gICAgXCJtdDc2MDMuaFwiLFxuICAgIFwicGNpLmNcIixcbiAgICBcInJlZ3MuaFwiLFxuICAgIFwic29jLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzg6MTUuOTg0MDUyNTkyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3OTE5OTYwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZWJhc2UgYW5kIEkgc2VlIGBwY2kuY2AgYW5kIGBzb2MuY2Ag4oCTIGludGVyZXN0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBQQ0llIGRyaXZlcnMgY291bGQgYmUgcG90ZW50aWFsbHkgZnV6emVkIHdpdGggc3l6a2FsbGVyJ3MgcHNldWRvLVBDSSBkZXZpY2UsIGFzc3VtaW5nIGl0J3Mgc3VwcG9ydGVkLiBCdXQsIGFzIHdlIGFsbCBrbm93LCBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIG9mdGVuIHByZXNlbnQgY2hhbGxlbmdlcyBmb3IgZnV6emluZywgdW5sZXNzIHRoZXkgbGV2ZXJhZ2UgYSBtb3JlIGNvbW1vbiBpbnRlcmZhY2UsIGxpa2UgVVNCLiBMdWNraWx5LCBzeXprYWxsZXIgaGFzIGEgZ29vZCBkdW1teSBVU0Igc2V0dXAuIFdhaXQgYSBtaW51dGUsIGRpZG7igJl0IHN5emthbGxlciBpbnRyb2R1Y2Ugc3VwcG9ydCBmb3IgZnV6emluZyBQQ0kgZGV2aWNlcyB0aHJvdWdoIHZQQ0kgcmVjZW50bHk/IFRoYXQgY291bGQgYmUgYSBnYW1lLWNoYW5nZXIgZm9yIHRoaXMgYW5hbHlzaXMuIE5vdywgSSBzaG91bGQgc2hpZnQgbXkgYXR0ZW50aW9uIHRvIGNoZWNraW5nIGlmIGEgZnVuY3Rpb24gbGlrZSBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLiBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaWYgdGhpcyBwYXRoIGlzIGFjY2Vzc2libGUgZm9yIGV4cGxvaXRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0OSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODoxOS41NjMyNTM3N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODcwNzY2MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NjAzX2NoZWNrX2VlcHJvbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTI2PW10NzYwM19lZXByb21fbG9hZChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jOjEzNzpzdGF0aWMgaW50IG10NzYwM19jaGVja19lZXByb20oc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jPTE1Nz1pbnQgbXQ3NjAzX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xNjYtXFx0aWYgKGRldi1cXHUwMDNlbXQ3Ni5vdHAuZGF0YSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jOjE2NzpcXHRcXHRpZiAobXQ3NjAzX2NoZWNrX2VlcHJvbShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSA9PSAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jLTE2OC1cXHRcXHRcXHRtdDc2MDNfYXBwbHlfY2FsX2ZyZWVfZGF0YShkZXYsIGRldi1cXHUwMDNlbXQ3Ni5vdHAuZGF0YSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjE5Ljc1MDMzNTYzNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzM1NTQ5NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKlRyYWNpbmcgdGhlIEVFUFJPTSBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbXQ3NjAzX2VlcHJvbV9pbml0YCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgd2FudCB0byB1bmRlcnN0YW5kIGlzIGl0cyBjYWxsIHN0YWNrLiBXaGVyZSBpcyB0aGlzIHRoaW5nIGdldHRpbmcgaW52b2tlZCBmcm9tPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnQsIHRoZSBpbW1lZGlhdGUgY2FsbGVyLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgZnVuY3Rpb24gYW5kIHNlZSBob3cgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZsb3dzLiBMZXQncyBzZWUuLi4gSSdsbCBjaGVjayB0aGUgY2FsbCByZWZlcmVuY2VzIGFuZCB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aCB0aGF0IGxlYWRzIHRvIHRoaXMgcG9pbnQuIFRoaXMnbGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIEVFUFJPTSBpbnRlcmFjdGlvbnMgd2l0aGluIHRoaXMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTYzLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzg6MjIuOTIzODkyMDYzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NjczMjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzYwM19lZXByb21faW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTUyPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2ODgoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jLTE1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxNTc6aW50IG10NzYwM19lZXByb21faW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jLTE1OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9Mjc4PW10NzYwM19pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtMjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzoyODQ6XFx0cmV0ID0gbXQ3NjAzX2VlcHJvbV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTI4NS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oPTE4Mz12b2lkIG10NzYwM191bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaDoxODQ6aW50IG10NzYwM19lZXByb21faW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaC0xODUtaW50IG10NzYwM19kbWFfaW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzg6MjIuOTc4NTcwODcyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1ODEwOTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEhhcmR3YXJlIFNldHVwOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIGBtdDc2MDNfaW5pdF9oYXJkd2FyZWAgaXMgZmlyaW5nIHVwIGR1cmluZyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uIHBoYXNlLiBNYWtlcyBzZW5zZS4gQnV0IG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogYW0gSSBkZWFsaW5nIHdpdGggYSBQQ0kgZGV2aWNlIG9yIGEgVVNCIGltcGxlbWVudGF0aW9uIGhlcmU/IFRpbWUgdG8gZGlnIGluIGFuZCBjbGFyaWZ5IHRoZSBhcmNoaXRlY3R1cmUuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgaXMgUENJIG9yIFVTQiwgdG8ga25vdyB3aGVyZSB0byBmaW5kIHRoZSBhbnN3ZXJzLiBMZXQncyBzdGFydCBieSBjaGVja2luZyB0aGUgZHJpdmVyIGZpbGVzOiBzcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL3BjaS5jYCBhbmQgYWxzbyBgc29jLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCdzIGdvaW5nIG9uIHdpdGggdGhpcyBoYXJkd2FyZSBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg5NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjI2LjAzNjY4Mjc2MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczNzA3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYz03NDY9c3RhdGljIHZvaWQgX19leGl0IG10NzYwM19leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzo3NTQ6bW9kdWxlX2luaXQobXQ3NjAzX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy03NTUtbW9kdWxlX2V4aXQobXQ3NjAzX2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODoyNi4wOTQwNjAzNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4NzYxNTE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbXQ3NjAzX2luaXRgKipcblxuQWxyaWdodCwgbGV0J3MgZGlzc2VjdCB0aGUgYG10NzYwM19pbml0YCBmdW5jdGlvbi4gSSdtIGtlZW4gdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIHRoaXMgcGFydGljdWxhciBNVDc2MDMgY2hpcHNldCBkcml2ZXIuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBzb21lIHN0YW5kYXJkIHN0dWZmIOKAkyByZWdpc3RlciBjb25maWd1cmF0aW9uLCBETUEgc2V0dXAsIGludGVycnVwdCBlbmFibGluZy4gQnV0IEknbSBhbHNvIGxvb2tpbmcgZm9yIGFueXRoaW5nIHNwZWNpZmljIHRvIHRoaXMgbW9kZWwsIGFueSBxdWlya3Mgb3Igb3B0aW1pemF0aW9ucyB0aGV5J3ZlIGltcGxlbWVudGVkLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gdGhlIHJlZ2lzdGVyIHNldHVwLCBvZiBjb3Vyc2UgLSB1bmRlcnN0YW5kaW5nIHRoZWlyIGluaXRpYWwgcmVnaXN0ZXIgdmFsdWVzIGFuZCBhbnkgY29uZmlndXJhdGlvbiBzZXF1ZW5jZXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgcGVyZm9ybWFuY2UgZW52ZWxvcGUuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIHRoZXkncmUgdXNpbmcgYSBwcm9wZXIgY2FsaWJyYXRpb24gcm91dGluZSBhcyB3ZWxsIGFzIGNoZWNraW5nIHRoZSBETUEgc2V0dXAgZm9yIG9wdGltYWwgZGVzY3JpcHRvciB1c2FnZS4gSSdsbCBuZWVkIHRvIGFsc28gY2hlY2sgaWYgdGhleSBhcmUgdXNpbmcgYW55IHZlbmRvci1zcGVjaWZpYyBleHRlbnNpb25zLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHBvd2VyIG1hbmFnZW1lbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbnkgY2xvY2sgc2V0dGluZ3MsIGFuZCB3aGF0IGtpbmQgb2YgZXJyb3IgaGFuZGxpbmcgdGhleSd2ZSBpbmNsdWRlZC4gQXJlIHRoZXkgdXNpbmcgdGhlIHN0YW5kYXJkIGludGVycnVwdCBoYW5kbGVycywgb3IgaGF2ZSB0aGV5IGJ1aWx0IHNvbWUgY3VzdG9tIG9uZXM/IEkgbmVlZCBhIGNvbXBsZXRlIG1lbnRhbCBtYXAgb2YgdGhpcyBmdW5jdGlvbidzIHB1cnBvc2UgdG8gc3RhcnQgYXNzZXNzaW5nIHRoZSBkcml2ZXIncyBvdmVyYWxsIGRlc2lnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMxNywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjI5LjU4MTY3ODU4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzMzYyMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NjAzX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RlYnVnZnMuYz00ND1tdDc2MDNfZWRjY2Ffc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtNTItXFx0XFx0XFx0ICBkZXYtXFx1MDAzZW10NzYucmVnaW9uID09IE5MODAyMTFfREZTX0VUU0k7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jOjUzOlxcdG10NzYwM19pbml0X2VkY2NhKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jLTU0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jPTk0PURFRklORV9TSE9XX0FUVFJJQlVURShtdDc2MDNfYW1wZHVfc3RhdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZGVidWdmcy5jLTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RlYnVnZnMuYzo5Njp2b2lkIG10NzYwM19pbml0X2RlYnVnZnMoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kZWJ1Z2ZzLmMtOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZG1hLmM9MTM0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYzoxMzU6bXQ3NjAzX2luaXRfcnhfcXVldWUoc3RydWN0IG10NzYwM19kZXYgKmRldiwgc3RydWN0IG10NzZfcXVldWUgKnEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZG1hLmMtMTM2LVxcdFxcdCAgICAgaW50IGlkeCwgaW50IG5fZGVzYywgaW50IGJ1ZnNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYz0xNzY9aW50IG10NzYwM19kbWFfaW5pdChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZG1hLmMtMjI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jOjIzMDpcXHRyZXQgPSBtdDc2MDNfaW5pdF9yeF9xdWV1ZShkZXYsIFxcdTAwMjZkZXYtXFx1MDAzZW10NzYucV9yeFtNVF9SWFFfTUNVXSwgMSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYy0yMzEtXFx0XFx0XFx0XFx0ICAgTVQ3NjAzX01DVV9SWF9SSU5HX1NJWkUsIE1UX1JYX0JVRl9TSVpFKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jLTIzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9kbWEuYzoyMzU6XFx0cmV0ID0gbXQ3NjAzX2luaXRfcnhfcXVldWUoZGV2LCBcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LnFfcnhbTVRfUlhRX01BSU5dLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2RtYS5jLTIzNi1cXHRcXHRcXHRcXHQgICBNVDc2MDNfUlhfUklOR19TSVpFLCBNVF9SWF9CVUZfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9Mjc3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6Mjc4Om10NzYwM19pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTI3OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9NDUxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jOjQ1MjptdDc2MDNfaW5pdF90eHBvd2VyKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTQ1My1cXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM9NDk1PWludCBtdDc2MDNfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtNTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzo1MjI6XFx0cmV0ID0gbXQ3NjAzX2luaXRfaGFyZHdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtNTIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtNTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzo1NTg6XFx0bXQ3NjAzX2luaXRfZGVidWdmcyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYzo1NTk6XFx0bXQ3NjAzX2luaXRfdHhwb3dlcihkZXYsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc2JhbmRfMmcuc2JhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy01NjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM9ODc9bXQ3NjAzX3JlbW92ZV9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzoxMTQ6dm9pZCBtdDc2MDNfaW5pdF9lZGNjYShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy0xMTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jPTEzND1pbnQgbXQ3NjAzX3NldF9jaGFubmVsKHN0cnVjdCBtdDc2X3BoeSAqbXBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jOjE4NzpcXHRtdDc2MDNfaW5pdF9lZGNjYShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy0xODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM9NzI4PU1PRFVMRV9MSUNFTlNFKFxcXCJEdWFsIEJTRC9HUExcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzo3MzA6c3RhdGljIGludCBfX2luaXQgbXQ3NjAzX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYz03NDY9c3RhdGljIHZvaWQgX19leGl0IG10NzYwM19leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzo3NTQ6bW9kdWxlX2luaXQobXQ3NjAzX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy03NTUtbW9kdWxlX2V4aXQobXQ3NjAzX2V4aXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmg9MTg3PWludCBtdDc2MDNfbWN1X2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmg6MTg4OnZvaWQgbXQ3NjAzX2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaC0xODktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaD0yNTk9dm9pZCBtdDc2MDNfY2NhX3N0YXRzX3Jlc2V0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oLTI2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaDoyNjE6dm9pZCBtdDc2MDNfaW5pdF9lZGNjYShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaC0yNjItI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjI5LjYzODAxOTYyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTY0MTYwMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBJbml0aWFsaXphdGlvbiBvZiB0aGUgTVQ3NjAzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRpc3NlY3QgdGhpcyBgbXQ3NjAzX2luaXRgIGZ1bmN0aW9uLiBUaW1lIHRvIGhvcCBvdmVyIHRvIGBtYWluLmNgIGFuZCBzZWUgd2hhdCdzIGhhcHBlbmluZyBhdCB0aGUgZ3JvdW5kIGxldmVsIHdpdGggdGhpcyBNZWRpYXRlayBkcml2ZXIuIEknbSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHRoZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgcG93ZXItdXAgcHJvY2VkdXJlcywgYW5kIGFueSBpbml0aWFsIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25zLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGNsb2NrIGVuYWJsZSBjb21tYW5kcywgUEhZIHJlc2V0IGN5Y2xlcywgYW5kIGFueSBlYXJseSBETUEgc2V0dXAgdGhhdCB0aGV5IG1pZ2h0IHBlcmZvcm0uIEl0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgaXMgc3RydWN0dXJlZCB0byBoYW5kbGUgcG90ZW50aWFsIGhhcmR3YXJlIHZhcmlhdGlvbnMgb3Igc3BlY2lmaWMgcmV2aXNpb24gcXVpcmtzLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZm91bmRhdGlvbmFsIHN0ZXBzIHRoZSBkcml2ZXIgdGFrZXMgdG8gZ2V0IHRoYXQgTVQ3NjAzIHJhZGlvIG9wZXJhdGlvbmFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTUzLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzg6MzIuODk0NDM3NDM2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzI1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzI1OlxcdH07XFxuIDcyNjpcXHRcXG4gNzI3OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiTWVkaWFUZWsgTVQ3NjAzRSBhbmQgTVQ3Nng4IHdpcmVsZXNzIGRyaXZlclxcXCIpO1xcbiA3Mjg6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkR1YWwgQlNEL0dQTFxcXCIpO1xcbiA3Mjk6XFx0XFxuIDczMDpcXHRzdGF0aWMgaW50IF9faW5pdCBtdDc2MDNfaW5pdCh2b2lkKVxcbiA3MzE6XFx0e1xcbiA3MzI6XFx0XFx0aW50IHJldDtcXG4gNzMzOlxcdFxcbiA3MzQ6XFx0XFx0cmV0ID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZtdDc2X3dtYWNfZHJpdmVyKTtcXG4gNzM1OlxcdFxcdGlmIChyZXQpXFxuIDczNjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA3Mzc6XFx0XFxuIDczODpcXHQjaWZkZWYgQ09ORklHX1BDSVxcbiA3Mzk6XFx0XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bXQ3NjAzX3BjaV9kcml2ZXIpO1xcbiA3NDA6XFx0XFx0aWYgKHJldClcXG4gNzQxOlxcdFxcdFxcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZtdDc2X3dtYWNfZHJpdmVyKTtcXG4gNzQyOlxcdCNlbmRpZlxcbiA3NDM6XFx0XFx0cmV0dXJuIHJldDtcXG4gNzQ0OlxcdH1cXG4gNzQ1OlxcdFxcbiA3NDY6XFx0c3RhdGljIHZvaWQgX19leGl0IG10NzYwM19leGl0KHZvaWQpXFxuIDc0NzpcXHR7XFxuIDc0ODpcXHQjaWZkZWYgQ09ORklHX1BDSVxcbiA3NDk6XFx0XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtdDc2MDNfcGNpX2RyaXZlcik7XFxuIDc1MDpcXHQjZW5kaWZcXG4gNzUxOlxcdFxcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZtdDc2X3dtYWNfZHJpdmVyKTtcXG4gNzUyOlxcdH1cXG4gNzUzOlxcdFxcbiA3NTQ6XFx0bW9kdWxlX2luaXQobXQ3NjAzX2luaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODozMi44OTQ1NjU1ODVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NDE2MzcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIE1UNzYgRHJpdmVycyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgY291cGxlIG9mIGRyaXZlcnMgcmVnaXN0ZXJpbmcgaGVyZTogYG10NzZfd21hY19kcml2ZXJgIGFuZCBgbXQ3NjAzX3BjaV9kcml2ZXJgLiBHaXZlbiB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBzeXprYWxsZXIsIHdoaWNoLCBhcyB3ZSBrbm93LCBjYW4gaGFuZGxlIHZQQ0ksIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBkcmlsbCBpbnRvIHRob3NlIFBDSSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYG10NzYwM19wY2lfZHJpdmVyYC4gTGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgaW4gYHBjaS5jYCBhbmQgc2VlIHdoYXQgb3Bwb3J0dW5pdGllcyBmb3IgZnV6emluZyB3ZSBjYW4gZmluZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBkcml2ZXIuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MTksIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjM2LjE0ODczMTI4MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwODQ5ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NjAzX3BjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYz03MzA9c3RhdGljIGludCBfX2luaXQgbXQ3NjAzX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYy03MzgtI2lmZGVmIENPTkZJR19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM6NzM5OlxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm10NzYwM19wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmMtNzQwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tYWluLmM9NzQ2PXN0YXRpYyB2b2lkIF9fZXhpdCBtdDc2MDNfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTc0OC0jaWZkZWYgQ09ORklHX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21haW4uYzo3NDk6XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtdDc2MDNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWFpbi5jLTc1MC0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oPTE2MT1leHRlcm4gY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3NjAzX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tdDc2MDMuaDoxNjI6ZXh0ZXJuIHN0cnVjdCBwY2lfZHJpdmVyIG10NzYwM19wY2lfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oLTE2My1leHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDc2X3dtYWNfZHJpdmVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmM9NzY9TU9EVUxFX0ZJUk1XQVJFKE1UNzYwM19GSVJNV0FSRV9FMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmMtNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmM6Nzg6c3RydWN0IHBjaV9kcml2ZXIgbXQ3NjAzX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvcGNpLmMtNzktXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODozNi4yMDM4MjE2NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTkyMDIxMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIG10NzYwM19wY2lfZHJpdmVyIERlZmluaXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGBtdDc2MDNfcGNpX2RyaXZlcmAgZGVmaW5pdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCBzcGVjaWZpY2FsbHkgYXJlIHdlIGV4YW1pbmluZyBoZXJlP1wiIEFyZSB3ZSBmb2N1c2luZyBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzLCB0aGUgZnVuY3Rpb24gcG9pbnRlcnMsIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgb3IgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgUENJIGRyaXZlcj8gS25vd2luZyB0aGUgY29udGV4dCBpcyBrZXkgdG8gYSBwcm9kdWN0aXZlIGFuYWx5c2lzLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhpcyBpcyB0aGUgY29yZSBkcml2ZXIgaW1wbGVtZW50YXRpb24gaXRzZWxmIG9yIGEgd3JhcHBlciwgbWF5YmUgaGFuZGxpbmcgYm9hcmQtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIHBvd2VyIG1hbmFnZW1lbnQgYXNwZWN0cyBmb3IgdGhpcyBwYXJ0aWN1bGFyIE1UNzYwMyBjaGlwc2V0LiBGcm9tIHRoZXJlLCBJJ2xsIHByb2JhYmx5IGJlIG1hcHBpbmcgZnVuY3Rpb24gY2FsbHMgdG8gdW5kZXJseWluZyBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIGludGVycnVwdHMuIEknZCBiZSBsb29raW5nIGZvciB0aGUgY3J1Y2lhbCBgcGNpX2RldmljZV9pZGAgdGFibGUgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucyBvciB2YXJpYXRpb25zIHRoaXMgZHJpdmVyIHN1cHBvcnRzLiBJJ2QgZXhwZWN0IHRvIHNlZSB0aGUgc3RhbmRhcmQgYHByb2JlYCBhbmQgYHJlbW92ZWAgZnVuY3Rpb25zLCBvYnZpb3VzbHkuIFRoZSBkZXZpbCwgYXMgYWx3YXlzLCBpcyBpbiB0aGUgZGV0YWlscyDigJMgc28gSeKAmWxsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHJlc291cmNlIGFsbG9jYXRpb24gc3RyYXRlZ2llcywgcGFydGljdWxhcmx5IG1lbW9yeSBtYXBwaW5nIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcuIEFyZSB0aGV5IHVzaW5nIHRoZSBzdGFuZGFyZCBQQ0kgRE1BIEFQSXMgb3IgY3VzdG9tIHNvbHV0aW9ucz8gQW5kIG9mIGNvdXJzZSwgSSdsbCBiZSBrZWVwaW5nIGEga2VlbiBleWUgb3V0IGZvciBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBvciBzeW5jaHJvbml6YXRpb24gaXNzdWVzLCBlc3BlY2lhbGx5IGlmIHRoZSBjb2RlIG1ha2VzIGhlYXZ5IHVzZSBvZiBpbnRlcnJ1cHRzIG9yIHNoYXJlZCBtZW1vcnkuIEZpbmFsbHksIEknbGwgYmUgbG9va2luZyB0byBxdWlja2x5IGFzc2VzcyB0aGUgY29kZSdzIG92ZXJhbGwgcXVhbGl0eSBhbmQgYWRoZXJlbmNlIHRvIGtlcm5lbCBjb2Rpbmcgc3RhbmRhcmRzIHRvIGdldCBhIGZlZWwgZm9yIG1haW50YWluYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUxMywiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjM5Ljc5NTg0NTQyOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3MDpcXHRcXG4gIDcxOlxcdFxcdG10NzYwM191bnJlZ2lzdGVyX2RldmljZShkZXYpO1xcbiAgNzI6XFx0fVxcbiAgNzM6XFx0XFxuICA3NDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbXQ3NnBjaV9kZXZpY2VfdGFibGUpO1xcbiAgNzU6XFx0TU9EVUxFX0ZJUk1XQVJFKE1UNzYwM19GSVJNV0FSRV9FMSk7XFxuICA3NjpcXHRNT0RVTEVfRklSTVdBUkUoTVQ3NjAzX0ZJUk1XQVJFX0UyKTtcXG4gIDc3OlxcdFxcbiAgNzg6XFx0c3RydWN0IHBjaV9kcml2ZXIgbXQ3NjAzX3BjaV9kcml2ZXIgPSB7XFxuICA3OTpcXHRcXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuICA4MDpcXHRcXHQuaWRfdGFibGVcXHQ9IG10NzZwY2lfZGV2aWNlX3RhYmxlLFxcbiAgODE6XFx0XFx0LnByb2JlXFx0XFx0PSBtdDc2cGNpX3Byb2JlLFxcbiAgODI6XFx0XFx0LnJlbW92ZVxcdFxcdD0gbXQ3NnBjaV9yZW1vdmUsXFxuICA4MzpcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODozOS43OTU5MTIxMDhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxNTAxOTM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQQ0kgRGV2aWNlIFByb2JlKipcblxuQWxyaWdodCwgdGhlIHN5c3RlbSdzIGp1c3QgZGlzY292ZXJlZCBhIFBDSSBkZXZpY2Ug4oCTIHNwZWNpZmljYWxseSwgb25lIHVzaW5nIHRoZSBgbXQ3NnBjaWAgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgYG10NzZwY2lfcHJvYmVgIGZ1bmN0aW9uLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgY3JpdGljYWwgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBpbml0aWFsIHNldHVwIGFuZCBjb25maWd1cmF0aW9uIHdoZW4gdGhlIGRyaXZlciByZWNvZ25pemVzICppdHMqIGRldmljZS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBpdCdzIGRvaW5nLCB3aGF0IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGl0J3Mgb3JjaGVzdHJhdGluZywgYW5kIGhvdyBpdCdzIGFzc29jaWF0aW5nIGl0c2VsZiB3aXRoIHRoaXMgbmV3IHBpZWNlIG9mIGhhcmR3YXJlLiBMZXQncyBnZXQgcmlnaHQgaW50byB0aGUgY29kZSBmb3IgYG10NzZwY2lfcHJvYmVgIGFuZCBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTMzLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODo0My4wMTA5MzQxNTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0XFxuICAgMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICAgNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAgNjpcXHRcXG4gICA3OlxcdCNpbmNsdWRlIFxcXCJtdDc2MDMuaFxcXCJcXG4gICA4OlxcdFxcbiAgIDk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzZwY2lfZGV2aWNlX3RhYmxlW10gPSB7XFxuICAxMDpcXHRcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjAzKSB9LFxcbiAgMTE6XFx0XFx0eyB9LFxcbiAgMTI6XFx0fTtcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0c3RhdGljIGludFxcbiAgMTU6XFx0bXQ3NnBjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbiAgMTY6XFx0e1xcbiAgMTc6XFx0XFx0c3RydWN0IG10NzYwM19kZXYgKmRldjtcXG4gIDE4OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcXG4gIDE5OlxcdFxcdGludCByZXQ7XFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG4gIDIyOlxcdFxcdGlmIChyZXQpXFxuICAyMzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRyZXQgPSBwY2ltX2lvbWFwX3JlZ2lvbnMocGRldiwgQklUKDApLCBwY2lfbmFtZShwZGV2KSk7XFxuICAyNjpcXHRcXHRpZiAocmV0KVxcbiAgMjc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuICAzMDpcXHRcXG4gIDMxOlxcdFxcdHJldCA9IGRtYV9zZXRfbWFzayhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcXG4gIDMyOlxcdFxcdGlmIChyZXQpXFxuICAzMzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgMzQ6XFx0XFxuICAzNTpcXHRcXHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBcXHUwMDI2bXQ3NjAzX29wcyxcXG4gIDM2OlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2bXQ3NjAzX2Rydl9vcHMpO1xcbiAgMzc6XFx0XFx0aWYgKCFtZGV2KVxcbiAgMzg6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdGRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3NjAzX2RldiwgbXQ3Nik7XFxuICA0MTpcXHRcXHRtdDc2X21taW9faW5pdChtZGV2LCBwY2ltX2lvbWFwX3RhYmxlKHBkZXYpWzBdKTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0bWRldi1cXHUwMDNlcmV2ID0gKG10NzZfcnIoZGV2LCBNVF9IV19DSElQSUQpIFxcdTAwM2NcXHUwMDNjIDE2KSB8XFxuICA0NDpcXHRcXHRcXHQgICAgKG10NzZfcnIoZGV2LCBNVF9IV19SRVYpIFxcdTAwMjYgMHhmZik7XFxuICA0NTpcXHRcXHRkZXZfaW5mbyhtZGV2LVxcdTAwM2VkZXYsIFxcXCJBU0lDIHJldmlzaW9uOiAlMDR4XFxcXG5cXFwiLCBtZGV2LVxcdTAwM2VyZXYpO1xcbiAgNDY6XFx0XFxuICA0NzpcXHRcXHRtdDc2X3dyKGRldiwgTVRfSU5UX01BU0tfQ1NSLCAwKTtcXG4gIDQ4OlxcdFxcbiAgNDk6XFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShtZGV2LVxcdTAwM2VkZXYsIHBkZXYtXFx1MDAzZWlycSwgbXQ3NjAzX2lycV9oYW5kbGVyLFxcbiAgNTA6XFx0XFx0XFx0XFx0ICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgZGV2KTtcXG4gIDUxOlxcdFxcdGlmIChyZXQpXFxuICA1MjpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiAgNTM6XFx0XFxuICA1NDpcXHRcXHRyZXQgPSBtdDc2MDNfcmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuICA1NTpcXHRcXHRpZiAocmV0KVxcbiAgNTY6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gIDU3OlxcdFxcbiAgNTg6XFx0XFx0cmV0dXJuIDA7XFxuICA1OTpcXHRlcnJvcjpcXG4gIDYwOlxcdFxcdG10NzZfZnJlZV9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuICA2MTpcXHRcXG4gIDYyOlxcdFxcdHJldHVybiByZXQ7XFxuICA2MzpcXHR9XFxuICA2NDpcXHRcXG4gIDY1OlxcdHN0YXRpYyB2b2lkXFxuICA2NjpcXHRtdDc2cGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gIDY3OlxcdHtcXG4gIDY4OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gIDY5OlxcdFxcdHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzYwM19kZXYsIG10NzYpO1xcbiAgNzA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjQzLjAxMTA2NTM4NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDkwNTE3MTAyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFRVBST00gSW5pdGlhbGl6YXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBtdDc2MDNgIGRyaXZlciwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGRldmljZSByZWdpc3RyYXRpb24gZmxvdyBpbiBgbXQ3NjAzX3JlZ2lzdGVyX2RldmljZWAgbGVhZHMgdXMgZG93biBhIHByZXR0eSBzcGVjaWZpYyBwYXRoLiBJdCBjYWxscyBgbXQ3NjAzX2luaXRfaGFyZHdhcmVgLCB3aGljaCBtYWtlcyBzZW5zZSBhcyB0aGUgaW5pdGlhbCBzZXR1cCBmdW5jdGlvbi4gQW5kLCBjcnVjaWFsIHRvIHRoaXMgaW52ZXN0aWdhdGlvbiwgdGhhdCBmdW5jdGlvbiB0aGVuIGNhbGxzIGBtdDc2MDNfZWVwcm9tX2luaXRgLiBUaGUgRUVQUk9NIGlzIGFsd2F5cyBhIGNyaXRpY2FsIHBhcnQgb2YgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24uXG5cbk5vdywgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBhIGNoYW5nZSwgc3BlY2lmaWNhbGx5LCBhZGRpbmcgYDB4NzU5MmAgdG8gdGhlIGZ1bmN0aW9uIGBtdDc2MDNfY2hlY2tfZWVwcm9tYC4gTXkgZmlyc3QgdGhvdWdodCBpczogXCJXaHkgdGhpcyBzcGVjaWZpYyB2YWx1ZT8gV2hlcmUgaXMgdGhpcyBFRVBST00gdmFsdWUgZGVyaXZlZCBmcm9tP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoYXQgY2hlY2sgYW5kIGhvdyB0aGlzIG5ldyB2YWx1ZSBmaXRzIGluLlxuXG5UaGVyZWZvcmUsIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGZ1bmN0aW9uLCBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAsIHRvIGdldCBhIGdyaXAgb24gdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UuIExldCdzIHNlZSBob3cgaXQgdXNlcyBhbmQgaW50ZXJwcmV0cyB0aGUgRUVQUk9NIGRhdGEuIFRoYXQgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGFkZGl0aW9uIG9mIGAweDc1OTJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQwOSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjUzLjkxNjIzODAxNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzcsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMzc6XFx0c3RhdGljIGludCBtdDc2MDNfY2hlY2tfZWVwcm9tKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbiAxMzg6XFx0e1xcbiAxMzk6XFx0XFx0dTE2IHZhbCA9IGdldF91bmFsaWduZWRfbGUxNihkZXYtXFx1MDAzZWVlcHJvbS5kYXRhKTtcXG4gMTQwOlxcdFxcbiAxNDE6XFx0XFx0c3dpdGNoICh2YWwpIHtcXG4gMTQyOlxcdFxcdGNhc2UgMHg3NjI4OlxcbiAxNDM6XFx0XFx0Y2FzZSAweDc2MDM6XFxuIDE0NDpcXHRcXHRjYXNlIDB4NzYwMDpcXG4gMTQ1OlxcdFxcdGNhc2UgMHg3NTkyOlxcbiAxNDY6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDE0NzpcXHRcXHRkZWZhdWx0OlxcbiAxNDg6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDE0OTpcXHRcXHR9XFxuIDE1MDpcXHR9XFxuIDE1MTpcXHRcXG4gMTUyOlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2ODgoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG4gMTUzOlxcdHtcXG4gMTU0OlxcdFxcdHJldHVybiBtdDc2X3JyKGRldiwgTVRfRUZVU0VfQkFTRSArIDB4NjQpIFxcdTAwMjYgQklUKDQpO1xcbiAxNTU6XFx0fVxcbiAxNTY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjUzLjkxNjI5Mzk4NVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzQyMzY3OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgb3duIHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zOlxuXG4qKkRlY29kaW5nIHRoZSBFRVBST00gRGF0YSBGbG93KipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgaXQgYWxsIGlzIHRoYXQgdGhlIGNydWNpYWwgRUVQUk9NIHZhbHVlIEknbSBpbnRlcmVzdGVkIGluIHVsdGltYXRlbHkgcmVzaWRlcyB3aXRoaW4gYGRldi1cdTAwM2VlZXByb20uZGF0YWAuIFRoYXQgbWFrZXMgc2Vuc2UuIFRoaXMgaXMgdGhlIGNvbW1vbiBwYXR0ZXJuLCB3aGVyZSB3ZSBhYnN0cmFjdCBhd2F5IHRoZSByYXcgaGFyZHdhcmUgZGV0YWlscyBhbmQgcHJlc2VudCBhIGNvbnZlbmllbnQgZGF0YSBzdHJ1Y3R1cmUgZm9yIHRoZSBkZXZpY2UncyBjb25maWd1cmF0aW9uIGFuZCBwZXJzaXN0ZW50IHNldHRpbmdzLiBUaGUgbmV4dCBvYnZpb3VzIHN0ZXAgaXMgdG8gdHJhY2UgYmFjayAqaG93KiBgZGV2LVx1MDAzZWVlcHJvbS5kYXRhYCBhY3R1YWxseSBnZXRzIHBvcHVsYXRlZC4gV2hlcmUgZG9lcyB0aGlzIGRhdGEgY29tZSBmcm9tIGluaXRpYWxseT8gSXMgaXQgcmVhZCBkaXJlY3RseSBmcm9tIHRoZSBwaHlzaWNhbCBFRVBST00gY2hpcCBvbiB0aGUgYm9hcmQgZHVyaW5nIGRldmljZSBpbml0aWFsaXphdGlvbj8gT3IgaXMgaXQgcGVyaGFwcyBsb2FkZWQgZnJvbSBhIGZsYXNoIHJlZ2lvbiB0aGF0J3MgYWN0aW5nIGxpa2UgYW4gRUVQUk9NPyBDb3VsZCBpdCBldmVuIGJlIHByZS1wcm9ncmFtbWVkIGFzIGZpcm13YXJlIGRhdGE/IEdvdHRhIGRpZyBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSB0byBmaW5kIHRoZSBhbnN3ZXIuIExldCdzIHNlZSBob3cgdGhleSBoYW5kbGUgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExMjEsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM4OjU5LjY1ODY2NDQ2NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzNjMzNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NjAzX2VlcHJvbV9sb2FkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYz0xMjU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jOjEyNjptdDc2MDNfZWVwcm9tX2xvYWQoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTU3PWludCBtdDc2MDNfZWVwcm9tX2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxNjI6XFx0cmV0ID0gbXQ3NjAzX2VlcHJvbV9sb2FkKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTYzLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozODo1OS43MTUwMzM5NzNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3ODIwMzMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG10NzYwM19lZXByb21fbG9hZGAgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgbG9hZGluZyBvZiBFRVBST00gZGF0YSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNVDc2MDMgY2hpcHNldC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uIGZsb3cuIEknbGwgYmUgbG9va2luZyBmb3Iga2V5IGFyZWFzLiBGaXJzdGx5LCB0aGUgaW5pdGlhbCBzZXR1cDogaG93IGl0IGFjY2Vzc2VzIHRoZSBFRVBST00gaXRzZWxmLCBsaWtlbHkgdGhyb3VnaCBzb21lIHNvcnQgb2YgSTJDIG9yIFNQSSBpbnRlcmZhY2UsIGdpdmVuIHRoYXQncyBjb21tb24gZm9yIHRoZXNlIHNvcnRzIG9mIGNvbmZpZ3VyYXRpb25zLlxuXG5OZXh0LCBJJ2xsIGJlIGZvY3VzZWQgb24gaG93IGl0IHZlcmlmaWVzIHRoZSBkYXRhJ3MgaW50ZWdyaXR5LiBEb2VzIGl0IHVzZSBjaGVja3N1bXMsIENSQywgb3Igc29tZSBvdGhlciBtZXRob2QgdG8gZW5zdXJlIHRoZSBFRVBST00gZGF0YSBoYXNuJ3QgYmVlbiBjb3JydXB0ZWQ/IFRoaXMgaXMgY3JpdGljYWwsIG9idmlvdXNseSwgYmVjYXVzZSBhIGJhZCBFRVBST00gcmVhZCBjYW4gYnJpY2sgdGhlIGRldmljZS4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0J3MgYXNzdW1lZCB0byBiZSBwcmVzZW50IGluIHRoZSBFRVBST00uIERvZXMgdGhlIGZ1bmN0aW9uIGhhdmUgYW55IGtub3dsZWRnZSBvZiB0aGUgbGF5b3V0LCBpbmNsdWRpbmcgb2Zmc2V0cyBhbmQgc2l6ZXMgb2YgdGhlIGRpZmZlcmVudCBwYXJhbWV0ZXJzIHN0b3JlZCB3aXRoaW4/IElzIHRoZXJlIGVycm9yIGhhbmRsaW5nPyBIb3cgZG9lcyBpdCByZXNwb25kIGlmIGl0IGRldGVjdHMgYW4gaW52YWxpZCBFRVBST00/IERvZXMgaXQgYXR0ZW1wdCB0byBsb2FkIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uP1xuXG5VbHRpbWF0ZWx5LCBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIHRyYW5zZm9ybXMgdGhlIGRhdGEgZnJvbSB0aGUgRUVQUk9NIGludG8gc29tZXRoaW5nIHVzYWJsZSBieSB0aGUgTVQ3NjAzIGRyaXZlciBvciBmaXJtd2FyZS4gRG9lcyBpdCBjb3B5IHZhbHVlcyB0byBzcGVjaWZpYyBtZW1vcnkgbG9jYXRpb25zLCBvciBhcmUgdGhlcmUgY2FsY3VsYXRpb25zIG9yIGRhdGEgY29udmVyc2lvbnMgaW52b2x2ZWQ/IEkgYWxzbyB3YW50IHRvIGNoZWNrIGZvciBhbnkgdmVuZG9yLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb3Igd29ya2Fyb3VuZHMuIEFueSB1bnVzdWFsIGNvZGUgd291bGQgYmUgaW50ZXJlc3RpbmcgdG8gbGVhcm4gbW9yZSBhYm91dC4gVGhpcyBkZWVwZXIgdW5kZXJzdGFuZGluZyB3aWxsIHByb3ZpZGUgbW9yZSBpbnNpZ2h0cyB3aGVuIGNvbXBhcmluZyB0aGlzIGNvZGUgYWdhaW5zdCBvdGhlciBjb2RlIGV4YW1wbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTcwMCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM5OjAzLjM5MzIzOTg5OVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjUsXG4gIFwiTGluZUNvdW50XCI6IDEyXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMjU6XFx0c3RhdGljIGludFxcbiAxMjY6XFx0bXQ3NjAzX2VlcHJvbV9sb2FkKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuIDEyNzpcXHR7XFxuIDEyODpcXHRcXHRpbnQgcmV0O1xcbiAxMjk6XFx0XFxuIDEzMDpcXHRcXHRyZXQgPSBtdDc2X2VlcHJvbV9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1UNzYwM19FRVBST01fU0laRSk7XFxuIDEzMTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMTMyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDEzMzpcXHRcXG4gMTM0OlxcdFxcdHJldHVybiBtdDc2MDNfZWZ1c2VfaW5pdChkZXYpO1xcbiAxMzU6XFx0fVxcbiAxMzY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM5OjAzLjM5MzMwMzEzOVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjA1OTY4ODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG10NzZfZWVwcm9tX2luaXRgIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBgbXQ3Nl9lZXByb21faW5pdGAgZnVuY3Rpb24gaXMgYSBwcmV0dHkgZ2VuZXJpYyBwaWVjZSBvZiB0aGUgbXQ3NiBkcml2ZXIuIFRoZSBjcnV4IG9mIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgdGhhdCBpdCBhZGRzIGEgbmV3IHZhbGlkIEVFUFJPTSBtYWdpYyB2YWx1ZSwgYDB4NzU5MmAuIFByZXZpb3VzbHksIGlmIHRoaXMgbWFnaWMgdmFsdWUgd2FzIGVuY291bnRlcmVkLCB0aGUgaW5pdGlhbGl6YXRpb24gd291bGQgZmFpbCB3aXRoIGAtRUlOVkFMYC4gVGhpcyBpcyBhIGNsZWFyIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5OyB0aGUgZHJpdmVyIHdpbGwgbm93ICpzdWNjZWVkKiB3aGVyZSBpdCBwcmV2aW91c2x5IGZhaWxlZC4gU28sIGltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcsIFwiSXMgdGhpcyBmdXp6YWJsZT9cIlxuXG5UaGUgYW5zd2VyIHNlZW1zIHRvIGJlIHllcyEgVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgdGhlIGRyaXZlciBpcyByZWFjaGVkIHZpYSBQQ0kgcHJvYmluZy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgKmZ1enoqIGl0IGVmZmVjdGl2ZWx5PyBMZXQgbWUgdGhpbmsgaXQgdGhyb3VnaC4gVGhlIGRyaXZlciwgYG10NzYwM2AsIHJlcXVpcmVzIGEgc3BlY2lmaWMgUENJIHZlbmRvci9kZXZpY2UgSUQsIGB7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NRURJQVRFSywgMHg3NjAzKSB9YCwgYW5kIHRoYXQncyB0aGUga2V5LiBOb3csIEkgcmVjYWxsIHRoYXQgc3l6a2FsbGVyJ3MgdlBDSSBjYW4gaW5qZWN0IGFueSBQQ0kgSUQuIEV4Y2VsbGVudCEgU28gdlBDSSBjYW4gcHJvYmUgdGhpcyBkcml2ZXIhXG5cbkxldCdzIHRyYWNlIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gQWZ0ZXIgcHJvYmluZywgYG10NzZwY2lfcHJvYmVgIHJ1bnMuIEl0IG1hcHMgTU1JTywgc2V0cyB1cCBETUEsIGFuZCBpbXBvcnRhbnRseSwgcmVhZHMgYE1UX0hXX0NISVBJRGAgdXNpbmcgYG10NzZfcnJgLCB3aGljaCByZWFkcyBmcm9tIE1NSU8uIFN5emthbGxlciBjYW4gZW11bGF0ZSBNTUlPIHJlYWRzLCBzbyBpdCBjYW4gcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHZhbHVlcyBkdXJpbmcgdGhpcyBzZXR1cC4gVGhhdCdzIGdvb2QsIHNvIGl0IGNhbiBnZXQgcGFzdCB0aGF0IHBvaW50LiBUaGVuIGBtdDc2MDNfcmVnaXN0ZXJfZGV2aWNlYCBnZXRzIGNhbGxlZCwgd2hpY2ggaW4gdHVybiBjYWxscyBgbXQ3NjAzX2luaXRfaGFyZHdhcmVgLCBmaW5hbGx5IGNhbGxpbmcgYG10NzYwM19lZXByb21faW5pdGAuXG5cbkl0IHNlZW1zIHRoYXQgYG10NzYwM19lZXByb21faW5pdGAgZXZlbnR1YWxseSBjYWxscyBgbXQ3NjAzX2VlcHJvbV9sb2FkYCwgd2hpY2ggY2FsbHMgdGhlIGdlbmVyaWMgYG10NzZfZWVwcm9tX2luaXRgLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuIGBtdDc2X2VlcHJvbV9pbml0YCAqbWlnaHQqIGxvYWQgRUVQUk9NIGRhdGEgZnJvbSBmaXJtd2FyZSBvciB0aGUgZGV2aWNlIHRyZWUuIEJ1dCB0aGUga2V5IGhlcmUgaXMsIGlmIHRoYXQgc3VjY2VlZHMsIGl0ICpjaGVja3MqIHRoZSBFRVBST00gbWFnaWMuIEFuZCBub3csIHRoZSBsaWdodGJ1bGIgZ29lcyBvZmYhIElmIHN5emthbGxlciBwcm92aWRlcyB0aGUgbWFnaWMgdmFsdWUgYDB4NzU5MmAsIGl0IHdpbGwgbm93IHBhc3MgdGhlIGNydWNpYWwgYG10NzYwM19jaGVja19lZXByb21gIGNoZWNrLiBCaW5nby5cblxuVGhpcyBpcyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZGlyZWN0bHkgYWZmZWN0cyB0aGUgY29udHJvbCBmbG93IGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIEkgY2FuIHNlZSB0aGUgcG90ZW50aWFsIGZvciBleHBvc2luZyBuZXcgY29kZSBwYXRocywgYW5kIHRoZXJlZm9yZSwgaXQncyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYEtjb25maWdgIGZvciB0aGUgYG10NzYwM2AgZHJpdmVyLCB0byBtYWtlIHN1cmUgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgdG8gZ2V0IHRoaXMgYWxsIHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjcwLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzk6MTEuNTk5Mjc0MDExWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODM3MTI5NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzYwM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWc6Mjpjb25maWcgTVQ3NjAzRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM5OjExLjc4Mjk5MTkxN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc2OTA0Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3NjAzIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBwdWxsIHVwIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZ2AgZmlsZS4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIHN0cnVjdHVyZSBoZXJlLiBXZSdyZSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBNVDc2MDMgV2ktRmkgZHJpdmVyLCBzbyBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBhIHRvcC1sZXZlbCBzeW1ib2wgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIGVudGlyZSBkcml2ZXIsIHRoZW4gYSBjYXNjYWRlIG9mIGRlcGVuZGVudCBvcHRpb25zIHRoYXQgY29udHJvbCB2YXJpb3VzIGZlYXR1cmVzIGFuZCBoYXJkd2FyZSBzZXR0aW5ncy4gSSdsbCBiZSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgZ3JhbnVsYXIgdGhleSd2ZSBnb3R0ZW4gd2l0aCB0aGUgcG93ZXIgbWFuYWdlbWVudCBvcHRpb25zLCBhcyB0aGF0J3MgYWx3YXlzIGEgY3JpdGljYWwgYXJlYS5cblxuSeKAmWxsIGJlIHNjYW5uaW5nIGZvciB0aGUgZGVmYXVsdCBzZXR0aW5ncyBvZiB0aGUgcGFyYW1ldGVyczsgc3BlY2lmaWNhbGx5IGlmIHRoZXkndmUgYWNjb3VudGVkIGZvciB2YXJpb3VzIHBsYXRmb3JtIGxpbWl0YXRpb25zLiBJIHdpbGwgYWxzbyBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgdGhlIGF2YWlsYWJsZSB0ZXN0IG1vZGVzIG9yIGRlYnVnZ2luZyBhaWRzLiBBbnkgdW51c3VhbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgc3Vic3lzdGVtcywgb3IgYW55IGludGVyZXN0aW5nIG5ldyBmZWF0dXJlcyB3b3VsZCBiZSBvZiBub3RlIGFzIHdlbGwuIEknbSBob3BpbmcgdG8gc2VlIHdlbGwtY29tbWVudGVkIGNvZGUsIGFzIGl0IGFsd2F5cyBtYWtlcyBpdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCB0aGUgZGVzaWduIGNob2ljZXMsIGFuZCBhbnRpY2lwYXRlIGhvdyBJJ2xsIGludGVncmF0ZSBpdCBpbnRvIG15IHdpZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmUuIFVsdGltYXRlbHksIEknbSBleHBlY3RpbmcgdG8gZGV0ZXJtaW5lIGlmIGl0IG1lZXRzIG15IHJlcXVpcmVtZW50cywgb3IgcmVxdWlyZXMgdHdlYWtpbmcgYmVmb3JlIGludGVncmF0aW5nIGl0IGludG8gdGhlIHByb2plY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTEyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzk6MTUuOTU5ODk5MjcyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc2MDNFXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NjAzRSAoUENJZSkgYW5kIE1UNzZ4OCBXTEFOIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3NjAzRSBQQ0llIHdpcmVsZXNzIGRldmljZXMgYW5kIHRoZSBXTEFOIGNvcmVcXG4gICA5OlxcdFxcdCAgb24gTVQ3NjI4L01UNzY4OCBTb0MgZGV2aWNlcy4gVGhpcyBmYW1pbHkgc3VwcG9ydHMgSUVFRSA4MDIuMTFuIDJ4MlxcbiAgMTA6XFx0XFx0ICB0byAzMDBNYnBzIFBIWSByYXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM5OjE1Ljk1OTk4NzYzMloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODgyNTg1Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipEaXZpbmcgaW50byB0aGUgTVQ3NjAzRSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbXkgc3RhcnRpbmcgcG9pbnQgaXMgYENPTkZJR19NVDc2MDNFYC4gVGhhdCdzIHRoZSBvYnZpb3VzIGNvbmZpZywgYnV0IEknbSBhbiBleHBlcnQsIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBjb25maWdzIEknbSBtaXNzaW5nLiBUaW1lIHRvIGdsYW5jZSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYC4gQ2FuJ3QgaHVydCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbid0IG92ZXJsb29rZWQgc29tZXRoaW5nIHJlbGV2YW50IHdpdGhpbiB0aGF0IGZhbWlseSBvZiBkcml2ZXJzLiBJIG5lZWQgdG8gYmUgY29tcGxldGUgaW4gbXkgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQwNTQsIk91dHB1dFRva2VucyI6NTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDA4OjM5OjE4Ljg0MjU3NTE4NloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM4MTE4MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXFxcIlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NDU9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0Njpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTQ3LXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMDg6Mzk6MTguOTA2MzkxMDM0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNjg0NTY2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNVDc2MDMgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIE1UNzYwMyBkcml2ZXIuIFRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gcG9pbnQsIGFzIGFsd2F5cywgaXMgdGhlIGBNVDc2MDNFYCBzZXR1cC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIHdoYXQncyBjaGFuZ2VkIGZ1bmN0aW9uYWxseSwgYW5kIHdoYXQgaW1wYWN0IGRvZXMgaXQgaGF2ZT9cblxuSSBzZWUgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIGBtdDc2MDNfY2hlY2tfZWVwcm9tYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBpbml0aWFsaXphdGlvbiBmbG93LCBzbyBJJ2xsIGFsc28gYnJpbmcgYG10NzYwM19lZXByb21faW5pdGAgYW5kIGBtdDc2cGNpX3Byb2JlYCBpbnRvIHRoZSBwaWN0dXJlLiBUaGV5J3JlIGNyaXRpY2FsIHBhcnRzIG9mIHRoZSBkcml2ZXIncyBzZXR1cCBzZXF1ZW5jZS5cblxuU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gZm9jdXMgb246XG5cbiogICBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAgKENvbmZpcm1lZCBhcyBhIHN0YXRpYyBmdW5jdGlvbilcbiogICBgbXQ3NjAzX2VlcHJvbV9pbml0YFxuKiAgIGBtdDc2cGNpX3Byb2JlYFxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIHNtYWxsLCByZWFsbHkganVzdCBhZGRpbmcgYSBuZXcgY2FzZSB0byB0aGUgYHN3aXRjaGAgc3RhdGVtZW50IGluIGBtdDc2MDNfY2hlY2tfZWVwcm9tYDpcblxuYGBgY1xuIFx0Y2FzZSAweDc2Mjg6XG4gXHRjYXNlIDB4NzYwMzpcbiBcdGNhc2UgMHg3NjAwOlxuK1x0Y2FzZSAweDc1OTI6XG4gXHRcdHJldHVybiAwO1xuYGBgXG5cblRoaXMgYWRkaXRpb24gYWxsb3dzIHRoZSBkcml2ZXIgdG8gcmVjb2duaXplIGFuZCBoYW5kbGUgRUVQUk9NIG1hZ2ljIHZhbHVlIGAweDc1OTJgLCB3aGVyZSBwcmV2aW91c2x5IGl0IHdvdWxkIGhhdmUgcmV0dXJuZWQgYW4gZXJyb3IsIGVmZmVjdGl2ZWx5IHByZXZlbnRpbmcgdGhlIGRldmljZSBmcm9tIGluaXRpYWxpemluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlOyBpdCdzIGVuYWJsaW5nIHN1cHBvcnQgZm9yIGEgbmV3IGhhcmR3YXJlIHZhcmlhbnQsIG9yIGl0J3MgZml4aW5nIGFuIGluaXRpYWxpemF0aW9uIHByb2JsZW0uXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgbmV3IEVFUFJPTSB0eXBlIGlzIHRyZWF0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBvdGhlcnM7IGZyb20gdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBwYXRjaCBpcyBqdXN0IGFsbG93aW5nIGl0IHRvIHByb2JlIGNvcnJlY3RseSwgYW5kIGl0IGlzIGhhbmRsZWQgaW4gYSBzaW1pbGFyIHdheSBhcyB0aGUgcmVzdC5cblxuSSBkZWZpbml0ZWx5IHdhbnQgdG8gZG8gc29tZSBmdXp6aW5nIHRvIG1ha2Ugc3VyZSB0aGlzIG5ldyBFRVBST00gdmFsdWUgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gaXNzdWVzIG9yIGNvcm5lciBjYXNlcy4gSXQncyBhIHNpbXBsZSBjaGFuZ2UsIGJ1dCBhbnkgYWx0ZXJhdGlvbiB0byBkZXZpY2UgcHJvYmluZyB3YXJyYW50cyB0aG9yb3VnaCB0ZXN0aW5nLlxuXG5Fc3NlbnRpYWxseSwgdGhlIHJlYXNvbmluZyBib2lscyBkb3duIHRvIHRoaXM6IHRoZSBwYXRjaCBlbmFibGVzIHN1cHBvcnQgZm9yIGRldmljZXMgd2l0aCBhbiBFRVBST00gc2lnbmF0dXJlIG9mIGAweDc1OTJgIGJ5IGFkZGluZyBpdCB0byB0aGUgbGlzdCBvZiByZWNvZ25pemVkIHZhbHVlcyBpbiBgbXQ3NjAzX2NoZWNrX2VlcHJvbWAsIGFsbG93aW5nIHRoZW0gdG8gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemUgd2hlcmUgdGhleSB3b3VsZCBoYXZlIHByZXZpb3VzbHkgZmFpbGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBkZXZpY2UgcHJvYmUvaW5pdGlhbGl6YXRpb24gcGhhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDMxLCJPdXRwdXRUb2tlbnMiOjE0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQwODozOToyNy4wNzQ4NDk1NDdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTI4Mzk3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3NjAzRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzYwM19jaGVja19lZXByb21cIixcbiAgICBcIm10NzYwM19lZXByb21faW5pdFwiLFxuICAgIFwibXQ3NnBjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgRUVQUk9NIG1hZ2ljIHZhbHVlICgweDc1OTIpIHRvIGBtdDc2MDNfY2hlY2tfZWVwcm9tYCwgYWxsb3dpbmcgdGhlIE1UNzYwMyB3aXJlbGVzcyBkcml2ZXIgdG8gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemUgZGV2aWNlcyB3aXRoIHRoaXMgRUVQUk9NIHNpZ25hdHVyZSBpbnN0ZWFkIG9mIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3NjAzRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzYwM19jaGVja19lZXByb21cIixcbiAgICBcIm10NzYwM19lZXByb21faW5pdFwiLFxuICAgIFwibXQ3NnBjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgRUVQUk9NIG1hZ2ljIHZhbHVlICgweDc1OTIpIHRvIGBtdDc2MDNfY2hlY2tfZWVwcm9tYCwgYWxsb3dpbmcgdGhlIE1UNzYwMyB3aXJlbGVzcyBkcml2ZXIgdG8gc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemUgZGV2aWNlcyB3aXRoIHRoaXMgRUVQUk9NIHNpZ25hdHVyZSBpbnN0ZWFkIG9mIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZGV2aWNlIHByb2JlL2luaXRpYWxpemF0aW9uIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowqzmf4[1] Phase: Succeeded StartedAt: 2026-07-19 08:39:38 +0000 UTC FinishedAt: 2026-07-19 08:39:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-19 08:39:38 +0000 UTC FinishedAt: 2026-07-19 08:39:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2] Phase: Succeeded StartedAt: 2026-07-19 08:39:38 +0000 UTC FinishedAt: 2026-07-19 09:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-19 08:39:38 +0000 UTC FinishedAt: 2026-07-19 09:41:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-19 08:39:38 +0000 UTC FinishedAt: 2026-07-19 08:39:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-19 08:39:38 +0000 UTC FinishedAt: 2026-07-19 08:39:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqzmf4/series-workflowqzmf4-convert-artifact-1295008473/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-19 08:39:48 +0000 UTC FinishedAt: 2026-07-19 09:10:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-19 08:39:48 +0000 UTC FinishedAt: 2026-07-19 09:10:35 +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:*02cff9fe-f208-49fa-b8d7-40d182bb22ba,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-workflowqzmf4/series-workflowqzmf4-convert-artifact-1295008473/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": "16e04744-9da8-49b1-85ab-c077f766d710", "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-workflowqzmf4/series-workflowqzmf4-build-action-2292474743/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-19 08:39:48 +0000 UTC FinishedAt: 2026-07-19 09:10:25 +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:*02cff9fe-f208-49fa-b8d7-40d182bb22ba,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-workflowqzmf4/series-workflowqzmf4-convert-artifact-1295008473/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": "16e04744-9da8-49b1-85ab-c077f766d710", "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-workflowqzmf4/series-workflowqzmf4-build-action-2292474743/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-19 09:10:35 +0000 UTC FinishedAt: 2026-07-19 09:10:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-19 09:10:35 +0000 UTC FinishedAt: 2026-07-19 09:10:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-19 09:10:35 +0000 UTC FinishedAt: 2026-07-19 09:10:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-19 09:10:35 +0000 UTC FinishedAt: 2026-07-19 09:10:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqzmf4/series-workflowqzmf4-convert-artifact-1465961388/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-19 09:10:45 +0000 UTC FinishedAt: 2026-07-19 09:13:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-19 09:10:45 +0000 UTC FinishedAt: 2026-07-19 09:13:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16e04744-9da8-49b1-85ab-c077f766d710,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-workflowqzmf4/series-workflowqzmf4-build-action-2292474743/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-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-19 09:13:27 +0000 UTC FinishedAt: 2026-07-19 09:13:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-19 09:13:27 +0000 UTC FinishedAt: 2026-07-19 09:13:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-19 09:13:27 +0000 UTC FinishedAt: 2026-07-19 09:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-19 09:13:27 +0000 UTC FinishedAt: 2026-07-19 09:36:39 +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:*02cff9fe-f208-49fa-b8d7-40d182bb22ba,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-workflowqzmf4/series-workflowqzmf4-convert-artifact-1465961388/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": "c2744bfd-7289-4589-b506-83789358edba", "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-workflowqzmf4/series-workflowqzmf4-build-action-3296875080/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-19 09:13:27 +0000 UTC FinishedAt: 2026-07-19 09:36:29 +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:*02cff9fe-f208-49fa-b8d7-40d182bb22ba,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-workflowqzmf4/series-workflowqzmf4-convert-artifact-1465961388/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": "c2744bfd-7289-4589-b506-83789358edba", "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-workflowqzmf4/series-workflowqzmf4-build-action-3296875080/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-19 09:36:39 +0000 UTC FinishedAt: 2026-07-19 09:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-19 09:36:39 +0000 UTC FinishedAt: 2026-07-19 09:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-19 09:36:39 +0000 UTC FinishedAt: 2026-07-19 09:38:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-19 09:36:39 +0000 UTC FinishedAt: 2026-07-19 09:38:47 +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:*c2744bfd-7289-4589-b506-83789358edba,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-workflowqzmf4/series-workflowqzmf4-build-action-3296875080/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-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-19 09:38:57 +0000 UTC FinishedAt: 2026-07-19 09:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-19 09:38:57 +0000 UTC FinishedAt: 2026-07-19 09:41:51 +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":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"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:*16e04744-9da8-49b1-85ab-c077f766d710,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c2744bfd-7289-4589-b506-83789358edba,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-workflowqzmf4/series-workflowqzmf4-build-action-2292474743/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-workflowqzmf4/series-workflowqzmf4-build-action-3296875080/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-19 09:38:57 +0000 UTC FinishedAt: 2026-07-19 09:39:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-19 09:38:57 +0000 UTC FinishedAt: 2026-07-19 09:39:02 +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":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"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-workflowqzmf4/series-workflowqzmf4-convert-artifact-1816173461/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-19 09:38:57 +0000 UTC FinishedAt: 2026-07-19 09:38:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-19 09:38:57 +0000 UTC FinishedAt: 2026-07-19 09:38:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-19 09:38:57 +0000 UTC FinishedAt: 2026-07-19 09:38:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-19 09:39:07 +0000 UTC FinishedAt: 2026-07-19 09:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqzmf4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7603_check_eeprom","mt7603_eeprom_init","mt76pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50a7f9f9d48eb50c0e95bef53358acb5af5cb3c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7603E"],"series_id":"a87a5507-c5bd-484d-a9b8-afe9e33d3691","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-19 09:39:07 +0000 UTC FinishedAt: 2026-07-19 09:41:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16e04744-9da8-49b1-85ab-c077f766d710,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c2744bfd-7289-4589-b506-83789358edba,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-workflowqzmf4/series-workflowqzmf4-build-action-2292474743/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-workflowqzmf4/series-workflowqzmf4-build-action-3296875080/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-workflowqzmf4/series-workflowqzmf4-convert-artifact-1816173461/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,}