Name: series-workflowt7mfd Phase: Succeeded StartedAt: 2026-08-04 08:47:11 +0000 UTC FinishedAt: 2026-08-04 10:53:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[0] Phase: Succeeded StartedAt: 2026-08-04 08:47:11 +0000 UTC FinishedAt: 2026-08-04 09:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 08:47:11 +0000 UTC FinishedAt: 2026-08-04 09:16:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a33516f9ef59ad11844d4fc152f889449b5daf3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a33516f9ef59ad11844d4fc152f889449b5daf3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "MAC80211", "USB" ], "series_id": "aefc7d42-4b22-4a73-a9cd-c2e81d5e7466" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath9k_wmi_event_tasklet", "ath9k_htc_probe_device" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGg5a193bWlfZXZlbnRfdGFza2xldCYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfcHJvYmVfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXTUkgZXZlbnQgdGFza2xldCBpbiB0aGUgYXRoOWtfaHRjIGRyaXZlciB0byBwcmV2ZW50IGZyZWVpbmcgc2ticyB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZCwgYW5kIGFkZHMgYSBtZW1vcnkgYmFycmllci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIFVTQiB3aXJlbGVzcyBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjA3YmJjN2NjZTRjMzEwNzk3ZWYzMThiNjE4ZmUwMTBlYjRjY2YxOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDk6MTU6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG5pbmRleCAyODRlOGMxM2IwNDMwLi5kZjRhM2E2MjU1MzZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcbkBAIC0xNDYsNiAmIzQzOzE0NiwxNSBAQCB2b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHR1MTYgY21kX2lkO1xuIFxuJiM0MztcdC8qIENoZWNrIGlmIGF0aDlrX2h0Y19wcm9iZV9kZXZpY2UoKSBjb21wbGV0ZWQuICovXG4mIzQzO1x0aWYgKCFkYXRhX3JhY2UocHJpdi1cdTAwM2Vpbml0aWFsaXplZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBNYWtlIHN1cmUgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGluaXRpYWxpemF0aW9uIGlzXG4mIzQzO1x0ICogY29tbWl0dGVkIHRvIG1lbW9yeSBiZWZvcmUgcHJvY2Vzc2luZyBza2IuXG4mIzQzO1x0ICovXG4mIzQzO1x0c21wX3JtYigpO1xuJiM0MztcbiBcdGRvIHtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2d21pLVx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XG4gXHRcdHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2d21pLVx1MDAzZXdtaV9ldmVudF9xdWV1ZSk7XG5AQCAtMTU1LDEyICYjNDM7MTY0LDYgQEAgdm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4gXHRcdH1cbiBcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZ3bWktXHUwMDNld21pX2xvY2ssIGZsYWdzKTtcbiBcbi1cdFx0LyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi9cbi1cdFx0aWYgKCFkYXRhX3JhY2UocHJpdi1cdTAwM2Vpbml0aWFsaXplZCkpIHtcbi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVxuIFx0XHRoZHIgPSAoc3RydWN0IHdtaV9jbWRfaGRyICopIHNrYi1cdTAwM2VkYXRhO1xuIFx0XHRjbWRfaWQgPSBiZTE2X3RvX2NwdShoZHItXHUwMDNlY29tbWFuZF9pZCk7XG4gXHRcdHdtaV9ldmVudCA9IHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hkcikpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX3Byb2JlX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV01JIGV2ZW50IHRhc2tsZXQgaW4gdGhlIGF0aDlrX2h0YyBkcml2ZXIgdG8gcHJldmVudCBmcmVlaW5nIHNrYnMgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQsIGFuZCBhZGRzIGEgbWVtb3J5IGJhcnJpZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBVU0Igd2lyZWxlc3MgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGIwN2JiYzdjY2U0YzMxMDc5N2VmMzE4YjYxOGZlMDEwZWI0Y2NmMTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDA5OjE1OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCmluZGV4IDI4NGU4YzEzYjA0MzAuLmRmNGEzYTYyNTUzNmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMKQEAgLTE0Niw2ICYjNDM7MTQ2LDE1IEBAIHZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTE2IGNtZF9pZDsKIAomIzQzOwkvKiBDaGVjayBpZiBhdGg5a19odGNfcHJvYmVfZGV2aWNlKCkgY29tcGxldGVkLiAqLwomIzQzOwlpZiAoIWRhdGFfcmFjZShwcml2LSZndDtpbml0aWFsaXplZCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CS8qCiYjNDM7CSAqIE1ha2Ugc3VyZSBhdGg5a19odGNfcHJvYmVfZGV2aWNlKCkgaW5pdGlhbGl6YXRpb24gaXMKJiM0MzsJICogY29tbWl0dGVkIHRvIG1lbW9yeSBiZWZvcmUgcHJvY2Vzc2luZyBza2IuCiYjNDM7CSAqLwomIzQzOwlzbXBfcm1iKCk7CiYjNDM7CiAJZG8gewogCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3dtaS0mZ3Q7d21pX2xvY2ssIGZsYWdzKTsKIAkJc2tiID0gX19za2JfZGVxdWV1ZSgmYW1wO3dtaS0mZ3Q7d21pX2V2ZW50X3F1ZXVlKTsKQEAgLTE1NSwxMiAmIzQzOzE2NCw2IEBAIHZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQogCQl9CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDt3bWktJmd0O3dtaV9sb2NrLCBmbGFncyk7CiAKLQkJLyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi8KLQkJaWYgKCFkYXRhX3JhY2UocHJpdi0mZ3Q7aW5pdGlhbGl6ZWQpKSB7Ci0JCQlrZnJlZV9za2Ioc2tiKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KIAkJaGRyID0gKHN0cnVjdCB3bWlfY21kX2hkciAqKSBza2ItJmd0O2RhdGE7CiAJCWNtZF9pZCA9IGJlMTZfdG9fY3B1KGhkci0mZ3Q7Y29tbWFuZF9pZCk7CiAJCXdtaV9ldmVudCA9IHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hkcikpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY2AuIEl0JiMzOTtzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIGNoZWNrLCBgaWYgKCFkYXRhX3JhY2UocHJpdi0mZ3Q7aW5pdGlhbGl6ZWQpKWAsIHRvIHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgdGFza2xldC4gVGhleSYjMzk7dmUgYWxzbyBhZGRlZCBhbiBgc21wX3JtYigpYCB0aGVyZS4gVGhlIGlkZWEgaXMsIGlmIHRoZSBkcml2ZXIgaXNuJiMzOTt0IGluaXRpYWxpemVkLCB3ZSBiYWlsIG91dCBlYXJseS4gSW5zdGVhZCBvZiBmcmVlaW5nIHRoZSBgc2tiYCBhbmQgY2Fycnlpbmcgb24sIHdlJiMzOTtyZSByZXR1cm5pbmcuCgpIb2xkIG9uIGEgc2Vjb25kLi4uIGlmIHdlIHJldHVybiAqYmVmb3JlKiBwcm9jZXNzaW5nIHRoZSBgc2tiYCwgZG9lc24mIzM5O3QgdGhhdCBtZWFuIHRoZSBgc2tiYCBpcyBsZWZ0IGluIHRoZSBxdWV1ZT8gWWVzLCB0aGF0JiMzOTtzIHdoYXQgc2VlbXMgdG8gYmUgaGFwcGVuaW5nIGhlcmUuIFNvIHRoZSB0YXNrbGV0ICp3b24mIzM5O3QqIHByb2Nlc3MgdGhhdCBwYXJ0aWN1bGFyIGBza2JgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBJIHNob3VsZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoaW4gdGhhdCB0YXNrbGV0LiBMZXQmIzM5O3MgZGlnIGludG8gYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YCBpbiBtb3JlIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg5a193bWlfZXZlbnRfdGFza2xldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9OTE9c3RydWN0IHdtaSAqYXRoOWtfaW5pdF93bWkoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMDgtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3bWktXHUwMDNlcGVuZGluZ190eF9ldmVudHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjEwOTpcdHRhc2tsZXRfc2V0dXAoXHUwMDI2d21pLVx1MDAzZXdtaV9ldmVudF90YXNrbGV0LCBhdGg5a193bWlfZXZlbnRfdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTEwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0xMjg9dm9pZCBhdGg5a193bWlfZXZlbnRfZHJhaW4oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTM4OnZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTEzOS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExMAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgYXRoOWsgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgaXMgdG8gZmlndXJlIG91dCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGZvciBhdGg5ay4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdGhpczogZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIGFyZWFzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlc2UgY29uZmlndXJhdGlvbnMuIFRoaXMgaW52b2x2ZXMgYSBxdWljayBtZW50YWwgY2hlY2sgb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBwb3dlciBtYW5hZ2VtZW50LCByZWd1bGF0b3J5IGRvbWFpbnMsIGFuZCBhbnkgc3BlY2lmaWMgZHJpdmVyIHF1aXJrcyBJJiMzOTttIGZhbWlsaWFyIHdpdGggZnJvbSBwcmV2aW91cyBleHBlcmllbmNlcyBkZWFsaW5nIHdpdGggYXRoOWstYmFzZWQgaGFyZHdhcmUuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHR5cGljYWwgY29tbWFuZC1saW5lIHRvb2xzIHRvIHVzZSwgc3VjaCBhcyBgaXdgLCBgaWZjb25maWdgLCBhbmQgcGVyaGFwcyBzb21lIG1vZHVsZSBwYXJhbWV0ZXJzLgoKSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIHRoZSB0YXNrIGRlbWFuZHMgYSBicm9hZCBvdmVydmlldyBvZiBwb3NzaWJsZSBjb25maWd1cmF0aW9ucyBvciBhIHNwZWNpZmljLCB0YXJnZXRlZCBzZXQgb2Ygb3B0aW1pemF0aW9ucy4gSSYjMzk7bGwgdGhpbmsgYWJvdXQgd2hldGhlciB0aGlzIGlzIGZvciBhIGdlbmVyYWwtcHVycG9zZSBidWlsZCwgYSBjdXN0b20gZW1iZWRkZWQgc3lzdGVtLCBvciBkZWJ1Z2dpbmcgYSBzcGVjaWZpYyBpc3N1ZS4gVGhhdCB3aWxsIGluZm9ybSB3aGV0aGVyIEkgbmVlZCB0byBjb25zaWRlciB2YXJpb3VzIGhhcmR3YXJlIG1vZGVscyBhbmQgZHJpdmVyIHZlcnNpb25zLgoKRXNzZW50aWFsbHksIEkmIzM5O20gbWVudGFsbHkgY29uc3RydWN0aW5nIGEgcm9hZG1hcCwgYSBtZW50YWwgY2hlY2tsaXN0IG9mIGtleSBhcmVhcyB0byBpbnZlc3RpZ2F0ZSwgaW5jbHVkaW5nIGFueSBwb3RlbnRpYWwgZ290Y2hhcy4gSSYjMzk7bGwgbmVlZCB0byBmb3JtdWxhdGUgYSBzdHJhdGVneSBvbiBob3cgdG8gYXBwcm9hY2ggdGhpcyB0YXNrIGluIHRoZSBtb3N0IGVmZmljaWVudCBtYW5uZXIsIHdoaWNoIGRlcGVuZHMgb24gdGhlIGNvbnRleHQgYW5kIHRoZSBhaW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDlLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjI6Y29uZmlnIEFUSDlLX0hXXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ6Y29uZmlnIEFUSDlLX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02LVx0c2VsZWN0IEFUSF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc6Y29uZmlnIEFUSDlLX0NPTU1PTl9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOC1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjk6Y29uZmlnIEFUSDlLX0RGU19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMC1cdGRlZl9ib29sIHlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzOmNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQtXHRib29sIFwmIzM0O0F0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIxOmNvbmZpZyBBVEg5S1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIDgwMi4xMW4gd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mzk6Y29uZmlnIEFUSDlLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDAtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgUENJL1BDSWUgYnVzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ4OmNvbmZpZyBBVEg5S19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFIQiBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Njk6Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzAtXHRib29sIFwmIzM0O0RldGFpbGVkIHN0YXRpb24gc3RhdGlzdGljc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NzY6Y29uZmlnIEFUSDlLX1RYOTlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5Njpjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTctXHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTU6Y29uZmlnIEFUSDlLX0RZTkFDS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE2LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFDSyB0aW1lb3V0IGVzdGltYXRpb24gYWxnb3JpdGhtXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTI0OmNvbmZpZyBBVEg5S19XT1dcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyNS1cdGJvb2wgXCYjMzQ7V2FrZSBvbiBXaXJlbGVzcyBMQU4gc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzMjpjb25maWcgQVRIOUtfUkZLSUxMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgcmZraWxsIHN1cHBvcnRcJiMzNDsgaWYgRVhQRVJUXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQyOmNvbmZpZyBBVEg5S19DSEFOTkVMX0NPTlRFWFRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7Q2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTE6Y29uZmlnIEFUSDlLX1BDT0VNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTItXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgc3VwcG9ydCBmb3IgUEMgT0VNIGNhcmRzXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1Njpjb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU3LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTU6Y29uZmlnIEFUSDlLX0hXUk5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTYtXHRib29sIFwmIzM0O1JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDY6Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTYyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBXaXJlbGVzcyBEcml2ZXIqKgoKT2theSwgc28gdGhlIHNwb3RsaWdodCYjMzk7cyBvbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jYC4gTXkgZmlyc3QgbW92ZSBpcyB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgc3BlY2lmaWMgZmlsZSBpcyBpbXBvcnRhbnQuIEl0JiMzOTtzIGEgbG93LWxldmVsLCBzcGVjaWFsaXplZCBhcmVhLCBzbyBJIHN1c3BlY3QgdGhpcyBgd21pLmNgIHByb2JhYmx5IGhhbmRsZXMgdGhlIHdpcmVsZXNzIG1hbmFnZW1lbnQgaW50ZXJmYWNlIChXTUkpIHdpdGhpbiB0aGUgQXRoZXJvcyBhdGg5ayBkcml2ZXIuICBUaGUgV01JIHByb2JhYmx5IGlzIHRoYXQgY3J1Y2lhbCBpbnRlcmZhY2UsIGFuZCB0aGlzIC5jIGZpbGUgcHJvdmlkZXMgdGhlIGZ1bmN0aW9ucy4gTm93IG15IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZy4gSSBuZWVkIHRvIGZpbmQgb3V0IHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiBjb2RlLiBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgS2NvbmZpZyBzeW1ib2xzIG9yIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB3b3VsZCBwdWxsIHRoaXMgZmlsZSBpbnRvIGEga2VybmVsIGJ1aWxkLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiB3aGF0IHRoaXMgY29kZSBkb2VzIGFuZCB3aGVuIGl0cyBpbnZvbHZlZCBpbiB0aGUgZXhlY3V0aW9uIG9mIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgaW5jbHVkZXMgdGVsbCB1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3bWkubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02OS1cdFx0aGlmX3VzYi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NzA6XHRcdHdtaS5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzEtXHRcdGh0Y19kcnZfdHhyeC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYEFUSDlLX0hUQ2AgQ29udGV4dCoqCgpBbHJpZ2h0LCBzbyB0aGUgdG9waWMgYXQgaGFuZCBpcyB0aGUgYEFUSDlLX0hUQ2AgZHJpdmVyLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGlzc2VjdCBpdHMgZGVwZW5kZW5jeSBjaGFpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1vZHVsZSByZWxpZXMgb24gYXQgdGhlIGtlcm5lbCBsZXZlbC4gV2hhdCBvdGhlciBtb2R1bGVzLCBsaWJyYXJpZXMsIG9yIHN5c3RlbSBzZXJ2aWNlcyBkb2VzIGBBVEg5S19IVENgIGRlcGVuZCBvbiBmb3IgaXRzIHByb3BlciBmdW5jdGlvbmluZz8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiBpdHMgaW50ZXJhY3Rpb25zIHRvIHRyb3VibGVzaG9vdCBvciBtb2RpZnkgdGhlIG1vZHVsZSBlZmZlY3RpdmVseS4gQSBjbGVhciBwaWN0dXJlIG9mIGl0cyBkZXBlbmRlbmNpZXMgaXMgYWJzb2x1dGVseSBjcnVjaWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRIOUtfSFRDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTc4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHJlcXVlc3QsIHN1bW1hcml6ZWQgYXMgYSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBBVEg5S19IVEMgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIHRoZSBwcm9tcHQgd2FudHMgbWUgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBBVEg5S19IVENgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXBwcm9hY2ggdGhpcyBzeXN0ZW1hdGljYWxseS4gSSYjMzk7bGwgbmVlZCB0byBkZXRlcm1pbmUgd2hhdCBsaWJyYXJpZXMsIG1vZHVsZXMsIG9yIG90aGVyIGNvbXBvbmVudHMgYEFUSDlLX0hUQ2AgcmVsaWVzIG9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBjb3VsZCBpbnZvbHZlIGxvb2tpbmcgYXQgc291cmNlIGNvZGUsIGJ1aWxkIGZpbGVzIChsaWtlIE1ha2VmaWxlcyBvciBDTWFrZUxpc3RzLnR4dCksIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9yIGV2ZW4gZG9jdW1lbnRhdGlvbi4gSSBleHBlY3QgdG8gc2VlIGtlcm5lbCBtb2R1bGVzLCBoYXJkd2FyZSBhYnN0cmFjdGlvbnMsIGFuZCBwb3RlbnRpYWxseSB1c2VyLXNwYWNlIHV0aWxpdGllcy4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciBib3RoIGNvbXBpbGUtdGltZSBhbmQgcnVudGltZSBkZXBlbmRlbmNpZXMsIG1lYW5pbmcgd2hhdCYjMzk7cyByZXF1aXJlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHdoYXQmIzM5O3MgbG9hZGVkIHdoZW4gdGhlIG1vZHVsZSBpcyBhY3R1YWxseSBpbiB1c2UuIFRoaXMgY291bGQgaW52b2x2ZSBkcml2ZXIgY29kZSwgZmlybXdhcmUgbG9hZGluZywgYW5kIGNvbW11bmljYXRpb24gcHJvdG9jb2xzLiBNeSBleHBlcnRpc2UgaW4gdGhlIGZpZWxkIHdpbGwgYWxsb3cgbWUgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY3J1Y2lhbCBmaWxlcyBhbmQgY29kZSBzZWN0aW9ucyB0byBmb2N1cyBvbiwgYW5kIHRvIGdyYXNwIGFueSBjb21wbGV4aXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzI6XHRjb25maWcgQVRIOUtfSFRDXG4gMTczOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4gMTc0Olx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTUFDODAyMTFcbiAxNzU6XHRcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gMTc2Olx0XHRzZWxlY3QgQVRIOUtfSFdcbiAxNzc6XHRcdHNlbGVjdCBBVEg5S19DT01NT05cbiAxNzg6XHRcdGhlbHBcbiAxNzk6XHRcdCAgU3VwcG9ydCBmb3IgQXRoZXJvcyBIVEMgYmFzZWQgY2FyZHMuXG4gMTgwOlx0XHQgIENoaXBzZXRzIHN1cHBvcnRlZDogQVI5MjcxXG4gMTgxOlx0XG4gMTgyOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxuIDE4MzpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xuIDE4NDpcdFxuIDE4NTpcdFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxuIDE4NjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDg5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGluIGEgVVNCIFdpcmVsZXNzIENvbnRleHQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0NhbiBJIGFjdHVhbGx5IHRyaWdnZXIgdGhpcyB0aGluZz8mIzM0OyBHaXZlbiB0aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgd2lyZWxlc3MgZHJpdmVyLCBhbmQgc3BlY2lmaWNhbGx5IHRoYXQgaXQmIzM5O3MgYSBVU0ItYmFzZWQgb25lLCB0aGUgZGVwZW5kZW5jaWVzIGp1bXAgb3V0OiBgVVNCYCBhbmQgdGhlIGBNQUM4MDIxMWAgc3RhY2suIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyB3b3JrYWJsZS4gVGhlIGZhY3QgaXQmIzM5O3MgVVNCIGlzIGtleTsgc3l6a2FsbGVyJiMzOTtzIFVTQiBlbXVsYXRpb24gY2FwYWJpbGl0aWVzIG1ha2UgdGhpcyBwb3RlbnRpYWxseSB2ZXJ5IGludGVyZXN0aW5nLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRlZmluaXRpdmVseSBhbnN3ZXIgdGhlIHJlYWNoYWJpbGl0eSBxdWVzdGlvbjogSXMgYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YCBhY2Nlc3NpYmxlIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudD8gR2l2ZW4gdGhpcyBpcyBhIHRhc2tsZXQgZm9yIFdNSSAoV2lyZWxlc3MgTWFuYWdlbWVudCBJbnRlcmZhY2UpIGV2ZW50cywgaXQgaW1wbGllcyBzb21lIHVuZGVybHlpbmcgbWVzc2FnZSBwYXNzaW5nIG1lY2hhbmlzbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGlzIGZ1bmN0aW9uLiBXaGVyZSBpcyBgd21pX2V2ZW50X3Rhc2tsZXRgIGFjdHVhbGx5IGJlaW5nIHNjaGVkdWxlZD8gVW5kZXJzdGFuZGluZyB0aGUgdHJpZ2dlcmluZyBwYXRoIGlzIGNyaXRpY2FsIHRvIGNyYWZ0aW5nIGEgcmVsaWFibGUgZXhwbG9pdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d21pX2V2ZW50X3Rhc2tsZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz05MzE9aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtOTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjk2OTpcdC8qIEFsbG93IGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KCkgdG8gb3BlcmF0ZS4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NzAtXHRzbXBfd21iKCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU1MS1cdGh0Y19zdG9wKHByaXYtXHUwMDNlaHRjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1NTI6XHR0YXNrbGV0X2tpbGwoXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNld21pX2V2ZW50X3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU1My1cdHRhc2tsZXRfa2lsbChcdTAwMjZwcml2LVx1MDAzZXR4X2ZhaWxlZF90YXNrbGV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9OTE9c3RydWN0IHdtaSAqYXRoOWtfaW5pdF93bWkoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMDgtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3bWktXHUwMDNlcGVuZGluZ190eF9ldmVudHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjEwOTpcdHRhc2tsZXRfc2V0dXAoXHUwMDI2d21pLVx1MDAzZXdtaV9ldmVudF90YXNrbGV0LCBhdGg5a193bWlfZXZlbnRfdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTEwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0xMjg9dm9pZCBhdGg5a193bWlfZXZlbnRfZHJhaW4oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTMyOlx0dGFza2xldF9raWxsKFx1MDAyNnByaXYtXHUwMDNld21pLVx1MDAzZXdtaV9ldmVudF90YXNrbGV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMzMtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTM4OnZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTEzOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTQwOlx0c3RydWN0IHdtaSAqd21pID0gZnJvbV90YXNrbGV0KHdtaSwgdCwgd21pX2V2ZW50X3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE0MS1cdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IHdtaS1cdTAwM2VkcnZfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MjE4PXN0YXRpYyB2b2lkIGF0aDlrX3dtaV9jdHJsX3J4KHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTIzOS1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZ3bWktXHUwMDNld21pX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoyNDA6XHRcdHRhc2tsZXRfc2NoZWR1bGUoXHUwMDI2d21pLVx1MDAzZXdtaV9ldmVudF90YXNrbGV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yNDEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9MTQ4PXN0cnVjdCB3bWkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC0xNTUtXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHdtaV9ldmVudF9xdWV1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDoxNTY6XHRzdHJ1Y3QgdGFza2xldF9zdHJ1Y3Qgd21pX2V2ZW50X3Rhc2tsZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTU3LVx0dTE2IHR4X3NlcV9pZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9MTg0PWludCBhdGg5a193bWlfY21kKHN0cnVjdCB3bWkgKndtaSwgZW51bSB3bWlfY21kX2lkIGNtZF9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTg3LVx0XHQgIHUzMiB0aW1lb3V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDoxODg6dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTE4OS12b2lkIGF0aDlrX2ZhdGFsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE3MAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIGF0aDlrX3dtaV9jdHJsX3J4IENhbGwgQ2hhaW4qKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgYXRoOWtfd21pX2N0cmxfcnhgIGZ1bmN0aW9uLCBhbmQgSSBzZWUgYSB0YXNrbGV0IGJlaW5nIHNjaGVkdWxlZCB3aXRoaW4gaXQuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBUYXNrbGV0cyBhcmUgdHlwaWNhbGx5IHVzZWQgZm9yIGRlZmVycmVkIHdvcmsgaW4gdGhlIGtlcm5lbCwgb2Z0ZW4gcmVsYXRlZCB0byBpbnRlcnJ1cHQgaGFuZGxpbmcgb3Igc29tZSBmb3JtIG9mIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLiYjMzQ7IE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBwaWN0dXJlLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBrbm93IHdoZXJlIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LiAmIzM0O0xldCYjMzk7cyBiYWNrdHJhY2ssIGFuYWx5emUgd2hlcmUgYGF0aDlrX3dtaV9jdHJsX3J4YCBpcyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aHkgdGhpcyB0YXNrbGV0IGlzIGJlaW5nIHVzZWQgYW5kIHdoYXQgZGF0YSBpdCYjMzk7cyBsaWtlbHkgb3BlcmF0aW5nIG9uIHdpdGhpbiB0aGUgYGF0aDlrYCB3aXJlbGVzcyBkcml2ZXIuJiMzNDsgSSBuZWVkIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLiBJIGtub3cgaXQmIzM5O3MgYSByZWNlaXZlIHBhdGgsIGJ1dCBJIG5lZWQgdG8ga25vdyB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSB0byBhc3Nlc3MgaWYgYW55IG1vZGlmaWNhdGlvbnMgaW4gdGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGFyZSBjYXVzaW5nIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfd21pX2N0cmxfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0yMDg9c3RhdGljIHZvaWQgYXRoOWtfd21pX3JzcF9jYWxsYmFjayhzdHJ1Y3Qgd21pICp3bWksIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoyMTg6c3RhdGljIHZvaWQgYXRoOWtfd21pX2N0cmxfcngodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yMTktXHRcdFx0ICAgICAgZW51bSBodGNfZW5kcG9pbnRfaWQgZXBpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MjY1PWludCBhdGg5a193bWlfY29ubmVjdChzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjLCBzdHJ1Y3Qgd21pICp3bWksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTI3Ni1cdGNvbm5lY3QuZXBfY2FsbGJhY2tzLnR4ID0gYXRoOWtfd21pX2N0cmxfdHg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6Mjc3Olx0Y29ubmVjdC5lcF9jYWxsYmFja3MucnggPSBhdGg5a193bWlfY3RybF9yeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yNzgtXHRjb25uZWN0LnNlcnZpY2VfaWQgPSBXTUlfQ09OVFJPTF9TVkM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MzYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQbGFuIGZvciBXTUlfQ09OVFJPTF9TVkMgQ2FsbGJhY2sqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZW5kcG9pbnQgY2FsbGJhY2sgZm9yIGBXTUlfQ09OVFJPTF9TVkNgLiBUaGlzIGlzIGEgVVNCIGRldmljZSwgc28gaXQmIzM5O3MgcHJpbWUgdGFyZ2V0IGZvciBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enplci4gVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgYSBkYXRhIHJhY2Ugb24gYHByaXYtJmd0O2luaXRpYWxpemVkYCBhbmQgaW5jbHVkZXMgYSBtZW1vcnkgYmFycmllciDigJMgdGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiBpdCYjMzk7cyB0b3VjaGluZyBzb21ldGhpbmcgaW1wb3J0YW50LgoKVGhlIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAgZnVuY3Rpb24gKmlzKiBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciBvciBub3QgaXQmIzM5O3MgYWN0dWFsbHkgd29ydGggdGhlIGVmZm9ydCB0byBmdXp6IGl0LiBZZXMsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciwgc28gaXQgcHJvYmFibHkgaXMuCgpMZXQmIzM5O3Mgc2VlLCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBhYnNvbHV0ZWx5IHJlcXVpcmVkPyBJJiMzOTttIHRoaW5raW5nOiBgQVRIOUtfSFRDYCwgYFVTQmAsIGFuZCBvZiBjb3Vyc2UgYE1BQzgwMjExYC4KClJpZ2h0LCBsZXQmIzM5O3MganVzdCBkb3VibGUgY2hlY2sgYEFUSDlLX0hUQ2AmIzM5O3MgZGVwZW5kZW5jaWVzIGluIHRoZSBLY29uZmlnLCB0byBiZSBjZXJ0YWluIHdlIGhhdmUgZXZlcnl0aGluZy4gKlllcCosIHRoYXQgY29uZmlybXMgaXQ6IGBBVEg5S19IVENgIGRlcGVuZHMgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAsIGFuZCBhbHNvIHNlbGVjdHMgYEFUSDlLX0hXYCBhbmQgYEFUSDlLX0NPTU1PTmAgc28gd2UmIzM5O2xsIG5lZWQgYWxsIHRob3NlIGVuYWJsZWQsIGJ1dCB0aGF0JiMzOTtzIHRha2VuIGNhcmUgb2YgYnkgZW5hYmxpbmcgdGhlIGFib3ZlIGRlcGVuZGVuY2llcy4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUgbW9zdCBwcm9taXNpbmcgZnV6emluZyB0YXJnZXRzPyBEZWZpbml0ZWx5IGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAuIEkgc2hvdWxkIGFsc28gbG9vayBhdCBgYXRoOWtfd21pX2N0cmxfcnhgIGFuZCBgYXRoOWtfaHRjX3Byb2JlX2RldmljZWAuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGVpciB2aXNpYmlsaXR5LiBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGlzIG5vdCBzdGF0aWMsIGdvb2QsIHRoYXQgbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZS4gYGF0aDlrX3dtaV9jdHJsX3J4YCBpcyBzdGF0aWMuIEFscmlnaHQsIHRoYXQmIzM5O3Mgbm90IGFzIGludGVyZXN0aW5nIHRoZW4uIGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYCBpcyBhbHNvIG5vdCBzdGF0aWMuIE9rYXksIGdvb2QuIFRoYXQgbWVhbnMgdGhlc2UgdHdvIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSB3b3J0aCBwdXR0aW5nIGludG8gdGhlIGZ1enppbmcgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg5a19odGNfcHJvYmVfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjMxPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19sZWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTYzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2MzY6aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02MzctXHRcdFx0ICAgdTE2IGRldmlkLCBjaGFyICpwcm9kdWN0LCB1MzIgZHJ2X2luZm8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz04Mjg9c3RhdGljIGludCBhdGg5a19pbml0X2RldmljZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTkzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo5MzE6aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05MzItXHRcdFx0ICAgdTE2IGRldmlkLCBjaGFyICpwcm9kdWN0LCB1MzIgZHJ2X2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYz01Mjg9aW50IGF0aDlrX2h0Y19od19pbml0KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy01MzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzo1MzI6XHRpZiAoYXRoOWtfaHRjX3Byb2JlX2RldmljZSh0YXJnZXQsIGRldiwgZGV2aWQsIHByb2R1Y3QsIGRydl9pbmZvKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy01MzMtXHRcdHByX2VycihcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTQ5Olx0LyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNTAtXHRpZiAoIWRhdGFfcmFjZShwcml2LVx1MDAzZWluaXRpYWxpemVkKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTUyLVx0LypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxNTM6XHQgKiBNYWtlIHN1cmUgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGluaXRpYWxpemF0aW9uIGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTU0LVx0ICogY29tbWl0dGVkIHRvIG1lbW9yeSBiZWZvcmUgcHJvY2Vzc2luZyBza2IuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDM2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBhdGg5a2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhpcyBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIHRvIGJlIHRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb25zLiBUbyB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZ29pbmcgb24sIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlcmUuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhlIGtleSBpcyB0aGUgc3RhdGUgb2YgYHByaXYtJmd0O2luaXRpYWxpemVkYC4gV2hlcmUgZXhhY3RseSBpcyB0aGF0IGZsYWcgZmxpcHBlZD8gTG9va2luZyBhdCB0aGUgY29kZSwgaXQgbG9va3MgbGlrZSBgYXRoOWtfaHRjX3Byb2JlX2RldmljZWAgaXMgdGhlIGxpa2VseSBjdWxwcml0LiBMZXQgbWUgdmVyaWZ5IHRoYXQgYW5kIHNlZSB3aGF0IHRoYXQgdGVsbHMgbWUgYWJvdXQgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdyBhbmQgdGhlIGRlcGVuZGVuY2llcyBsZWFkaW5nIGludG8gYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YC4gRnJvbSB0aGVyZSBJIGNhbiB1bmRlcnN0YW5kIHdoYXQgdGhvc2UgbW9kaWZpY2F0aW9ucyBhY3R1YWxseSBhY2hpZXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcml2LVx1MDAzZWluaXRpYWxpemVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9OTMxPWludCBhdGg5a19odGNfcHJvYmVfZGV2aWNlKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTk3MC1cdHNtcF93bWIoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo5NzE6XHRwcml2LVx1MDAzZWluaXRpYWxpemVkID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTQ5LVx0LyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxNTA6XHRpZiAoIWRhdGFfcmFjZShwcml2LVx1MDAzZWluaXRpYWxpemVkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNTEtXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5OTMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBhdGg5a19odGMgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBpbml0aWFsaXphdGlvbiBmbG93IHdpdGhpbiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBzcGVjaWZpY2FsbHksIGhvdyB0aGUgaGFyZHdhcmUgZ2V0cyBzZXQgdXAuIEl0IHNlZW1zIGxpa2UgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgIGlzIHRoZSBzdGFydGluZyBwb2ludCwgYXMgaXQgc2V0cyB0aGF0IGNydWNpYWwgYHByaXYtJmd0O2luaXRpYWxpemVkYCBmbGFnLiBUaGVuLCBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGFwcGFyZW50bHkgZGVwZW5kcyBvbiB0aGlzIGZsYWcuIFRob3NlIGxvb2sgbGlrZSB0aGUga2V5IHN5bWJvbHMgdG8gdHJhY2suIEkgc3VzcGVjdCB0aGF0IHRoZSBldmVudCB0YXNrbGV0IG1heSBiZSB0aGUgc291cmNlIG9mIG15IHJlY2VudCBwcm9ibGVtLgoKTm93LCBJJiMzOTttIGp1c3QgcXVpY2tseSBjaGVja2luZyBpZiBgYXRoOWtfaHRjX2h3X2luaXRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBObywgaXQgaXNuJiMzOTt0LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQganVzdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBjb3JyZWN0IGluIHRoYXQgYXNzdW1wdGlvbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg5a19odGNfaHdfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0xMjI2PXN0YXRpYyB2b2lkIGF0aDlrX2hpZl91c2JfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgdm9pZCAqY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTEyNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjEyNTY6XHRyZXQgPSBhdGg5a19odGNfaHdfaW5pdChoaWZfZGV2LVx1MDAzZWh0Y19oYW5kbGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTEyNTctXHRcdFx0XHRcdTAwMjZoaWZfZGV2LVx1MDAzZWludGVyZmFjZS1cdTAwM2VkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYz01MjM9dm9pZCBhdGg5a19odGNfaHdfZnJlZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtNTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzo1Mjg6aW50IGF0aDlrX2h0Y19od19pbml0KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jLTUyOS1cdFx0ICAgICAgc3RydWN0IGRldmljZSAqZGV2LCB1MTYgZGV2aWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuaD0yMjQ9dm9pZCBhdGg5a19odGNfaHdfZnJlZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0Lmg6MjI1OmludCBhdGg5a19odGNfaHdfaW5pdChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuaC0yMjYtXHRcdCAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiwgdTE2IGRldmlkLCBjaGFyICpwcm9kdWN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc4MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDgxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbXBpbGF0aW9uIFJlcXVpcmVtZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zOiBgYXRoOWtfaHRjX2h3X2luaXRgLCBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgLCBhbmQgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgLiBUaGV5JiMzOTtyZSBub24tc3RhdGljLCB3aGljaCBtZWFucyB0aGV5JiMzOTtyZSBsaWtlbHkgZW50cnkgcG9pbnRzIG9yIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4KCkkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdG8gY29tcGlsZSB0aGlzIGNvZGUgc3RhdGljYWxseS4gVGhlIGtleSBoZXJlIGlzIHRvIGlkZW50aWZ5IGRlcGVuZGVuY2llcy4gQmFzZWQgb24gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG15IGtub3dsZWRnZSwgSSYjMzk7bSBwcmV0dHkgc3VyZSBgQVRIOUtfSFRDYCBpcyB0aGUgcHJpbWFyeSBjb25maWcgbmVlZGVkLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjay4gT2theSwgeWVzLCBgQVRIOUtfSFRDYCBkb2VzIGluZGVlZCBkZXBlbmQgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAuIFRoZXNlIGFyZSBwcmV0dHkgZnVuZGFtZW50YWwgc3Vic3lzdGVtcywgYnV0IHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBsaXN0IGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzLiBXZWxsLCBgVVNCYCBhbmQgYE1BQzgwMjExYCBhcmUgc3RhbmRhcmQgc28gaXQgcHJvYmFibHkgd29uJiMzOTt0IGh1cnQgdG8gYmUgZXhwbGljaXQuIEl0JiMzOTtzIHNhZmUgdG8gaW5jbHVkZSBgQVRIOUtfSFRDYC4KCkFscmlnaHQsIGxldCYjMzk7cyBpbmNsdWRlIGp1c3QgYEFUSDlLX0hUQ2AuCgoqKlJldmlld2luZyB0aGUgUGF0Y2ggYW5kIEl0cyBJbXBsaWNhdGlvbnMqKgoKTm93LCBJJiMzOTttIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byB0aGUgYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YC4gVGhlIHBhdGNoIGlzIGd1YXJkaW5nIGFnYWluc3QgcHJlbWF0dXJlIGV4ZWN1dGlvbiBiZWZvcmUgdGhlIGRldmljZSBoYXMgZnVsbHkgaW5pdGlhbGl6ZWQsIHNwZWNpZmljYWxseSBjaGVja2luZyBgcHJpdi0mZ3Q7aW5pdGlhbGl6ZWRgLiBCZWZvcmUsIHRoZXJlIHdhcyBhIGRvdWJsZSBjaGVjayB0aGF0IHdhcyByZW1vdmVkLiBOb3cgdGhlIHRhc2tsZXQgd2lsbCBqdXN0IHJldHVybiBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBpbml0aWFsaXplZC4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIElmIHRoZSB0YXNrbGV0IHJldHVybnMsIHdoYXQgd2lsbCBzY2hlZHVsZSBpdCBhZ2Fpbj8gVGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgc2Vjb25kIGNoZWNrIHRoYXQgd291bGQgZnJlZSB0aGUgc2tiIGlmIHRoZSBkcml2ZXIgaGFkIG5vdCBpbml0aWFsaXplZC4gUmVtb3ZpbmcgdGhlIHNlY29uZCBjaGVjayBtZWFucyB0aGUgc2tiIGlzIGxlZnQgaW4gdGhlIHF1ZXVlLiBNeSBjb25jZXJuIGhlcmUgaXMgaWYgdGhlIHRhc2tsZXQgaXNuJiMzOTt0IHNjaGVkdWxlZCB1bnRpbCBgcHJpdi0mZ3Q7aW5pdGlhbGl6ZWRgIGJlY29tZXMgdHJ1ZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSBpbiBgYXRoOWtfaHRjX3Byb2JlX2RldmljZWAgdG8gc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdGFza2xldCBzY2hlZHVsaW5nLiBJcyBpdCBwb3NzaWJsZSBmb3IgdGhlIGRyaXZlciB0byBiZSBpbiBhIGJhZCBzdGF0ZT8gCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rhc2tsZXRfc2NoZWR1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02OTA9dm9pZCBhdGg5a19odGNfdHhlcCh2b2lkICpkcnZfcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAyLVx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2ZhaWxlZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MDM6XHRcdHRhc2tsZXRfc2NoZWR1bGUoXHUwMDI2cHJpdi1cdTAwM2V0eF9mYWlsZWRfdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzA0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTExMzU9dm9pZCBhdGg5a19odGNfcnhlcCh2b2lkICpkcnZfcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTY3Olx0dGFza2xldF9zY2hlZHVsZShcdTAwMjZwcml2LVx1MDAzZXJ4X3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExNjgtXHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYz00ODg9aXJxcmV0dXJuX3QgYXRoX2lzcihpbnQgaXJxLCB2b2lkICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYy01NjYtXHRpZiAoc3RhdHVzIFx1MDAyNiBBVEg5S19JTlRfU1dCQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmM6NTY3Olx0XHR0YXNrbGV0X3NjaGVkdWxlKFx1MDAyNnNjLVx1MDAzZWJjb25fdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTU2OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTU5Ni1cdFx0YXRoOWtfaHdfa2lsbF9pbnRlcnJ1cHRzKGFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmM6NTk3Olx0XHR0YXNrbGV0X3NjaGVkdWxlKFx1MDAyNnNjLVx1MDAzZWludHJfdHEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYy01OTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTIxOD1zdGF0aWMgdm9pZCBhdGg5a193bWlfY3RybF9yeCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yMzktXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2d21pLVx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MjQwOlx0XHR0YXNrbGV0X3NjaGVkdWxlKFx1MDAyNndtaS1cdTAwM2V3bWlfZXZlbnRfdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMjQxLVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzODAwCgkJCQkJCQlvdXRwdXQ6IDEzNgoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGF0aDlrX2h0YyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgYXRoOWtfaHRjYCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGFuZCBzb21ldGhpbmcmIzM5O3MgYnVnZ2luZyBtZS4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCBgYXRoOWtfaHRjX3Byb2JlX2RldmljZWAgd2FzIHJlc3BvbnNpYmxlIGZvciBzY2hlZHVsaW5nIHRoZSB0YXNrbGV0LiBCdXQgd2FpdCBhIHNlY29uZC4uLiBpdCBsb29rcyBsaWtlIGl0ICpkb2VzbiYjMzk7dCogZGlyZWN0bHkgY2FsbCBgdGFza2xldF9zY2hlZHVsZSgpYC4gSW5zdGVhZCwgaXQganVzdCBzZXRzIGBwcml2LSZndDtpbml0aWFsaXplZCA9IHRydWVgIHdpdGggYSBgc21wX3dtYigpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlmIHRoZXJlIGFyZSBhbHJlYWR5IHNrYnMgKHNvY2tldCBidWZmZXIpIGluIHRoZSBxdWV1ZSwgdGhleSYjMzk7cmUgZ29pbmcgdG8gZ2V0IHByb2Nlc3NlZCB3aGVuIHRoZSBuZXh0IFdNSSAoV2lyZWxlc3MgTWFuYWdlbWVudCBJbnRlcmZhY2UpIGV2ZW50IG9jY3Vycy4gVGhhdCBldmVudCBzaG91bGQgYmUgdGhlIHRyaWdnZXIsIGFuZCB3aWxsIGludm9rZSB0aGUgYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YC4KCkJ1dCB0aGVuIGFnYWluLCB0aGVyZSBpcyBhIGNoYW5jZSB0aGF0IEkgYW0gbWlzc2luZyBzb21ldGhpbmcuIE1heWJlIHRoaXMgaXMgYSBidWcsIG1lYW5pbmcgaXQgKmlzbiYjMzk7dCogcHJvY2Vzc2luZyB0aGVtLiBFaXRoZXIgd2F5LCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZyb20gd2hhdCBJIHdhcyBleHBlY3RpbmcgaW4gdGhpcyBzZWN0aW9uIG9mIHRoZSBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZmxvdyBpcyBjb3JyZWN0LgoKSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGNydWNpYWwgc3ltYm9sczogYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YCBhbmQgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJiMzOTttIG9wZXJhdGluZyB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGBBVEg5S19IVENgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAgYXJlIGFsbCBlbmFibGVkLiBKdXN0IHRvIGJlIHN1cmUsIGlzIGBBVEg5S19IVENgIHN1ZmZpY2llbnQsIG9yIGFyZSB0aGVyZSBtb3JlIHRoYXQgSSBuZWVkIHRvIGNoZWNrPyBJdCBsb29rcyBsaWtlIGBBVEg5S19IVENgIHNlbGVjdHMgYEFUSDlLX0hXYCBhbmQgYEFUSDlLX0NPTU1PTmAsIHNvIHRob3NlIGFyZSBjb3ZlcmVkLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYW5hbHlzaXMgbm93LiBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDlrX3dtaV9ldmVudF90YXNrbGV0JiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y19wcm9iZV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdNSSBldmVudCB0YXNrbGV0IGluIHRoZSBhdGg5a19odGMgZHJpdmVyIHRvIHByZXZlbnQgZnJlZWluZyBza2JzIHdoZW4gdGhlIGRldmljZSBpcyBub3QgeWV0IGZ1bGx5IGluaXRpYWxpemVkLCBhbmQgYWRkcyBhIG1lbW9yeSBiYXJyaWVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCIHdpcmVsZXNzIGRyaXZlciB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGg5a193bWlfZXZlbnRfdGFza2xldCYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfcHJvYmVfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXTUkgZXZlbnQgdGFza2xldCBpbiB0aGUgYXRoOWtfaHRjIGRyaXZlciB0byBwcmV2ZW50IGZyZWVpbmcgc2ticyB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZCwgYW5kIGFkZHMgYSBtZW1vcnkgYmFycmllci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIFVTQiB3aXJlbGVzcyBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MTQuMjkzMTAzNDQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA5MDA0NDE3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRcIixcbiAgICBcImF0aDlrX2h0Y19wcm9iZV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV01JIGV2ZW50IHRhc2tsZXQgaW4gdGhlIGF0aDlrX2h0YyBkcml2ZXIgdG8gcHJldmVudCBmcmVlaW5nIHNrYnMgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQsIGFuZCBhZGRzIGEgbWVtb3J5IGJhcnJpZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBVU0Igd2lyZWxlc3MgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MTQuMjkzMTEyMTQ4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjcyMDM3ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMDdiYmM3Y2NlNGMzMTA3OTdlZjMxOGI2MThmZTAxMGViNGNjZjE4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMDk6MTU6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXFxuaW5kZXggMjg0ZThjMTNiMDQzMC4uZGY0YTNhNjI1NTM2ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcXG5AQCAtMTQ2LDYgKzE0NiwxNSBAQCB2b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFx0dTE2IGNtZF9pZDtcXG4gXFxuK1xcdC8qIENoZWNrIGlmIGF0aDlrX2h0Y19wcm9iZV9kZXZpY2UoKSBjb21wbGV0ZWQuICovXFxuK1xcdGlmICghZGF0YV9yYWNlKHByaXYtXFx1MDAzZWluaXRpYWxpemVkKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHQvKlxcbitcXHQgKiBNYWtlIHN1cmUgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGluaXRpYWxpemF0aW9uIGlzXFxuK1xcdCAqIGNvbW1pdHRlZCB0byBtZW1vcnkgYmVmb3JlIHByb2Nlc3Npbmcgc2tiLlxcbitcXHQgKi9cXG4rXFx0c21wX3JtYigpO1xcbitcXG4gXFx0ZG8ge1xcbiBcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2d21pLVxcdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xcbiBcXHRcXHRza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZ3bWktXFx1MDAzZXdtaV9ldmVudF9xdWV1ZSk7XFxuQEAgLTE1NSwxMiArMTY0LDYgQEAgdm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuIFxcdFxcdH1cXG4gXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2d21pLVxcdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xcbiBcXG4tXFx0XFx0LyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi9cXG4tXFx0XFx0aWYgKCFkYXRhX3JhY2UocHJpdi1cXHUwMDNlaW5pdGlhbGl6ZWQpKSB7XFxuLVxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0fVxcbi1cXG4gXFx0XFx0aGRyID0gKHN0cnVjdCB3bWlfY21kX2hkciAqKSBza2ItXFx1MDAzZWRhdGE7XFxuIFxcdFxcdGNtZF9pZCA9IGJlMTZfdG9fY3B1KGhkci1cXHUwMDNlY29tbWFuZF9pZCk7XFxuIFxcdFxcdHdtaV9ldmVudCA9IHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hkcikpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNToxNC43NjEwMjkyMjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MDQzMjUwMTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGg5a193bWlfZXZlbnRfdGFza2xldFwiLFxuICAgIFwiYXRoOWtfaHRjX3Byb2JlX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXTUkgZXZlbnQgdGFza2xldCBpbiB0aGUgYXRoOWtfaHRjIGRyaXZlciB0byBwcmV2ZW50IGZyZWVpbmcgc2ticyB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZCwgYW5kIGFkZHMgYSBtZW1vcnkgYmFycmllci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIFVTQiB3aXJlbGVzcyBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMDdiYmM3Y2NlNGMzMTA3OTdlZjMxOGI2MThmZTAxMGViNGNjZjE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwOToxNToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY1xuaW5kZXggMjg0ZThjMTNiMDQzMC4uZGY0YTNhNjI1NTM2ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG5AQCAtMTQ2LDYgKzE0NiwxNSBAQCB2b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHR1MTYgY21kX2lkO1xuIFxuK1x0LyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi9cbitcdGlmICghZGF0YV9yYWNlKHByaXYtXHUwMDNlaW5pdGlhbGl6ZWQpKVxuK1x0XHRyZXR1cm47XG4rXHQvKlxuK1x0ICogTWFrZSBzdXJlIGF0aDlrX2h0Y19wcm9iZV9kZXZpY2UoKSBpbml0aWFsaXphdGlvbiBpc1xuK1x0ICogY29tbWl0dGVkIHRvIG1lbW9yeSBiZWZvcmUgcHJvY2Vzc2luZyBza2IuXG4rXHQgKi9cbitcdHNtcF9ybWIoKTtcbitcbiBcdGRvIHtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2d21pLVx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XG4gXHRcdHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2d21pLVx1MDAzZXdtaV9ldmVudF9xdWV1ZSk7XG5AQCAtMTU1LDEyICsxNjQsNiBAQCB2b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbiBcdFx0fVxuIFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNndtaS1cdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xuIFxuLVx0XHQvKiBDaGVjayBpZiBhdGg5a19odGNfcHJvYmVfZGV2aWNlKCkgY29tcGxldGVkLiAqL1xuLVx0XHRpZiAoIWRhdGFfcmFjZShwcml2LVx1MDAzZWluaXRpYWxpemVkKSkge1xuLVx0XHRcdGtmcmVlX3NrYihza2IpO1xuLVx0XHRcdGNvbnRpbnVlO1xuLVx0XHR9XG4tXG4gXHRcdGhkciA9IChzdHJ1Y3Qgd21pX2NtZF9oZHIgKikgc2tiLVx1MDAzZWRhdGE7XG4gXHRcdGNtZF9pZCA9IGJlMTZfdG9fY3B1KGhkci1cdTAwM2Vjb21tYW5kX2lkKTtcbiBcdFx0d21pX2V2ZW50ID0gc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHdtaV9jbWRfaGRyKSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNToxNC43NjEwMzA1MTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjczNjk1MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNgLiBJdCdzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIGNoZWNrLCBgaWYgKCFkYXRhX3JhY2UocHJpdi1cdTAwM2Vpbml0aWFsaXplZCkpYCwgdG8gdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSB0YXNrbGV0LiBUaGV5J3ZlIGFsc28gYWRkZWQgYW4gYHNtcF9ybWIoKWAgdGhlcmUuIFRoZSBpZGVhIGlzLCBpZiB0aGUgZHJpdmVyIGlzbid0IGluaXRpYWxpemVkLCB3ZSBiYWlsIG91dCBlYXJseS4gSW5zdGVhZCBvZiBmcmVlaW5nIHRoZSBgc2tiYCBhbmQgY2Fycnlpbmcgb24sIHdlJ3JlIHJldHVybmluZy5cblxuSG9sZCBvbiBhIHNlY29uZC4uLiBpZiB3ZSByZXR1cm4gKmJlZm9yZSogcHJvY2Vzc2luZyB0aGUgYHNrYmAsIGRvZXNuJ3QgdGhhdCBtZWFuIHRoZSBgc2tiYCBpcyBsZWZ0IGluIHRoZSBxdWV1ZT8gWWVzLCB0aGF0J3Mgd2hhdCBzZWVtcyB0byBiZSBoYXBwZW5pbmcgaGVyZS4gU28gdGhlIHRhc2tsZXQgKndvbid0KiBwcm9jZXNzIHRoYXQgcGFydGljdWxhciBgc2tiYC4gVGhhdCdzIGltcG9ydGFudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBJIHNob3VsZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgd2hhdCdzIGdvaW5nIG9uIHdpdGhpbiB0aGF0IHRhc2tsZXQuIExldCdzIGRpZyBpbnRvIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAgaW4gbW9yZSBkZXRhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNToyMC4wMzQ3Mjg0MThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc0ODEzNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz05MT1zdHJ1Y3Qgd21pICphdGg5a19pbml0X3dtaShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTA4LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ3bWktXFx1MDAzZXBlbmRpbmdfdHhfZXZlbnRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTA5OlxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNndtaS1cXHUwMDNld21pX2V2ZW50X3Rhc2tsZXQsIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEyOD12b2lkIGF0aDlrX3dtaV9ldmVudF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxMzg6dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTEzOS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE1OjIwLjExMjIxNTM5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MjM0NzEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYXRoOWsgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBpcyB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgZm9yIGF0aDlrLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0aGlzOiBnaXZlbiBteSBleHBlcnRpc2UsIEknbSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdHlwaWNhbCBhcmVhcyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGludm9sdmVzIGEgcXVpY2sgbWVudGFsIGNoZWNrIG9mIGRldmljZSBpbml0aWFsaXphdGlvbiwgcG93ZXIgbWFuYWdlbWVudCwgcmVndWxhdG9yeSBkb21haW5zLCBhbmQgYW55IHNwZWNpZmljIGRyaXZlciBxdWlya3MgSSdtIGZhbWlsaWFyIHdpdGggZnJvbSBwcmV2aW91cyBleHBlcmllbmNlcyBkZWFsaW5nIHdpdGggYXRoOWstYmFzZWQgaGFyZHdhcmUuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGUgdHlwaWNhbCBjb21tYW5kLWxpbmUgdG9vbHMgdG8gdXNlLCBzdWNoIGFzIGBpd2AsIGBpZmNvbmZpZ2AsIGFuZCBwZXJoYXBzIHNvbWUgbW9kdWxlIHBhcmFtZXRlcnMuXG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGUgdGFzayBkZW1hbmRzIGEgYnJvYWQgb3ZlcnZpZXcgb2YgcG9zc2libGUgY29uZmlndXJhdGlvbnMgb3IgYSBzcGVjaWZpYywgdGFyZ2V0ZWQgc2V0IG9mIG9wdGltaXphdGlvbnMuIEknbGwgdGhpbmsgYWJvdXQgd2hldGhlciB0aGlzIGlzIGZvciBhIGdlbmVyYWwtcHVycG9zZSBidWlsZCwgYSBjdXN0b20gZW1iZWRkZWQgc3lzdGVtLCBvciBkZWJ1Z2dpbmcgYSBzcGVjaWZpYyBpc3N1ZS4gVGhhdCB3aWxsIGluZm9ybSB3aGV0aGVyIEkgbmVlZCB0byBjb25zaWRlciB2YXJpb3VzIGhhcmR3YXJlIG1vZGVscyBhbmQgZHJpdmVyIHZlcnNpb25zLlxuXG5Fc3NlbnRpYWxseSwgSSdtIG1lbnRhbGx5IGNvbnN0cnVjdGluZyBhIHJvYWRtYXAsIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBrZXkgYXJlYXMgdG8gaW52ZXN0aWdhdGUsIGluY2x1ZGluZyBhbnkgcG90ZW50aWFsIGdvdGNoYXMuIEknbGwgbmVlZCB0byBmb3JtdWxhdGUgYSBzdHJhdGVneSBvbiBob3cgdG8gYXBwcm9hY2ggdGhpcyB0YXNrIGluIHRoZSBtb3N0IGVmZmljaWVudCBtYW5uZXIsIHdoaWNoIGRlcGVuZHMgb24gdGhlIGNvbnRleHQgYW5kIHRoZSBhaW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNToyNC4xMDQ1NjU4NTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE2MDIxMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUSDlLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mjpjb25maWcgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDpjb25maWcgQVRIOUtfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYtXFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3OmNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy04LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5OmNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzOmNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMTpjb25maWcgQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzozOTpjb25maWcgQVRIOUtfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBQQ0kvUENJZSBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ4OmNvbmZpZyBBVEg5S19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00OS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIEFIQiBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjU4OmNvbmZpZyBBVEg5S19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTktXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2OTpjb25maWcgQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NzY6Y29uZmlnIEFUSDlLX1RYOTlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Ny1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTY6Y29uZmlnIEFUSDlLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05Ny1cXHRib29sIFxcXCJBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNTpjb25maWcgQVRIOUtfRFlOQUNLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE2LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgQUNLIHRpbWVvdXQgZXN0aW1hdGlvbiBhbGdvcml0aG1cXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTI0OmNvbmZpZyBBVEg5S19XT1dcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjUtXFx0Ym9vbCBcXFwiV2FrZSBvbiBXaXJlbGVzcyBMQU4gc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzI6Y29uZmlnIEFUSDlLX1JGS0lMTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIHJma2lsbCBzdXBwb3J0XFxcIiBpZiBFWFBFUlRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDI6Y29uZmlnIEFUSDlLX0NIQU5ORUxfQ09OVEVYVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0My1cXHRib29sIFxcXCJDaGFubmVsIENvbnRleHQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTE6Y29uZmlnIEFUSDlLX1BDT0VNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUyLVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgc3VwcG9ydCBmb3IgUEMgT0VNIGNhcmRzXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTY6Y29uZmlnIEFUSDlLX1BDSV9OT19FRVBST01cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTctXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoOWsgcGNpIGxvYWRlciBmb3IgRUVQUk9NLWxlc3MgY2hpcHNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk1OmNvbmZpZyBBVEg5S19IV1JOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5Ni1cXHRib29sIFxcXCJSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwNjpjb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MjQuMTc2MTcyOTU3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM0Njc3MjkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgc3BvdGxpZ2h0J3Mgb24gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY2AuIE15IGZpcnN0IG1vdmUgaXMgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIHNwZWNpZmljIGZpbGUgaXMgaW1wb3J0YW50LiBJdCdzIGEgbG93LWxldmVsLCBzcGVjaWFsaXplZCBhcmVhLCBzbyBJIHN1c3BlY3QgdGhpcyBgd21pLmNgIHByb2JhYmx5IGhhbmRsZXMgdGhlIHdpcmVsZXNzIG1hbmFnZW1lbnQgaW50ZXJmYWNlIChXTUkpIHdpdGhpbiB0aGUgQXRoZXJvcyBhdGg5ayBkcml2ZXIuICBUaGUgV01JIHByb2JhYmx5IGlzIHRoYXQgY3J1Y2lhbCBpbnRlcmZhY2UsIGFuZCB0aGlzIC5jIGZpbGUgcHJvdmlkZXMgdGhlIGZ1bmN0aW9ucy4gTm93IG15IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZy4gSSBuZWVkIHRvIGZpbmQgb3V0IHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiBjb2RlLiBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgS2NvbmZpZyBzeW1ib2xzIG9yIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB3b3VsZCBwdWxsIHRoaXMgZmlsZSBpbnRvIGEga2VybmVsIGJ1aWxkLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiB3aGF0IHRoaXMgY29kZSBkb2VzIGFuZCB3aGVuIGl0cyBpbnZvbHZlZCBpbiB0aGUgZXhlY3V0aW9uIG9mIHRoZSBkcml2ZXIuIExldCdzIHNlZSB3aGF0IHRoZSBpbmNsdWRlcyB0ZWxsIHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTYyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MjkuNTIyOTQ4OTQ2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTYyMDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndtaS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgKz1cXHRodGNfaHN0Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02OS1cXHRcXHRoaWZfdXNiLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3MDpcXHRcXHR3bWkubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTcxLVxcdFxcdGh0Y19kcnZfdHhyeC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MjkuNTgwOTE1MTYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4OTQzNjM2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgQVRIOUtfSFRDYCBDb250ZXh0KipcblxuQWxyaWdodCwgc28gdGhlIHRvcGljIGF0IGhhbmQgaXMgdGhlIGBBVEg5S19IVENgIGRyaXZlci4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpc3NlY3QgaXRzIGRlcGVuZGVuY3kgY2hhaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtb2R1bGUgcmVsaWVzIG9uIGF0IHRoZSBrZXJuZWwgbGV2ZWwuIFdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBzeXN0ZW0gc2VydmljZXMgZG9lcyBgQVRIOUtfSFRDYCBkZXBlbmQgb24gZm9yIGl0cyBwcm9wZXIgZnVuY3Rpb25pbmc/IEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgaXRzIGludGVyYWN0aW9ucyB0byB0cm91Ymxlc2hvb3Qgb3IgbW9kaWZ5IHRoZSBtb2R1bGUgZWZmZWN0aXZlbHkuIEEgY2xlYXIgcGljdHVyZSBvZiBpdHMgZGVwZW5kZW5jaWVzIGlzIGFic29sdXRlbHkgY3J1Y2lhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU3OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE1OjMzLjA3MDM1NDk4NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk2NjM0MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUSDlLX0hUQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xNTY9Y29uZmlnIEFUSDlLX1BDSV9OT19FRVBST01cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzI6Y29uZmlnIEFUSDlLX0hUQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MzMuMTcwMDI0Mzg0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MjI0NzQ1ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcmVxdWVzdCwgc3VtbWFyaXplZCBhcyBhIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQVRIOUtfSFRDIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgd2FudHMgbWUgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBBVEg5S19IVENgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXBwcm9hY2ggdGhpcyBzeXN0ZW1hdGljYWxseS4gSSdsbCBuZWVkIHRvIGRldGVybWluZSB3aGF0IGxpYnJhcmllcywgbW9kdWxlcywgb3Igb3RoZXIgY29tcG9uZW50cyBgQVRIOUtfSFRDYCByZWxpZXMgb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGNvdWxkIGludm9sdmUgbG9va2luZyBhdCBzb3VyY2UgY29kZSwgYnVpbGQgZmlsZXMgKGxpa2UgTWFrZWZpbGVzIG9yIENNYWtlTGlzdHMudHh0KSwgY29uZmlndXJhdGlvbiBmaWxlcywgb3IgZXZlbiBkb2N1bWVudGF0aW9uLiBJIGV4cGVjdCB0byBzZWUga2VybmVsIG1vZHVsZXMsIGhhcmR3YXJlIGFic3RyYWN0aW9ucywgYW5kIHBvdGVudGlhbGx5IHVzZXItc3BhY2UgdXRpbGl0aWVzLiBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgYm90aCBjb21waWxlLXRpbWUgYW5kIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCBtZWFuaW5nIHdoYXQncyByZXF1aXJlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHdoYXQncyBsb2FkZWQgd2hlbiB0aGUgbW9kdWxlIGlzIGFjdHVhbGx5IGluIHVzZS4gVGhpcyBjb3VsZCBpbnZvbHZlIGRyaXZlciBjb2RlLCBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMuIE15IGV4cGVydGlzZSBpbiB0aGUgZmllbGQgd2lsbCBhbGxvdyBtZSB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjcnVjaWFsIGZpbGVzIGFuZCBjb2RlIHNlY3Rpb25zIHRvIGZvY3VzIG9uLCBhbmQgdG8gZ3Jhc3AgYW55IGNvbXBsZXhpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NzgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNTozNy4wOTI1MDUxNjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MixcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MjpcXHRjb25maWcgQVRIOUtfSFRDXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4gMTc0OlxcdFxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExXFxuIDE3NTpcXHRcXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbiAxNzY6XFx0XFx0c2VsZWN0IEFUSDlLX0hXXFxuIDE3NzpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OXFxuIDE3ODpcXHRcXHRoZWxwXFxuIDE3OTpcXHRcXHQgIFN1cHBvcnQgZm9yIEF0aGVyb3MgSFRDIGJhc2VkIGNhcmRzLlxcbiAxODA6XFx0XFx0ICBDaGlwc2V0cyBzdXBwb3J0ZWQ6IEFSOTI3MVxcbiAxODE6XFx0XFxuIDE4MjpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxcbiAxODM6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xcbiAxODQ6XFx0XFxuIDE4NTpcXHRcXHQgIFRoZSBidWlsdCBtb2R1bGUgd2lsbCBiZSBhdGg5a19odGMuXFxuIDE4NjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MzcuMDkyNjA4MzE1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMjQ1NjkxNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAgaW4gYSBVU0IgV2lyZWxlc3MgQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiBJIGFjdHVhbGx5IHRyaWdnZXIgdGhpcyB0aGluZz9cIiBHaXZlbiB0aGF0IHdlJ3JlIHRhbGtpbmcgYWJvdXQgYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHkgdGhhdCBpdCdzIGEgVVNCLWJhc2VkIG9uZSwgdGhlIGRlcGVuZGVuY2llcyBqdW1wIG91dDogYFVTQmAgYW5kIHRoZSBgTUFDODAyMTFgIHN0YWNrLiBUaGF0J3MgZ29vZCwgdGhhdCdzIHdvcmthYmxlLiBUaGUgZmFjdCBpdCdzIFVTQiBpcyBrZXk7IHN5emthbGxlcidzIFVTQiBlbXVsYXRpb24gY2FwYWJpbGl0aWVzIG1ha2UgdGhpcyBwb3RlbnRpYWxseSB2ZXJ5IGludGVyZXN0aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZGVmaW5pdGl2ZWx5IGFuc3dlciB0aGUgcmVhY2hhYmlsaXR5IHF1ZXN0aW9uOiBJcyBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGFjY2Vzc2libGUgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50PyBHaXZlbiB0aGlzIGlzIGEgdGFza2xldCBmb3IgV01JIChXaXJlbGVzcyBNYW5hZ2VtZW50IEludGVyZmFjZSkgZXZlbnRzLCBpdCBpbXBsaWVzIHNvbWUgdW5kZXJseWluZyBtZXNzYWdlIHBhc3NpbmcgbWVjaGFuaXNtLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgZnVuY3Rpb24uIFdoZXJlIGlzIGB3bWlfZXZlbnRfdGFza2xldGAgYWN0dWFsbHkgYmVpbmcgc2NoZWR1bGVkPyBVbmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2VyaW5nIHBhdGggaXMgY3JpdGljYWwgdG8gY3JhZnRpbmcgYSByZWxpYWJsZSBleHBsb2l0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDg5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6NDIuNDE3MTgwOTA3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDIzNTYzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3bWlfZXZlbnRfdGFza2xldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz05MzE9aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjk2OTpcXHQvKiBBbGxvdyBhdGg5a193bWlfZXZlbnRfdGFza2xldCgpIHRvIG9wZXJhdGUuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTk3MC1cXHRzbXBfd21iKCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTM5PXZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NTEtXFx0aHRjX3N0b3AocHJpdi1cXHUwMDNlaHRjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTUyOlxcdHRhc2tsZXRfa2lsbChcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2V3bWlfZXZlbnRfdGFza2xldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU1My1cXHR0YXNrbGV0X2tpbGwoXFx1MDAyNnByaXYtXFx1MDAzZXR4X2ZhaWxlZF90YXNrbGV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz05MT1zdHJ1Y3Qgd21pICphdGg5a19pbml0X3dtaShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTA4LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ3bWktXFx1MDAzZXBlbmRpbmdfdHhfZXZlbnRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTA5OlxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNndtaS1cXHUwMDNld21pX2V2ZW50X3Rhc2tsZXQsIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEyOD12b2lkIGF0aDlrX3dtaV9ldmVudF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxMzI6XFx0dGFza2xldF9raWxsKFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZXdtaV9ldmVudF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTMzLVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxMzg6dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTEzOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE0MDpcXHRzdHJ1Y3Qgd21pICp3bWkgPSBmcm9tX3Rhc2tsZXQod21pLCB0LCB3bWlfZXZlbnRfdGFza2xldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE0MS1cXHRzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSB3bWktXFx1MDAzZWRydl9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTIxOD1zdGF0aWMgdm9pZCBhdGg5a193bWlfY3RybF9yeCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTIzOS1cXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZ3bWktXFx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjI0MDpcXHRcXHR0YXNrbGV0X3NjaGVkdWxlKFxcdTAwMjZ3bWktXFx1MDAzZXdtaV9ldmVudF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMjQxLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0xNDg9c3RydWN0IHdtaSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTU1LVxcdHN0cnVjdCBza19idWZmX2hlYWQgd21pX2V2ZW50X3F1ZXVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDoxNTY6XFx0c3RydWN0IHRhc2tsZXRfc3RydWN0IHdtaV9ldmVudF90YXNrbGV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC0xNTctXFx0dTE2IHR4X3NlcV9pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0xODQ9aW50IGF0aDlrX3dtaV9jbWQoc3RydWN0IHdtaSAqd21pLCBlbnVtIHdtaV9jbWRfaWQgY21kX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTE4Ny1cXHRcXHQgIHUzMiB0aW1lb3V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6MTg4OnZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTg5LXZvaWQgYXRoOWtfZmF0YWxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNTo0Mi40ODE0MjQzNjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwNDE4ODYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBhdGg5a193bWlfY3RybF9yeCBDYWxsIENoYWluKipcblxuQWxyaWdodCwgSSdtIGxvb2tpbmcgYXQgdGhlIGBhdGg5a193bWlfY3RybF9yeGAgZnVuY3Rpb24sIGFuZCBJIHNlZSBhIHRhc2tsZXQgYmVpbmcgc2NoZWR1bGVkIHdpdGhpbiBpdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIk9rYXksIHRoYXQncyBpbnRlcmVzdGluZy4gVGFza2xldHMgYXJlIHR5cGljYWxseSB1c2VkIGZvciBkZWZlcnJlZCB3b3JrIGluIHRoZSBrZXJuZWwsIG9mdGVuIHJlbGF0ZWQgdG8gaW50ZXJydXB0IGhhbmRsaW5nIG9yIHNvbWUgZm9ybSBvZiBhc3luY2hyb25vdXMgcHJvY2Vzc2luZy5cIiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgcGljdHVyZS4gSSB3YW50IHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQga25vdyB3aGVyZSB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gXCJMZXQncyBiYWNrdHJhY2ssIGFuYWx5emUgd2hlcmUgYGF0aDlrX3dtaV9jdHJsX3J4YCBpcyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aHkgdGhpcyB0YXNrbGV0IGlzIGJlaW5nIHVzZWQgYW5kIHdoYXQgZGF0YSBpdCdzIGxpa2VseSBvcGVyYXRpbmcgb24gd2l0aGluIHRoZSBgYXRoOWtgIHdpcmVsZXNzIGRyaXZlci5cIiBJIG5lZWQgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMuIEkga25vdyBpdCdzIGEgcmVjZWl2ZSBwYXRoLCBidXQgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQncyBiZWluZyBjYWxsZWQgZnJvbSB0byBhc3Nlc3MgaWYgYW55IG1vZGlmaWNhdGlvbnMgaW4gdGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGFyZSBjYXVzaW5nIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE3MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE1OjQ2LjQ4NTYxNTk5NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2MDU4NDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX3dtaV9jdHJsX3J4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTIwOD1zdGF0aWMgdm9pZCBhdGg5a193bWlfcnNwX2NhbGxiYWNrKHN0cnVjdCB3bWkgKndtaSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjIxODpzdGF0aWMgdm9pZCBhdGg5a193bWlfY3RybF9yeCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yMTktXFx0XFx0XFx0ICAgICAgZW51bSBodGNfZW5kcG9pbnRfaWQgZXBpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0yNjU9aW50IGF0aDlrX3dtaV9jb25uZWN0KHN0cnVjdCBodGNfdGFyZ2V0ICpodGMsIHN0cnVjdCB3bWkgKndtaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yNzYtXFx0Y29ubmVjdC5lcF9jYWxsYmFja3MudHggPSBhdGg5a193bWlfY3RybF90eDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6Mjc3OlxcdGNvbm5lY3QuZXBfY2FsbGJhY2tzLnJ4ID0gYXRoOWtfd21pX2N0cmxfcng7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTI3OC1cXHRjb25uZWN0LnNlcnZpY2VfaWQgPSBXTUlfQ09OVFJPTF9TVkM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE1OjQ2Ljc3MTY3OTc5NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDE4MTAzMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbiBmb3IgV01JX0NPTlRST0xfU1ZDIENhbGxiYWNrKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBlbmRwb2ludCBjYWxsYmFjayBmb3IgYFdNSV9DT05UUk9MX1NWQ2AuIFRoaXMgaXMgYSBVU0IgZGV2aWNlLCBzbyBpdCdzIHByaW1lIHRhcmdldCBmb3Igc3l6a2FsbGVyJ3MgVVNCIGZ1enplci4gVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgYSBkYXRhIHJhY2Ugb24gYHByaXYtXHUwMDNlaW5pdGlhbGl6ZWRgIGFuZCBpbmNsdWRlcyBhIG1lbW9yeSBiYXJyaWVyIOKAkyB0aGF0J3MgYSBnb29kIHNpZ24gaXQncyB0b3VjaGluZyBzb21ldGhpbmcgaW1wb3J0YW50LlxuXG5UaGUgYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YCBmdW5jdGlvbiAqaXMqIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCBpdCdzIGFjdHVhbGx5IHdvcnRoIHRoZSBlZmZvcnQgdG8gZnV6eiBpdC4gWWVzLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIsIHNvIGl0IHByb2JhYmx5IGlzLlxuXG5MZXQncyBzZWUsIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGFic29sdXRlbHkgcmVxdWlyZWQ/IEknbSB0aGlua2luZzogYEFUSDlLX0hUQ2AsIGBVU0JgLCBhbmQgb2YgY291cnNlIGBNQUM4MDIxMWAuXG5cblJpZ2h0LCBsZXQncyBqdXN0IGRvdWJsZSBjaGVjayBgQVRIOUtfSFRDYCdzIGRlcGVuZGVuY2llcyBpbiB0aGUgS2NvbmZpZywgdG8gYmUgY2VydGFpbiB3ZSBoYXZlIGV2ZXJ5dGhpbmcuICpZZXAqLCB0aGF0IGNvbmZpcm1zIGl0OiBgQVRIOUtfSFRDYCBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLCBhbmQgYWxzbyBzZWxlY3RzIGBBVEg5S19IV2AgYW5kIGBBVEg5S19DT01NT05gIHNvIHdlJ2xsIG5lZWQgYWxsIHRob3NlIGVuYWJsZWQsIGJ1dCB0aGF0J3MgdGFrZW4gY2FyZSBvZiBieSBlbmFibGluZyB0aGUgYWJvdmUgZGVwZW5kZW5jaWVzLlxuXG5Ob3csIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIG1vc3QgcHJvbWlzaW5nIGZ1enppbmcgdGFyZ2V0cz8gRGVmaW5pdGVseSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgLiBJIHNob3VsZCBhbHNvIGxvb2sgYXQgYGF0aDlrX3dtaV9jdHJsX3J4YCBhbmQgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZWlyIHZpc2liaWxpdHkuIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAgaXMgbm90IHN0YXRpYywgZ29vZCwgdGhhdCBtZWFucyBpdCdzIGFjY2Vzc2libGUuIGBhdGg5a193bWlfY3RybF9yeGAgaXMgc3RhdGljLiBBbHJpZ2h0LCB0aGF0J3Mgbm90IGFzIGludGVyZXN0aW5nIHRoZW4uIGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYCBpcyBhbHNvIG5vdCBzdGF0aWMuIE9rYXksIGdvb2QuIFRoYXQgbWVhbnMgdGhlc2UgdHdvIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSB3b3J0aCBwdXR0aW5nIGludG8gdGhlIGZ1enppbmcgY29uZmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODM2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE1OjUzLjc4OTc4Nzc2OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5Njg5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfaHRjX3Byb2JlX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02MzE9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2xlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjYzNjppbnQgYXRoOWtfaHRjX3Byb2JlX2RldmljZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSwgc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02MzctXFx0XFx0XFx0ICAgdTE2IGRldmlkLCBjaGFyICpwcm9kdWN0LCB1MzIgZHJ2X2luZm8pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTgyOD1zdGF0aWMgaW50IGF0aDlrX2luaXRfZGV2aWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjkzMTppbnQgYXRoOWtfaHRjX3Byb2JlX2RldmljZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSwgc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05MzItXFx0XFx0XFx0ICAgdTE2IGRldmlkLCBjaGFyICpwcm9kdWN0LCB1MzIgZHJ2X2luZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTUyOD1pbnQgYXRoOWtfaHRjX2h3X2luaXQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtNTMxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjUzMjpcXHRpZiAoYXRoOWtfaHRjX3Byb2JlX2RldmljZSh0YXJnZXQsIGRldiwgZGV2aWQsIHByb2R1Y3QsIGRydl9pbmZvKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtNTMzLVxcdFxcdHByX2VycihcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIGRldmljZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTQ5OlxcdC8qIENoZWNrIGlmIGF0aDlrX2h0Y19wcm9iZV9kZXZpY2UoKSBjb21wbGV0ZWQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE1MC1cXHRpZiAoIWRhdGFfcmFjZShwcml2LVxcdTAwM2Vpbml0aWFsaXplZCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTUyLVxcdC8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE1MzpcXHQgKiBNYWtlIHN1cmUgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGluaXRpYWxpemF0aW9uIGlzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE1NC1cXHQgKiBjb21taXR0ZWQgdG8gbWVtb3J5IGJlZm9yZSBwcm9jZXNzaW5nIHNrYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6NTMuODcxNzY0NzNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3Nzk1MjQ0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBhdGg5a2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhpcyBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIHRvIGJlIHRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb25zLiBUbyB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiwgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGVyZS4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCB0aGUga2V5IGlzIHRoZSBzdGF0ZSBvZiBgcHJpdi1cdTAwM2Vpbml0aWFsaXplZGAuIFdoZXJlIGV4YWN0bHkgaXMgdGhhdCBmbGFnIGZsaXBwZWQ/IExvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgIGlzIHRoZSBsaWtlbHkgY3VscHJpdC4gTGV0IG1lIHZlcmlmeSB0aGF0IGFuZCBzZWUgd2hhdCB0aGF0IHRlbGxzIG1lIGFib3V0IHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cgYW5kIHRoZSBkZXBlbmRlbmNpZXMgbGVhZGluZyBpbnRvIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAuIEZyb20gdGhlcmUgSSBjYW4gdW5kZXJzdGFuZCB3aGF0IHRob3NlIG1vZGlmaWNhdGlvbnMgYWN0dWFsbHkgYWNoaWV2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNTo1OC42NDk3MjAxNTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODIwMzc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcml2LVxcdTAwM2Vpbml0aWFsaXplZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz05MzE9aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NzAtXFx0c21wX3dtYigpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo5NzE6XFx0cHJpdi1cXHUwMDNlaW5pdGlhbGl6ZWQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE0OS1cXHQvKiBDaGVjayBpZiBhdGg5a19odGNfcHJvYmVfZGV2aWNlKCkgY29tcGxldGVkLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxNTA6XFx0aWYgKCFkYXRhX3JhY2UocHJpdi1cXHUwMDNlaW5pdGlhbGl6ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNTEtXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNTo1OC43NTc5MjgyNjVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM2OTc1NDg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgYXRoOWtfaHRjIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIGluaXRpYWxpemF0aW9uIGZsb3cgd2l0aGluIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIsIHNwZWNpZmljYWxseSwgaG93IHRoZSBoYXJkd2FyZSBnZXRzIHNldCB1cC4gSXQgc2VlbXMgbGlrZSBgYXRoOWtfaHRjX3Byb2JlX2RldmljZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LCBhcyBpdCBzZXRzIHRoYXQgY3J1Y2lhbCBgcHJpdi1cdTAwM2Vpbml0aWFsaXplZGAgZmxhZy4gVGhlbiwgYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YCBhcHBhcmVudGx5IGRlcGVuZHMgb24gdGhpcyBmbGFnLiBUaG9zZSBsb29rIGxpa2UgdGhlIGtleSBzeW1ib2xzIHRvIHRyYWNrLiBJIHN1c3BlY3QgdGhhdCB0aGUgZXZlbnQgdGFza2xldCBtYXkgYmUgdGhlIHNvdXJjZSBvZiBteSByZWNlbnQgcHJvYmxlbS5cblxuTm93LCBJJ20ganVzdCBxdWlja2x5IGNoZWNraW5nIGlmIGBhdGg5a19odGNfaHdfaW5pdGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIE5vLCBpdCBpc24ndC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQganVzdCB0byBtYWtlIHN1cmUgSSdtIGNvcnJlY3QgaW4gdGhhdCBhc3N1bXB0aW9uLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiB0aGUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTkzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTY6MDcuMTI3Njg3MzM0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzkzMzk4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg5a19odGNfaHdfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MTIyNj1zdGF0aWMgdm9pZCBhdGg5a19oaWZfdXNiX2Zpcm13YXJlX2NiKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsIHZvaWQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTEyNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoxMjU2OlxcdHJldCA9IGF0aDlrX2h0Y19od19pbml0KGhpZl9kZXYtXFx1MDAzZWh0Y19oYW5kbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMjU3LVxcdFxcdFxcdFxcdFxcdTAwMjZoaWZfZGV2LVxcdTAwM2VpbnRlcmZhY2UtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9NTIzPXZvaWQgYXRoOWtfaHRjX2h3X2ZyZWUoc3RydWN0IGh0Y190YXJnZXQgKmh0YylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtNTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM6NTI4OmludCBhdGg5a19odGNfaHdfaW5pdChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtNTI5LVxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiwgdTE2IGRldmlkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuaD0yMjQ9dm9pZCBhdGg5a19odGNfaHdfZnJlZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5oOjIyNTppbnQgYXRoOWtfaHRjX2h3X2luaXQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5oLTIyNi1cXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsIHUxNiBkZXZpZCwgY2hhciAqcHJvZHVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTY6MDcuMTg1NjMyNzA4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDA4ODEyNTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29tcGlsYXRpb24gUmVxdWlyZW1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zOiBgYXRoOWtfaHRjX2h3X2luaXRgLCBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgLCBhbmQgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgLiBUaGV5J3JlIG5vbi1zdGF0aWMsIHdoaWNoIG1lYW5zIHRoZXkncmUgbGlrZWx5IGVudHJ5IHBvaW50cyBvciBjYWxsZWQgZnJvbSBlbHNld2hlcmUuXG5cbkkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdG8gY29tcGlsZSB0aGlzIGNvZGUgc3RhdGljYWxseS4gVGhlIGtleSBoZXJlIGlzIHRvIGlkZW50aWZ5IGRlcGVuZGVuY2llcy4gQmFzZWQgb24gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG15IGtub3dsZWRnZSwgSSdtIHByZXR0eSBzdXJlIGBBVEg5S19IVENgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZyBuZWVkZWQuXG5cbkxldCdzIGRvdWJsZS1jaGVjay4gT2theSwgeWVzLCBgQVRIOUtfSFRDYCBkb2VzIGluZGVlZCBkZXBlbmQgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAuIFRoZXNlIGFyZSBwcmV0dHkgZnVuZGFtZW50YWwgc3Vic3lzdGVtcywgYnV0IHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBsaXN0IGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzLiBXZWxsLCBgVVNCYCBhbmQgYE1BQzgwMjExYCBhcmUgc3RhbmRhcmQgc28gaXQgcHJvYmFibHkgd29uJ3QgaHVydCB0byBiZSBleHBsaWNpdC4gSXQncyBzYWZlIHRvIGluY2x1ZGUgYEFUSDlLX0hUQ2AuXG5cbkFscmlnaHQsIGxldCdzIGluY2x1ZGUganVzdCBgQVRIOUtfSFRDYC5cblxuKipSZXZpZXdpbmcgdGhlIFBhdGNoIGFuZCBJdHMgSW1wbGljYXRpb25zKipcblxuTm93LCBJJ20gcmV2aWV3aW5nIHRoZSBwYXRjaCBpdHNlbGYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIHRoZSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgLiBUaGUgcGF0Y2ggaXMgZ3VhcmRpbmcgYWdhaW5zdCBwcmVtYXR1cmUgZXhlY3V0aW9uIGJlZm9yZSB0aGUgZGV2aWNlIGhhcyBmdWxseSBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IGNoZWNraW5nIGBwcml2LVx1MDAzZWluaXRpYWxpemVkYC4gQmVmb3JlLCB0aGVyZSB3YXMgYSBkb3VibGUgY2hlY2sgdGhhdCB3YXMgcmVtb3ZlZC4gTm93IHRoZSB0YXNrbGV0IHdpbGwganVzdCByZXR1cm4gaWYgdGhlIGRldmljZSBpc24ndCBpbml0aWFsaXplZC5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gSWYgdGhlIHRhc2tsZXQgcmV0dXJucywgd2hhdCB3aWxsIHNjaGVkdWxlIGl0IGFnYWluPyBUaGUgb3JpZ2luYWwgY29kZSBoYWQgYSBzZWNvbmQgY2hlY2sgdGhhdCB3b3VsZCBmcmVlIHRoZSBza2IgaWYgdGhlIGRyaXZlciBoYWQgbm90IGluaXRpYWxpemVkLiBSZW1vdmluZyB0aGUgc2Vjb25kIGNoZWNrIG1lYW5zIHRoZSBza2IgaXMgbGVmdCBpbiB0aGUgcXVldWUuIE15IGNvbmNlcm4gaGVyZSBpcyBpZiB0aGUgdGFza2xldCBpc24ndCBzY2hlZHVsZWQgdW50aWwgYHByaXYtXHUwMDNlaW5pdGlhbGl6ZWRgIGJlY29tZXMgdHJ1ZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGluIGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYCB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB0YXNrbGV0IHNjaGVkdWxpbmcuIElzIGl0IHBvc3NpYmxlIGZvciB0aGUgZHJpdmVyIHRvIGJlIGluIGEgYmFkIHN0YXRlPyBcblxuXG4iLCJJbnB1dFRva2VucyI6MTE3ODMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTY6MTcuMTk0NDQ4MjQ1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQ2NjMwNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGFza2xldF9zY2hlZHVsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02OTA9dm9pZCBhdGg5a19odGNfdHhlcCh2b2lkICpkcnZfcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MDItXFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2ZhaWxlZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzAzOlxcdFxcdHRhc2tsZXRfc2NoZWR1bGUoXFx1MDAyNnByaXYtXFx1MDAzZXR4X2ZhaWxlZF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzA0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTM1PXZvaWQgYXRoOWtfaHRjX3J4ZXAodm9pZCAqZHJ2X3ByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTE2NzpcXHR0YXNrbGV0X3NjaGVkdWxlKFxcdTAwMjZwcml2LVxcdTAwM2VyeF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE2OC1cXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jPTQ4OD1pcnFyZXR1cm5fdCBhdGhfaXNyKGludCBpcnEsIHZvaWQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmMtNTY2LVxcdGlmIChzdGF0dXMgXFx1MDAyNiBBVEg5S19JTlRfU1dCQSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jOjU2NzpcXHRcXHR0YXNrbGV0X3NjaGVkdWxlKFxcdTAwMjZzYy1cXHUwMDNlYmNvbl90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTU2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmMtNTk2LVxcdFxcdGF0aDlrX2h3X2tpbGxfaW50ZXJydXB0cyhhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYzo1OTc6XFx0XFx0dGFza2xldF9zY2hlZHVsZShcXHUwMDI2c2MtXFx1MDAzZWludHJfdHEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmMtNTk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0yMTg9c3RhdGljIHZvaWQgYXRoOWtfd21pX2N0cmxfcngodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yMzktXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2d21pLVxcdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoyNDA6XFx0XFx0dGFza2xldF9zY2hlZHVsZShcXHUwMDI2d21pLVxcdTAwM2V3bWlfZXZlbnRfdGFza2xldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTI0MS1cXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE2OjE3LjQ2OTExNTg0OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTkwMjQ1NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoOWtfaHRjIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgYXRoOWtfaHRjYCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGFuZCBzb21ldGhpbmcncyBidWdnaW5nIG1lLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYCB3YXMgcmVzcG9uc2libGUgZm9yIHNjaGVkdWxpbmcgdGhlIHRhc2tsZXQuIEJ1dCB3YWl0IGEgc2Vjb25kLi4uIGl0IGxvb2tzIGxpa2UgaXQgKmRvZXNuJ3QqIGRpcmVjdGx5IGNhbGwgYHRhc2tsZXRfc2NoZWR1bGUoKWAuIEluc3RlYWQsIGl0IGp1c3Qgc2V0cyBgcHJpdi1cdTAwM2Vpbml0aWFsaXplZCA9IHRydWVgIHdpdGggYSBgc21wX3dtYigpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlmIHRoZXJlIGFyZSBhbHJlYWR5IHNrYnMgKHNvY2tldCBidWZmZXIpIGluIHRoZSBxdWV1ZSwgdGhleSdyZSBnb2luZyB0byBnZXQgcHJvY2Vzc2VkIHdoZW4gdGhlIG5leHQgV01JIChXaXJlbGVzcyBNYW5hZ2VtZW50IEludGVyZmFjZSkgZXZlbnQgb2NjdXJzLiBUaGF0IGV2ZW50IHNob3VsZCBiZSB0aGUgdHJpZ2dlciwgYW5kIHdpbGwgaW52b2tlIHRoZSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgLlxuXG5CdXQgdGhlbiBhZ2FpbiwgdGhlcmUgaXMgYSBjaGFuY2UgdGhhdCBJIGFtIG1pc3Npbmcgc29tZXRoaW5nLiBNYXliZSB0aGlzIGlzIGEgYnVnLCBtZWFuaW5nIGl0ICppc24ndCogcHJvY2Vzc2luZyB0aGVtLiBFaXRoZXIgd2F5LCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZnJvbSB3aGF0IEkgd2FzIGV4cGVjdGluZyBpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGRyaXZlci4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmbG93IGlzIGNvcnJlY3QuXG5cbkkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBjcnVjaWFsIHN5bWJvbHM6IGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAgYW5kIGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYC5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEknbSBvcGVyYXRpbmcgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBgQVRIOUtfSFRDYCwgYE1BQzgwMjExYCwgYW5kIGBVU0JgIGFyZSBhbGwgZW5hYmxlZC4gSnVzdCB0byBiZSBzdXJlLCBpcyBgQVRIOUtfSFRDYCBzdWZmaWNpZW50LCBvciBhcmUgdGhlcmUgbW9yZSB0aGF0IEkgbmVlZCB0byBjaGVjaz8gSXQgbG9va3MgbGlrZSBgQVRIOUtfSFRDYCBzZWxlY3RzIGBBVEg5S19IV2AgYW5kIGBBVEg5S19DT01NT05gLCBzbyB0aG9zZSBhcmUgY292ZXJlZC5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudCBpbiBteSBhbmFseXNpcyBub3cuIEknbGwgZ28gYWhlYWQgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4MDAsIk91dHB1dFRva2VucyI6MTM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE2OjI1LjA1OTM2NDAyNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDE2MTgyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRcIixcbiAgICBcImF0aDlrX2h0Y19wcm9iZV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV01JIGV2ZW50IHRhc2tsZXQgaW4gdGhlIGF0aDlrX2h0YyBkcml2ZXIgdG8gcHJldmVudCBmcmVlaW5nIHNrYnMgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQsIGFuZCBhZGRzIGEgbWVtb3J5IGJhcnJpZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBVU0Igd2lyZWxlc3MgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGg5a193bWlfZXZlbnRfdGFza2xldFwiLFxuICAgIFwiYXRoOWtfaHRjX3Byb2JlX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXTUkgZXZlbnQgdGFza2xldCBpbiB0aGUgYXRoOWtfaHRjIGRyaXZlciB0byBwcmV2ZW50IGZyZWVpbmcgc2ticyB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZCwgYW5kIGFkZHMgYSBtZW1vcnkgYmFycmllci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIFVTQiB3aXJlbGVzcyBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7mfd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 08:47:11 +0000 UTC FinishedAt: 2026-08-04 09:16:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a33516f9ef59ad11844d4fc152f889449b5daf3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a33516f9ef59ad11844d4fc152f889449b5daf3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "MAC80211", "USB" ], "series_id": "aefc7d42-4b22-4a73-a9cd-c2e81d5e7466" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath9k_wmi_event_tasklet", "ath9k_htc_probe_device" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGg5a193bWlfZXZlbnRfdGFza2xldCYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfcHJvYmVfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXTUkgZXZlbnQgdGFza2xldCBpbiB0aGUgYXRoOWtfaHRjIGRyaXZlciB0byBwcmV2ZW50IGZyZWVpbmcgc2ticyB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZCwgYW5kIGFkZHMgYSBtZW1vcnkgYmFycmllci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIFVTQiB3aXJlbGVzcyBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjA3YmJjN2NjZTRjMzEwNzk3ZWYzMThiNjE4ZmUwMTBlYjRjY2YxOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDk6MTU6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG5pbmRleCAyODRlOGMxM2IwNDMwLi5kZjRhM2E2MjU1MzZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcbkBAIC0xNDYsNiAmIzQzOzE0NiwxNSBAQCB2b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHR1MTYgY21kX2lkO1xuIFxuJiM0MztcdC8qIENoZWNrIGlmIGF0aDlrX2h0Y19wcm9iZV9kZXZpY2UoKSBjb21wbGV0ZWQuICovXG4mIzQzO1x0aWYgKCFkYXRhX3JhY2UocHJpdi1cdTAwM2Vpbml0aWFsaXplZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBNYWtlIHN1cmUgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGluaXRpYWxpemF0aW9uIGlzXG4mIzQzO1x0ICogY29tbWl0dGVkIHRvIG1lbW9yeSBiZWZvcmUgcHJvY2Vzc2luZyBza2IuXG4mIzQzO1x0ICovXG4mIzQzO1x0c21wX3JtYigpO1xuJiM0MztcbiBcdGRvIHtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2d21pLVx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XG4gXHRcdHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2d21pLVx1MDAzZXdtaV9ldmVudF9xdWV1ZSk7XG5AQCAtMTU1LDEyICYjNDM7MTY0LDYgQEAgdm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXG4gXHRcdH1cbiBcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZ3bWktXHUwMDNld21pX2xvY2ssIGZsYWdzKTtcbiBcbi1cdFx0LyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi9cbi1cdFx0aWYgKCFkYXRhX3JhY2UocHJpdi1cdTAwM2Vpbml0aWFsaXplZCkpIHtcbi1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVxuIFx0XHRoZHIgPSAoc3RydWN0IHdtaV9jbWRfaGRyICopIHNrYi1cdTAwM2VkYXRhO1xuIFx0XHRjbWRfaWQgPSBiZTE2X3RvX2NwdShoZHItXHUwMDNlY29tbWFuZF9pZCk7XG4gXHRcdHdtaV9ldmVudCA9IHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hkcikpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX3Byb2JlX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV01JIGV2ZW50IHRhc2tsZXQgaW4gdGhlIGF0aDlrX2h0YyBkcml2ZXIgdG8gcHJldmVudCBmcmVlaW5nIHNrYnMgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQsIGFuZCBhZGRzIGEgbWVtb3J5IGJhcnJpZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBVU0Igd2lyZWxlc3MgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGIwN2JiYzdjY2U0YzMxMDc5N2VmMzE4YjYxOGZlMDEwZWI0Y2NmMTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDA5OjE1OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCmluZGV4IDI4NGU4YzEzYjA0MzAuLmRmNGEzYTYyNTUzNmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMKQEAgLTE0Niw2ICYjNDM7MTQ2LDE1IEBAIHZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTE2IGNtZF9pZDsKIAomIzQzOwkvKiBDaGVjayBpZiBhdGg5a19odGNfcHJvYmVfZGV2aWNlKCkgY29tcGxldGVkLiAqLwomIzQzOwlpZiAoIWRhdGFfcmFjZShwcml2LSZndDtpbml0aWFsaXplZCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CS8qCiYjNDM7CSAqIE1ha2Ugc3VyZSBhdGg5a19odGNfcHJvYmVfZGV2aWNlKCkgaW5pdGlhbGl6YXRpb24gaXMKJiM0MzsJICogY29tbWl0dGVkIHRvIG1lbW9yeSBiZWZvcmUgcHJvY2Vzc2luZyBza2IuCiYjNDM7CSAqLwomIzQzOwlzbXBfcm1iKCk7CiYjNDM7CiAJZG8gewogCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO3dtaS0mZ3Q7d21pX2xvY2ssIGZsYWdzKTsKIAkJc2tiID0gX19za2JfZGVxdWV1ZSgmYW1wO3dtaS0mZ3Q7d21pX2V2ZW50X3F1ZXVlKTsKQEAgLTE1NSwxMiAmIzQzOzE2NCw2IEBAIHZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQogCQl9CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDt3bWktJmd0O3dtaV9sb2NrLCBmbGFncyk7CiAKLQkJLyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi8KLQkJaWYgKCFkYXRhX3JhY2UocHJpdi0mZ3Q7aW5pdGlhbGl6ZWQpKSB7Ci0JCQlrZnJlZV9za2Ioc2tiKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KIAkJaGRyID0gKHN0cnVjdCB3bWlfY21kX2hkciAqKSBza2ItJmd0O2RhdGE7CiAJCWNtZF9pZCA9IGJlMTZfdG9fY3B1KGhkci0mZ3Q7Y29tbWFuZF9pZCk7CiAJCXdtaV9ldmVudCA9IHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hkcikpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzM2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY2AuIEl0JiMzOTtzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIGNoZWNrLCBgaWYgKCFkYXRhX3JhY2UocHJpdi0mZ3Q7aW5pdGlhbGl6ZWQpKWAsIHRvIHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgdGFza2xldC4gVGhleSYjMzk7dmUgYWxzbyBhZGRlZCBhbiBgc21wX3JtYigpYCB0aGVyZS4gVGhlIGlkZWEgaXMsIGlmIHRoZSBkcml2ZXIgaXNuJiMzOTt0IGluaXRpYWxpemVkLCB3ZSBiYWlsIG91dCBlYXJseS4gSW5zdGVhZCBvZiBmcmVlaW5nIHRoZSBgc2tiYCBhbmQgY2Fycnlpbmcgb24sIHdlJiMzOTtyZSByZXR1cm5pbmcuCgpIb2xkIG9uIGEgc2Vjb25kLi4uIGlmIHdlIHJldHVybiAqYmVmb3JlKiBwcm9jZXNzaW5nIHRoZSBgc2tiYCwgZG9lc24mIzM5O3QgdGhhdCBtZWFuIHRoZSBgc2tiYCBpcyBsZWZ0IGluIHRoZSBxdWV1ZT8gWWVzLCB0aGF0JiMzOTtzIHdoYXQgc2VlbXMgdG8gYmUgaGFwcGVuaW5nIGhlcmUuIFNvIHRoZSB0YXNrbGV0ICp3b24mIzM5O3QqIHByb2Nlc3MgdGhhdCBwYXJ0aWN1bGFyIGBza2JgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBJIHNob3VsZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoaW4gdGhhdCB0YXNrbGV0LiBMZXQmIzM5O3MgZGlnIGludG8gYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YCBpbiBtb3JlIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg5a193bWlfZXZlbnRfdGFza2xldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9OTE9c3RydWN0IHdtaSAqYXRoOWtfaW5pdF93bWkoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMDgtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3bWktXHUwMDNlcGVuZGluZ190eF9ldmVudHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjEwOTpcdHRhc2tsZXRfc2V0dXAoXHUwMDI2d21pLVx1MDAzZXdtaV9ldmVudF90YXNrbGV0LCBhdGg5a193bWlfZXZlbnRfdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTEwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0xMjg9dm9pZCBhdGg5a193bWlfZXZlbnRfZHJhaW4oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTM4OnZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTEzOS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExMAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgYXRoOWsgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgaXMgdG8gZmlndXJlIG91dCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGZvciBhdGg5ay4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdGhpczogZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIGFyZWFzIHdoZXJlIEkgZXhwZWN0IHRvIGZpbmQgdGhlc2UgY29uZmlndXJhdGlvbnMuIFRoaXMgaW52b2x2ZXMgYSBxdWljayBtZW50YWwgY2hlY2sgb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBwb3dlciBtYW5hZ2VtZW50LCByZWd1bGF0b3J5IGRvbWFpbnMsIGFuZCBhbnkgc3BlY2lmaWMgZHJpdmVyIHF1aXJrcyBJJiMzOTttIGZhbWlsaWFyIHdpdGggZnJvbSBwcmV2aW91cyBleHBlcmllbmNlcyBkZWFsaW5nIHdpdGggYXRoOWstYmFzZWQgaGFyZHdhcmUuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIHR5cGljYWwgY29tbWFuZC1saW5lIHRvb2xzIHRvIHVzZSwgc3VjaCBhcyBgaXdgLCBgaWZjb25maWdgLCBhbmQgcGVyaGFwcyBzb21lIG1vZHVsZSBwYXJhbWV0ZXJzLgoKSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIHRoZSB0YXNrIGRlbWFuZHMgYSBicm9hZCBvdmVydmlldyBvZiBwb3NzaWJsZSBjb25maWd1cmF0aW9ucyBvciBhIHNwZWNpZmljLCB0YXJnZXRlZCBzZXQgb2Ygb3B0aW1pemF0aW9ucy4gSSYjMzk7bGwgdGhpbmsgYWJvdXQgd2hldGhlciB0aGlzIGlzIGZvciBhIGdlbmVyYWwtcHVycG9zZSBidWlsZCwgYSBjdXN0b20gZW1iZWRkZWQgc3lzdGVtLCBvciBkZWJ1Z2dpbmcgYSBzcGVjaWZpYyBpc3N1ZS4gVGhhdCB3aWxsIGluZm9ybSB3aGV0aGVyIEkgbmVlZCB0byBjb25zaWRlciB2YXJpb3VzIGhhcmR3YXJlIG1vZGVscyBhbmQgZHJpdmVyIHZlcnNpb25zLgoKRXNzZW50aWFsbHksIEkmIzM5O20gbWVudGFsbHkgY29uc3RydWN0aW5nIGEgcm9hZG1hcCwgYSBtZW50YWwgY2hlY2tsaXN0IG9mIGtleSBhcmVhcyB0byBpbnZlc3RpZ2F0ZSwgaW5jbHVkaW5nIGFueSBwb3RlbnRpYWwgZ290Y2hhcy4gSSYjMzk7bGwgbmVlZCB0byBmb3JtdWxhdGUgYSBzdHJhdGVneSBvbiBob3cgdG8gYXBwcm9hY2ggdGhpcyB0YXNrIGluIHRoZSBtb3N0IGVmZmljaWVudCBtYW5uZXIsIHdoaWNoIGRlcGVuZHMgb24gdGhlIGNvbnRleHQgYW5kIHRoZSBhaW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDlLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjI6Y29uZmlnIEFUSDlLX0hXXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ6Y29uZmlnIEFUSDlLX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02LVx0c2VsZWN0IEFUSF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc6Y29uZmlnIEFUSDlLX0NPTU1PTl9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOC1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjk6Y29uZmlnIEFUSDlLX0RGU19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMC1cdGRlZl9ib29sIHlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzOmNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQtXHRib29sIFwmIzM0O0F0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIxOmNvbmZpZyBBVEg5S1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIDgwMi4xMW4gd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mzk6Y29uZmlnIEFUSDlLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDAtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgUENJL1BDSWUgYnVzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ4OmNvbmZpZyBBVEg5S19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFIQiBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Njk6Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzAtXHRib29sIFwmIzM0O0RldGFpbGVkIHN0YXRpb24gc3RhdGlzdGljc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NzY6Y29uZmlnIEFUSDlLX1RYOTlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5Njpjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTctXHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTU6Y29uZmlnIEFUSDlLX0RZTkFDS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE2LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFDSyB0aW1lb3V0IGVzdGltYXRpb24gYWxnb3JpdGhtXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTI0OmNvbmZpZyBBVEg5S19XT1dcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyNS1cdGJvb2wgXCYjMzQ7V2FrZSBvbiBXaXJlbGVzcyBMQU4gc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzMjpjb25maWcgQVRIOUtfUkZLSUxMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgcmZraWxsIHN1cHBvcnRcJiMzNDsgaWYgRVhQRVJUXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQyOmNvbmZpZyBBVEg5S19DSEFOTkVMX0NPTlRFWFRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0My1cdGJvb2wgXCYjMzQ7Q2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTE6Y29uZmlnIEFUSDlLX1BDT0VNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTItXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgc3VwcG9ydCBmb3IgUEMgT0VNIGNhcmRzXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1Njpjb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU3LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTU6Y29uZmlnIEFUSDlLX0hXUk5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTYtXHRib29sIFwmIzM0O1JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDY6Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTYyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBXaXJlbGVzcyBEcml2ZXIqKgoKT2theSwgc28gdGhlIHNwb3RsaWdodCYjMzk7cyBvbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jYC4gTXkgZmlyc3QgbW92ZSBpcyB0byBmaWd1cmUgb3V0IHRoZSBhcmNoaXRlY3R1cmFsIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgc3BlY2lmaWMgZmlsZSBpcyBpbXBvcnRhbnQuIEl0JiMzOTtzIGEgbG93LWxldmVsLCBzcGVjaWFsaXplZCBhcmVhLCBzbyBJIHN1c3BlY3QgdGhpcyBgd21pLmNgIHByb2JhYmx5IGhhbmRsZXMgdGhlIHdpcmVsZXNzIG1hbmFnZW1lbnQgaW50ZXJmYWNlIChXTUkpIHdpdGhpbiB0aGUgQXRoZXJvcyBhdGg5ayBkcml2ZXIuICBUaGUgV01JIHByb2JhYmx5IGlzIHRoYXQgY3J1Y2lhbCBpbnRlcmZhY2UsIGFuZCB0aGlzIC5jIGZpbGUgcHJvdmlkZXMgdGhlIGZ1bmN0aW9ucy4gTm93IG15IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZy4gSSBuZWVkIHRvIGZpbmQgb3V0IHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiBjb2RlLiBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgS2NvbmZpZyBzeW1ib2xzIG9yIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB3b3VsZCBwdWxsIHRoaXMgZmlsZSBpbnRvIGEga2VybmVsIGJ1aWxkLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiB3aGF0IHRoaXMgY29kZSBkb2VzIGFuZCB3aGVuIGl0cyBpbnZvbHZlZCBpbiB0aGUgZXhlY3V0aW9uIG9mIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgaW5jbHVkZXMgdGVsbCB1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3bWkubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02OS1cdFx0aGlmX3VzYi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NzA6XHRcdHdtaS5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzEtXHRcdGh0Y19kcnZfdHhyeC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYEFUSDlLX0hUQ2AgQ29udGV4dCoqCgpBbHJpZ2h0LCBzbyB0aGUgdG9waWMgYXQgaGFuZCBpcyB0aGUgYEFUSDlLX0hUQ2AgZHJpdmVyLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGlzc2VjdCBpdHMgZGVwZW5kZW5jeSBjaGFpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1vZHVsZSByZWxpZXMgb24gYXQgdGhlIGtlcm5lbCBsZXZlbC4gV2hhdCBvdGhlciBtb2R1bGVzLCBsaWJyYXJpZXMsIG9yIHN5c3RlbSBzZXJ2aWNlcyBkb2VzIGBBVEg5S19IVENgIGRlcGVuZCBvbiBmb3IgaXRzIHByb3BlciBmdW5jdGlvbmluZz8gSSBuZWVkIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiBpdHMgaW50ZXJhY3Rpb25zIHRvIHRyb3VibGVzaG9vdCBvciBtb2RpZnkgdGhlIG1vZHVsZSBlZmZlY3RpdmVseS4gQSBjbGVhciBwaWN0dXJlIG9mIGl0cyBkZXBlbmRlbmNpZXMgaXMgYWJzb2x1dGVseSBjcnVjaWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRIOUtfSFRDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTc4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHJlcXVlc3QsIHN1bW1hcml6ZWQgYXMgYSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBBVEg5S19IVEMgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIHRoZSBwcm9tcHQgd2FudHMgbWUgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBBVEg5S19IVENgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXBwcm9hY2ggdGhpcyBzeXN0ZW1hdGljYWxseS4gSSYjMzk7bGwgbmVlZCB0byBkZXRlcm1pbmUgd2hhdCBsaWJyYXJpZXMsIG1vZHVsZXMsIG9yIG90aGVyIGNvbXBvbmVudHMgYEFUSDlLX0hUQ2AgcmVsaWVzIG9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBjb3VsZCBpbnZvbHZlIGxvb2tpbmcgYXQgc291cmNlIGNvZGUsIGJ1aWxkIGZpbGVzIChsaWtlIE1ha2VmaWxlcyBvciBDTWFrZUxpc3RzLnR4dCksIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9yIGV2ZW4gZG9jdW1lbnRhdGlvbi4gSSBleHBlY3QgdG8gc2VlIGtlcm5lbCBtb2R1bGVzLCBoYXJkd2FyZSBhYnN0cmFjdGlvbnMsIGFuZCBwb3RlbnRpYWxseSB1c2VyLXNwYWNlIHV0aWxpdGllcy4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciBib3RoIGNvbXBpbGUtdGltZSBhbmQgcnVudGltZSBkZXBlbmRlbmNpZXMsIG1lYW5pbmcgd2hhdCYjMzk7cyByZXF1aXJlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHdoYXQmIzM5O3MgbG9hZGVkIHdoZW4gdGhlIG1vZHVsZSBpcyBhY3R1YWxseSBpbiB1c2UuIFRoaXMgY291bGQgaW52b2x2ZSBkcml2ZXIgY29kZSwgZmlybXdhcmUgbG9hZGluZywgYW5kIGNvbW11bmljYXRpb24gcHJvdG9jb2xzLiBNeSBleHBlcnRpc2UgaW4gdGhlIGZpZWxkIHdpbGwgYWxsb3cgbWUgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgY3J1Y2lhbCBmaWxlcyBhbmQgY29kZSBzZWN0aW9ucyB0byBmb2N1cyBvbiwgYW5kIHRvIGdyYXNwIGFueSBjb21wbGV4aXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzI6XHRjb25maWcgQVRIOUtfSFRDXG4gMTczOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4gMTc0Olx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTUFDODAyMTFcbiAxNzU6XHRcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gMTc2Olx0XHRzZWxlY3QgQVRIOUtfSFdcbiAxNzc6XHRcdHNlbGVjdCBBVEg5S19DT01NT05cbiAxNzg6XHRcdGhlbHBcbiAxNzk6XHRcdCAgU3VwcG9ydCBmb3IgQXRoZXJvcyBIVEMgYmFzZWQgY2FyZHMuXG4gMTgwOlx0XHQgIENoaXBzZXRzIHN1cHBvcnRlZDogQVI5MjcxXG4gMTgxOlx0XG4gMTgyOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxuIDE4MzpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xuIDE4NDpcdFxuIDE4NTpcdFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxuIDE4NjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDg5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGluIGEgVVNCIFdpcmVsZXNzIENvbnRleHQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0NhbiBJIGFjdHVhbGx5IHRyaWdnZXIgdGhpcyB0aGluZz8mIzM0OyBHaXZlbiB0aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgd2lyZWxlc3MgZHJpdmVyLCBhbmQgc3BlY2lmaWNhbGx5IHRoYXQgaXQmIzM5O3MgYSBVU0ItYmFzZWQgb25lLCB0aGUgZGVwZW5kZW5jaWVzIGp1bXAgb3V0OiBgVVNCYCBhbmQgdGhlIGBNQUM4MDIxMWAgc3RhY2suIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyB3b3JrYWJsZS4gVGhlIGZhY3QgaXQmIzM5O3MgVVNCIGlzIGtleTsgc3l6a2FsbGVyJiMzOTtzIFVTQiBlbXVsYXRpb24gY2FwYWJpbGl0aWVzIG1ha2UgdGhpcyBwb3RlbnRpYWxseSB2ZXJ5IGludGVyZXN0aW5nLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRlZmluaXRpdmVseSBhbnN3ZXIgdGhlIHJlYWNoYWJpbGl0eSBxdWVzdGlvbjogSXMgYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YCBhY2Nlc3NpYmxlIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudD8gR2l2ZW4gdGhpcyBpcyBhIHRhc2tsZXQgZm9yIFdNSSAoV2lyZWxlc3MgTWFuYWdlbWVudCBJbnRlcmZhY2UpIGV2ZW50cywgaXQgaW1wbGllcyBzb21lIHVuZGVybHlpbmcgbWVzc2FnZSBwYXNzaW5nIG1lY2hhbmlzbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGlzIGZ1bmN0aW9uLiBXaGVyZSBpcyBgd21pX2V2ZW50X3Rhc2tsZXRgIGFjdHVhbGx5IGJlaW5nIHNjaGVkdWxlZD8gVW5kZXJzdGFuZGluZyB0aGUgdHJpZ2dlcmluZyBwYXRoIGlzIGNyaXRpY2FsIHRvIGNyYWZ0aW5nIGEgcmVsaWFibGUgZXhwbG9pdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d21pX2V2ZW50X3Rhc2tsZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz05MzE9aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtOTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjk2OTpcdC8qIEFsbG93IGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KCkgdG8gb3BlcmF0ZS4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NzAtXHRzbXBfd21iKCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU1MS1cdGh0Y19zdG9wKHByaXYtXHUwMDNlaHRjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1NTI6XHR0YXNrbGV0X2tpbGwoXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNld21pX2V2ZW50X3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU1My1cdHRhc2tsZXRfa2lsbChcdTAwMjZwcml2LVx1MDAzZXR4X2ZhaWxlZF90YXNrbGV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9OTE9c3RydWN0IHdtaSAqYXRoOWtfaW5pdF93bWkoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMDgtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ3bWktXHUwMDNlcGVuZGluZ190eF9ldmVudHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjEwOTpcdHRhc2tsZXRfc2V0dXAoXHUwMDI2d21pLVx1MDAzZXdtaV9ldmVudF90YXNrbGV0LCBhdGg5a193bWlfZXZlbnRfdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTEwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0xMjg9dm9pZCBhdGg5a193bWlfZXZlbnRfZHJhaW4oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTMyOlx0dGFza2xldF9raWxsKFx1MDAyNnByaXYtXHUwMDNld21pLVx1MDAzZXdtaV9ldmVudF90YXNrbGV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMzMtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTM4OnZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTEzOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTQwOlx0c3RydWN0IHdtaSAqd21pID0gZnJvbV90YXNrbGV0KHdtaSwgdCwgd21pX2V2ZW50X3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE0MS1cdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IHdtaS1cdTAwM2VkcnZfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MjE4PXN0YXRpYyB2b2lkIGF0aDlrX3dtaV9jdHJsX3J4KHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTIzOS1cdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZ3bWktXHUwMDNld21pX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoyNDA6XHRcdHRhc2tsZXRfc2NoZWR1bGUoXHUwMDI2d21pLVx1MDAzZXdtaV9ldmVudF90YXNrbGV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yNDEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9MTQ4PXN0cnVjdCB3bWkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC0xNTUtXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHdtaV9ldmVudF9xdWV1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDoxNTY6XHRzdHJ1Y3QgdGFza2xldF9zdHJ1Y3Qgd21pX2V2ZW50X3Rhc2tsZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTU3LVx0dTE2IHR4X3NlcV9pZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9MTg0PWludCBhdGg5a193bWlfY21kKHN0cnVjdCB3bWkgKndtaSwgZW51bSB3bWlfY21kX2lkIGNtZF9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTg3LVx0XHQgIHUzMiB0aW1lb3V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDoxODg6dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTE4OS12b2lkIGF0aDlrX2ZhdGFsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE3MAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIGF0aDlrX3dtaV9jdHJsX3J4IENhbGwgQ2hhaW4qKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgYXRoOWtfd21pX2N0cmxfcnhgIGZ1bmN0aW9uLCBhbmQgSSBzZWUgYSB0YXNrbGV0IGJlaW5nIHNjaGVkdWxlZCB3aXRoaW4gaXQuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBUYXNrbGV0cyBhcmUgdHlwaWNhbGx5IHVzZWQgZm9yIGRlZmVycmVkIHdvcmsgaW4gdGhlIGtlcm5lbCwgb2Z0ZW4gcmVsYXRlZCB0byBpbnRlcnJ1cHQgaGFuZGxpbmcgb3Igc29tZSBmb3JtIG9mIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nLiYjMzQ7IE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBwaWN0dXJlLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBrbm93IHdoZXJlIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZyb20uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb250ZXh0LiAmIzM0O0xldCYjMzk7cyBiYWNrdHJhY2ssIGFuYWx5emUgd2hlcmUgYGF0aDlrX3dtaV9jdHJsX3J4YCBpcyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aHkgdGhpcyB0YXNrbGV0IGlzIGJlaW5nIHVzZWQgYW5kIHdoYXQgZGF0YSBpdCYjMzk7cyBsaWtlbHkgb3BlcmF0aW5nIG9uIHdpdGhpbiB0aGUgYGF0aDlrYCB3aXJlbGVzcyBkcml2ZXIuJiMzNDsgSSBuZWVkIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLiBJIGtub3cgaXQmIzM5O3MgYSByZWNlaXZlIHBhdGgsIGJ1dCBJIG5lZWQgdG8ga25vdyB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSB0byBhc3Nlc3MgaWYgYW55IG1vZGlmaWNhdGlvbnMgaW4gdGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGFyZSBjYXVzaW5nIGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfd21pX2N0cmxfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0yMDg9c3RhdGljIHZvaWQgYXRoOWtfd21pX3JzcF9jYWxsYmFjayhzdHJ1Y3Qgd21pICp3bWksIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoyMTg6c3RhdGljIHZvaWQgYXRoOWtfd21pX2N0cmxfcngodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yMTktXHRcdFx0ICAgICAgZW51bSBodGNfZW5kcG9pbnRfaWQgZXBpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MjY1PWludCBhdGg5a193bWlfY29ubmVjdChzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjLCBzdHJ1Y3Qgd21pICp3bWksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTI3Ni1cdGNvbm5lY3QuZXBfY2FsbGJhY2tzLnR4ID0gYXRoOWtfd21pX2N0cmxfdHg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6Mjc3Olx0Y29ubmVjdC5lcF9jYWxsYmFja3MucnggPSBhdGg5a193bWlfY3RybF9yeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yNzgtXHRjb25uZWN0LnNlcnZpY2VfaWQgPSBXTUlfQ09OVFJPTF9TVkM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MzYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQbGFuIGZvciBXTUlfQ09OVFJPTF9TVkMgQ2FsbGJhY2sqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZW5kcG9pbnQgY2FsbGJhY2sgZm9yIGBXTUlfQ09OVFJPTF9TVkNgLiBUaGlzIGlzIGEgVVNCIGRldmljZSwgc28gaXQmIzM5O3MgcHJpbWUgdGFyZ2V0IGZvciBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enplci4gVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgYSBkYXRhIHJhY2Ugb24gYHByaXYtJmd0O2luaXRpYWxpemVkYCBhbmQgaW5jbHVkZXMgYSBtZW1vcnkgYmFycmllciDigJMgdGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiBpdCYjMzk7cyB0b3VjaGluZyBzb21ldGhpbmcgaW1wb3J0YW50LgoKVGhlIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAgZnVuY3Rpb24gKmlzKiBkZWZpbml0ZWx5IHJlYWNoYWJsZS4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciBvciBub3QgaXQmIzM5O3MgYWN0dWFsbHkgd29ydGggdGhlIGVmZm9ydCB0byBmdXp6IGl0LiBZZXMsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciwgc28gaXQgcHJvYmFibHkgaXMuCgpMZXQmIzM5O3Mgc2VlLCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBhYnNvbHV0ZWx5IHJlcXVpcmVkPyBJJiMzOTttIHRoaW5raW5nOiBgQVRIOUtfSFRDYCwgYFVTQmAsIGFuZCBvZiBjb3Vyc2UgYE1BQzgwMjExYC4KClJpZ2h0LCBsZXQmIzM5O3MganVzdCBkb3VibGUgY2hlY2sgYEFUSDlLX0hUQ2AmIzM5O3MgZGVwZW5kZW5jaWVzIGluIHRoZSBLY29uZmlnLCB0byBiZSBjZXJ0YWluIHdlIGhhdmUgZXZlcnl0aGluZy4gKlllcCosIHRoYXQgY29uZmlybXMgaXQ6IGBBVEg5S19IVENgIGRlcGVuZHMgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAsIGFuZCBhbHNvIHNlbGVjdHMgYEFUSDlLX0hXYCBhbmQgYEFUSDlLX0NPTU1PTmAgc28gd2UmIzM5O2xsIG5lZWQgYWxsIHRob3NlIGVuYWJsZWQsIGJ1dCB0aGF0JiMzOTtzIHRha2VuIGNhcmUgb2YgYnkgZW5hYmxpbmcgdGhlIGFib3ZlIGRlcGVuZGVuY2llcy4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUgbW9zdCBwcm9taXNpbmcgZnV6emluZyB0YXJnZXRzPyBEZWZpbml0ZWx5IGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAuIEkgc2hvdWxkIGFsc28gbG9vayBhdCBgYXRoOWtfd21pX2N0cmxfcnhgIGFuZCBgYXRoOWtfaHRjX3Byb2JlX2RldmljZWAuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGVpciB2aXNpYmlsaXR5LiBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGlzIG5vdCBzdGF0aWMsIGdvb2QsIHRoYXQgbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZS4gYGF0aDlrX3dtaV9jdHJsX3J4YCBpcyBzdGF0aWMuIEFscmlnaHQsIHRoYXQmIzM5O3Mgbm90IGFzIGludGVyZXN0aW5nIHRoZW4uIGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYCBpcyBhbHNvIG5vdCBzdGF0aWMuIE9rYXksIGdvb2QuIFRoYXQgbWVhbnMgdGhlc2UgdHdvIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSB3b3J0aCBwdXR0aW5nIGludG8gdGhlIGZ1enppbmcgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg5a19odGNfcHJvYmVfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjMxPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19sZWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTYzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2MzY6aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02MzctXHRcdFx0ICAgdTE2IGRldmlkLCBjaGFyICpwcm9kdWN0LCB1MzIgZHJ2X2luZm8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz04Mjg9c3RhdGljIGludCBhdGg5a19pbml0X2RldmljZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTkzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo5MzE6aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05MzItXHRcdFx0ICAgdTE2IGRldmlkLCBjaGFyICpwcm9kdWN0LCB1MzIgZHJ2X2luZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYz01Mjg9aW50IGF0aDlrX2h0Y19od19pbml0KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy01MzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzo1MzI6XHRpZiAoYXRoOWtfaHRjX3Byb2JlX2RldmljZSh0YXJnZXQsIGRldiwgZGV2aWQsIHByb2R1Y3QsIGRydl9pbmZvKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYy01MzMtXHRcdHByX2VycihcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZGV2aWNlXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTQ5Olx0LyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNTAtXHRpZiAoIWRhdGFfcmFjZShwcml2LVx1MDAzZWluaXRpYWxpemVkKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTUyLVx0LypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxNTM6XHQgKiBNYWtlIHN1cmUgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGluaXRpYWxpemF0aW9uIGlzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTU0LVx0ICogY29tbWl0dGVkIHRvIG1lbW9yeSBiZWZvcmUgcHJvY2Vzc2luZyBza2IuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDM2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBhdGg5a2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhpcyBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIHRvIGJlIHRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb25zLiBUbyB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZ29pbmcgb24sIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlcmUuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhlIGtleSBpcyB0aGUgc3RhdGUgb2YgYHByaXYtJmd0O2luaXRpYWxpemVkYC4gV2hlcmUgZXhhY3RseSBpcyB0aGF0IGZsYWcgZmxpcHBlZD8gTG9va2luZyBhdCB0aGUgY29kZSwgaXQgbG9va3MgbGlrZSBgYXRoOWtfaHRjX3Byb2JlX2RldmljZWAgaXMgdGhlIGxpa2VseSBjdWxwcml0LiBMZXQgbWUgdmVyaWZ5IHRoYXQgYW5kIHNlZSB3aGF0IHRoYXQgdGVsbHMgbWUgYWJvdXQgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdyBhbmQgdGhlIGRlcGVuZGVuY2llcyBsZWFkaW5nIGludG8gYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YC4gRnJvbSB0aGVyZSBJIGNhbiB1bmRlcnN0YW5kIHdoYXQgdGhvc2UgbW9kaWZpY2F0aW9ucyBhY3R1YWxseSBhY2hpZXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcml2LVx1MDAzZWluaXRpYWxpemVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9OTMxPWludCBhdGg5a19odGNfcHJvYmVfZGV2aWNlKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTk3MC1cdHNtcF93bWIoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo5NzE6XHRwcml2LVx1MDAzZWluaXRpYWxpemVkID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTQ5LVx0LyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxNTA6XHRpZiAoIWRhdGFfcmFjZShwcml2LVx1MDAzZWluaXRpYWxpemVkKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNTEtXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5OTMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBhdGg5a19odGMgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBpbml0aWFsaXphdGlvbiBmbG93IHdpdGhpbiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBzcGVjaWZpY2FsbHksIGhvdyB0aGUgaGFyZHdhcmUgZ2V0cyBzZXQgdXAuIEl0IHNlZW1zIGxpa2UgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgIGlzIHRoZSBzdGFydGluZyBwb2ludCwgYXMgaXQgc2V0cyB0aGF0IGNydWNpYWwgYHByaXYtJmd0O2luaXRpYWxpemVkYCBmbGFnLiBUaGVuLCBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGFwcGFyZW50bHkgZGVwZW5kcyBvbiB0aGlzIGZsYWcuIFRob3NlIGxvb2sgbGlrZSB0aGUga2V5IHN5bWJvbHMgdG8gdHJhY2suIEkgc3VzcGVjdCB0aGF0IHRoZSBldmVudCB0YXNrbGV0IG1heSBiZSB0aGUgc291cmNlIG9mIG15IHJlY2VudCBwcm9ibGVtLgoKTm93LCBJJiMzOTttIGp1c3QgcXVpY2tseSBjaGVja2luZyBpZiBgYXRoOWtfaHRjX2h3X2luaXRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBObywgaXQgaXNuJiMzOTt0LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQganVzdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBjb3JyZWN0IGluIHRoYXQgYXNzdW1wdGlvbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg5a19odGNfaHdfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0xMjI2PXN0YXRpYyB2b2lkIGF0aDlrX2hpZl91c2JfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgdm9pZCAqY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTEyNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjEyNTY6XHRyZXQgPSBhdGg5a19odGNfaHdfaW5pdChoaWZfZGV2LVx1MDAzZWh0Y19oYW5kbGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTEyNTctXHRcdFx0XHRcdTAwMjZoaWZfZGV2LVx1MDAzZWludGVyZmFjZS1cdTAwM2VkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYz01MjM9dm9pZCBhdGg5a19odGNfaHdfZnJlZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtNTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYzo1Mjg6aW50IGF0aDlrX2h0Y19od19pbml0KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jLTUyOS1cdFx0ICAgICAgc3RydWN0IGRldmljZSAqZGV2LCB1MTYgZGV2aWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuaD0yMjQ9dm9pZCBhdGg5a19odGNfaHdfZnJlZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0Lmg6MjI1OmludCBhdGg5a19odGNfaHdfaW5pdChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuaC0yMjYtXHRcdCAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiwgdTE2IGRldmlkLCBjaGFyICpwcm9kdWN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc4MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDgxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvbXBpbGF0aW9uIFJlcXVpcmVtZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zOiBgYXRoOWtfaHRjX2h3X2luaXRgLCBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgLCBhbmQgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgLiBUaGV5JiMzOTtyZSBub24tc3RhdGljLCB3aGljaCBtZWFucyB0aGV5JiMzOTtyZSBsaWtlbHkgZW50cnkgcG9pbnRzIG9yIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4KCkkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdG8gY29tcGlsZSB0aGlzIGNvZGUgc3RhdGljYWxseS4gVGhlIGtleSBoZXJlIGlzIHRvIGlkZW50aWZ5IGRlcGVuZGVuY2llcy4gQmFzZWQgb24gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG15IGtub3dsZWRnZSwgSSYjMzk7bSBwcmV0dHkgc3VyZSBgQVRIOUtfSFRDYCBpcyB0aGUgcHJpbWFyeSBjb25maWcgbmVlZGVkLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjay4gT2theSwgeWVzLCBgQVRIOUtfSFRDYCBkb2VzIGluZGVlZCBkZXBlbmQgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAuIFRoZXNlIGFyZSBwcmV0dHkgZnVuZGFtZW50YWwgc3Vic3lzdGVtcywgYnV0IHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBsaXN0IGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzLiBXZWxsLCBgVVNCYCBhbmQgYE1BQzgwMjExYCBhcmUgc3RhbmRhcmQgc28gaXQgcHJvYmFibHkgd29uJiMzOTt0IGh1cnQgdG8gYmUgZXhwbGljaXQuIEl0JiMzOTtzIHNhZmUgdG8gaW5jbHVkZSBgQVRIOUtfSFRDYC4KCkFscmlnaHQsIGxldCYjMzk7cyBpbmNsdWRlIGp1c3QgYEFUSDlLX0hUQ2AuCgoqKlJldmlld2luZyB0aGUgUGF0Y2ggYW5kIEl0cyBJbXBsaWNhdGlvbnMqKgoKTm93LCBJJiMzOTttIHJldmlld2luZyB0aGUgcGF0Y2ggaXRzZWxmLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byB0aGUgYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YC4gVGhlIHBhdGNoIGlzIGd1YXJkaW5nIGFnYWluc3QgcHJlbWF0dXJlIGV4ZWN1dGlvbiBiZWZvcmUgdGhlIGRldmljZSBoYXMgZnVsbHkgaW5pdGlhbGl6ZWQsIHNwZWNpZmljYWxseSBjaGVja2luZyBgcHJpdi0mZ3Q7aW5pdGlhbGl6ZWRgLiBCZWZvcmUsIHRoZXJlIHdhcyBhIGRvdWJsZSBjaGVjayB0aGF0IHdhcyByZW1vdmVkLiBOb3cgdGhlIHRhc2tsZXQgd2lsbCBqdXN0IHJldHVybiBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBpbml0aWFsaXplZC4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIElmIHRoZSB0YXNrbGV0IHJldHVybnMsIHdoYXQgd2lsbCBzY2hlZHVsZSBpdCBhZ2Fpbj8gVGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgc2Vjb25kIGNoZWNrIHRoYXQgd291bGQgZnJlZSB0aGUgc2tiIGlmIHRoZSBkcml2ZXIgaGFkIG5vdCBpbml0aWFsaXplZC4gUmVtb3ZpbmcgdGhlIHNlY29uZCBjaGVjayBtZWFucyB0aGUgc2tiIGlzIGxlZnQgaW4gdGhlIHF1ZXVlLiBNeSBjb25jZXJuIGhlcmUgaXMgaWYgdGhlIHRhc2tsZXQgaXNuJiMzOTt0IHNjaGVkdWxlZCB1bnRpbCBgcHJpdi0mZ3Q7aW5pdGlhbGl6ZWRgIGJlY29tZXMgdHJ1ZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSBpbiBgYXRoOWtfaHRjX3Byb2JlX2RldmljZWAgdG8gc2VlIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdGFza2xldCBzY2hlZHVsaW5nLiBJcyBpdCBwb3NzaWJsZSBmb3IgdGhlIGRyaXZlciB0byBiZSBpbiBhIGJhZCBzdGF0ZT8gCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rhc2tsZXRfc2NoZWR1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02OTA9dm9pZCBhdGg5a19odGNfdHhlcCh2b2lkICpkcnZfcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAyLVx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2ZhaWxlZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MDM6XHRcdHRhc2tsZXRfc2NoZWR1bGUoXHUwMDI2cHJpdi1cdTAwM2V0eF9mYWlsZWRfdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzA0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTExMzU9dm9pZCBhdGg5a19odGNfcnhlcCh2b2lkICpkcnZfcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTY3Olx0dGFza2xldF9zY2hlZHVsZShcdTAwMjZwcml2LVx1MDAzZXJ4X3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExNjgtXHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYz00ODg9aXJxcmV0dXJuX3QgYXRoX2lzcihpbnQgaXJxLCB2b2lkICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYy01NjYtXHRpZiAoc3RhdHVzIFx1MDAyNiBBVEg5S19JTlRfU1dCQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmM6NTY3Olx0XHR0YXNrbGV0X3NjaGVkdWxlKFx1MDAyNnNjLVx1MDAzZWJjb25fdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTU2OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTU5Ni1cdFx0YXRoOWtfaHdfa2lsbF9pbnRlcnJ1cHRzKGFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmM6NTk3Olx0XHR0YXNrbGV0X3NjaGVkdWxlKFx1MDAyNnNjLVx1MDAzZWludHJfdHEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYy01OTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTIxOD1zdGF0aWMgdm9pZCBhdGg5a193bWlfY3RybF9yeCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yMzktXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2d21pLVx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MjQwOlx0XHR0YXNrbGV0X3NjaGVkdWxlKFx1MDAyNndtaS1cdTAwM2V3bWlfZXZlbnRfdGFza2xldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMjQxLVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzODAwCgkJCQkJCQlvdXRwdXQ6IDEzNgoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGF0aDlrX2h0YyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgYXRoOWtfaHRjYCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGFuZCBzb21ldGhpbmcmIzM5O3MgYnVnZ2luZyBtZS4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCBgYXRoOWtfaHRjX3Byb2JlX2RldmljZWAgd2FzIHJlc3BvbnNpYmxlIGZvciBzY2hlZHVsaW5nIHRoZSB0YXNrbGV0LiBCdXQgd2FpdCBhIHNlY29uZC4uLiBpdCBsb29rcyBsaWtlIGl0ICpkb2VzbiYjMzk7dCogZGlyZWN0bHkgY2FsbCBgdGFza2xldF9zY2hlZHVsZSgpYC4gSW5zdGVhZCwgaXQganVzdCBzZXRzIGBwcml2LSZndDtpbml0aWFsaXplZCA9IHRydWVgIHdpdGggYSBgc21wX3dtYigpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlmIHRoZXJlIGFyZSBhbHJlYWR5IHNrYnMgKHNvY2tldCBidWZmZXIpIGluIHRoZSBxdWV1ZSwgdGhleSYjMzk7cmUgZ29pbmcgdG8gZ2V0IHByb2Nlc3NlZCB3aGVuIHRoZSBuZXh0IFdNSSAoV2lyZWxlc3MgTWFuYWdlbWVudCBJbnRlcmZhY2UpIGV2ZW50IG9jY3Vycy4gVGhhdCBldmVudCBzaG91bGQgYmUgdGhlIHRyaWdnZXIsIGFuZCB3aWxsIGludm9rZSB0aGUgYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YC4KCkJ1dCB0aGVuIGFnYWluLCB0aGVyZSBpcyBhIGNoYW5jZSB0aGF0IEkgYW0gbWlzc2luZyBzb21ldGhpbmcuIE1heWJlIHRoaXMgaXMgYSBidWcsIG1lYW5pbmcgaXQgKmlzbiYjMzk7dCogcHJvY2Vzc2luZyB0aGVtLiBFaXRoZXIgd2F5LCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZyb20gd2hhdCBJIHdhcyBleHBlY3RpbmcgaW4gdGhpcyBzZWN0aW9uIG9mIHRoZSBkcml2ZXIuIEkgbmVlZCB0byBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZmxvdyBpcyBjb3JyZWN0LgoKSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIGNydWNpYWwgc3ltYm9sczogYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YCBhbmQgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJJiMzOTttIG9wZXJhdGluZyB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGBBVEg5S19IVENgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAgYXJlIGFsbCBlbmFibGVkLiBKdXN0IHRvIGJlIHN1cmUsIGlzIGBBVEg5S19IVENgIHN1ZmZpY2llbnQsIG9yIGFyZSB0aGVyZSBtb3JlIHRoYXQgSSBuZWVkIHRvIGNoZWNrPyBJdCBsb29rcyBsaWtlIGBBVEg5S19IVENgIHNlbGVjdHMgYEFUSDlLX0hXYCBhbmQgYEFUSDlLX0NPTU1PTmAsIHNvIHRob3NlIGFyZSBjb3ZlcmVkLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gbXkgYW5hbHlzaXMgbm93LiBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDlrX3dtaV9ldmVudF90YXNrbGV0JiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y19wcm9iZV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdNSSBldmVudCB0YXNrbGV0IGluIHRoZSBhdGg5a19odGMgZHJpdmVyIHRvIHByZXZlbnQgZnJlZWluZyBza2JzIHdoZW4gdGhlIGRldmljZSBpcyBub3QgeWV0IGZ1bGx5IGluaXRpYWxpemVkLCBhbmQgYWRkcyBhIG1lbW9yeSBiYXJyaWVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCIHdpcmVsZXNzIGRyaXZlciB0aGF0IGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGg5a193bWlfZXZlbnRfdGFza2xldCYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfcHJvYmVfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXTUkgZXZlbnQgdGFza2xldCBpbiB0aGUgYXRoOWtfaHRjIGRyaXZlciB0byBwcmV2ZW50IGZyZWVpbmcgc2ticyB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZCwgYW5kIGFkZHMgYSBtZW1vcnkgYmFycmllci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIFVTQiB3aXJlbGVzcyBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MTQuMjkzMTAzNDQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA5MDA0NDE3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRcIixcbiAgICBcImF0aDlrX2h0Y19wcm9iZV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV01JIGV2ZW50IHRhc2tsZXQgaW4gdGhlIGF0aDlrX2h0YyBkcml2ZXIgdG8gcHJldmVudCBmcmVlaW5nIHNrYnMgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQsIGFuZCBhZGRzIGEgbWVtb3J5IGJhcnJpZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBVU0Igd2lyZWxlc3MgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MTQuMjkzMTEyMTQ4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjcyMDM3ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMDdiYmM3Y2NlNGMzMTA3OTdlZjMxOGI2MThmZTAxMGViNGNjZjE4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMDk6MTU6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXFxuaW5kZXggMjg0ZThjMTNiMDQzMC4uZGY0YTNhNjI1NTM2ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcXG5AQCAtMTQ2LDYgKzE0NiwxNSBAQCB2b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFx0dTE2IGNtZF9pZDtcXG4gXFxuK1xcdC8qIENoZWNrIGlmIGF0aDlrX2h0Y19wcm9iZV9kZXZpY2UoKSBjb21wbGV0ZWQuICovXFxuK1xcdGlmICghZGF0YV9yYWNlKHByaXYtXFx1MDAzZWluaXRpYWxpemVkKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHQvKlxcbitcXHQgKiBNYWtlIHN1cmUgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGluaXRpYWxpemF0aW9uIGlzXFxuK1xcdCAqIGNvbW1pdHRlZCB0byBtZW1vcnkgYmVmb3JlIHByb2Nlc3Npbmcgc2tiLlxcbitcXHQgKi9cXG4rXFx0c21wX3JtYigpO1xcbitcXG4gXFx0ZG8ge1xcbiBcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2d21pLVxcdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xcbiBcXHRcXHRza2IgPSBfX3NrYl9kZXF1ZXVlKFxcdTAwMjZ3bWktXFx1MDAzZXdtaV9ldmVudF9xdWV1ZSk7XFxuQEAgLTE1NSwxMiArMTY0LDYgQEAgdm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuIFxcdFxcdH1cXG4gXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2d21pLVxcdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xcbiBcXG4tXFx0XFx0LyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi9cXG4tXFx0XFx0aWYgKCFkYXRhX3JhY2UocHJpdi1cXHUwMDNlaW5pdGlhbGl6ZWQpKSB7XFxuLVxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0fVxcbi1cXG4gXFx0XFx0aGRyID0gKHN0cnVjdCB3bWlfY21kX2hkciAqKSBza2ItXFx1MDAzZWRhdGE7XFxuIFxcdFxcdGNtZF9pZCA9IGJlMTZfdG9fY3B1KGhkci1cXHUwMDNlY29tbWFuZF9pZCk7XFxuIFxcdFxcdHdtaV9ldmVudCA9IHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hkcikpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNToxNC43NjEwMjkyMjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MDQzMjUwMTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGg5a193bWlfZXZlbnRfdGFza2xldFwiLFxuICAgIFwiYXRoOWtfaHRjX3Byb2JlX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXTUkgZXZlbnQgdGFza2xldCBpbiB0aGUgYXRoOWtfaHRjIGRyaXZlciB0byBwcmV2ZW50IGZyZWVpbmcgc2ticyB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZCwgYW5kIGFkZHMgYSBtZW1vcnkgYmFycmllci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIFVTQiB3aXJlbGVzcyBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMDdiYmM3Y2NlNGMzMTA3OTdlZjMxOGI2MThmZTAxMGViNGNjZjE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwOToxNToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY1xuaW5kZXggMjg0ZThjMTNiMDQzMC4uZGY0YTNhNjI1NTM2ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG5AQCAtMTQ2LDYgKzE0NiwxNSBAQCB2b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHR1MTYgY21kX2lkO1xuIFxuK1x0LyogQ2hlY2sgaWYgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGNvbXBsZXRlZC4gKi9cbitcdGlmICghZGF0YV9yYWNlKHByaXYtXHUwMDNlaW5pdGlhbGl6ZWQpKVxuK1x0XHRyZXR1cm47XG4rXHQvKlxuK1x0ICogTWFrZSBzdXJlIGF0aDlrX2h0Y19wcm9iZV9kZXZpY2UoKSBpbml0aWFsaXphdGlvbiBpc1xuK1x0ICogY29tbWl0dGVkIHRvIG1lbW9yeSBiZWZvcmUgcHJvY2Vzc2luZyBza2IuXG4rXHQgKi9cbitcdHNtcF9ybWIoKTtcbitcbiBcdGRvIHtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2d21pLVx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XG4gXHRcdHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2d21pLVx1MDAzZXdtaV9ldmVudF9xdWV1ZSk7XG5AQCAtMTU1LDEyICsxNjQsNiBAQCB2b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbiBcdFx0fVxuIFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNndtaS1cdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xuIFxuLVx0XHQvKiBDaGVjayBpZiBhdGg5a19odGNfcHJvYmVfZGV2aWNlKCkgY29tcGxldGVkLiAqL1xuLVx0XHRpZiAoIWRhdGFfcmFjZShwcml2LVx1MDAzZWluaXRpYWxpemVkKSkge1xuLVx0XHRcdGtmcmVlX3NrYihza2IpO1xuLVx0XHRcdGNvbnRpbnVlO1xuLVx0XHR9XG4tXG4gXHRcdGhkciA9IChzdHJ1Y3Qgd21pX2NtZF9oZHIgKikgc2tiLVx1MDAzZWRhdGE7XG4gXHRcdGNtZF9pZCA9IGJlMTZfdG9fY3B1KGhkci1cdTAwM2Vjb21tYW5kX2lkKTtcbiBcdFx0d21pX2V2ZW50ID0gc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHdtaV9jbWRfaGRyKSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNToxNC43NjEwMzA1MTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjczNjk1MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNgLiBJdCdzIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIGNoZWNrLCBgaWYgKCFkYXRhX3JhY2UocHJpdi1cdTAwM2Vpbml0aWFsaXplZCkpYCwgdG8gdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSB0YXNrbGV0LiBUaGV5J3ZlIGFsc28gYWRkZWQgYW4gYHNtcF9ybWIoKWAgdGhlcmUuIFRoZSBpZGVhIGlzLCBpZiB0aGUgZHJpdmVyIGlzbid0IGluaXRpYWxpemVkLCB3ZSBiYWlsIG91dCBlYXJseS4gSW5zdGVhZCBvZiBmcmVlaW5nIHRoZSBgc2tiYCBhbmQgY2Fycnlpbmcgb24sIHdlJ3JlIHJldHVybmluZy5cblxuSG9sZCBvbiBhIHNlY29uZC4uLiBpZiB3ZSByZXR1cm4gKmJlZm9yZSogcHJvY2Vzc2luZyB0aGUgYHNrYmAsIGRvZXNuJ3QgdGhhdCBtZWFuIHRoZSBgc2tiYCBpcyBsZWZ0IGluIHRoZSBxdWV1ZT8gWWVzLCB0aGF0J3Mgd2hhdCBzZWVtcyB0byBiZSBoYXBwZW5pbmcgaGVyZS4gU28gdGhlIHRhc2tsZXQgKndvbid0KiBwcm9jZXNzIHRoYXQgcGFydGljdWxhciBgc2tiYC4gVGhhdCdzIGltcG9ydGFudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBJIHNob3VsZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgd2hhdCdzIGdvaW5nIG9uIHdpdGhpbiB0aGF0IHRhc2tsZXQuIExldCdzIGRpZyBpbnRvIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAgaW4gbW9yZSBkZXRhaWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNToyMC4wMzQ3Mjg0MThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc0ODEzNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz05MT1zdHJ1Y3Qgd21pICphdGg5a19pbml0X3dtaShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTA4LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ3bWktXFx1MDAzZXBlbmRpbmdfdHhfZXZlbnRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTA5OlxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNndtaS1cXHUwMDNld21pX2V2ZW50X3Rhc2tsZXQsIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEyOD12b2lkIGF0aDlrX3dtaV9ldmVudF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxMzg6dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTEzOS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE1OjIwLjExMjIxNTM5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MjM0NzEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYXRoOWsgQ29uZmlndXJhdGlvbiBSZXF1aXJlbWVudHMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBpcyB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgZm9yIGF0aDlrLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0aGlzOiBnaXZlbiBteSBleHBlcnRpc2UsIEknbSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdHlwaWNhbCBhcmVhcyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGludm9sdmVzIGEgcXVpY2sgbWVudGFsIGNoZWNrIG9mIGRldmljZSBpbml0aWFsaXphdGlvbiwgcG93ZXIgbWFuYWdlbWVudCwgcmVndWxhdG9yeSBkb21haW5zLCBhbmQgYW55IHNwZWNpZmljIGRyaXZlciBxdWlya3MgSSdtIGZhbWlsaWFyIHdpdGggZnJvbSBwcmV2aW91cyBleHBlcmllbmNlcyBkZWFsaW5nIHdpdGggYXRoOWstYmFzZWQgaGFyZHdhcmUuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGUgdHlwaWNhbCBjb21tYW5kLWxpbmUgdG9vbHMgdG8gdXNlLCBzdWNoIGFzIGBpd2AsIGBpZmNvbmZpZ2AsIGFuZCBwZXJoYXBzIHNvbWUgbW9kdWxlIHBhcmFtZXRlcnMuXG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGUgdGFzayBkZW1hbmRzIGEgYnJvYWQgb3ZlcnZpZXcgb2YgcG9zc2libGUgY29uZmlndXJhdGlvbnMgb3IgYSBzcGVjaWZpYywgdGFyZ2V0ZWQgc2V0IG9mIG9wdGltaXphdGlvbnMuIEknbGwgdGhpbmsgYWJvdXQgd2hldGhlciB0aGlzIGlzIGZvciBhIGdlbmVyYWwtcHVycG9zZSBidWlsZCwgYSBjdXN0b20gZW1iZWRkZWQgc3lzdGVtLCBvciBkZWJ1Z2dpbmcgYSBzcGVjaWZpYyBpc3N1ZS4gVGhhdCB3aWxsIGluZm9ybSB3aGV0aGVyIEkgbmVlZCB0byBjb25zaWRlciB2YXJpb3VzIGhhcmR3YXJlIG1vZGVscyBhbmQgZHJpdmVyIHZlcnNpb25zLlxuXG5Fc3NlbnRpYWxseSwgSSdtIG1lbnRhbGx5IGNvbnN0cnVjdGluZyBhIHJvYWRtYXAsIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBrZXkgYXJlYXMgdG8gaW52ZXN0aWdhdGUsIGluY2x1ZGluZyBhbnkgcG90ZW50aWFsIGdvdGNoYXMuIEknbGwgbmVlZCB0byBmb3JtdWxhdGUgYSBzdHJhdGVneSBvbiBob3cgdG8gYXBwcm9hY2ggdGhpcyB0YXNrIGluIHRoZSBtb3N0IGVmZmljaWVudCBtYW5uZXIsIHdoaWNoIGRlcGVuZHMgb24gdGhlIGNvbnRleHQgYW5kIHRoZSBhaW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNToyNC4xMDQ1NjU4NTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE2MDIxMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUSDlLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mjpjb25maWcgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDpjb25maWcgQVRIOUtfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYtXFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3OmNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy04LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5OmNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzOmNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMTpjb25maWcgQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzozOTpjb25maWcgQVRIOUtfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBQQ0kvUENJZSBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ4OmNvbmZpZyBBVEg5S19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00OS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIEFIQiBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjU4OmNvbmZpZyBBVEg5S19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTktXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2OTpjb25maWcgQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NzY6Y29uZmlnIEFUSDlLX1RYOTlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Ny1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTY6Y29uZmlnIEFUSDlLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05Ny1cXHRib29sIFxcXCJBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNTpjb25maWcgQVRIOUtfRFlOQUNLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE2LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgQUNLIHRpbWVvdXQgZXN0aW1hdGlvbiBhbGdvcml0aG1cXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTI0OmNvbmZpZyBBVEg5S19XT1dcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjUtXFx0Ym9vbCBcXFwiV2FrZSBvbiBXaXJlbGVzcyBMQU4gc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzI6Y29uZmlnIEFUSDlLX1JGS0lMTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIHJma2lsbCBzdXBwb3J0XFxcIiBpZiBFWFBFUlRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDI6Y29uZmlnIEFUSDlLX0NIQU5ORUxfQ09OVEVYVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0My1cXHRib29sIFxcXCJDaGFubmVsIENvbnRleHQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTE6Y29uZmlnIEFUSDlLX1BDT0VNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUyLVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgc3VwcG9ydCBmb3IgUEMgT0VNIGNhcmRzXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTY6Y29uZmlnIEFUSDlLX1BDSV9OT19FRVBST01cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTctXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoOWsgcGNpIGxvYWRlciBmb3IgRUVQUk9NLWxlc3MgY2hpcHNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk1OmNvbmZpZyBBVEg5S19IV1JOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5Ni1cXHRib29sIFxcXCJSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwNjpjb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MjQuMTc2MTcyOTU3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM0Njc3MjkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgc3BvdGxpZ2h0J3Mgb24gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY2AuIE15IGZpcnN0IG1vdmUgaXMgdG8gZmlndXJlIG91dCB0aGUgYXJjaGl0ZWN0dXJhbCBjb250ZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIHNwZWNpZmljIGZpbGUgaXMgaW1wb3J0YW50LiBJdCdzIGEgbG93LWxldmVsLCBzcGVjaWFsaXplZCBhcmVhLCBzbyBJIHN1c3BlY3QgdGhpcyBgd21pLmNgIHByb2JhYmx5IGhhbmRsZXMgdGhlIHdpcmVsZXNzIG1hbmFnZW1lbnQgaW50ZXJmYWNlIChXTUkpIHdpdGhpbiB0aGUgQXRoZXJvcyBhdGg5ayBkcml2ZXIuICBUaGUgV01JIHByb2JhYmx5IGlzIHRoYXQgY3J1Y2lhbCBpbnRlcmZhY2UsIGFuZCB0aGlzIC5jIGZpbGUgcHJvdmlkZXMgdGhlIGZ1bmN0aW9ucy4gTm93IG15IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZy4gSSBuZWVkIHRvIGZpbmQgb3V0IHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiBjb2RlLiBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgS2NvbmZpZyBzeW1ib2xzIG9yIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB3b3VsZCBwdWxsIHRoaXMgZmlsZSBpbnRvIGEga2VybmVsIGJ1aWxkLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgY2xlYXJlc3QgcGljdHVyZSBvZiB3aGF0IHRoaXMgY29kZSBkb2VzIGFuZCB3aGVuIGl0cyBpbnZvbHZlZCBpbiB0aGUgZXhlY3V0aW9uIG9mIHRoZSBkcml2ZXIuIExldCdzIHNlZSB3aGF0IHRoZSBpbmNsdWRlcyB0ZWxsIHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTYyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MjkuNTIyOTQ4OTQ2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTYyMDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndtaS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgKz1cXHRodGNfaHN0Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02OS1cXHRcXHRoaWZfdXNiLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3MDpcXHRcXHR3bWkubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTcxLVxcdFxcdGh0Y19kcnZfdHhyeC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MjkuNTgwOTE1MTYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4OTQzNjM2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgQVRIOUtfSFRDYCBDb250ZXh0KipcblxuQWxyaWdodCwgc28gdGhlIHRvcGljIGF0IGhhbmQgaXMgdGhlIGBBVEg5S19IVENgIGRyaXZlci4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpc3NlY3QgaXRzIGRlcGVuZGVuY3kgY2hhaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtb2R1bGUgcmVsaWVzIG9uIGF0IHRoZSBrZXJuZWwgbGV2ZWwuIFdoYXQgb3RoZXIgbW9kdWxlcywgbGlicmFyaWVzLCBvciBzeXN0ZW0gc2VydmljZXMgZG9lcyBgQVRIOUtfSFRDYCBkZXBlbmQgb24gZm9yIGl0cyBwcm9wZXIgZnVuY3Rpb25pbmc/IEkgbmVlZCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgaXRzIGludGVyYWN0aW9ucyB0byB0cm91Ymxlc2hvb3Qgb3IgbW9kaWZ5IHRoZSBtb2R1bGUgZWZmZWN0aXZlbHkuIEEgY2xlYXIgcGljdHVyZSBvZiBpdHMgZGVwZW5kZW5jaWVzIGlzIGFic29sdXRlbHkgY3J1Y2lhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU3OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE1OjMzLjA3MDM1NDk4NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk2NjM0MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUSDlLX0hUQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xNTY9Y29uZmlnIEFUSDlLX1BDSV9OT19FRVBST01cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzI6Y29uZmlnIEFUSDlLX0hUQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MzMuMTcwMDI0Mzg0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MjI0NzQ1ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcmVxdWVzdCwgc3VtbWFyaXplZCBhcyBhIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQVRIOUtfSFRDIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgd2FudHMgbWUgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBBVEg5S19IVENgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXBwcm9hY2ggdGhpcyBzeXN0ZW1hdGljYWxseS4gSSdsbCBuZWVkIHRvIGRldGVybWluZSB3aGF0IGxpYnJhcmllcywgbW9kdWxlcywgb3Igb3RoZXIgY29tcG9uZW50cyBgQVRIOUtfSFRDYCByZWxpZXMgb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGNvdWxkIGludm9sdmUgbG9va2luZyBhdCBzb3VyY2UgY29kZSwgYnVpbGQgZmlsZXMgKGxpa2UgTWFrZWZpbGVzIG9yIENNYWtlTGlzdHMudHh0KSwgY29uZmlndXJhdGlvbiBmaWxlcywgb3IgZXZlbiBkb2N1bWVudGF0aW9uLiBJIGV4cGVjdCB0byBzZWUga2VybmVsIG1vZHVsZXMsIGhhcmR3YXJlIGFic3RyYWN0aW9ucywgYW5kIHBvdGVudGlhbGx5IHVzZXItc3BhY2UgdXRpbGl0aWVzLiBJJ2xsIG5lZWQgdG8gY29uc2lkZXIgYm90aCBjb21waWxlLXRpbWUgYW5kIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCBtZWFuaW5nIHdoYXQncyByZXF1aXJlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHdoYXQncyBsb2FkZWQgd2hlbiB0aGUgbW9kdWxlIGlzIGFjdHVhbGx5IGluIHVzZS4gVGhpcyBjb3VsZCBpbnZvbHZlIGRyaXZlciBjb2RlLCBmaXJtd2FyZSBsb2FkaW5nLCBhbmQgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMuIE15IGV4cGVydGlzZSBpbiB0aGUgZmllbGQgd2lsbCBhbGxvdyBtZSB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBjcnVjaWFsIGZpbGVzIGFuZCBjb2RlIHNlY3Rpb25zIHRvIGZvY3VzIG9uLCBhbmQgdG8gZ3Jhc3AgYW55IGNvbXBsZXhpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NzgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNTozNy4wOTI1MDUxNjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MixcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MjpcXHRjb25maWcgQVRIOUtfSFRDXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4gMTc0OlxcdFxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExXFxuIDE3NTpcXHRcXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbiAxNzY6XFx0XFx0c2VsZWN0IEFUSDlLX0hXXFxuIDE3NzpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OXFxuIDE3ODpcXHRcXHRoZWxwXFxuIDE3OTpcXHRcXHQgIFN1cHBvcnQgZm9yIEF0aGVyb3MgSFRDIGJhc2VkIGNhcmRzLlxcbiAxODA6XFx0XFx0ICBDaGlwc2V0cyBzdXBwb3J0ZWQ6IEFSOTI3MVxcbiAxODE6XFx0XFxuIDE4MjpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxcbiAxODM6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xcbiAxODQ6XFx0XFxuIDE4NTpcXHRcXHQgIFRoZSBidWlsdCBtb2R1bGUgd2lsbCBiZSBhdGg5a19odGMuXFxuIDE4NjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6MzcuMDkyNjA4MzE1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMjQ1NjkxNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAgaW4gYSBVU0IgV2lyZWxlc3MgQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiBJIGFjdHVhbGx5IHRyaWdnZXIgdGhpcyB0aGluZz9cIiBHaXZlbiB0aGF0IHdlJ3JlIHRhbGtpbmcgYWJvdXQgYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHkgdGhhdCBpdCdzIGEgVVNCLWJhc2VkIG9uZSwgdGhlIGRlcGVuZGVuY2llcyBqdW1wIG91dDogYFVTQmAgYW5kIHRoZSBgTUFDODAyMTFgIHN0YWNrLiBUaGF0J3MgZ29vZCwgdGhhdCdzIHdvcmthYmxlLiBUaGUgZmFjdCBpdCdzIFVTQiBpcyBrZXk7IHN5emthbGxlcidzIFVTQiBlbXVsYXRpb24gY2FwYWJpbGl0aWVzIG1ha2UgdGhpcyBwb3RlbnRpYWxseSB2ZXJ5IGludGVyZXN0aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZGVmaW5pdGl2ZWx5IGFuc3dlciB0aGUgcmVhY2hhYmlsaXR5IHF1ZXN0aW9uOiBJcyBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGFjY2Vzc2libGUgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50PyBHaXZlbiB0aGlzIGlzIGEgdGFza2xldCBmb3IgV01JIChXaXJlbGVzcyBNYW5hZ2VtZW50IEludGVyZmFjZSkgZXZlbnRzLCBpdCBpbXBsaWVzIHNvbWUgdW5kZXJseWluZyBtZXNzYWdlIHBhc3NpbmcgbWVjaGFuaXNtLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgZnVuY3Rpb24uIFdoZXJlIGlzIGB3bWlfZXZlbnRfdGFza2xldGAgYWN0dWFsbHkgYmVpbmcgc2NoZWR1bGVkPyBVbmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2VyaW5nIHBhdGggaXMgY3JpdGljYWwgdG8gY3JhZnRpbmcgYSByZWxpYWJsZSBleHBsb2l0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDg5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6NDIuNDE3MTgwOTA3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDIzNTYzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3bWlfZXZlbnRfdGFza2xldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz05MzE9aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjk2OTpcXHQvKiBBbGxvdyBhdGg5a193bWlfZXZlbnRfdGFza2xldCgpIHRvIG9wZXJhdGUuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTk3MC1cXHRzbXBfd21iKCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTM5PXZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NTEtXFx0aHRjX3N0b3AocHJpdi1cXHUwMDNlaHRjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTUyOlxcdHRhc2tsZXRfa2lsbChcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2V3bWlfZXZlbnRfdGFza2xldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU1My1cXHR0YXNrbGV0X2tpbGwoXFx1MDAyNnByaXYtXFx1MDAzZXR4X2ZhaWxlZF90YXNrbGV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz05MT1zdHJ1Y3Qgd21pICphdGg5a19pbml0X3dtaShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTA4LVxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ3bWktXFx1MDAzZXBlbmRpbmdfdHhfZXZlbnRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTA5OlxcdHRhc2tsZXRfc2V0dXAoXFx1MDAyNndtaS1cXHUwMDNld21pX2V2ZW50X3Rhc2tsZXQsIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEyOD12b2lkIGF0aDlrX3dtaV9ldmVudF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxMzI6XFx0dGFza2xldF9raWxsKFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZXdtaV9ldmVudF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTMzLVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxMzg6dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTEzOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE0MDpcXHRzdHJ1Y3Qgd21pICp3bWkgPSBmcm9tX3Rhc2tsZXQod21pLCB0LCB3bWlfZXZlbnRfdGFza2xldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE0MS1cXHRzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSB3bWktXFx1MDAzZWRydl9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTIxOD1zdGF0aWMgdm9pZCBhdGg5a193bWlfY3RybF9yeCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTIzOS1cXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZ3bWktXFx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjI0MDpcXHRcXHR0YXNrbGV0X3NjaGVkdWxlKFxcdTAwMjZ3bWktXFx1MDAzZXdtaV9ldmVudF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMjQxLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0xNDg9c3RydWN0IHdtaSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTU1LVxcdHN0cnVjdCBza19idWZmX2hlYWQgd21pX2V2ZW50X3F1ZXVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDoxNTY6XFx0c3RydWN0IHRhc2tsZXRfc3RydWN0IHdtaV9ldmVudF90YXNrbGV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC0xNTctXFx0dTE2IHR4X3NlcV9pZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0xODQ9aW50IGF0aDlrX3dtaV9jbWQoc3RydWN0IHdtaSAqd21pLCBlbnVtIHdtaV9jbWRfaWQgY21kX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTE4Ny1cXHRcXHQgIHUzMiB0aW1lb3V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6MTg4OnZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTg5LXZvaWQgYXRoOWtfZmF0YWxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNTo0Mi40ODE0MjQzNjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwNDE4ODYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBhdGg5a193bWlfY3RybF9yeCBDYWxsIENoYWluKipcblxuQWxyaWdodCwgSSdtIGxvb2tpbmcgYXQgdGhlIGBhdGg5a193bWlfY3RybF9yeGAgZnVuY3Rpb24sIGFuZCBJIHNlZSBhIHRhc2tsZXQgYmVpbmcgc2NoZWR1bGVkIHdpdGhpbiBpdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIk9rYXksIHRoYXQncyBpbnRlcmVzdGluZy4gVGFza2xldHMgYXJlIHR5cGljYWxseSB1c2VkIGZvciBkZWZlcnJlZCB3b3JrIGluIHRoZSBrZXJuZWwsIG9mdGVuIHJlbGF0ZWQgdG8gaW50ZXJydXB0IGhhbmRsaW5nIG9yIHNvbWUgZm9ybSBvZiBhc3luY2hyb25vdXMgcHJvY2Vzc2luZy5cIiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgcGljdHVyZS4gSSB3YW50IHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQga25vdyB3aGVyZSB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gXCJMZXQncyBiYWNrdHJhY2ssIGFuYWx5emUgd2hlcmUgYGF0aDlrX3dtaV9jdHJsX3J4YCBpcyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aHkgdGhpcyB0YXNrbGV0IGlzIGJlaW5nIHVzZWQgYW5kIHdoYXQgZGF0YSBpdCdzIGxpa2VseSBvcGVyYXRpbmcgb24gd2l0aGluIHRoZSBgYXRoOWtgIHdpcmVsZXNzIGRyaXZlci5cIiBJIG5lZWQgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMuIEkga25vdyBpdCdzIGEgcmVjZWl2ZSBwYXRoLCBidXQgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQncyBiZWluZyBjYWxsZWQgZnJvbSB0byBhc3Nlc3MgaWYgYW55IG1vZGlmaWNhdGlvbnMgaW4gdGhhdCBwYXJ0IG9mIHRoZSBjb2RlIGFyZSBjYXVzaW5nIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE3MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE1OjQ2LjQ4NTYxNTk5NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2MDU4NDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX3dtaV9jdHJsX3J4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTIwOD1zdGF0aWMgdm9pZCBhdGg5a193bWlfcnNwX2NhbGxiYWNrKHN0cnVjdCB3bWkgKndtaSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjIxODpzdGF0aWMgdm9pZCBhdGg5a193bWlfY3RybF9yeCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yMTktXFx0XFx0XFx0ICAgICAgZW51bSBodGNfZW5kcG9pbnRfaWQgZXBpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0yNjU9aW50IGF0aDlrX3dtaV9jb25uZWN0KHN0cnVjdCBodGNfdGFyZ2V0ICpodGMsIHN0cnVjdCB3bWkgKndtaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yNzYtXFx0Y29ubmVjdC5lcF9jYWxsYmFja3MudHggPSBhdGg5a193bWlfY3RybF90eDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6Mjc3OlxcdGNvbm5lY3QuZXBfY2FsbGJhY2tzLnJ4ID0gYXRoOWtfd21pX2N0cmxfcng7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTI3OC1cXHRjb25uZWN0LnNlcnZpY2VfaWQgPSBXTUlfQ09OVFJPTF9TVkM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE1OjQ2Ljc3MTY3OTc5NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDE4MTAzMzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbiBmb3IgV01JX0NPTlRST0xfU1ZDIENhbGxiYWNrKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBlbmRwb2ludCBjYWxsYmFjayBmb3IgYFdNSV9DT05UUk9MX1NWQ2AuIFRoaXMgaXMgYSBVU0IgZGV2aWNlLCBzbyBpdCdzIHByaW1lIHRhcmdldCBmb3Igc3l6a2FsbGVyJ3MgVVNCIGZ1enplci4gVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgYSBkYXRhIHJhY2Ugb24gYHByaXYtXHUwMDNlaW5pdGlhbGl6ZWRgIGFuZCBpbmNsdWRlcyBhIG1lbW9yeSBiYXJyaWVyIOKAkyB0aGF0J3MgYSBnb29kIHNpZ24gaXQncyB0b3VjaGluZyBzb21ldGhpbmcgaW1wb3J0YW50LlxuXG5UaGUgYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YCBmdW5jdGlvbiAqaXMqIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCBpdCdzIGFjdHVhbGx5IHdvcnRoIHRoZSBlZmZvcnQgdG8gZnV6eiBpdC4gWWVzLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIsIHNvIGl0IHByb2JhYmx5IGlzLlxuXG5MZXQncyBzZWUsIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGFic29sdXRlbHkgcmVxdWlyZWQ/IEknbSB0aGlua2luZzogYEFUSDlLX0hUQ2AsIGBVU0JgLCBhbmQgb2YgY291cnNlIGBNQUM4MDIxMWAuXG5cblJpZ2h0LCBsZXQncyBqdXN0IGRvdWJsZSBjaGVjayBgQVRIOUtfSFRDYCdzIGRlcGVuZGVuY2llcyBpbiB0aGUgS2NvbmZpZywgdG8gYmUgY2VydGFpbiB3ZSBoYXZlIGV2ZXJ5dGhpbmcuICpZZXAqLCB0aGF0IGNvbmZpcm1zIGl0OiBgQVRIOUtfSFRDYCBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLCBhbmQgYWxzbyBzZWxlY3RzIGBBVEg5S19IV2AgYW5kIGBBVEg5S19DT01NT05gIHNvIHdlJ2xsIG5lZWQgYWxsIHRob3NlIGVuYWJsZWQsIGJ1dCB0aGF0J3MgdGFrZW4gY2FyZSBvZiBieSBlbmFibGluZyB0aGUgYWJvdmUgZGVwZW5kZW5jaWVzLlxuXG5Ob3csIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIG1vc3QgcHJvbWlzaW5nIGZ1enppbmcgdGFyZ2V0cz8gRGVmaW5pdGVseSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgLiBJIHNob3VsZCBhbHNvIGxvb2sgYXQgYGF0aDlrX3dtaV9jdHJsX3J4YCBhbmQgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZWlyIHZpc2liaWxpdHkuIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAgaXMgbm90IHN0YXRpYywgZ29vZCwgdGhhdCBtZWFucyBpdCdzIGFjY2Vzc2libGUuIGBhdGg5a193bWlfY3RybF9yeGAgaXMgc3RhdGljLiBBbHJpZ2h0LCB0aGF0J3Mgbm90IGFzIGludGVyZXN0aW5nIHRoZW4uIGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYCBpcyBhbHNvIG5vdCBzdGF0aWMuIE9rYXksIGdvb2QuIFRoYXQgbWVhbnMgdGhlc2UgdHdvIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSB3b3J0aCBwdXR0aW5nIGludG8gdGhlIGZ1enppbmcgY29uZmlnLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODM2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE1OjUzLjc4OTc4Nzc2OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5Njg5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfaHRjX3Byb2JlX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02MzE9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2xlZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjYzNjppbnQgYXRoOWtfaHRjX3Byb2JlX2RldmljZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSwgc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02MzctXFx0XFx0XFx0ICAgdTE2IGRldmlkLCBjaGFyICpwcm9kdWN0LCB1MzIgZHJ2X2luZm8pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTgyOD1zdGF0aWMgaW50IGF0aDlrX2luaXRfZGV2aWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjkzMTppbnQgYXRoOWtfaHRjX3Byb2JlX2RldmljZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSwgc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05MzItXFx0XFx0XFx0ICAgdTE2IGRldmlkLCBjaGFyICpwcm9kdWN0LCB1MzIgZHJ2X2luZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jPTUyOD1pbnQgYXRoOWtfaHRjX2h3X2luaXQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtNTMxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjUzMjpcXHRpZiAoYXRoOWtfaHRjX3Byb2JlX2RldmljZSh0YXJnZXQsIGRldiwgZGV2aWQsIHByb2R1Y3QsIGRydl9pbmZvKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtNTMzLVxcdFxcdHByX2VycihcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIGRldmljZVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTQ5OlxcdC8qIENoZWNrIGlmIGF0aDlrX2h0Y19wcm9iZV9kZXZpY2UoKSBjb21wbGV0ZWQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE1MC1cXHRpZiAoIWRhdGFfcmFjZShwcml2LVxcdTAwM2Vpbml0aWFsaXplZCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTUyLVxcdC8qXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE1MzpcXHQgKiBNYWtlIHN1cmUgYXRoOWtfaHRjX3Byb2JlX2RldmljZSgpIGluaXRpYWxpemF0aW9uIGlzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE1NC1cXHQgKiBjb21taXR0ZWQgdG8gbWVtb3J5IGJlZm9yZSBwcm9jZXNzaW5nIHNrYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTU6NTMuODcxNzY0NzNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3Nzk1MjQ0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBhdGg5a2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhpcyBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIHRvIGJlIHRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb25zLiBUbyB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiwgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGVyZS4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCB0aGUga2V5IGlzIHRoZSBzdGF0ZSBvZiBgcHJpdi1cdTAwM2Vpbml0aWFsaXplZGAuIFdoZXJlIGV4YWN0bHkgaXMgdGhhdCBmbGFnIGZsaXBwZWQ/IExvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgIGlzIHRoZSBsaWtlbHkgY3VscHJpdC4gTGV0IG1lIHZlcmlmeSB0aGF0IGFuZCBzZWUgd2hhdCB0aGF0IHRlbGxzIG1lIGFib3V0IHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cgYW5kIHRoZSBkZXBlbmRlbmNpZXMgbGVhZGluZyBpbnRvIGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAuIEZyb20gdGhlcmUgSSBjYW4gdW5kZXJzdGFuZCB3aGF0IHRob3NlIG1vZGlmaWNhdGlvbnMgYWN0dWFsbHkgYWNoaWV2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNTo1OC42NDk3MjAxNTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODIwMzc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcml2LVxcdTAwM2Vpbml0aWFsaXplZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz05MzE9aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NzAtXFx0c21wX3dtYigpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo5NzE6XFx0cHJpdi1cXHUwMDNlaW5pdGlhbGl6ZWQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NzItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE0OS1cXHQvKiBDaGVjayBpZiBhdGg5a19odGNfcHJvYmVfZGV2aWNlKCkgY29tcGxldGVkLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxNTA6XFx0aWYgKCFkYXRhX3JhY2UocHJpdi1cXHUwMDNlaW5pdGlhbGl6ZWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNTEtXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOToxNTo1OC43NTc5MjgyNjVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM2OTc1NDg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgYXRoOWtfaHRjIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIGluaXRpYWxpemF0aW9uIGZsb3cgd2l0aGluIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIsIHNwZWNpZmljYWxseSwgaG93IHRoZSBoYXJkd2FyZSBnZXRzIHNldCB1cC4gSXQgc2VlbXMgbGlrZSBgYXRoOWtfaHRjX3Byb2JlX2RldmljZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LCBhcyBpdCBzZXRzIHRoYXQgY3J1Y2lhbCBgcHJpdi1cdTAwM2Vpbml0aWFsaXplZGAgZmxhZy4gVGhlbiwgYGF0aDlrX3dtaV9ldmVudF90YXNrbGV0YCBhcHBhcmVudGx5IGRlcGVuZHMgb24gdGhpcyBmbGFnLiBUaG9zZSBsb29rIGxpa2UgdGhlIGtleSBzeW1ib2xzIHRvIHRyYWNrLiBJIHN1c3BlY3QgdGhhdCB0aGUgZXZlbnQgdGFza2xldCBtYXkgYmUgdGhlIHNvdXJjZSBvZiBteSByZWNlbnQgcHJvYmxlbS5cblxuTm93LCBJJ20ganVzdCBxdWlja2x5IGNoZWNraW5nIGlmIGBhdGg5a19odGNfaHdfaW5pdGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIE5vLCBpdCBpc24ndC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQganVzdCB0byBtYWtlIHN1cmUgSSdtIGNvcnJlY3QgaW4gdGhhdCBhc3N1bXB0aW9uLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiB0aGUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTkzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTY6MDcuMTI3Njg3MzM0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzkzMzk4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg5a19odGNfaHdfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MTIyNj1zdGF0aWMgdm9pZCBhdGg5a19oaWZfdXNiX2Zpcm13YXJlX2NiKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsIHZvaWQgKmNvbnRleHQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTEyNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoxMjU2OlxcdHJldCA9IGF0aDlrX2h0Y19od19pbml0KGhpZl9kZXYtXFx1MDAzZWh0Y19oYW5kbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMjU3LVxcdFxcdFxcdFxcdFxcdTAwMjZoaWZfZGV2LVxcdTAwM2VpbnRlcmZhY2UtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9NTIzPXZvaWQgYXRoOWtfaHRjX2h3X2ZyZWUoc3RydWN0IGh0Y190YXJnZXQgKmh0YylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtNTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM6NTI4OmludCBhdGg5a19odGNfaHdfaW5pdChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtNTI5LVxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiwgdTE2IGRldmlkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuaD0yMjQ9dm9pZCBhdGg5a19odGNfaHdfZnJlZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5oOjIyNTppbnQgYXRoOWtfaHRjX2h3X2luaXQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5oLTIyNi1cXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsIHUxNiBkZXZpZCwgY2hhciAqcHJvZHVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTY6MDcuMTg1NjMyNzA4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMDA4ODEyNTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29tcGlsYXRpb24gUmVxdWlyZW1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zOiBgYXRoOWtfaHRjX2h3X2luaXRgLCBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgLCBhbmQgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgLiBUaGV5J3JlIG5vbi1zdGF0aWMsIHdoaWNoIG1lYW5zIHRoZXkncmUgbGlrZWx5IGVudHJ5IHBvaW50cyBvciBjYWxsZWQgZnJvbSBlbHNld2hlcmUuXG5cbkkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdG8gY29tcGlsZSB0aGlzIGNvZGUgc3RhdGljYWxseS4gVGhlIGtleSBoZXJlIGlzIHRvIGlkZW50aWZ5IGRlcGVuZGVuY2llcy4gQmFzZWQgb24gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG15IGtub3dsZWRnZSwgSSdtIHByZXR0eSBzdXJlIGBBVEg5S19IVENgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZyBuZWVkZWQuXG5cbkxldCdzIGRvdWJsZS1jaGVjay4gT2theSwgeWVzLCBgQVRIOUtfSFRDYCBkb2VzIGluZGVlZCBkZXBlbmQgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAuIFRoZXNlIGFyZSBwcmV0dHkgZnVuZGFtZW50YWwgc3Vic3lzdGVtcywgYnV0IHRoZSBpbnN0cnVjdGlvbnMgYXJlIGNsZWFyOiBsaXN0IGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzLiBXZWxsLCBgVVNCYCBhbmQgYE1BQzgwMjExYCBhcmUgc3RhbmRhcmQgc28gaXQgcHJvYmFibHkgd29uJ3QgaHVydCB0byBiZSBleHBsaWNpdC4gSXQncyBzYWZlIHRvIGluY2x1ZGUgYEFUSDlLX0hUQ2AuXG5cbkFscmlnaHQsIGxldCdzIGluY2x1ZGUganVzdCBgQVRIOUtfSFRDYC5cblxuKipSZXZpZXdpbmcgdGhlIFBhdGNoIGFuZCBJdHMgSW1wbGljYXRpb25zKipcblxuTm93LCBJJ20gcmV2aWV3aW5nIHRoZSBwYXRjaCBpdHNlbGYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIHRoZSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgLiBUaGUgcGF0Y2ggaXMgZ3VhcmRpbmcgYWdhaW5zdCBwcmVtYXR1cmUgZXhlY3V0aW9uIGJlZm9yZSB0aGUgZGV2aWNlIGhhcyBmdWxseSBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IGNoZWNraW5nIGBwcml2LVx1MDAzZWluaXRpYWxpemVkYC4gQmVmb3JlLCB0aGVyZSB3YXMgYSBkb3VibGUgY2hlY2sgdGhhdCB3YXMgcmVtb3ZlZC4gTm93IHRoZSB0YXNrbGV0IHdpbGwganVzdCByZXR1cm4gaWYgdGhlIGRldmljZSBpc24ndCBpbml0aWFsaXplZC5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gSWYgdGhlIHRhc2tsZXQgcmV0dXJucywgd2hhdCB3aWxsIHNjaGVkdWxlIGl0IGFnYWluPyBUaGUgb3JpZ2luYWwgY29kZSBoYWQgYSBzZWNvbmQgY2hlY2sgdGhhdCB3b3VsZCBmcmVlIHRoZSBza2IgaWYgdGhlIGRyaXZlciBoYWQgbm90IGluaXRpYWxpemVkLiBSZW1vdmluZyB0aGUgc2Vjb25kIGNoZWNrIG1lYW5zIHRoZSBza2IgaXMgbGVmdCBpbiB0aGUgcXVldWUuIE15IGNvbmNlcm4gaGVyZSBpcyBpZiB0aGUgdGFza2xldCBpc24ndCBzY2hlZHVsZWQgdW50aWwgYHByaXYtXHUwMDNlaW5pdGlhbGl6ZWRgIGJlY29tZXMgdHJ1ZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIGluIGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYCB0byBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB0YXNrbGV0IHNjaGVkdWxpbmcuIElzIGl0IHBvc3NpYmxlIGZvciB0aGUgZHJpdmVyIHRvIGJlIGluIGEgYmFkIHN0YXRlPyBcblxuXG4iLCJJbnB1dFRva2VucyI6MTE3ODMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MTY6MTcuMTk0NDQ4MjQ1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQ2NjMwNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGFza2xldF9zY2hlZHVsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02OTA9dm9pZCBhdGg5a19odGNfdHhlcCh2b2lkICpkcnZfcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MDItXFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2ZhaWxlZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzAzOlxcdFxcdHRhc2tsZXRfc2NoZWR1bGUoXFx1MDAyNnByaXYtXFx1MDAzZXR4X2ZhaWxlZF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzA0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTM1PXZvaWQgYXRoOWtfaHRjX3J4ZXAodm9pZCAqZHJ2X3ByaXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTE2NzpcXHR0YXNrbGV0X3NjaGVkdWxlKFxcdTAwMjZwcml2LVxcdTAwM2VyeF90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE2OC1cXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jPTQ4OD1pcnFyZXR1cm5fdCBhdGhfaXNyKGludCBpcnEsIHZvaWQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmMtNTY2LVxcdGlmIChzdGF0dXMgXFx1MDAyNiBBVEg5S19JTlRfU1dCQSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jOjU2NzpcXHRcXHR0YXNrbGV0X3NjaGVkdWxlKFxcdTAwMjZzYy1cXHUwMDNlYmNvbl90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTU2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmMtNTk2LVxcdFxcdGF0aDlrX2h3X2tpbGxfaW50ZXJydXB0cyhhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYzo1OTc6XFx0XFx0dGFza2xldF9zY2hlZHVsZShcXHUwMDI2c2MtXFx1MDAzZWludHJfdHEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmMtNTk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0yMTg9c3RhdGljIHZvaWQgYXRoOWtfd21pX2N0cmxfcngodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0yMzktXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2d21pLVxcdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoyNDA6XFx0XFx0dGFza2xldF9zY2hlZHVsZShcXHUwMDI2d21pLVxcdTAwM2V3bWlfZXZlbnRfdGFza2xldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTI0MS1cXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE2OjE3LjQ2OTExNTg0OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTkwMjQ1NjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoOWtfaHRjIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgYXRoOWtfaHRjYCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIGFuZCBzb21ldGhpbmcncyBidWdnaW5nIG1lLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYCB3YXMgcmVzcG9uc2libGUgZm9yIHNjaGVkdWxpbmcgdGhlIHRhc2tsZXQuIEJ1dCB3YWl0IGEgc2Vjb25kLi4uIGl0IGxvb2tzIGxpa2UgaXQgKmRvZXNuJ3QqIGRpcmVjdGx5IGNhbGwgYHRhc2tsZXRfc2NoZWR1bGUoKWAuIEluc3RlYWQsIGl0IGp1c3Qgc2V0cyBgcHJpdi1cdTAwM2Vpbml0aWFsaXplZCA9IHRydWVgIHdpdGggYSBgc21wX3dtYigpYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlmIHRoZXJlIGFyZSBhbHJlYWR5IHNrYnMgKHNvY2tldCBidWZmZXIpIGluIHRoZSBxdWV1ZSwgdGhleSdyZSBnb2luZyB0byBnZXQgcHJvY2Vzc2VkIHdoZW4gdGhlIG5leHQgV01JIChXaXJlbGVzcyBNYW5hZ2VtZW50IEludGVyZmFjZSkgZXZlbnQgb2NjdXJzLiBUaGF0IGV2ZW50IHNob3VsZCBiZSB0aGUgdHJpZ2dlciwgYW5kIHdpbGwgaW52b2tlIHRoZSBgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRgLlxuXG5CdXQgdGhlbiBhZ2FpbiwgdGhlcmUgaXMgYSBjaGFuY2UgdGhhdCBJIGFtIG1pc3Npbmcgc29tZXRoaW5nLiBNYXliZSB0aGlzIGlzIGEgYnVnLCBtZWFuaW5nIGl0ICppc24ndCogcHJvY2Vzc2luZyB0aGVtLiBFaXRoZXIgd2F5LCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZnJvbSB3aGF0IEkgd2FzIGV4cGVjdGluZyBpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGRyaXZlci4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmbG93IGlzIGNvcnJlY3QuXG5cbkkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBjcnVjaWFsIHN5bWJvbHM6IGBhdGg5a193bWlfZXZlbnRfdGFza2xldGAgYW5kIGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYC5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEknbSBvcGVyYXRpbmcgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBgQVRIOUtfSFRDYCwgYE1BQzgwMjExYCwgYW5kIGBVU0JgIGFyZSBhbGwgZW5hYmxlZC4gSnVzdCB0byBiZSBzdXJlLCBpcyBgQVRIOUtfSFRDYCBzdWZmaWNpZW50LCBvciBhcmUgdGhlcmUgbW9yZSB0aGF0IEkgbmVlZCB0byBjaGVjaz8gSXQgbG9va3MgbGlrZSBgQVRIOUtfSFRDYCBzZWxlY3RzIGBBVEg5S19IV2AgYW5kIGBBVEg5S19DT01NT05gLCBzbyB0aG9zZSBhcmUgY292ZXJlZC5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudCBpbiBteSBhbmFseXNpcyBub3cuIEknbGwgZ28gYWhlYWQgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4MDAsIk91dHB1dFRva2VucyI6MTM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjE2OjI1LjA1OTM2NDAyNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDE2MTgyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXRcIixcbiAgICBcImF0aDlrX2h0Y19wcm9iZV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV01JIGV2ZW50IHRhc2tsZXQgaW4gdGhlIGF0aDlrX2h0YyBkcml2ZXIgdG8gcHJldmVudCBmcmVlaW5nIHNrYnMgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQsIGFuZCBhZGRzIGEgbWVtb3J5IGJhcnJpZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBVU0Igd2lyZWxlc3MgZHJpdmVyIHRoYXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGg5a193bWlfZXZlbnRfdGFza2xldFwiLFxuICAgIFwiYXRoOWtfaHRjX3Byb2JlX2RldmljZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXTUkgZXZlbnQgdGFza2xldCBpbiB0aGUgYXRoOWtfaHRjIGRyaXZlciB0byBwcmV2ZW50IGZyZWVpbmcgc2ticyB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZCwgYW5kIGFkZHMgYSBtZW1vcnkgYmFycmllci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIFVTQiB3aXJlbGVzcyBkcml2ZXIgdGhhdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7mfd[1] Phase: Succeeded StartedAt: 2026-08-04 09:16:36 +0000 UTC FinishedAt: 2026-08-04 09:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 09:16:36 +0000 UTC FinishedAt: 2026-08-04 09:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2] Phase: Succeeded StartedAt: 2026-08-04 09:16:36 +0000 UTC FinishedAt: 2026-08-04 10:53:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 09:16:36 +0000 UTC FinishedAt: 2026-08-04 10:53:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 09:16:36 +0000 UTC FinishedAt: 2026-08-04 09:16:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 09:16:36 +0000 UTC FinishedAt: 2026-08-04 09:16:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowt7mfd/series-workflowt7mfd-convert-artifact-1815298441/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 09:16:46 +0000 UTC FinishedAt: 2026-08-04 09:32:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 09:16:46 +0000 UTC FinishedAt: 2026-08-04 09:32:41 +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:*07e62dff-f89a-427f-b2dd-55f4a007d4aa,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-workflowt7mfd/series-workflowt7mfd-convert-artifact-1815298441/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": "9c46d5f9-8d3a-4952-85f8-f38182e1ec5d", "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-workflowt7mfd/series-workflowt7mfd-build-action-1892416103/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 09:16:46 +0000 UTC FinishedAt: 2026-08-04 09:32:31 +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:*07e62dff-f89a-427f-b2dd-55f4a007d4aa,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-workflowt7mfd/series-workflowt7mfd-convert-artifact-1815298441/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": "9c46d5f9-8d3a-4952-85f8-f38182e1ec5d", "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-workflowt7mfd/series-workflowt7mfd-build-action-1892416103/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 09:32:41 +0000 UTC FinishedAt: 2026-08-04 09:32:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 09:32:41 +0000 UTC FinishedAt: 2026-08-04 09:32:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 09:32:41 +0000 UTC FinishedAt: 2026-08-04 09:33:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 09:32:41 +0000 UTC FinishedAt: 2026-08-04 09:32:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowt7mfd/series-workflowt7mfd-convert-artifact-3841585308/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 09:33:03 +0000 UTC FinishedAt: 2026-08-04 09:34:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 09:33:03 +0000 UTC FinishedAt: 2026-08-04 09:34:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9c46d5f9-8d3a-4952-85f8-f38182e1ec5d,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-workflowt7mfd/series-workflowt7mfd-build-action-1892416103/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-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 09:34:59 +0000 UTC FinishedAt: 2026-08-04 09:34:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 09:34:59 +0000 UTC FinishedAt: 2026-08-04 09:34:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 09:34:59 +0000 UTC FinishedAt: 2026-08-04 09:55:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 09:34:59 +0000 UTC FinishedAt: 2026-08-04 09:55:11 +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:*07e62dff-f89a-427f-b2dd-55f4a007d4aa,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-workflowt7mfd/series-workflowt7mfd-convert-artifact-3841585308/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": "a314756a-17a8-438b-9fd1-fbe51a899a17", "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-workflowt7mfd/series-workflowt7mfd-build-action-1424987128/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 09:34:59 +0000 UTC FinishedAt: 2026-08-04 09:55:01 +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:*07e62dff-f89a-427f-b2dd-55f4a007d4aa,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-workflowt7mfd/series-workflowt7mfd-convert-artifact-3841585308/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": "a314756a-17a8-438b-9fd1-fbe51a899a17", "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-workflowt7mfd/series-workflowt7mfd-build-action-1424987128/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 09:55:11 +0000 UTC FinishedAt: 2026-08-04 09:55:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 09:55:11 +0000 UTC FinishedAt: 2026-08-04 09:55:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 09:55:11 +0000 UTC FinishedAt: 2026-08-04 09:57:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 09:55:11 +0000 UTC FinishedAt: 2026-08-04 09:57:02 +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:*a314756a-17a8-438b-9fd1-fbe51a899a17,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-workflowt7mfd/series-workflowt7mfd-build-action-1424987128/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-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 09:57:12 +0000 UTC FinishedAt: 2026-08-04 10:53:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 09:57:12 +0000 UTC FinishedAt: 2026-08-04 10:53:48 +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":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"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:*9c46d5f9-8d3a-4952-85f8-f38182e1ec5d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a314756a-17a8-438b-9fd1-fbe51a899a17,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-workflowt7mfd/series-workflowt7mfd-build-action-1892416103/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-workflowt7mfd/series-workflowt7mfd-build-action-1424987128/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 09:57:12 +0000 UTC FinishedAt: 2026-08-04 09:57:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 09:57:12 +0000 UTC FinishedAt: 2026-08-04 09:57:18 +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":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"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-workflowt7mfd/series-workflowt7mfd-convert-artifact-1117045861/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 09:57:12 +0000 UTC FinishedAt: 2026-08-04 09:57:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 09:57:12 +0000 UTC FinishedAt: 2026-08-04 09:57:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 09:57:12 +0000 UTC FinishedAt: 2026-08-04 09:57:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 09:57:22 +0000 UTC FinishedAt: 2026-08-04 10:53:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7mfd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_wmi_event_tasklet","ath9k_htc_probe_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a33516f9ef59ad11844d4fc152f889449b5daf3","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","MAC80211","USB"],"series_id":"aefc7d42-4b22-4a73-a9cd-c2e81d5e7466","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 09:57:22 +0000 UTC FinishedAt: 2026-08-04 10:53:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9c46d5f9-8d3a-4952-85f8-f38182e1ec5d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a314756a-17a8-438b-9fd1-fbe51a899a17,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-workflowt7mfd/series-workflowt7mfd-build-action-1892416103/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-workflowt7mfd/series-workflowt7mfd-build-action-1424987128/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-workflowt7mfd/series-workflowt7mfd-convert-artifact-1117045861/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,}