Name: series-workflowk97rk Phase: Succeeded StartedAt: 2026-07-26 11:41:38 +0000 UTC FinishedAt: 2026-07-26 13:07:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[0] Phase: Succeeded StartedAt: 2026-07-26 11:41:38 +0000 UTC FinishedAt: 2026-07-26 11:58:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 11:41:38 +0000 UTC FinishedAt: 2026-07-26 11:58:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3dab139d4795f688e4f243e40c7474df00d329d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB", "CFG80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3dab139d4795f688e4f243e40c7474df00d329d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB", "CFG80211", "USB" ], "series_id": "fe1d686a-5a4b-4b67-beb7-1cf03f9f1384" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "brcmf_cyw_external_auth" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticmNtZl9jeXdfZXh0ZXJuYWxfYXV0aCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBhbmQgYWRkcyBtaXNzaW5nIFBNS0lEIGNvcHkgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXImIzM5O3MgZXh0ZXJuYWwgYXV0aGVudGljYXRpb24gaGFuZGxlci4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgbmV0bGluayBjb21tYW5kcyB3aGVuIGEgdmlydHVhbCBVU0IgQnJvYWRjb20gZGV2aWNlIGlzIGVtdWxhdGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODZlYWNiYWE5OGU1N2RjYTQwNDRkZWU0MTZlNzU4NjNiNmNjNmEzMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDExOjU2OjM2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IDg3Mzc1NGJlNTE3NGJjLi4yYzU5YjVlNTc5NTljMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuQEAgLTIwMCw3ICYjNDM7MjAwLDcgQEAgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfaWYgKmlmcDtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnI7XG4tXHRzdHJ1Y3QgYnJjbWZfYXV0aF9yZXFfc3RhdHVzX2xlIGF1dGhfc3RhdHVzO1xuJiM0MztcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXMgPSB7fTtcbiBcdGludCByZXQgPSAwO1xuIFxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG5AQCAtMjA4LDYgJiM0MzsyMDgsOCBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWZwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdGRydnIgPSBpZnAtXHUwMDNlZHJ2cjtcbiBcdGlmIChwYXJhbXMtXHUwMDNlc3RhdHVzID09IFdMQU5fU1RBVFVTX1NVQ0NFU1MpIHtcbiYjNDM7XHRcdGlmIChwYXJhbXMtXHUwMDNlcG1raWQpXG4mIzQzO1x0XHRcdG1lbWNweShhdXRoX3N0YXR1cy5wbWtpZCwgcGFyYW1zLVx1MDAzZXBta2lkLCBXTEFOX1BNS0lEX0xFTik7XG4gXHRcdGF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTtcbiBcdH0gZWxzZSB7XG4gXHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O0V4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogc3RhdHVzPSVkXFxuXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19VU0ImIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgYW5kIGFkZHMgbWlzc2luZyBQTUtJRCBjb3B5IGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyJiMzOTtzIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGhhbmRsZXIuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNmZzgwMjExIG5ldGxpbmsgY29tbWFuZHMgd2hlbiBhIHZpcnR1YWwgVVNCIEJyb2FkY29tIGRldmljZSBpcyBlbXVsYXRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDg2ZWFjYmFhOThlNTdkY2E0MDQ0ZGVlNDE2ZTc1ODYzYjZjYzZhMzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAxMTo1NjozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMKaW5kZXggODczNzU0YmU1MTc0YmMuLjJjNTliNWU1Nzk1OWMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwpAQCAtMjAwLDcgJiM0MzsyMDAsNyBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogewogCXN0cnVjdCBicmNtZl9pZiAqaWZwOwogCXN0cnVjdCBicmNtZl9wdWIgKmRydnI7Ci0Jc3RydWN0IGJyY21mX2F1dGhfcmVxX3N0YXR1c19sZSBhdXRoX3N0YXR1czsKJiM0MzsJc3RydWN0IGJyY21mX2F1dGhfcmVxX3N0YXR1c19sZSBhdXRoX3N0YXR1cyA9IHt9OwogCWludCByZXQgPSAwOwogCiAJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O0VudGVyXG4mIzM0Oyk7CkBAIC0yMDgsNiAmIzQzOzIwOCw4IEBAIGJyY21mX2N5d19leHRlcm5hbF9hdXRoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWZwID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAlkcnZyID0gaWZwLSZndDtkcnZyOwogCWlmIChwYXJhbXMtJmd0O3N0YXR1cyA9PSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7CiYjNDM7CQlpZiAocGFyYW1zLSZndDtwbWtpZCkKJiM0MzsJCQltZW1jcHkoYXV0aF9zdGF0dXMucG1raWQsIHBhcmFtcy0mZ3Q7cG1raWQsIFdMQU5fUE1LSURfTEVOKTsKIAkJYXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX1NVQ0NFU1MpOwogCX0gZWxzZSB7CiAJCWJwaHlfZXJyKGRydnIsICYjMzQ7RXh0ZXJuYWwgYXV0aGVudGljYXRpb24gZmFpbGVkOiBzdGF0dXM9JWRcbiYjMzQ7LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY2AuIFNwZWNpZmljYWxseSwgdGhlIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgZnVuY3Rpb24uIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGEgbWlzc2luZyBQTUtJRCBjb3B5LiBJdCBpbml0aWFsaXplcyBgYXV0aF9zdGF0dXNgIGFuZCB0aGVuIGNvcGllcyBgcGFyYW1zLSZndDtwbWtpZGAgdG8gaXQsIGJ1dCBvbmx5IGlmIGBwYXJhbXMtJmd0O3Bta2lkYCBpcyBub3QgTlVMTC4gTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBlbnN1cmUgd2UmIzM5O3JlIGhhbmRsaW5nIHRoZSBQTUtJRCBkYXRhIGNvcnJlY3RseS4gVGhpcyBpcyB0YWdnZWQgYXMgYSBmaXgsIHNvIHByZXN1bWFibHkgdGhpcyB3YXMgYSBidWcuCgpUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGhlcmUgaXMgYGJyY21mbWFjYCwgd2hpY2ggaXMgYSBCcm9hZGNvbSA4MDIuMTEgd2lyZWxlc3MgTEFOIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgdGVzdGFibGUgaXMgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXJlbGVzcyBkcml2ZXJzIGNhbiBiZSB0cmlja3kgc2luY2UgdGhleSB1c3VhbGx5IHJlbHkgb24gc3BlY2lmaWMgaGFyZHdhcmUsIHVubGVzcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBgYnJjbWZtYWNgIHN1cHBvcnRzIFNESU8sIFVTQiwgYW5kIFBDSUUhIFRoYXQgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzLgoKSSBrbm93IFVTQiBkZXZpY2VzIGNhbiBiZSBlbXVsYXRlZCwgYnV0IHVzdWFsbHkgdGhhdCYjMzk7cyB0aHJvdWdoIFVTQiBnYWRnZXQgb3Igc29tZXRoaW5nIHdpdGggZHVtbXlfaGNkLiBCdXQsIHdhaXQuLi5zeXprYWxsZXIhIEkgcmVtZW1iZXIgdGhleSBoYXZlIGEgdmlydHVhbCBVU0IgZnV6emVyLCBgdmhjaWAuIFNvLCB0aGF0IG1lYW5zIFVTQiBkcml2ZXJzIGFyZSBwb3RlbnRpYWxseSBmdXp6YWJsZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBicmNtZm1hY2AgaGFzIFVTQiBzdXBwb3J0LCB0aGF0JiMzOTtzIHRoZSBrZXkuIElmIGl0IGRvZXMsIHRoaXMgb3BlbnMgdXAgYSB3aG9sZSBuZXcgYXZlbnVlIGZvciBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MTk3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjE5ODpicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMTk5LVx0XHRcdHN0cnVjdCBjZmc4MDIxMV9leHRlcm5hbF9hdXRoX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTIzND1zdGF0aWMgdm9pZCBicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wcyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzNi1cdGRydnItXHUwMDNlb3BzLVx1MDAzZW1nbXRfdHggPSBicmNtZl9jeXdfbWdtdF90eDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjIzNzpcdGRydnItXHUwMDNlb3BzLVx1MDAzZWV4dGVybmFsX2F1dGggPSBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzOC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxMAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNvbnNpZGVyaW5nIGBicmNtZm1hY2AgRnV6emluZyB2aWEgVVNCKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gVGhlIGBicmNtZm1hY2AgZHJpdmVyLiBJbnRyaWd1aW5nIHRhcmdldCwgZXNwZWNpYWxseSB3aXRoIGl0cyBleHBvc3VyZSB0byBwb3RlbnRpYWxseSB1bnRydXN0ZWQgZGF0YSB2aWEgVVNCLiBUaGUgdGhvdWdodCB0aGF0JiMzOTtzIGJ1YmJsaW5nIHVwIGlzLCBjb3VsZCB3ZSBlZmZlY3RpdmVseSBmdXp6IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBieSBsZXZlcmFnaW5nIGEgVVNCIGludGVyZmFjZT8gVGhpcyBhbmdsZSBoYXNuJiMzOTt0IGJlZW4gZXhwbG9yZWQgbmVhcmx5IGFzIG9mdGVuIGFzIHRlc3Rpbmcgb3Zlci10aGUtYWlyLCBhbmQgdGhlIG51YW5jZSBvZiBwb3RlbnRpYWwgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIGlzIHNvbWV0aGluZyB0byBjb25zaWRlci4gV2hhdCYjMzk7cyB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlPyBBcmUgdGhlcmUgc3BlY2lmaWMgVVNCIHRyYW5zZmVyIHR5cGVzIHRoYXQgd291bGQgYmUgbW9zdCBwcm9taXNpbmc/IFRoZSBjb21wbGV4aXR5IG9mIHRoZSBob3N0LXNpZGUgVVNCIHN0YWNrLCB0aGUgaW50cmljYWNpZXMgb2YgdGhlIGRyaXZlciBpdHNlbGYuLi4gdGhpcyBpcyBnb2luZyB0byBiZSBhIGZhc2NpbmF0aW5nIGNoYWxsZW5nZSBhbmQgaXQgY291bGQgYmUgZnJ1aXRmdWwgZm9yIGRpc2NvdmVyaW5nIG5ldyB2dWxuZXJhYmlsaXRpZXMuIFRpbWUgdG8gZGlnIGluIGFuZCBmb3JtdWxhdGUgYSBwbGFuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7U0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7UENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE1MgoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBCUkNNRk1BQ19VU0JgIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgQlJDTUZNQUNfVVNCYCBpcyBhIGRlZmluZWQgZW50aXR5LiBOb3csIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY2AuIE15IHRoaW5raW5nIGlzIHRoYXQgc2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBCcm9hZGNvbSBXaS1GaSBhbmQgaXRzIFVTQiBpbnRlcmZhY2UsIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgbWlnaHQgcHJvdmlkZSBzb21lIHJlbGV2YW50IGluc2lnaHRzLiBJcyB0aGlzIGZ1bmN0aW9uIHNwZWNpZmljIHRvIENZVz8gTXkgcmVjb2xsZWN0aW9uIGlzIHRoYXQgQ1lXIHJlZmVycyB0byB0aGUgQ3lwcmVzcy9Ccm9hZGNvbSBXaS1GaSBpbXBsZW1lbnRhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGlzIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2Ugd2l0aGluIHRoYXQgY29udGV4dCBjb3VsZCBzaGVkIGxpZ2h0IG9uIHRoZSBVU0IgaW50ZWdyYXRpb24uIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmLCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEJSQ01GTUFDX1VTQmAuIFRoYXQgd2F5LCBJIGNhbiBlbnN1cmUgSSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIEJSQ01GTUFDXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA0Olx0XHRzZWxlY3QgQlJDTVVUSUxcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBCcm9hZGNvbVxuICAgNzpcdFx0ICBGdWxsTUFDIGNoaXBzZXRzLiBJdCBoYXMgdG8gd29yayB3aXRoIGF0IGxlYXN0IG9uZSBvZiB0aGUgYnVzXG4gICA4Olx0XHQgIGludGVyZmFjZSBzdXBwb3J0LiBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkXG4gICA5Olx0XHQgIGJyY21mbWFjLmtvLlxuICAxMDpcdFxuICAxMTpcdGNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG4gIDEyOlx0XHRib29sXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuICAxNTpcdFx0Ym9vbFxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBCUkNNRk1BQ19TRElPXG4gIDE4Olx0XHRib29sIFwmIzM0O1NESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiAoTU1DID0geSB8fCBNTUMgPSBCUkNNRk1BQylcbiAgMjA6XHRcdGRlcGVuZHMgb24gQlJDTUZNQUNcbiAgMjE6XHRcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXG4gIDIyOlx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDIzOlx0XHRkZWZhdWx0IHlcbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXG4gIDI2Olx0XHQgIElFRUU4MDIuMTFuIGVtYmVkZGVkIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFNheSBZIGlmIHlvdSB3YW50IHRvXG4gIDI3Olx0XHQgIHVzZSB0aGUgZHJpdmVyIGZvciBhIFNESU8gd2lyZWxlc3MgY2FyZC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgQlJDTUZNQUNfVVNCXG4gIDMwOlx0XHRib29sIFwmIzM0O1VTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4gIDMxOlx0XHRkZXBlbmRzIG9uIChVU0IgPSB5IHx8IFVTQiA9IEJSQ01GTUFDKVxuICAzMjpcdFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xuICAzMzpcdFx0c2VsZWN0IEJSQ01GTUFDX1BST1RPX0JDRENcbiAgMzQ6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgQnJvYWRjb21cbiAgMzc6XHRcdCAgSUVFRTgwMi4xMW4gZW1iZWRkZWQgRnVsbE1BQyBXTEFOIGRyaXZlci4gU2F5IFkgaWYgeW91IHdhbnQgdG9cbiAgMzg6XHRcdCAgdXNlIHRoZSBkcml2ZXIgZm9yIGFuIFVTQiB3aXJlbGVzcyBjYXJkLlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBCUkNNRk1BQ19QQ0lFXG4gIDQxOlx0XHRib29sIFwmIzM0O1BDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xuICA0MzpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNDQ6XHRcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcbiAgNDU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgNDY6XHRcdGhlbHBcbiAgNDc6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXG4gIDQ4Olx0XHQgIElFRUU4MDIuMTFhYyBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xuICA0OTpcdFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYW4gUENJRSB3aXJlbGVzcyBjYXJkLlxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMDcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAuIEl0JiMzOTtzIGFzc2lnbmluZyB0aGlzIGZ1bmN0aW9uIHRvIGBkcnZyLSZndDtvcHMtJmd0O2V4dGVybmFsX2F1dGhgLCB3aGljaCBJIHJlY29nbml6ZSBhcyB0aGUgYGV4dGVybmFsX2F1dGhgIG9wZXJhdGlvbiBpbiBjZmc4MDIxMS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7ZnV6emFibGU/JiMzNDsgQWJzb2x1dGVseS4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCBjcnVjaWFsbHksIGl0JiMzOTtzIGV4cG9zZWQgdGhyb3VnaCBuZXRsaW5rIChubDgwMjExKS4gVGhhdCBtYWtlcyBpdCBhY2Nlc3NpYmxlLCBhc3N1bWluZyB0aGUgZGV2aWNlIHJlZ2lzdGVycyB3aXRoIHRoZSBrZXJuZWwsIG9mIGNvdXJzZS4KClRoZSBuZXh0IHF1ZXN0aW9uIGluIG15IG1pbmQgaXMsICYjMzQ7Y2FuIHRoaXMgZGV2aWNlIHJlZ2lzdHJhdGlvbiBiZSB0cmlnZ2VyZWQgd2l0aGluIHN5emthbGxlcj8mIzM0OyBBaCwgeWVzISBTeXprYWxsZXIgbGV2ZXJhZ2VzIHZoY2kgKHZpcnR1YWwgVVNCKSB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLiBJZiB3ZSBjYW4gZ2V0IGl0IHRvIGVtdWxhdGUgYSBCcm9hZGNvbSBVU0IgZGV2aWNlLCB0aGVuIHRoZSBkcml2ZXIgKnNob3VsZCogcHJvYmUgYW5kIHJlZ2lzdGVyIHdpdGggY2ZnODAyMTEuIEFuZCBpZiB0aGF0IGhhcHBlbnMsIHRoZW4gd2UgY2FuIGhpdCB0aGF0IGBleHRlcm5hbF9hdXRoYCBmdW5jdGlvbiB2aWEgbmw4MDIxMS4KCk5vdywgYmVmb3JlIEkgZ2V0IHRvbyBjYXJyaWVkIGF3YXksIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgY29ycmVjdCBrZXJuZWwgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZS4uLkkmIzM5O2xsIG5lZWQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgZW5hYmxlZCwgY2xlYXJseS4gQW5kLCBvZiBjb3Vyc2UsIGBDRkc4MDIxMWAuIFRlY2huaWNhbGx5LCBgTUFDODAyMTFgIGlzbiYjMzk7dCBzdHJpY3RseSAqcmVxdWlyZWQqIGZvciBhIEZ1bGxNQUMgZHJpdmVyIGxpa2UgdGhpcywgYnV0IGBDRkc4MDIxMWAgaXMuIE9rYXksIGdvb2QuIFRoYXQgYWxsIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guCgpBbHJpZ2h0LCB0aW1lIHRvIHJldmlzaXQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBhbmQgY29uZmlybSB0aGUgYXR0YWNrIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX2N5d19leHRlcm5hbF9hdXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTE5Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoxOTg6YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTE5OS1cdFx0XHRzdHJ1Y3QgY2ZnODAyMTFfZXh0ZXJuYWxfYXV0aF9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0yMzQ9c3RhdGljIHZvaWQgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzYtXHRkcnZyLVx1MDAzZW9wcy1cdTAwM2VtZ210X3R4ID0gYnJjbWZfY3l3X21nbXRfdHg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzc6XHRkcnZyLVx1MDAzZW9wcy1cdTAwM2VleHRlcm5hbF9hdXRoID0gYnJjbWZfY3l3X2V4dGVybmFsX2F1dGg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIHRoZSBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDt3aGVyZSBpcyBgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHNgIGFjdHVhbGx5ICp1c2VkKj8mIzM0Oy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIFRoaXMgbWVhbnMgSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0JiMzOTtzICpjYWxsaW5nKiBpdC4gSXMgaXQgYSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gcm91dGluZT8gSXMgaXQgcGFydCBvZiBhIGNvbnRyb2wgcGF0aCBmb3IgaGFuZGxpbmcgYW4gZXZlbnQ/IEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHdpbGwgaW1tZWRpYXRlbHkgdGVsbCBtZSB3aGF0IGFyZWEgb2YgdGhlIHdpcmVsZXNzIHN0YWNrIHRoaXMgaXMgcmVsZXZhbnQgdG8uIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCBhIGBncmVwYCBvciBhIHNpbWlsYXIgdG9vbCB0byBmaW5kIGFsbCBpbnN0YW5jZXMgb2YgdGhpcyBzeW1ib2wgYmVpbmcgcmVmZXJlbmNlZCwgdGhlbiBhbmFseXplIHRob3NlIGNhbGxzIG1vcmUgY2xvc2VseS4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBvcGVyYXRpb25hbCBjb250ZXh0IGFuZCB3aGF0IGRlcGVuZGVuY2llcyBvciBjb25zdHJhaW50cyBhcmUgYXQgcGxheS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgcHJvYmFibHkgYSBjcml0aWNhbCBwaWVjZSByZWxhdGVkIHRvIGNmZzgwMjExIGludGVncmF0aW9uIHdpdGhpbiB0aGUgQnJvYWRjb20gZHJpdmVyLCBidXQgc2VlaW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljIHB1cnBvc2UuIExldCYjMzk7cyBzdGFydCBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0xOTg9YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzQ6c3RhdGljIHZvaWQgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9Mzc0PWNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzctXHQuYWN0aXZhdGVfZXZlbnRzID0gYnJjbWZfY3l3X2FjdGl2YXRlX2V2ZW50cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjM3ODpcdC5nZXRfY2ZnODAyMTFfb3BzID0gYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzktXHQucmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMgPSBicmNtZl9jeXdfcmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NzQKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYGJyY21mX2N5d19vcHNgIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21ldGhpbmcgd2l0aGluIGBicmNtZl9jeXdfb3BzYC4gTXkgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIGl0cyBzY29wZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIEl0JiMzOTtzIGNsZWFyIHRoYXQgaXQmIzM5O3MgcmVsYXRlZCB0byBzb21lIGJyb2FkZXIgb3BlcmF0aW9uLCBzbyBJIGhhdmUgdG8gZ28gZGVlcGVyIGFuZCBwaW5wb2ludCB3aGVyZSBgYnJjbWZfY3l3X29wc2AgaXMgYWN0dWFsbHkgKnVzZWQqLiBXaGVyZSBhcmUgdGhlIGNhbGxzPyBXaGF0IGZ1bmN0aW9ucyBhcmUgbGV2ZXJhZ2luZyB0aGlzPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkgbmVlZCB0byB0cmFjZSB0aGlzIG9uZSBkb3duLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9jeXdfb3BzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTM2Mj1zdGF0aWMgdm9pZCBicmNtZl9jeXdfcmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozNzQ6Y29uc3Qgc3RydWN0IGJyY21mX2Z3dmlkX29wcyBicmNtZl9jeXdfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzc1LVx0LnNldF9zYWVfcGFzc3dvcmQgPSBicmNtZl9jeXdfc2V0X3NhZV9wd2QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTQtXHRyZXR1cm4gYnJjbWZfZnd2aWRfcmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jOjE1Olx0XHRcdFx0XHQgICBcdTAwMjZicmNtZl9jeXdfb3BzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTYtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnJjbWZfZnd2aWRfb3BzIGJyY21mX2N5d19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo5OiNkZWZpbmUgQ1lXX1ZPUFNcdChcdTAwMjZicmNtZl9jeXdfb3BzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmgtMTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NDcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgYnJjbWZtYWNgIERyaXZlciYjMzk7cyBDWVcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBoYW5kbGVzIGl0cyB2ZW5kb3JzLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGBicmNtZl9jeXdfb3BzYCBpcyByZWdpc3RlcmVkIGFzIHRoZSB2ZW5kb3Igb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgZm9yIGBCUkNNRl9GV1ZFTkRPUl9DWVdgLiBUaGF0IGluZGljYXRlcyB0aGlzIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgQnJvYWRjb20gQ1lXIChsaWtlbHkgbWVhbmluZyBDeXByZXNzIFdpcmVsZXNzKSBmaXJtd2FyZSBvciBoYXJkd2FyZSB3aXRoaW4gdGhlIGBicmNtZm1hY2AgZnJhbWV3b3JrLiBUaGlzIHJlZ2lzdHJhdGlvbiBpcyBhIGtleSBzdGFydGluZyBwb2ludC4KCk5vdywgSSBuZWVkIHRvIGRpZyBpbiBhIGJpdCBkZWVwZXIuIEdpdmVuIHRoYXQgaXQgaGFzIGl0cyBvd24gYG9wc2Agc3RydWN0dXJlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgZm9yICpzcGVjaWZpYyogY29uZmlndXJhdGlvbiBvcHRpb25zLCBzZXR0aW5ncywgb3IgdmFyaWF0aW9ucyB0YWlsb3JlZCBzcGVjaWZpY2FsbHkgZm9yIENZVyBkZXZpY2VzIHdpdGhpbiB0aGUgYnJvYWRlciBgYnJjbWZtYWNgIGNvZGViYXNlLiBBcmUgdGhlcmUgc3BlY2lhbCBxdWlya3MsIG9wdGltaXphdGlvbnMsIG9yIHBhcmFtZXRlciBvdmVycmlkZXMgYmFzZWQgb24gZGV0ZWN0aW5nIHRoaXMgdmVuZG9yIElEPyBXaGF0IHJvdXRpbmVzIGhhbmRsZSBmaXJtd2FyZSBsb2FkaW5nLCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBvciBwb3dlciBtYW5hZ2VtZW50ICp1bmlxdWVseSogZm9yIENZVz8gVGltZSB0byB0cmFjZSB0aGUgY29kZSBwYXRocyBhbmQgc2VlIHdoYXQgY3VzdG9tIGhhbmRsaW5nIGlzIHByZXNlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7U0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7UENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NjgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNZVyBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYSBwcmUtZXhpc3RpbmcgY29uZmlndXJhdGlvbiBmaWxlLCBkaXJlY3RpdmUsIG9yIHN5c3RlbSBzZXR0aW5nIHNwZWNpZmljYWxseSBkZWRpY2F0ZWQgdG8gdGhlIENZVyAocHJlc3VtYWJseSBhIEJyb2FkY29tIFdpLUZpIGNoaXBzZXQgb3IgcmVsYXRlZCBoYXJkd2FyZSwgZ2l2ZW4gdGhlIGNvbnRleHQpLiBJdCYjMzk7cyBhbHdheXMgYmVzdCB0byBzdGFydCB3aXRoIGEgY29uZmlndXJhdGlvbiBjaGVjay4gVGhpcyB3aWxsIGRlcGVuZCBvbiB0aGUgT1MgYW5kIHN5c3RlbSBpbiBxdWVzdGlvbi4gSXMgaXQgYSBzdGFuZGFyZCBMaW51eCBkaXN0cmlidXRpb24/IEEgY3VzdG9tIGVtYmVkZGVkIHN5c3RlbT8gS25vd2luZyB0aGUgcGxhdGZvcm0gaXMga2V5LgoKTXkgZm9jdXMgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgaWYgdGhlcmUmIzM5O3MgYW4gZXhpc3RpbmcgZmlsZSBvciBtZWNoYW5pc20gdG8gc2V0IHVwIHBhcmFtZXRlcnMgZm9yIHRoZSBDWVcuIEkgd291bGQgbG9vayBmb3Iga25vd24gY29uZmlndXJhdGlvbiBmaWxlIHBhdGhzLCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG9yIGV2ZW4gYSBkYXRhYmFzZS4gSWYgSSYjMzk7bSBsdWNreSwgYSBxdWljayBgZ3JlcGAgb3IgYGZpbmRgIG1pZ2h0IHJldmVhbCBhIHJlbGV2YW50IGZpbGUuIE1vcmUgbGlrZWx5LCBJIHdpbGwgaGF2ZSB0byBjb25zdWx0IHRoZSBtYW51ZmFjdHVyZXImIzM5O3MgZG9jdW1lbnRhdGlvbi4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgcmVpbnZlbnRpbmcgdGhlIHdoZWVsIGFuZCB0byBsZXZlcmFnZSBhbnkgZXhpc3RpbmcgZnJhbWV3b3JrIHRoYXQgbWlnaHQgYWxyZWFkeSBiZSBpbiBwbGFjZSBmb3IgbWFuYWdpbmcgQ1lXIGRldmljZSBwYXJhbWV0ZXJzLCBzdWNoIGFzIHBvd2VyIG1hbmFnZW1lbnQgc2V0dGluZ3MsIGludGVyZmFjZSBzZXR0aW5ncywgcmVndWxhdG9yeSBkb21haW4gZXRjLiBJZiB0aGF0JiMzOTtzIHRoZSBjYXNlLCBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiB2aWV3IGFuZCBlZGl0IHRoZXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQ19DWVcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTc0CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaXZpbmcgaW50byB0aGUgYnJjbWZtYWMgTWFrZWZpbGUqKgoKT2theSwgc28gd2UmIzM5O3JlIHN0YXJ0aW5nIHdpdGggdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGVgLiBJbW1lZGlhdGVseSwgSSBrbm93IHRoaXMgaXMgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlciBjb21waWxhdGlvbiByZXNpZGVzIGZvciB0aGUgYnJjbWZtYWMgZHJpdmVyLiBNeSBtZW50YWwgY2hlY2tsaXN0IGtpY2tzIGluOiBJJiMzOTttIGFudGljaXBhdGluZyB0byBzZWUgdGhlIHR5cGljYWwgTWFrZWZpbGUgZWxlbWVudHM6IHNvdXJjZSBmaWxlIGxpc3RzLCBvYmplY3QgZmlsZSBnZW5lcmF0aW9uIHJ1bGVzLCBkZXBlbmRlbmN5IGRlZmluaXRpb25zLCBpbmNsdXNpb24gcGF0aHMsIHByb2JhYmx5IHNvbWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHNlY3Rpb25zLCBhbmQgaG9wZWZ1bGx5IHdlbGwtZGVmaW5lZCB2YXJpYWJsZXMgZm9yIHRoZSBrZXJuZWwgYnVpbGQgZW52aXJvbm1lbnQuIEkgZXhwZWN0IHRvIHNlZSBmbGFncywgb2JqZWN0IGdlbmVyYXRpb24sIHJ1bGVzIGZvciBrZXJuZWwgbW9kdWxlcywgYW5kIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9yIGNvbmZpZ3VyYXRpb25zLCBhcyB3ZWxsIGFzIHRoZSBtb2R1bGVzIHRoYXQgbWlnaHQgZ2V0IGFkZGVkIGFzIGEgcmVzdWx0IG9mIHRoYXQgYnVpbGQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIG9wdGltaXphdGlvbiBmbGFncywgZGVidWdnaW5nIHN5bWJvbHMsIGFuZCwgb2YgY291cnNlLCB0aGUgbW9kdWxlIG5hbWUgZGVmaW5pdGlvbi4gSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBzY2FuIGZvciB0aGUgY29tbW9uIGAkKENPTkZJR19CUkNNRk1BQylgIGd1YXJkIOKAkyB0aGF0IHdpbGwgdGVsbCBtZSBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBzdGFuZGFyZCBidWlsZC4gVGhpcyBpbml0aWFsIHNjYW4gaXMgYWJvdXQgYnVpbGRpbmcgYSBtZW50YWwgbWFwIG9mIHRoZSBkcml2ZXImIzM5O3MgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZnJhZ21lbnQgZm9yIEJyb2FkY29tIDgwMi4xMSBOZXR3b3JraW5nIERldmljZSBEcml2ZXJcbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKGMpIDIwMTAgQnJvYWRjb20gQ29ycG9yYXRpb25cbiAgIDY6XHQjXG4gICA3Olx0XG4gICA4Olx0Y2NmbGFncy15ICYjNDM7PSBcXFxuICAgOTpcdFx0LUkgJChzcmMpIFxcXG4gIDEwOlx0XHQtSSAkKHNyYykvLi4vaW5jbHVkZVxuICAxMTpcdFxuICAxMjpcdG9iai0kKENPTkZJR19CUkNNRk1BQykgJiM0Mzs9IGJyY21mbWFjLm9cbiAgMTM6XHRicmNtZm1hYy1vYmpzICYjNDM7PSBcXFxuICAxNDpcdFx0XHRjZmc4MDIxMS5vIFxcXG4gIDE1Olx0XHRcdGNoaXAubyBcXFxuICAxNjpcdFx0XHRmd2lsLm8gXFxcbiAgMTc6XHRcdFx0ZndlaC5vIFxcXG4gIDE4Olx0XHRcdHAycC5vIFxcXG4gIDE5Olx0XHRcdHByb3RvLm8gXFxcbiAgMjA6XHRcdFx0Y29tbW9uLm8gXFxcbiAgMjE6XHRcdFx0Y29yZS5vIFxcXG4gIDIyOlx0XHRcdGZpcm13YXJlLm8gXFxcbiAgMjM6XHRcdFx0Znd2aWQubyBcXFxuICAyNDpcdFx0XHRmZWF0dXJlLm8gXFxcbiAgMjU6XHRcdFx0YnRjb2V4Lm8gXFxcbiAgMjY6XHRcdFx0dmVuZG9yLm8gXFxcbiAgMjc6XHRcdFx0cG5vLm8gXFxcbiAgMjg6XHRcdFx0eHRsdi5vXG4gIDI5Olx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfUFJPVE9fQkNEQykgJiM0Mzs9IFxcXG4gIDMwOlx0XHRcdGJjZGMubyBcXFxuICAzMTpcdFx0XHRmd3NpZ25hbC5vXG4gIDMyOlx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfUFJPVE9fTVNHQlVGKSAmIzQzOz0gXFxcbiAgMzM6XHRcdFx0Y29tbW9ucmluZy5vIFxcXG4gIDM0Olx0XHRcdGZsb3dyaW5nLm8gXFxcbiAgMzU6XHRcdFx0bXNnYnVmLm9cbiAgMzY6XHRicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19TRElPKSAmIzQzOz0gXFxcbiAgMzc6XHRcdFx0c2Rpby5vIFxcXG4gIDM4Olx0XHRcdGJjbXNkaC5vXG4gIDM5Olx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfVVNCKSAmIzQzOz0gXFxcbiAgNDA6XHRcdFx0dXNiLm9cbiAgNDE6XHRicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19QQ0lFKSAmIzQzOz0gXFxcbiAgNDI6XHRcdFx0cGNpZS5vXG4gIDQzOlx0YnJjbWZtYWMtJChDT05GSUdfQlJDTURCRykgJiM0Mzs9IFxcXG4gIDQ0Olx0XHRcdGRlYnVnLm9cbiAgNDU6XHRicmNtZm1hYy0kKENPTkZJR19CUkNNX1RSQUNJTkcpICYjNDM7PSBcXFxuICA0NjpcdFx0XHR0cmFjZXBvaW50Lm9cbiAgNDc6XHRicmNtZm1hYy0kKENPTkZJR19PRikgJiM0Mzs9IFxcXG4gIDQ4Olx0XHRcdG9mLm9cbiAgNDk6XHRicmNtZm1hYy0kKENPTkZJR19ETUkpICYjNDM7PSBcXFxuICA1MDpcdFx0XHRkbWkub1xuICA1MTpcdGJyY21mbWFjLSQoQ09ORklHX0FDUEkpICYjNDM7PSBcXFxuICA1MjpcdFx0XHRhY3BpLm9cbiAgNTM6XHRcbiAgNTQ6XHRpZmVxICgkKENPTkZJR19CUkNNRk1BQyksbSlcbiAgNTU6XHRvYmotbSAmIzQzOz0gd2NjL1xuICA1NjpcdG9iai1tICYjNDM7PSBjeXcvXG4gIDU3Olx0b2JqLW0gJiM0Mzs9IGJjYS9cbiAgNTg6XHRlbHNlXG4gIDU5Olx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUMpICYjNDM7PSB3Y2MvY29yZS5vXG4gIDYwOlx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUMpICYjNDM7PSBjeXcvY29yZS5vXG4gIDYxOlx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUMpICYjNDM7PSBiY2EvY29yZS5vXG4gIDYyOlx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNzMKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFN5c3RlbSAtIGBjeXcvY29yZS5vYCBhbmQgYENPTkZJR19CUkNNRk1BQ2AqKgoKUmlnaHQsIHNvIGBjeXcvY29yZS5vYCBpcyBhbHdheXMgYnVpbHQgd2hlbiBgQ09ORklHX0JSQ01GTUFDYCBpcyB0dXJuZWQgb24uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggYXQgZmlyc3QgZ2xhbmNlLiBCdXQgaGFuZyBvbiwgYSBzbGlnaHQgd3JpbmtsZSBlbWVyZ2VzLiBJZiBgQ09ORklHX0JSQ01GTUFDYCBpcyBidWlsdCBhcyBhIG1vZHVsZSAoYENPTkZJR19CUkNNRk1BQz1tYCksIGRvZXNuJiMzOTt0IHRoYXQgaW1wbHkgdGhhdCB0aGUgYGN5dy9gIGRpcmVjdG9yeSBjb250YWluaW5nIGBjeXcvY29yZS5vYCAqYWxzbyogYmVjb21lcyBhIHNlcGFyYXRlIG1vZHVsZT8gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgcG9pbnQgSSBuZWVkIHRvIGNsYXJpZnkuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciB0aGF0IGRpcmVjdG9yeSBkaXJlY3RseS4gVGhlIG9idmlvdXMgcGxhY2UgdG8gbG9vayBpcyB0aGUgYE1ha2VmaWxlYCBpdHNlbGYsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9NYWtlZmlsZWAuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlIGJ1aWxkIGxvZ2ljIHJlZmxlY3RzIHRoaXMgY29uZGl0aW9uYWwgbW9kdWxhcml6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHQjXG4gICAzOlx0IyBDb3B5cmlnaHQgKGMpIDIwMjIgQnJvYWRjb20gQ29ycG9yYXRpb25cbiAgIDQ6XHRcbiAgIDU6XHRjY2ZsYWdzLXkgJiM0Mzs9IFxcXG4gICA2Olx0XHQtSSAkKHNyYykgXFxcbiAgIDc6XHRcdC1JICQoc3JjKS8uLiBcXFxuICAgODpcdFx0LUkgJChzcmMpLy4uLy4uL2luY2x1ZGVcbiAgIDk6XHRcbiAgMTA6XHRvYmotbSAmIzQzOz0gYnJjbWZtYWMtY3l3Lm9cbiAgMTE6XHRicmNtZm1hYy1jeXctb2JqcyAmIzQzOz0gXFxcbiAgMTI6XHRcdFx0Y29yZS5vIG1vZHVsZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjg1CgkJCQkJCQlvdXRwdXQ6IDU2CgkJCQkJCQl0aG91Z2h0czogMjY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGJyY21mbWFjLWN5dy5rb2AgTW9kdWxlIGFuZCBFeHRlcm5hbCBBdXRoZW50aWNhdGlvbioqCgpPa2F5LCBzbyBJIHNlZSBgYnJjbWZtYWMtY3l3LmtvYCBpcyBidWlsdCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBpbiBgY3l3L2NvcmUuY2Agd29ya3MuIEkgcmVjYWxsIHRoaXMgZnVuY3Rpb24gaXMgcmVhY2hlZCB2aWEgdGhlIGBjZmc4MDIxMWAgZXh0ZXJuYWwgYXV0aGVudGljYXRpb24gb3BlcmF0aW9uLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludC4gTm93LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuCgpJIHNlZSB0aGF0IGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIGFyZSByZWxldmFudCB0byB0aGlzIG1vZHVsZSwgd2hpY2ggaXMgaW1wb3J0YW50IGZvciB0aGluZ3MgbGlrZSBmdXp6aW5nIHZpYSB2aXJ0dWFsIFVTQi4gT2YgY291cnNlLCBgQ0ZHODAyMTFgIGl0c2VsZiBpcyBhbHNvIGNyaXRpY2FsIGhlcmUuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYENGRzgwMjExYC4gSXQgc2VlbXMgdG8gb3B0aW9uYWxseSBkZXBlbmQgb24gYFJGS0lMTGAgYW5kIGBNQUM4MDIxMWAuIEhvd2V2ZXIsIEkmIzM5O20gcHJldHR5IHN1cmUgYENGRzgwMjExYCBpcyB1c3VhbGx5IGVuYWJsZWQgaW4gc3l6a2FsbGVyLgoKTGV0JiMzOTtzIGxvb2sgYXQgYEJSQ01GTUFDYCBpbiBtb3JlIGRldGFpbC4gSXQgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLiBBbmQgYEJSQ01GTUFDX1VTQmAgZGVwZW5kcyBvbiBgKFVTQiA9IHkgfHwgVVNCID0gQlJDTUZNQUMpYCBhbmQgYEJSQ01GTUFDYC4gU28gdGhlIGtleSBtb2R1bGVzIGFyZSBgQlJDTUZNQUNgIGFuZCBgQlJDTUZNQUNfVVNCYC4gQWxyaWdodCwgSSYjMzk7dmUgZ290IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBkZXBlbmRlbmNpZXMsIEkgc2hvdWxkIGNpcmNsZSBiYWNrIGFuZCByZXZpZXcgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBhZ2FpbiB3aXRoIHRoaXMgY29udGV4dCBpbiBtaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTA6XHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4gMTkxOlx0XHRcdFx0XHRHRlBfS0VSTkVMKTtcbiAxOTI6XHRmcmVlOlxuIDE5MzpcdFx0a2ZyZWUobWZfcGFyYW1zKTtcbiAxOTQ6XHRcdHJldHVybiBlcnI7XG4gMTk1Olx0fVxuIDE5NjpcdFxuIDE5NzpcdHN0YXRpYyBpbnRcbiAxOTg6XHRicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIDE5OTpcdFx0XHRcdHN0cnVjdCBjZmc4MDIxMV9leHRlcm5hbF9hdXRoX3BhcmFtcyAqcGFyYW1zKVxuIDIwMDpcdHtcbiAyMDE6XHRcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuIDIwMjpcdFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbiAyMDM6XHRcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXMgPSB7fTtcbiAyMDQ6XHRcdGludCByZXQgPSAwO1xuIDIwNTpcdFxuIDIwNjpcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG4gMjA3Olx0XG4gMjA4Olx0XHRpZnAgPSBuZXRkZXZfcHJpdihkZXYpO1xuIDIwOTpcdFx0ZHJ2ciA9IGlmcC1cdTAwM2VkcnZyO1xuIDIxMDpcdFx0aWYgKHBhcmFtcy1cdTAwM2VzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykge1xuIDIxMTpcdFx0XHRpZiAocGFyYW1zLVx1MDAzZXBta2lkKVxuIDIxMjpcdFx0XHRcdG1lbWNweShhdXRoX3N0YXR1cy5wbWtpZCwgcGFyYW1zLVx1MDAzZXBta2lkLCBXTEFOX1BNS0lEX0xFTik7XG4gMjEzOlx0XHRcdGF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTtcbiAyMTQ6XHRcdH0gZWxzZSB7XG4gMjE1Olx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O0V4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogc3RhdHVzPSVkXFxuXCYjMzQ7LFxuIDIxNjpcdFx0XHRcdCBwYXJhbXMtXHUwMDNlc3RhdHVzKTtcbiAyMTc6XHRcdFx0YXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX0ZBSUwpO1xuIDIxODpcdFx0fVxuIDIxOTpcdFxuIDIyMDpcdFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBlZXJfbWFjLCBwYXJhbXMtXHUwMDNlYnNzaWQsIEVUSF9BTEVOKTtcbiAyMjE6XHRcdHBhcmFtcy1cdTAwM2Vzc2lkLnNzaWRfbGVuID0gbWluX3QodTgsIHBhcmFtcy1cdTAwM2Vzc2lkLnNzaWRfbGVuLFxuIDIyMjpcdFx0XHRcdFx0ICAgICAgSUVFRTgwMjExX01BWF9TU0lEX0xFTik7XG4gMjIzOlx0XHRhdXRoX3N0YXR1cy5zc2lkX2xlbiA9IGNwdV90b19sZTMyKHBhcmFtcy1cdTAwM2Vzc2lkLnNzaWRfbGVuKTtcbiAyMjQ6XHRcdG1lbWNweShhdXRoX3N0YXR1cy5zc2lkLCBwYXJhbXMtXHUwMDNlc3NpZC5zc2lkLCBwYXJhbXMtXHUwMDNlc3NpZC5zc2lkX2xlbik7XG4gMjI1Olx0XG4gMjI2Olx0XHRyZXQgPSBicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcJiMzNDthdXRoX3N0YXR1c1wmIzM0OywgXHUwMDI2YXV0aF9zdGF0dXMsXG4gMjI3Olx0XHRcdFx0XHQgICAgICAgc2l6ZW9mKGF1dGhfc3RhdHVzKSk7XG4gMjI4Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDIyOTpcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDthdXRoX3N0YXR1cyBpb3ZhciBmYWlsZWQ6IHJldD0lZFxcblwmIzM0OywgcmV0KTtcbiAyMzA6XHRcbiAyMzE6XHRcdHJldHVybiByZXQ7XG4gMjMyOlx0fVxuIDIzMzpcdFxuIDIzNDpcdHN0YXRpYyB2b2lkIGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4gMjM1Olx0e1xuIDIzNjpcdFx0ZHJ2ci1cdTAwM2VvcHMtXHUwMDNlbWdtdF90eCA9IGJyY21mX2N5d19tZ210X3R4O1xuIDIzNzpcdFx0ZHJ2ci1cdTAwM2VvcHMtXHUwMDNlZXh0ZXJuYWxfYXV0aCA9IGJyY21mX2N5d19leHRlcm5hbF9hdXRoO1xuIDIzODpcdH1cbiAyMzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyMzkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogYGF1dGhfc3RhdHVzYCBhbmQgYHBta2lkYCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCB0aWdodGVuaW5nIHVwIHNvbWUgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBhdXRoX3N0YXR1c2AuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGFsc28gbWFraW5nIHN1cmUgdGhhdCBgcG1raWRgIGdldHMgcHJvcGVybHkgY29waWVkLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgZGVmaW5pdGVseSBhIGNoYW5nZSB0aGF0IGltcGFjdHMgdGhlIHdpcmVsZXNzIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgc29tZSB2dWxuZXJhYmlsaXRpZXMgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBpcyB0aGUga2V5IHN5bWJvbCBoZXJlLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBkZWVwZXIgYW5hbHlzaXMuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBzb2x2ZXMgdGhlIHByb2JsZW0gZGVzY3JpYmVkIGluIHRoZSBhc3NvY2lhdGVkIHRpY2tldC4KClRvIGNvbmZpcm0gdGhhdCwgYW5kIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIGVudmlyb25tZW50IGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gYEJSQ01GTUFDYCwgYEJSQ01GTUFDX1VTQmAsIGFuZCBgQ0ZHODAyMTFgIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LCBnaXZlbiB0aGUgZHJpdmVyJiMzOTtzIHB1cnBvc2UuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aG9zZSBhcmUgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlncywgaG93ZXZlcjsgaXQgaXMgbGlrZWx5IHRoYXQgSSYjMzk7bGwgbmVlZCBzb21lIGFkZGl0aW9uYWwgY29udGV4dC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEJSQ01GTUFDYCB0byBiZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBhbnl0aGluZyBlbHNlIGluIHBsYXkgaGVyZSB0aGF0IEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSQ01GTUFDJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE6Y29uZmlnIEJSQ01GTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTE6Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEyLVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNDpjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNS1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTc6Y29uZmlnIEJSQ01GTUFDX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjI5OmNvbmZpZyBCUkNNRk1BQ19VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyMTIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIENGRzgwMjExIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgcmlkaW5nIG9uIGBDRkc4MDIxMWAgdG9kYXkuIEl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2UsIGFuZCBhbnkgY2hhbmdlIEkgbWFrZSBuZWVkcyB0byBiZSBtZXRpY3Vsb3VzbHkgcGxhbm5lZCwgc28gbGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBkZXBlbmRlbmN5IGFuYWx5c2lzLiBUaW1lIHRvIHRyYWNlIHRoZSBsaW5lYWdlIGFuZCBzZWUgd2hhdCB0aGlzIGJlYXN0IGlzIGNvbm5lY3RlZCB0byBpbiB0aGUgc3RhY2suIFdoYXQgbW9kdWxlcyBkZXBlbmQgb24gdGhpcz8gV2hhdCBhc3BlY3RzIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrIGFyZSBmdW5kYW1lbnRhbGx5IHRpZWQgdG8gdGhpcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIHRoZSBkb3duc3RyZWFtIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIG1ha2luZyBhIHR3ZWFrLiBJdOKAmXMgbGlrZSBzdXJnZXJ5OyB5b3UgZG9uJiMzOTt0IHN0YXJ0IGN1dHRpbmcgd2l0aG91dCBrbm93aW5nIHRoZSBwYXRpZW50JiMzOTtzIGZ1bGwgYW5hdG9teS4gTGV04oCZcyBpZGVudGlmeSB0aGUgcG90ZW50aWFsIHJpcHBsZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXHRib29sIFwmIzM0O2VuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDthbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXHRzdHJpbmcgXCYjMzQ7YWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O2NmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVx0Ym9vbCBcJiMzNDtlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzM0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYG5ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlOgoKKipEaXZpbmcgaW50byB0aGUgQ0ZHODAyMTEgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgYENGRzgwMjExYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3aXJlbGVzcyBuZXR3b3JraW5nIGFyZSBzdHJ1Y3R1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheS4gTXkgcHJpbWFyeSBpbnRlcmVzdCBpcyBhbHdheXMgdGhlIGFyY2hpdGVjdHVyZSDigJMgaG93IHRoZSBtb2R1bGVzIGZpdCB0b2dldGhlci4KClNvLCBJJiMzOTttIHNjYW5uaW5nIGZvciBgQ0ZHODAyMTFgLCBsaWtlbHkgc2VhcmNoaW5nIGZvciB0aGUgYGNvbmZpZ2AgYmxvY2sgdGhhdCBkZWZpbmVzIGl0LiBSaWdodCwgaGVyZSBpdCBpcy4gSXQmIzM5O3MgbWFya2VkIGFzIGEgY29yZSB3aXJlbGVzcyBuZXR3b3JraW5nIGNvbXBvbmVudCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIGl0JiMzOTtzIGFuIGB0cmlzdGF0ZWAgd2hpY2ggaXMgdXNlZnVsLiBJIHNob3VsZCBsb29rIGZvciBkZXBlbmRlbmNpZXMuCgpJIHNlZSB0aGF0IGBDRkc4MDIxMWAgY2FuIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBUaGF0IG9wZW5zIHRoZSBkb29yIGZvciBydW50aW1lIGxvYWRpbmcsIHdoaWNoIGlzIGdvb2QuIEltcG9ydGFudCBmb3IgZGlmZmVyZW50IHVzZSBjYXNlcy4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgb2YgY291cnNlLCB0aGF0IGNvcmUgY29tcG9uZW50cyB0aGF0IGFyZSBidWlsdC1pbiByZXF1aXJlIGEgcmVib290IHRvIHVwZGF0ZS4KClRoZSBkZXBlbmRlbmNpZXMgaGVyZSBhcmUgYWx3YXlzIGNydWNpYWwuIEFueXRoaW5nIHRoYXQgaGluZ2VzIG9uIHRoaXM/IE9rYXksIGl0JiMzOTtzIHByZXR0eSBzZWxmLWNvbnRhaW5lZCwgdGhvdWdoIGl0IGRvZXMgZGVwZW5kIG9uIHRoZSBrZXJuZWwgYmVpbmcgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUgbmV0d29ya2luZyBzdGFjaywgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgY2FuIHByb2JhYmx5IHNraXAgb3ZlciB0aGF0IG9uZS4KVGhlcmUmIzM5O3MgcHJvYmFibHkgYSBsb3Qgb2YgZGV2aWNlIGRyaXZlcnMgaW4gdGhlIHdpZGVyIHRyZWUgdGhhdCBob29rIGludG8gdGhpcyBjb25maWd1cmF0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBoYXZlIGEgbG9vayBhdCB0aG9zZSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcy4KQWxyaWdodCwgb3ZlcmFsbCwgdGhlIGNvbmZpZ3VyYXRpb24gc2VlbXMgd2VsbC1kZWZpbmVkIGFuZCBjbGVhcmx5IHN0cnVjdHVyZWQuIE5vdywgSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgY29uZmlndXJhdGlvbiBjaG9pY2VzIGltcGFjdCB0aGUgY29kZSBpdHNlbGYuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBhc3NvY2lhdGVkIHNvdXJjZSBmaWxlcyBhbmQgc2VlIGhvdyB0aG9zZSBgaWZkZWZgIHN0YXRlbWVudHMgYXJlIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE3Olx0Y29uZmlnIENGRzgwMjExXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gIDIwOlx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDIxOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMjI6XHRcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxuICAyMzpcdFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJiMzOTt0XG4gIDI0Olx0XHQjICh0aGlzIGlzIGhlcmUgcmF0aGVyIHRoYW4gYmVsb3cgdG8gYWxsb3cgaXQgdG8gYmUgYSBtb2R1bGUpXG4gIDI1Olx0XHRzZWxlY3QgQ1JZUFRPX1NIQTI1NiBpZiBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgY2ZnODAyMTEgaXMgdGhlIExpbnV4IHdpcmVsZXNzIExBTiAoODAyLjExKSBjb25maWd1cmF0aW9uIEFQSS5cbiAgMjg6XHRcdCAgRW5hYmxlIHRoaXMgaWYgeW91IGhhdmUgYSB3aXJlbGVzcyBkZXZpY2UuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gb24gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDMxOlx0XG4gIDMyOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxuICAzMzpcdFxuICAzNDpcdFx0ICBXaGVuIGJ1aWx0IGFzIGEgbW9kdWxlIGl0IHdpbGwgYmUgY2FsbGVkIGNmZzgwMjExLlxuICAzNTpcdFxuICAzNjpcdGlmIENGRzgwMjExXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTAyCgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDI2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBCcm9hZGNvbSBXTEFOIERyaXZlciBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEJyb2FkY29tIFdMQU4gZHJpdmVyIHZ1bG5lcmFiaWxpdHkgYW5kIGhvdyB0byBhcHByb2FjaCBpdCBmb3IgZnV6emluZy4gSXQgc2VlbXMgdGhlIGNvcmUgZGVwZW5kZW5jaWVzIGFyZSBhIGJpdCB0YW5nbGVkLiBJIHNlZSB0aGF0IGBDRkc4MDIxMWAgaGluZ2VzIG9uIGBSRktJTExgIOKAkyBlaXRoZXIgaXQmIzM5O3MgZW5hYmxlZCBvciBkaXNhYmxlZCwgYnV0IGl0ICptdXN0KiBiZSBkZWZpbmVkLiBUaGVuLCBgQlJDTUZNQUNgIHJlbGllcyBvbiBgQ0ZHODAyMTFgLCBuYXR1cmFsbHkuIFNvLCBqdXN0IHRob3NlIHR3byB3b3VsZCBtZWFuIEkgbmVlZCBgQlJDTUZNQUNgLCBgQlJDTUZNQUNfVVNCYCwgYW5kIGBDRkc4MDIxMWAgYXQgYSBtaW5pbXVtLgoKV2FpdCwgYEJSQ01GTUFDX1VTQmAgaW50cm9kdWNlcyBhIG5ldyBkZXBlbmRlbmN5OiBgVVNCYC4gSXQgbmVlZHMgYFVTQmAgdG8gYmUgc2V0IHRvICYjMzk7eSYjMzk7IG9yIHRvIGVxdWFsIGBCUkNNRk1BQ2AuIFNvLCBJJiMzOTtsbCBuZWVkIGBVU0JgIGV4cGxpY2l0bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZy4gTGV0JiMzOTtzIHNlZS4uLiBgQlJDTUZNQUNgLCBgQlJDTUZNQUNfVVNCYCwgYENGRzgwMjExYCwgYW5kIGBVU0JgIHNob3VsZCBiZSBteSBjb25maWd1cmF0aW9ucy4gWWVzLCB0aGF0IHNob3VsZCBjb3ZlciBpdC4KClRoZSBpbnRlcmVzdGluZyBiaXQgaGVyZSBpcyB0aGF0IGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgaXMgcmVhY2hhYmxlIHRocm91Z2ggYGNmZzgwMjExYCB3aGVuIGVtdWxhdGluZyBhIEJyb2FkY29tIFVTQiBkZXZpY2UuIFRoYXQmIzM5O3MgYSBnb29kIGVudHJ5IHBvaW50LiBHaXZlbiB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGFuZCBtaXNzaW5nIFBNS0lEIGNvcHkgaW4gdGhlIEZ1bGxNQUMgZHJpdmVyJiMzOTtzIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGhhbmRsZXIsIGl0IHNvdW5kcyBkZWZpbml0ZWx5IHdvcnRoIG15IHRpbWUuIEkgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhhdCBgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgcG9pbnQsIHJlYWNoYWJsZSB2aWEgYGNmZzgwMjExYCBuZXRsaW5rIGNvbW1hbmRzIHdoZW4gYSB2aXJ0dWFsIFVTQiBCcm9hZGNvbSBkZXZpY2UgaXMgYmVpbmcgdXNlZC4gVGhhdCYjMzk7cyBteSB0YXJnZXQsIGFuZCB0aGF0JiMzOTtzIGhvdyBJJiMzOTtsbCBmcmFtZSBteSBmdXp6ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19VU0ImIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgYW5kIGFkZHMgbWlzc2luZyBQTUtJRCBjb3B5IGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyJiMzOTtzIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGhhbmRsZXIuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNmZzgwMjExIG5ldGxpbmsgY29tbWFuZHMgd2hlbiBhIHZpcnR1YWwgVVNCIEJyb2FkY29tIGRldmljZSBpcyBlbXVsYXRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJDTUZNQUMmIzM0OywKICAgICYjMzQ7QlJDTUZNQUNfVVNCJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2N5d19leHRlcm5hbF9hdXRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGFuZCBhZGRzIG1pc3NpbmcgUE1LSUQgY29weSBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciYjMzk7cyBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBoYW5kbGVyLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIHdoZW4gYSB2aXJ0dWFsIFVTQiBCcm9hZGNvbSBkZXZpY2UgaXMgZW11bGF0ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NjozNy44Nzc4MzM0NDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODM5NzQ1MjM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBhbmQgYWRkcyBtaXNzaW5nIFBNS0lEIGNvcHkgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIncyBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBoYW5kbGVyLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIHdoZW4gYSB2aXJ0dWFsIFVTQiBCcm9hZGNvbSBkZXZpY2UgaXMgZW11bGF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjM3Ljg3Nzg0MjQ5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0OTk5OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODZlYWNiYWE5OGU1N2RjYTQwNDRkZWU0MTZlNzU4NjNiNmNjNmEzMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAxMTo1NjozNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuaW5kZXggODczNzU0YmU1MTc0YmMuLjJjNTliNWU1Nzk1OWMwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcXG5AQCAtMjAwLDcgKzIwMCw3IEBAIGJyY21mX2N5d19leHRlcm5hbF9hdXRoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2lmICppZnA7XFxuIFxcdHN0cnVjdCBicmNtZl9wdWIgKmRydnI7XFxuLVxcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7XFxuK1xcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXMgPSB7fTtcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcbiBcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJFbnRlclxcXFxuXFxcIik7XFxuQEAgLTIwOCw2ICsyMDgsOCBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZnAgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHRkcnZyID0gaWZwLVxcdTAwM2VkcnZyO1xcbiBcXHRpZiAocGFyYW1zLVxcdTAwM2VzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykge1xcbitcXHRcXHRpZiAocGFyYW1zLVxcdTAwM2VwbWtpZClcXG4rXFx0XFx0XFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtXFx1MDAzZXBta2lkLCBXTEFOX1BNS0lEX0xFTik7XFxuIFxcdFxcdGF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogc3RhdHVzPSVkXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NjozOC4zNTQxNzA0MDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NzkyMTEwNjk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBhbmQgYWRkcyBtaXNzaW5nIFBNS0lEIGNvcHkgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIncyBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBoYW5kbGVyLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIHdoZW4gYSB2aXJ0dWFsIFVTQiBCcm9hZGNvbSBkZXZpY2UgaXMgZW11bGF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg2ZWFjYmFhOThlNTdkY2E0MDQ0ZGVlNDE2ZTc1ODYzYjZjYzZhMzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxMTo1NjozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IDg3Mzc1NGJlNTE3NGJjLi4yYzU5YjVlNTc5NTljMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuQEAgLTIwMCw3ICsyMDAsNyBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHtcbiBcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbi1cdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7XG4rXHRzdHJ1Y3QgYnJjbWZfYXV0aF9yZXFfc3RhdHVzX2xlIGF1dGhfc3RhdHVzID0ge307XG4gXHRpbnQgcmV0ID0gMDtcbiBcbiBcdGJyY21mX2RiZyhUUkFDRSwgXCJFbnRlclxcblwiKTtcbkBAIC0yMDgsNiArMjA4LDggQEAgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmcCA9IG5ldGRldl9wcml2KGRldik7XG4gXHRkcnZyID0gaWZwLVx1MDAzZWRydnI7XG4gXHRpZiAocGFyYW1zLVx1MDAzZXN0YXR1cyA9PSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XG4rXHRcdGlmIChwYXJhbXMtXHUwMDNlcG1raWQpXG4rXHRcdFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtXHUwMDNlcG1raWQsIFdMQU5fUE1LSURfTEVOKTtcbiBcdFx0YXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX1NVQ0NFU1MpO1xuIFx0fSBlbHNlIHtcbiBcdFx0YnBoeV9lcnIoZHJ2ciwgXCJFeHRlcm5hbCBhdXRoZW50aWNhdGlvbiBmYWlsZWQ6IHN0YXR1cz0lZFxcblwiLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTY6MzguMzU0MTcyMzkyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU2NDM5NjM5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGEgbWlzc2luZyBQTUtJRCBjb3B5LiBJdCBpbml0aWFsaXplcyBgYXV0aF9zdGF0dXNgIGFuZCB0aGVuIGNvcGllcyBgcGFyYW1zLVx1MDAzZXBta2lkYCB0byBpdCwgYnV0IG9ubHkgaWYgYHBhcmFtcy1cdTAwM2VwbWtpZGAgaXMgbm90IE5VTEwuIE1ha2VzIHNlbnNlLCB0aGF0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBlbnN1cmUgd2UncmUgaGFuZGxpbmcgdGhlIFBNS0lEIGRhdGEgY29ycmVjdGx5LiBUaGlzIGlzIHRhZ2dlZCBhcyBhIGZpeCwgc28gcHJlc3VtYWJseSB0aGlzIHdhcyBhIGJ1Zy5cblxuVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBoZXJlIGlzIGBicmNtZm1hY2AsIHdoaWNoIGlzIGEgQnJvYWRjb20gODAyLjExIHdpcmVsZXNzIExBTiBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaG93IHRlc3RhYmxlIGlzIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gV2lyZWxlc3MgZHJpdmVycyBjYW4gYmUgdHJpY2t5IHNpbmNlIHRoZXkgdXN1YWxseSByZWx5IG9uIHNwZWNpZmljIGhhcmR3YXJlLCB1bmxlc3Mgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBgYnJjbWZtYWNgIHN1cHBvcnRzIFNESU8sIFVTQiwgYW5kIFBDSUUhIFRoYXQgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzLlxuXG5JIGtub3cgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkLCBidXQgdXN1YWxseSB0aGF0J3MgdGhyb3VnaCBVU0IgZ2FkZ2V0IG9yIHNvbWV0aGluZyB3aXRoIGR1bW15X2hjZC4gQnV0LCB3YWl0Li4uc3l6a2FsbGVyISBJIHJlbWVtYmVyIHRoZXkgaGF2ZSBhIHZpcnR1YWwgVVNCIGZ1enplciwgYHZoY2lgLiBTbywgdGhhdCBtZWFucyBVU0IgZHJpdmVycyBhcmUgcG90ZW50aWFsbHkgZnV6emFibGUuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBicmNtZm1hY2AgaGFzIFVTQiBzdXBwb3J0LCB0aGF0J3MgdGhlIGtleS4gSWYgaXQgZG9lcywgdGhpcyBvcGVucyB1cCBhIHdob2xlIG5ldyBhdmVudWUgZm9yIGZ1enppbmcgdGhpcyBzcGVjaWZpYyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwNiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjQzLjkxODU3MjAzOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc3OTk0MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX2N5d19leHRlcm5hbF9hdXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTE5Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MTk4OmJyY21mX2N5d19leHRlcm5hbF9hdXRoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMTk5LVxcdFxcdFxcdHN0cnVjdCBjZmc4MDIxMV9leHRlcm5hbF9hdXRoX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MjM0PXN0YXRpYyB2b2lkIGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzYtXFx0ZHJ2ci1cXHUwMDNlb3BzLVxcdTAwM2VtZ210X3R4ID0gYnJjbWZfY3l3X21nbXRfdHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MjM3OlxcdGRydnItXFx1MDAzZW9wcy1cXHUwMDNlZXh0ZXJuYWxfYXV0aCA9IGJyY21mX2N5d19leHRlcm5hbF9hdXRoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzOC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjQ2LjE5NjU3MjQ0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTU5MjU3NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIGBicmNtZm1hY2AgRnV6emluZyB2aWEgVVNCKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSBgYnJjbWZtYWNgIGRyaXZlci4gSW50cmlndWluZyB0YXJnZXQsIGVzcGVjaWFsbHkgd2l0aCBpdHMgZXhwb3N1cmUgdG8gcG90ZW50aWFsbHkgdW50cnVzdGVkIGRhdGEgdmlhIFVTQi4gVGhlIHRob3VnaHQgdGhhdCdzIGJ1YmJsaW5nIHVwIGlzLCBjb3VsZCB3ZSBlZmZlY3RpdmVseSBmdXp6IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBieSBsZXZlcmFnaW5nIGEgVVNCIGludGVyZmFjZT8gVGhpcyBhbmdsZSBoYXNuJ3QgYmVlbiBleHBsb3JlZCBuZWFybHkgYXMgb2Z0ZW4gYXMgdGVzdGluZyBvdmVyLXRoZS1haXIsIGFuZCB0aGUgbnVhbmNlIG9mIHBvdGVudGlhbCBoYXJkd2FyZSByZXF1aXJlbWVudHMgaXMgc29tZXRoaW5nIHRvIGNvbnNpZGVyLiBXaGF0J3MgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZT8gQXJlIHRoZXJlIHNwZWNpZmljIFVTQiB0cmFuc2ZlciB0eXBlcyB0aGF0IHdvdWxkIGJlIG1vc3QgcHJvbWlzaW5nPyBUaGUgY29tcGxleGl0eSBvZiB0aGUgaG9zdC1zaWRlIFVTQiBzdGFjaywgdGhlIGludHJpY2FjaWVzIG9mIHRoZSBkcml2ZXIgaXRzZWxmLi4uIHRoaXMgaXMgZ29pbmcgdG8gYmUgYSBmYXNjaW5hdGluZyBjaGFsbGVuZ2UgYW5kIGl0IGNvdWxkIGJlIGZydWl0ZnVsIGZvciBkaXNjb3ZlcmluZyBuZXcgdnVsbmVyYWJpbGl0aWVzLiBUaW1lIHRvIGRpZyBpbiBhbmQgZm9ybXVsYXRlIGEgcGxhbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxMCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjQ5LjU1MjUwMDM3NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU0NjgwMTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxMTpjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEyLVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNDpjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjUxLjUwNzIwODY5NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTg2MzMyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYEJSQ01GTUFDX1VTQmAgTW9kdWxlKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgQlJDTUZNQUNfVVNCYCBpcyBhIGRlZmluZWQgZW50aXR5LiBOb3csIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY2AuIE15IHRoaW5raW5nIGlzIHRoYXQgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIEJyb2FkY29tIFdpLUZpIGFuZCBpdHMgVVNCIGludGVyZmFjZSwgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBtaWdodCBwcm92aWRlIHNvbWUgcmVsZXZhbnQgaW5zaWdodHMuIElzIHRoaXMgZnVuY3Rpb24gc3BlY2lmaWMgdG8gQ1lXPyBNeSByZWNvbGxlY3Rpb24gaXMgdGhhdCBDWVcgcmVmZXJzIHRvIHRoZSBDeXByZXNzL0Jyb2FkY29tIFdpLUZpIGltcGxlbWVudGF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24ncyBwdXJwb3NlIHdpdGhpbiB0aGF0IGNvbnRleHQgY291bGQgc2hlZCBsaWdodCBvbiB0aGUgVVNCIGludGVncmF0aW9uLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIGZ1bmN0aW9uIGl0c2VsZiwgbGV0J3MganVzdCBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEJSQ01GTUFDX1VTQmAuIFRoYXQgd2F5LCBJIGNhbiBlbnN1cmUgSSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTUyLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTY6NTQuOTY1ODQzOTY0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIEJSQ01GTUFDXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclxcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA0OlxcdFxcdHNlbGVjdCBCUkNNVVRJTFxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIEJyb2FkY29tXFxuICAgNzpcXHRcXHQgIEZ1bGxNQUMgY2hpcHNldHMuIEl0IGhhcyB0byB3b3JrIHdpdGggYXQgbGVhc3Qgb25lIG9mIHRoZSBidXNcXG4gICA4OlxcdFxcdCAgaW50ZXJmYWNlIHN1cHBvcnQuIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZFxcbiAgIDk6XFx0XFx0ICBicmNtZm1hYy5rby5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcXG4gIDEyOlxcdFxcdGJvb2xcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxcbiAgMTU6XFx0XFx0Ym9vbFxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgQlJDTUZNQUNfU0RJT1xcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiAoTU1DID0geSB8fCBNTUMgPSBCUkNNRk1BQylcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gQlJDTUZNQUNcXG4gIDIxOlxcdFxcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXFxuICAyMjpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAyMzpcXHRcXHRkZWZhdWx0IHlcXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXFxuICAyNjpcXHRcXHQgIElFRUU4MDIuMTFuIGVtYmVkZGVkIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFNheSBZIGlmIHlvdSB3YW50IHRvXFxuICAyNzpcXHRcXHQgIHVzZSB0aGUgZHJpdmVyIGZvciBhIFNESU8gd2lyZWxlc3MgY2FyZC5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIEJSQ01GTUFDX1VTQlxcbiAgMzA6XFx0XFx0Ym9vbCBcXFwiVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIChVU0IgPSB5IHx8IFVTQiA9IEJSQ01GTUFDKVxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xcbiAgMzM6XFx0XFx0c2VsZWN0IEJSQ01GTUFDX1BST1RPX0JDRENcXG4gIDM0OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgQnJvYWRjb21cXG4gIDM3OlxcdFxcdCAgSUVFRTgwMi4xMW4gZW1iZWRkZWQgRnVsbE1BQyBXTEFOIGRyaXZlci4gU2F5IFkgaWYgeW91IHdhbnQgdG9cXG4gIDM4OlxcdFxcdCAgdXNlIHRoZSBkcml2ZXIgZm9yIGFuIFVTQiB3aXJlbGVzcyBjYXJkLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRjb25maWcgQlJDTUZNQUNfUENJRVxcbiAgNDE6XFx0XFx0Ym9vbCBcXFwiUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbiAgNDI6XFx0XFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xcbiAgNDM6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDQ0OlxcdFxcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG4gIDQ1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDQ2OlxcdFxcdGhlbHBcXG4gIDQ3OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXFxuICA0ODpcXHRcXHQgIElFRUU4MDIuMTFhYyBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xcbiAgNDk6XFx0XFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYW4gUENJRSB3aXJlbGVzcyBjYXJkLlxcbiAgNTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjU0Ljk2NTkxMzkyM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NDU4NjkxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYC4gSXQncyBhc3NpZ25pbmcgdGhpcyBmdW5jdGlvbiB0byBgZHJ2ci1cdTAwM2VvcHMtXHUwMDNlZXh0ZXJuYWxfYXV0aGAsIHdoaWNoIEkgcmVjb2duaXplIGFzIHRoZSBgZXh0ZXJuYWxfYXV0aGAgb3BlcmF0aW9uIGluIGNmZzgwMjExLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJmdXp6YWJsZT9cIiBBYnNvbHV0ZWx5LiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgd2lyZWxlc3MgZHJpdmVyLCBhbmQgY3J1Y2lhbGx5LCBpdCdzIGV4cG9zZWQgdGhyb3VnaCBuZXRsaW5rIChubDgwMjExKS4gVGhhdCBtYWtlcyBpdCBhY2Nlc3NpYmxlLCBhc3N1bWluZyB0aGUgZGV2aWNlIHJlZ2lzdGVycyB3aXRoIHRoZSBrZXJuZWwsIG9mIGNvdXJzZS5cblxuVGhlIG5leHQgcXVlc3Rpb24gaW4gbXkgbWluZCBpcywgXCJjYW4gdGhpcyBkZXZpY2UgcmVnaXN0cmF0aW9uIGJlIHRyaWdnZXJlZCB3aXRoaW4gc3l6a2FsbGVyP1wiIEFoLCB5ZXMhIFN5emthbGxlciBsZXZlcmFnZXMgdmhjaSAodmlydHVhbCBVU0IpIHRvIGVtdWxhdGUgVVNCIGRldmljZXMuIElmIHdlIGNhbiBnZXQgaXQgdG8gZW11bGF0ZSBhIEJyb2FkY29tIFVTQiBkZXZpY2UsIHRoZW4gdGhlIGRyaXZlciAqc2hvdWxkKiBwcm9iZSBhbmQgcmVnaXN0ZXIgd2l0aCBjZmc4MDIxMS4gQW5kIGlmIHRoYXQgaGFwcGVucywgdGhlbiB3ZSBjYW4gaGl0IHRoYXQgYGV4dGVybmFsX2F1dGhgIGZ1bmN0aW9uIHZpYSBubDgwMjExLlxuXG5Ob3csIGJlZm9yZSBJIGdldCB0b28gY2FycmllZCBhd2F5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGNvcnJlY3Qga2VybmVsIGNvbmZpZ3VyYXRpb24uIExldCdzIHNlZS4uLkknbGwgbmVlZCBgQlJDTUZNQUNgIGFuZCBgQlJDTUZNQUNfVVNCYCBlbmFibGVkLCBjbGVhcmx5LiBBbmQsIG9mIGNvdXJzZSwgYENGRzgwMjExYC4gVGVjaG5pY2FsbHksIGBNQUM4MDIxMWAgaXNuJ3Qgc3RyaWN0bHkgKnJlcXVpcmVkKiBmb3IgYSBGdWxsTUFDIGRyaXZlciBsaWtlIHRoaXMsIGJ1dCBgQ0ZHODAyMTFgIGlzLiBPa2F5LCBnb29kLiBUaGF0IGFsbCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHJldmlzaXQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBhbmQgY29uZmlybSB0aGUgYXR0YWNrIHN1cmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMDcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzowMC42MTE3ODU0OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NTEyMTU3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0xOTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjE5ODpicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTE5OS1cXHRcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfZXh0ZXJuYWxfYXV0aF9wYXJhbXMgKnBhcmFtcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTIzND1zdGF0aWMgdm9pZCBicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wcyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjM2LVxcdGRydnItXFx1MDAzZW9wcy1cXHUwMDNlbWdtdF90eCA9IGJyY21mX2N5d19tZ210X3R4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjIzNzpcXHRkcnZyLVxcdTAwM2VvcHMtXFx1MDAzZWV4dGVybmFsX2F1dGggPSBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzowMi4zMDY5MTY0MzRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3NTkxMDk5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBGdW5jdGlvbiBDYWxsKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwid2hlcmUgaXMgYGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzYCBhY3R1YWxseSAqdXNlZCo/XCIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBUaGlzIG1lYW5zIEknbSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0J3MgKmNhbGxpbmcqIGl0LiBJcyBpdCBhIG1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lPyBJcyBpdCBwYXJ0IG9mIGEgY29udHJvbCBwYXRoIGZvciBoYW5kbGluZyBhbiBldmVudD8gS25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbnMgd2lsbCBpbW1lZGlhdGVseSB0ZWxsIG1lIHdoYXQgYXJlYSBvZiB0aGUgd2lyZWxlc3Mgc3RhY2sgdGhpcyBpcyByZWxldmFudCB0by4gSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgd2l0aCBhIGBncmVwYCBvciBhIHNpbWlsYXIgdG9vbCB0byBmaW5kIGFsbCBpbnN0YW5jZXMgb2YgdGhpcyBzeW1ib2wgYmVpbmcgcmVmZXJlbmNlZCwgdGhlbiBhbmFseXplIHRob3NlIGNhbGxzIG1vcmUgY2xvc2VseS4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBvcGVyYXRpb25hbCBjb250ZXh0IGFuZCB3aGF0IGRlcGVuZGVuY2llcyBvciBjb25zdHJhaW50cyBhcmUgYXQgcGxheS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgcHJvYmFibHkgYSBjcml0aWNhbCBwaWVjZSByZWxhdGVkIHRvIGNmZzgwMjExIGludGVncmF0aW9uIHdpdGhpbiB0aGUgQnJvYWRjb20gZHJpdmVyLCBidXQgc2VlaW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljIHB1cnBvc2UuIExldCdzIHN0YXJ0IGRpZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNDIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzowNS43ODI4Mjk2NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1MjI4ODc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0xOTg9YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzQ6c3RhdGljIHZvaWQgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9Mzc0PWNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTM3Ny1cXHQuYWN0aXZhdGVfZXZlbnRzID0gYnJjbWZfY3l3X2FjdGl2YXRlX2V2ZW50cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozNzg6XFx0LmdldF9jZmc4MDIxMV9vcHMgPSBicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzktXFx0LnJlZ2lzdGVyX2V2ZW50X2hhbmRsZXJzID0gYnJjbWZfY3l3X3JlZ2lzdGVyX2V2ZW50X2hhbmRsZXJzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzowNy40MzUxMjIzNTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MzE4MDE4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGBicmNtZl9jeXdfb3BzYCBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHNvbWV0aGluZyB3aXRoaW4gYGJyY21mX2N5d19vcHNgLiBNeSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gSXQncyBjbGVhciB0aGF0IGl0J3MgcmVsYXRlZCB0byBzb21lIGJyb2FkZXIgb3BlcmF0aW9uLCBzbyBJIGhhdmUgdG8gZ28gZGVlcGVyIGFuZCBwaW5wb2ludCB3aGVyZSBgYnJjbWZfY3l3X29wc2AgaXMgYWN0dWFsbHkgKnVzZWQqLiBXaGVyZSBhcmUgdGhlIGNhbGxzPyBXaGF0IGZ1bmN0aW9ucyBhcmUgbGV2ZXJhZ2luZyB0aGlzPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkgbmVlZCB0byB0cmFjZSB0aGlzIG9uZSBkb3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTc0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6MTAuODE4MzA0NjkyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjMyNzEyMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX2N5d19vcHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MzYyPXN0YXRpYyB2b2lkIGJyY21mX2N5d19yZWdpc3Rlcl9ldmVudF9oYW5kbGVycyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjM3NDpjb25zdCBzdHJ1Y3QgYnJjbWZfZnd2aWRfb3BzIGJyY21mX2N5d19vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzc1LVxcdC5zZXRfc2FlX3Bhc3N3b3JkID0gYnJjbWZfY3l3X3NldF9zYWVfcHdkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNC1cXHRyZXR1cm4gYnJjbWZfZnd2aWRfcmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoxNTpcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2YnJjbWZfY3l3X29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaC03LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oOjg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo5OiNkZWZpbmUgQ1lXX1ZPUFNcXHQoXFx1MDAyNmJyY21mX2N5d19vcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmgtMTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjEyLjQ1MTAyMDY5M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTkyMjM3MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgYnJjbWZtYWNgIERyaXZlcidzIENZVyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBoYW5kbGVzIGl0cyB2ZW5kb3JzLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGBicmNtZl9jeXdfb3BzYCBpcyByZWdpc3RlcmVkIGFzIHRoZSB2ZW5kb3Igb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgZm9yIGBCUkNNRl9GV1ZFTkRPUl9DWVdgLiBUaGF0IGluZGljYXRlcyB0aGlzIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgQnJvYWRjb20gQ1lXIChsaWtlbHkgbWVhbmluZyBDeXByZXNzIFdpcmVsZXNzKSBmaXJtd2FyZSBvciBoYXJkd2FyZSB3aXRoaW4gdGhlIGBicmNtZm1hY2AgZnJhbWV3b3JrLiBUaGlzIHJlZ2lzdHJhdGlvbiBpcyBhIGtleSBzdGFydGluZyBwb2ludC5cblxuTm93LCBJIG5lZWQgdG8gZGlnIGluIGEgYml0IGRlZXBlci4gR2l2ZW4gdGhhdCBpdCBoYXMgaXRzIG93biBgb3BzYCBzdHJ1Y3R1cmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayBmb3IgKnNwZWNpZmljKiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNldHRpbmdzLCBvciB2YXJpYXRpb25zIHRhaWxvcmVkIHNwZWNpZmljYWxseSBmb3IgQ1lXIGRldmljZXMgd2l0aGluIHRoZSBicm9hZGVyIGBicmNtZm1hY2AgY29kZWJhc2UuIEFyZSB0aGVyZSBzcGVjaWFsIHF1aXJrcywgb3B0aW1pemF0aW9ucywgb3IgcGFyYW1ldGVyIG92ZXJyaWRlcyBiYXNlZCBvbiBkZXRlY3RpbmcgdGhpcyB2ZW5kb3IgSUQ/IFdoYXQgcm91dGluZXMgaGFuZGxlIGZpcm13YXJlIGxvYWRpbmcsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIG9yIHBvd2VyIG1hbmFnZW1lbnQgKnVuaXF1ZWx5KiBmb3IgQ1lXPyBUaW1lIHRvIHRyYWNlIHRoZSBjb2RlIHBhdGhzIGFuZCBzZWUgd2hhdCBjdXN0b20gaGFuZGxpbmcgaXMgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc0NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjE2LjA0MzI2MDUyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4OTkxMzAwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlJDTUZNQUNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTpjb25maWcgQlJDTUZNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTE6Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE1LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNzpjb25maWcgQlJDTUZNQUNfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIlNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjI5OmNvbmZpZyBCUkNNRk1BQ19VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzoxNy43MzMxNzkwNTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2OTczNDE3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDWVcgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGVyZSdzIGEgcHJlLWV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gZmlsZSwgZGlyZWN0aXZlLCBvciBzeXN0ZW0gc2V0dGluZyBzcGVjaWZpY2FsbHkgZGVkaWNhdGVkIHRvIHRoZSBDWVcgKHByZXN1bWFibHkgYSBCcm9hZGNvbSBXaS1GaSBjaGlwc2V0IG9yIHJlbGF0ZWQgaGFyZHdhcmUsIGdpdmVuIHRoZSBjb250ZXh0KS4gSXQncyBhbHdheXMgYmVzdCB0byBzdGFydCB3aXRoIGEgY29uZmlndXJhdGlvbiBjaGVjay4gVGhpcyB3aWxsIGRlcGVuZCBvbiB0aGUgT1MgYW5kIHN5c3RlbSBpbiBxdWVzdGlvbi4gSXMgaXQgYSBzdGFuZGFyZCBMaW51eCBkaXN0cmlidXRpb24/IEEgY3VzdG9tIGVtYmVkZGVkIHN5c3RlbT8gS25vd2luZyB0aGUgcGxhdGZvcm0gaXMga2V5LlxuXG5NeSBmb2N1cyBub3cgaXMgb24gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSdzIGFuIGV4aXN0aW5nIGZpbGUgb3IgbWVjaGFuaXNtIHRvIHNldCB1cCBwYXJhbWV0ZXJzIGZvciB0aGUgQ1lXLiBJIHdvdWxkIGxvb2sgZm9yIGtub3duIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRocywgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBvciBldmVuIGEgZGF0YWJhc2UuIElmIEknbSBsdWNreSwgYSBxdWljayBgZ3JlcGAgb3IgYGZpbmRgIG1pZ2h0IHJldmVhbCBhIHJlbGV2YW50IGZpbGUuIE1vcmUgbGlrZWx5LCBJIHdpbGwgaGF2ZSB0byBjb25zdWx0IHRoZSBtYW51ZmFjdHVyZXIncyBkb2N1bWVudGF0aW9uLiBUaGUgZ29hbCBpcyB0byBhdm9pZCByZWludmVudGluZyB0aGUgd2hlZWwgYW5kIHRvIGxldmVyYWdlIGFueSBleGlzdGluZyBmcmFtZXdvcmsgdGhhdCBtaWdodCBhbHJlYWR5IGJlIGluIHBsYWNlIGZvciBtYW5hZ2luZyBDWVcgZGV2aWNlIHBhcmFtZXRlcnMsIHN1Y2ggYXMgcG93ZXIgbWFuYWdlbWVudCBzZXR0aW5ncywgaW50ZXJmYWNlIHNldHRpbmdzLCByZWd1bGF0b3J5IGRvbWFpbiBldGMuIElmIHRoYXQncyB0aGUgY2FzZSwgSSBuZWVkIHRvIGtub3cgd2hlcmUgSSBjYW4gdmlldyBhbmQgZWRpdCB0aGVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY2OCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjIxLjEwMjkxNTMxNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMDI1MDQ0MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSQ01GTUFDX0NZV1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6MjIuNzMzMTc1MTM5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTkyNzM1NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6XG5cbioqRGl2aW5nIGludG8gdGhlIGJyY21mbWFjIE1ha2VmaWxlKipcblxuT2theSwgc28gd2UncmUgc3RhcnRpbmcgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZWAuIEltbWVkaWF0ZWx5LCBJIGtub3cgdGhpcyBpcyB3aGVyZSB0aGUgbWVhdCBvZiB0aGUgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyIGNvbXBpbGF0aW9uIHJlc2lkZXMgZm9yIHRoZSBicmNtZm1hYyBkcml2ZXIuIE15IG1lbnRhbCBjaGVja2xpc3Qga2lja3MgaW46IEknbSBhbnRpY2lwYXRpbmcgdG8gc2VlIHRoZSB0eXBpY2FsIE1ha2VmaWxlIGVsZW1lbnRzOiBzb3VyY2UgZmlsZSBsaXN0cywgb2JqZWN0IGZpbGUgZ2VuZXJhdGlvbiBydWxlcywgZGVwZW5kZW5jeSBkZWZpbml0aW9ucywgaW5jbHVzaW9uIHBhdGhzLCBwcm9iYWJseSBzb21lIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBzZWN0aW9ucywgYW5kIGhvcGVmdWxseSB3ZWxsLWRlZmluZWQgdmFyaWFibGVzIGZvciB0aGUga2VybmVsIGJ1aWxkIGVudmlyb25tZW50LiBJIGV4cGVjdCB0byBzZWUgZmxhZ3MsIG9iamVjdCBnZW5lcmF0aW9uLCBydWxlcyBmb3Iga2VybmVsIG1vZHVsZXMsIGFuZCBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHJlcXVpcmVtZW50cyBvciBjb25maWd1cmF0aW9ucywgYXMgd2VsbCBhcyB0aGUgbW9kdWxlcyB0aGF0IG1pZ2h0IGdldCBhZGRlZCBhcyBhIHJlc3VsdCBvZiB0aGF0IGJ1aWxkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIG9wdGltaXphdGlvbiBmbGFncywgZGVidWdnaW5nIHN5bWJvbHMsIGFuZCwgb2YgY291cnNlLCB0aGUgbW9kdWxlIG5hbWUgZGVmaW5pdGlvbi4gSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gc2NhbiBmb3IgdGhlIGNvbW1vbiBgJChDT05GSUdfQlJDTUZNQUMpYCBndWFyZCDigJMgdGhhdCB3aWxsIHRlbGwgbWUgaWYgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBzdGFuZGFyZCBidWlsZC4gVGhpcyBpbml0aWFsIHNjYW4gaXMgYWJvdXQgYnVpbGRpbmcgYSBtZW50YWwgbWFwIG9mIHRoZSBkcml2ZXIncyBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTc0LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6MjYuNTkyNDUwODk4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZnJhZ21lbnQgZm9yIEJyb2FkY29tIDgwMi4xMSBOZXR3b3JraW5nIERldmljZSBEcml2ZXJcXG4gICA0OlxcdCNcXG4gICA1OlxcdCMgQ29weXJpZ2h0IChjKSAyMDEwIEJyb2FkY29tIENvcnBvcmF0aW9uXFxuICAgNjpcXHQjXFxuICAgNzpcXHRcXG4gICA4OlxcdGNjZmxhZ3MteSArPSBcXFxcXFxuICAgOTpcXHRcXHQtSSAkKHNyYykgXFxcXFxcbiAgMTA6XFx0XFx0LUkgJChzcmMpLy4uL2luY2x1ZGVcXG4gIDExOlxcdFxcbiAgMTI6XFx0b2JqLSQoQ09ORklHX0JSQ01GTUFDKSArPSBicmNtZm1hYy5vXFxuICAxMzpcXHRicmNtZm1hYy1vYmpzICs9IFxcXFxcXG4gIDE0OlxcdFxcdFxcdGNmZzgwMjExLm8gXFxcXFxcbiAgMTU6XFx0XFx0XFx0Y2hpcC5vIFxcXFxcXG4gIDE2OlxcdFxcdFxcdGZ3aWwubyBcXFxcXFxuICAxNzpcXHRcXHRcXHRmd2VoLm8gXFxcXFxcbiAgMTg6XFx0XFx0XFx0cDJwLm8gXFxcXFxcbiAgMTk6XFx0XFx0XFx0cHJvdG8ubyBcXFxcXFxuICAyMDpcXHRcXHRcXHRjb21tb24ubyBcXFxcXFxuICAyMTpcXHRcXHRcXHRjb3JlLm8gXFxcXFxcbiAgMjI6XFx0XFx0XFx0ZmlybXdhcmUubyBcXFxcXFxuICAyMzpcXHRcXHRcXHRmd3ZpZC5vIFxcXFxcXG4gIDI0OlxcdFxcdFxcdGZlYXR1cmUubyBcXFxcXFxuICAyNTpcXHRcXHRcXHRidGNvZXgubyBcXFxcXFxuICAyNjpcXHRcXHRcXHR2ZW5kb3IubyBcXFxcXFxuICAyNzpcXHRcXHRcXHRwbm8ubyBcXFxcXFxuICAyODpcXHRcXHRcXHR4dGx2Lm9cXG4gIDI5OlxcdGJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1BST1RPX0JDREMpICs9IFxcXFxcXG4gIDMwOlxcdFxcdFxcdGJjZGMubyBcXFxcXFxuICAzMTpcXHRcXHRcXHRmd3NpZ25hbC5vXFxuICAzMjpcXHRicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19QUk9UT19NU0dCVUYpICs9IFxcXFxcXG4gIDMzOlxcdFxcdFxcdGNvbW1vbnJpbmcubyBcXFxcXFxuICAzNDpcXHRcXHRcXHRmbG93cmluZy5vIFxcXFxcXG4gIDM1OlxcdFxcdFxcdG1zZ2J1Zi5vXFxuICAzNjpcXHRicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19TRElPKSArPSBcXFxcXFxuICAzNzpcXHRcXHRcXHRzZGlvLm8gXFxcXFxcbiAgMzg6XFx0XFx0XFx0YmNtc2RoLm9cXG4gIDM5OlxcdGJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1VTQikgKz0gXFxcXFxcbiAgNDA6XFx0XFx0XFx0dXNiLm9cXG4gIDQxOlxcdGJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1BDSUUpICs9IFxcXFxcXG4gIDQyOlxcdFxcdFxcdHBjaWUub1xcbiAgNDM6XFx0YnJjbWZtYWMtJChDT05GSUdfQlJDTURCRykgKz0gXFxcXFxcbiAgNDQ6XFx0XFx0XFx0ZGVidWcub1xcbiAgNDU6XFx0YnJjbWZtYWMtJChDT05GSUdfQlJDTV9UUkFDSU5HKSArPSBcXFxcXFxuICA0NjpcXHRcXHRcXHR0cmFjZXBvaW50Lm9cXG4gIDQ3OlxcdGJyY21mbWFjLSQoQ09ORklHX09GKSArPSBcXFxcXFxuICA0ODpcXHRcXHRcXHRvZi5vXFxuICA0OTpcXHRicmNtZm1hYy0kKENPTkZJR19ETUkpICs9IFxcXFxcXG4gIDUwOlxcdFxcdFxcdGRtaS5vXFxuICA1MTpcXHRicmNtZm1hYy0kKENPTkZJR19BQ1BJKSArPSBcXFxcXFxuICA1MjpcXHRcXHRcXHRhY3BpLm9cXG4gIDUzOlxcdFxcbiAgNTQ6XFx0aWZlcSAoJChDT05GSUdfQlJDTUZNQUMpLG0pXFxuICA1NTpcXHRvYmotbSArPSB3Y2MvXFxuICA1NjpcXHRvYmotbSArPSBjeXcvXFxuICA1NzpcXHRvYmotbSArPSBiY2EvXFxuICA1ODpcXHRlbHNlXFxuICA1OTpcXHRicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQykgKz0gd2NjL2NvcmUub1xcbiAgNjA6XFx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUMpICs9IGN5dy9jb3JlLm9cXG4gIDYxOlxcdGJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDKSArPSBiY2EvY29yZS5vXFxuICA2MjpcXHRlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzoyNi41OTI1MjYwNjlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyNTA1OTA5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgQnVpbGQgU3lzdGVtIC0gYGN5dy9jb3JlLm9gIGFuZCBgQ09ORklHX0JSQ01GTUFDYCoqXG5cblJpZ2h0LCBzbyBgY3l3L2NvcmUub2AgaXMgYWx3YXlzIGJ1aWx0IHdoZW4gYENPTkZJR19CUkNNRk1BQ2AgaXMgdHVybmVkIG9uLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGF0IGZpcnN0IGdsYW5jZS4gQnV0IGhhbmcgb24sIGEgc2xpZ2h0IHdyaW5rbGUgZW1lcmdlcy4gSWYgYENPTkZJR19CUkNNRk1BQ2AgaXMgYnVpbHQgYXMgYSBtb2R1bGUgKGBDT05GSUdfQlJDTUZNQUM9bWApLCBkb2Vzbid0IHRoYXQgaW1wbHkgdGhhdCB0aGUgYGN5dy9gIGRpcmVjdG9yeSBjb250YWluaW5nIGBjeXcvY29yZS5vYCAqYWxzbyogYmVjb21lcyBhIHNlcGFyYXRlIG1vZHVsZT8gVGhhdCdzIHRoZSBjcml0aWNhbCBwb2ludCBJIG5lZWQgdG8gY2xhcmlmeS4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGhhdCBkaXJlY3RvcnkgZGlyZWN0bHkuIFRoZSBvYnZpb3VzIHBsYWNlIHRvIGxvb2sgaXMgdGhlIGBNYWtlZmlsZWAgaXRzZWxmLCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvTWFrZWZpbGVgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBidWlsZCBsb2dpYyByZWZsZWN0cyB0aGlzIGNvbmRpdGlvbmFsIG1vZHVsYXJpemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE3MywiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6MzAuMjE3NTg3NDYzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENvcHlyaWdodCAoYykgMjAyMiBCcm9hZGNvbSBDb3Jwb3JhdGlvblxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjY2ZsYWdzLXkgKz0gXFxcXFxcbiAgIDY6XFx0XFx0LUkgJChzcmMpIFxcXFxcXG4gICA3OlxcdFxcdC1JICQoc3JjKS8uLiBcXFxcXFxuICAgODpcXHRcXHQtSSAkKHNyYykvLi4vLi4vaW5jbHVkZVxcbiAgIDk6XFx0XFxuICAxMDpcXHRvYmotbSArPSBicmNtZm1hYy1jeXcub1xcbiAgMTE6XFx0YnJjbWZtYWMtY3l3LW9ianMgKz0gXFxcXFxcbiAgMTI6XFx0XFx0XFx0Y29yZS5vIG1vZHVsZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjMwLjIxNzY1MDUyM1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzMzMTY0MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGJyY21mbWFjLWN5dy5rb2AgTW9kdWxlIGFuZCBFeHRlcm5hbCBBdXRoZW50aWNhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGBicmNtZm1hYy1jeXcua29gIGlzIGJ1aWx0LCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhgIGluIGBjeXcvY29yZS5jYCB3b3Jrcy4gSSByZWNhbGwgdGhpcyBmdW5jdGlvbiBpcyByZWFjaGVkIHZpYSB0aGUgYGNmZzgwMjExYCBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBvcGVyYXRpb24uIFRoYXQncyB0aGUgZW50cnkgcG9pbnQuIE5vdywgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuXG5cbkkgc2VlIHRoYXQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgYXJlIHJlbGV2YW50IHRvIHRoaXMgbW9kdWxlLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHRoaW5ncyBsaWtlIGZ1enppbmcgdmlhIHZpcnR1YWwgVVNCLiBPZiBjb3Vyc2UsIGBDRkc4MDIxMWAgaXRzZWxmIGlzIGFsc28gY3JpdGljYWwgaGVyZS4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgQ0ZHODAyMTFgLiBJdCBzZWVtcyB0byBvcHRpb25hbGx5IGRlcGVuZCBvbiBgUkZLSUxMYCBhbmQgYE1BQzgwMjExYC4gSG93ZXZlciwgSSdtIHByZXR0eSBzdXJlIGBDRkc4MDIxMWAgaXMgdXN1YWxseSBlbmFibGVkIGluIHN5emthbGxlci5cblxuTGV0J3MgbG9vayBhdCBgQlJDTUZNQUNgIGluIG1vcmUgZGV0YWlsLiBJdCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIEFuZCBgQlJDTUZNQUNfVVNCYCBkZXBlbmRzIG9uIGAoVVNCID0geSB8fCBVU0IgPSBCUkNNRk1BQylgIGFuZCBgQlJDTUZNQUNgLiBTbyB0aGUga2V5IG1vZHVsZXMgYXJlIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgLiBBbHJpZ2h0LCBJJ3ZlIGdvdCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgZGVwZW5kZW5jaWVzLCBJIHNob3VsZCBjaXJjbGUgYmFjayBhbmQgcmV2aWV3IGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgYWdhaW4gd2l0aCB0aGlzIGNvbnRleHQgaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2ODUsIk91dHB1dFRva2VucyI6NTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzozNS41NTA4MTY5NjJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTkwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTkwOlxcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXFxuIDE5MTpcXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG4gMTkyOlxcdGZyZWU6XFxuIDE5MzpcXHRcXHRrZnJlZShtZl9wYXJhbXMpO1xcbiAxOTQ6XFx0XFx0cmV0dXJuIGVycjtcXG4gMTk1OlxcdH1cXG4gMTk2OlxcdFxcbiAxOTc6XFx0c3RhdGljIGludFxcbiAxOTg6XFx0YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gMTk5OlxcdFxcdFxcdFxcdHN0cnVjdCBjZmc4MDIxMV9leHRlcm5hbF9hdXRoX3BhcmFtcyAqcGFyYW1zKVxcbiAyMDA6XFx0e1xcbiAyMDE6XFx0XFx0c3RydWN0IGJyY21mX2lmICppZnA7XFxuIDIwMjpcXHRcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyO1xcbiAyMDM6XFx0XFx0c3RydWN0IGJyY21mX2F1dGhfcmVxX3N0YXR1c19sZSBhdXRoX3N0YXR1cyA9IHt9O1xcbiAyMDQ6XFx0XFx0aW50IHJldCA9IDA7XFxuIDIwNTpcXHRcXG4gMjA2OlxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG4gMjA3OlxcdFxcbiAyMDg6XFx0XFx0aWZwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gMjA5OlxcdFxcdGRydnIgPSBpZnAtXFx1MDAzZWRydnI7XFxuIDIxMDpcXHRcXHRpZiAocGFyYW1zLVxcdTAwM2VzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykge1xcbiAyMTE6XFx0XFx0XFx0aWYgKHBhcmFtcy1cXHUwMDNlcG1raWQpXFxuIDIxMjpcXHRcXHRcXHRcXHRtZW1jcHkoYXV0aF9zdGF0dXMucG1raWQsIHBhcmFtcy1cXHUwMDNlcG1raWQsIFdMQU5fUE1LSURfTEVOKTtcXG4gMjEzOlxcdFxcdFxcdGF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTtcXG4gMjE0OlxcdFxcdH0gZWxzZSB7XFxuIDIxNTpcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiRXh0ZXJuYWwgYXV0aGVudGljYXRpb24gZmFpbGVkOiBzdGF0dXM9JWRcXFxcblxcXCIsXFxuIDIxNjpcXHRcXHRcXHRcXHQgcGFyYW1zLVxcdTAwM2VzdGF0dXMpO1xcbiAyMTc6XFx0XFx0XFx0YXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX0ZBSUwpO1xcbiAyMTg6XFx0XFx0fVxcbiAyMTk6XFx0XFxuIDIyMDpcXHRcXHRtZW1jcHkoYXV0aF9zdGF0dXMucGVlcl9tYWMsIHBhcmFtcy1cXHUwMDNlYnNzaWQsIEVUSF9BTEVOKTtcXG4gMjIxOlxcdFxcdHBhcmFtcy1cXHUwMDNlc3NpZC5zc2lkX2xlbiA9IG1pbl90KHU4LCBwYXJhbXMtXFx1MDAzZXNzaWQuc3NpZF9sZW4sXFxuIDIyMjpcXHRcXHRcXHRcXHRcXHQgICAgICBJRUVFODAyMTFfTUFYX1NTSURfTEVOKTtcXG4gMjIzOlxcdFxcdGF1dGhfc3RhdHVzLnNzaWRfbGVuID0gY3B1X3RvX2xlMzIocGFyYW1zLVxcdTAwM2Vzc2lkLnNzaWRfbGVuKTtcXG4gMjI0OlxcdFxcdG1lbWNweShhdXRoX3N0YXR1cy5zc2lkLCBwYXJhbXMtXFx1MDAzZXNzaWQuc3NpZCwgcGFyYW1zLVxcdTAwM2Vzc2lkLnNzaWRfbGVuKTtcXG4gMjI1OlxcdFxcbiAyMjY6XFx0XFx0cmV0ID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXFxcImF1dGhfc3RhdHVzXFxcIiwgXFx1MDAyNmF1dGhfc3RhdHVzLFxcbiAyMjc6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNpemVvZihhdXRoX3N0YXR1cykpO1xcbiAyMjg6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDIyOTpcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiYXV0aF9zdGF0dXMgaW92YXIgZmFpbGVkOiByZXQ9JWRcXFxcblxcXCIsIHJldCk7XFxuIDIzMDpcXHRcXG4gMjMxOlxcdFxcdHJldHVybiByZXQ7XFxuIDIzMjpcXHR9XFxuIDIzMzpcXHRcXG4gMjM0OlxcdHN0YXRpYyB2b2lkIGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuIDIzNTpcXHR7XFxuIDIzNjpcXHRcXHRkcnZyLVxcdTAwM2VvcHMtXFx1MDAzZW1nbXRfdHggPSBicmNtZl9jeXdfbWdtdF90eDtcXG4gMjM3OlxcdFxcdGRydnItXFx1MDAzZW9wcy1cXHUwMDNlZXh0ZXJuYWxfYXV0aCA9IGJyY21mX2N5d19leHRlcm5hbF9hdXRoO1xcbiAyMzg6XFx0fVxcbiAyMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjM1LjU1MDkwMTcwMloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODUyMjQyMjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzOiBgYXV0aF9zdGF0dXNgIGFuZCBgcG1raWRgKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgdGlnaHRlbmluZyB1cCBzb21lIG1lbW9yeSBpbml0aWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYXV0aF9zdGF0dXNgLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGFsc28gbWFraW5nIHN1cmUgdGhhdCBgcG1raWRgIGdldHMgcHJvcGVybHkgY29waWVkLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgZGVmaW5pdGVseSBhIGNoYW5nZSB0aGF0IGltcGFjdHMgdGhlIHdpcmVsZXNzIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgc29tZSB2dWxuZXJhYmlsaXRpZXMgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBpcyB0aGUga2V5IHN5bWJvbCBoZXJlLCBzbyB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGRlZXBlciBhbmFseXNpcy4gTGV0J3Mgc2VlIGlmIHRoaXMgc29sdmVzIHRoZSBwcm9ibGVtIGRlc2NyaWJlZCBpbiB0aGUgYXNzb2NpYXRlZCB0aWNrZXQuXG5cblRvIGNvbmZpcm0gdGhhdCwgYW5kIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIGVudmlyb25tZW50IGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gYEJSQ01GTUFDYCwgYEJSQ01GTUFDX1VTQmAsIGFuZCBgQ0ZHODAyMTFgIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LCBnaXZlbiB0aGUgZHJpdmVyJ3MgcHVycG9zZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHRob3NlIGFyZSB0aGUgb25seSByZWxldmFudCBjb25maWdzLCBob3dldmVyOyBpdCBpcyBsaWtlbHkgdGhhdCBJJ2xsIG5lZWQgc29tZSBhZGRpdGlvbmFsIGNvbnRleHQuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBCUkNNRk1BQ2AgdG8gYmUgc3VyZSB0aGVyZSBpc24ndCBhbnl0aGluZyBlbHNlIGluIHBsYXkgaGVyZSB0aGF0IEknbSBtaXNzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjIzOSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6MzkuNDAzMTQ3MzQ3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDAzMTg4NzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxMTpjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEyLVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNDpjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjQxLjQwNjM0MzE5MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIxODY4Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIENGRzgwMjExIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIHJpZGluZyBvbiBgQ0ZHODAyMTFgIHRvZGF5LiBJdCdzIGEgY3JpdGljYWwgcGllY2UsIGFuZCBhbnkgY2hhbmdlIEkgbWFrZSBuZWVkcyB0byBiZSBtZXRpY3Vsb3VzbHkgcGxhbm5lZCwgc28gbGV0J3Mgc3RhcnQgd2l0aCBhIGRlcGVuZGVuY3kgYW5hbHlzaXMuIFRpbWUgdG8gdHJhY2UgdGhlIGxpbmVhZ2UgYW5kIHNlZSB3aGF0IHRoaXMgYmVhc3QgaXMgY29ubmVjdGVkIHRvIGluIHRoZSBzdGFjay4gV2hhdCBtb2R1bGVzIGRlcGVuZCBvbiB0aGlzPyBXaGF0IGFzcGVjdHMgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2sgYXJlIGZ1bmRhbWVudGFsbHkgdGllZCB0byB0aGlzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBhbGwgdGhlIGRvd25zdHJlYW0gaW1wbGljYXRpb25zIGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgbWFraW5nIGEgdHdlYWsuIEl04oCZcyBsaWtlIHN1cmdlcnk7IHlvdSBkb24ndCBzdGFydCBjdXR0aW5nIHdpdGhvdXQga25vd2luZyB0aGUgcGF0aWVudCdzIGZ1bGwgYW5hdG9teS4gTGV04oCZcyBpZGVudGlmeSB0aGUgcG90ZW50aWFsIHJpcHBsZSBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzIxMiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjQ0LjIyODIxNDQxNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2NzQyMzIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjQ1Ljk5NTY0MjczNloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDk5ODYwMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGU6XG5cbioqRGl2aW5nIGludG8gdGhlIENGRzgwMjExIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBgQ0ZHODAyMTFgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHdpcmVsZXNzIG5ldHdvcmtpbmcgYXJlIHN0cnVjdHVyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5LiBNeSBwcmltYXJ5IGludGVyZXN0IGlzIGFsd2F5cyB0aGUgYXJjaGl0ZWN0dXJlIOKAkyBob3cgdGhlIG1vZHVsZXMgZml0IHRvZ2V0aGVyLlxuXG5TbywgSSdtIHNjYW5uaW5nIGZvciBgQ0ZHODAyMTFgLCBsaWtlbHkgc2VhcmNoaW5nIGZvciB0aGUgYGNvbmZpZ2AgYmxvY2sgdGhhdCBkZWZpbmVzIGl0LiBSaWdodCwgaGVyZSBpdCBpcy4gSXQncyBtYXJrZWQgYXMgYSBjb3JlIHdpcmVsZXNzIG5ldHdvcmtpbmcgY29tcG9uZW50LCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgaXQncyBhbiBgdHJpc3RhdGVgIHdoaWNoIGlzIHVzZWZ1bC4gSSBzaG91bGQgbG9vayBmb3IgZGVwZW5kZW5jaWVzLlxuXG5JIHNlZSB0aGF0IGBDRkc4MDIxMWAgY2FuIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBUaGF0IG9wZW5zIHRoZSBkb29yIGZvciBydW50aW1lIGxvYWRpbmcsIHdoaWNoIGlzIGdvb2QuIEltcG9ydGFudCBmb3IgZGlmZmVyZW50IHVzZSBjYXNlcy4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgb2YgY291cnNlLCB0aGF0IGNvcmUgY29tcG9uZW50cyB0aGF0IGFyZSBidWlsdC1pbiByZXF1aXJlIGEgcmVib290IHRvIHVwZGF0ZS5cblxuVGhlIGRlcGVuZGVuY2llcyBoZXJlIGFyZSBhbHdheXMgY3J1Y2lhbC4gQW55dGhpbmcgdGhhdCBoaW5nZXMgb24gdGhpcz8gT2theSwgaXQncyBwcmV0dHkgc2VsZi1jb250YWluZWQsIHRob3VnaCBpdCBkb2VzIGRlcGVuZCBvbiB0aGUga2VybmVsIGJlaW5nIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgdGhlIG5ldHdvcmtpbmcgc3RhY2ssIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGNhbiBwcm9iYWJseSBza2lwIG92ZXIgdGhhdCBvbmUuXG5UaGVyZSdzIHByb2JhYmx5IGEgbG90IG9mIGRldmljZSBkcml2ZXJzIGluIHRoZSB3aWRlciB0cmVlIHRoYXQgaG9vayBpbnRvIHRoaXMgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgaGF2ZSBhIGxvb2sgYXQgdGhvc2UgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMuXG5BbHJpZ2h0LCBvdmVyYWxsLCB0aGUgY29uZmlndXJhdGlvbiBzZWVtcyB3ZWxsLWRlZmluZWQgYW5kIGNsZWFybHkgc3RydWN0dXJlZC4gTm93LCBJIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBjb25maWd1cmF0aW9uIGNob2ljZXMgaW1wYWN0IHRoZSBjb2RlIGl0c2VsZi4gVGltZSB0byBkaXZlIGludG8gdGhlIGFzc29jaWF0ZWQgc291cmNlIGZpbGVzIGFuZCBzZWUgaG93IHRob3NlIGBpZmRlZmAgc3RhdGVtZW50cyBhcmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQzMzQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1Nzo1MC4wOTU1MDY0NDZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTcsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTc6XFx0Y29uZmlnIENGRzgwMjExXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcXG4gIDIwOlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDIxOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMjI6XFx0XFx0IyBtYXkgbmVlZCB0byB1cGRhdGUgdGhpcyB3aGVuIGNlcnRpZmljYXRlcyBhcmUgY2hhbmdlZCBhbmQgYXJlXFxuICAyMzpcXHRcXHQjIHVzaW5nIGEgZGlmZmVyZW50IGFsZ29yaXRobSwgdGhvdWdoIHJpZ2h0IG5vdyB0aGV5IHNob3VsZG4ndFxcbiAgMjQ6XFx0XFx0IyAodGhpcyBpcyBoZXJlIHJhdGhlciB0aGFuIGJlbG93IHRvIGFsbG93IGl0IHRvIGJlIGEgbW9kdWxlKVxcbiAgMjU6XFx0XFx0c2VsZWN0IENSWVBUT19TSEEyNTYgaWYgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxuICAyNjpcXHRcXHRoZWxwXFxuICAyNzpcXHRcXHQgIGNmZzgwMjExIGlzIHRoZSBMaW51eCB3aXJlbGVzcyBMQU4gKDgwMi4xMSkgY29uZmlndXJhdGlvbiBBUEkuXFxuICAyODpcXHRcXHQgIEVuYWJsZSB0aGlzIGlmIHlvdSBoYXZlIGEgd2lyZWxlc3MgZGV2aWNlLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gb24gdGhlIHdpcmVsZXNzIHdpa2k6XFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vZGV2ZWxvcGVycy9Eb2N1bWVudGF0aW9uL2NmZzgwMjExXFxuICAzMzpcXHRcXG4gIDM0OlxcdFxcdCAgV2hlbiBidWlsdCBhcyBhIG1vZHVsZSBpdCB3aWxsIGJlIGNhbGxlZCBjZmc4MDIxMS5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0aWYgQ0ZHODAyMTFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6NTAuMDk1NTcyMzg2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDc0MzY2ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQnJvYWRjb20gV0xBTiBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgQnJvYWRjb20gV0xBTiBkcml2ZXIgdnVsbmVyYWJpbGl0eSBhbmQgaG93IHRvIGFwcHJvYWNoIGl0IGZvciBmdXp6aW5nLiBJdCBzZWVtcyB0aGUgY29yZSBkZXBlbmRlbmNpZXMgYXJlIGEgYml0IHRhbmdsZWQuIEkgc2VlIHRoYXQgYENGRzgwMjExYCBoaW5nZXMgb24gYFJGS0lMTGAg4oCTIGVpdGhlciBpdCdzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGJ1dCBpdCAqbXVzdCogYmUgZGVmaW5lZC4gVGhlbiwgYEJSQ01GTUFDYCByZWxpZXMgb24gYENGRzgwMjExYCwgbmF0dXJhbGx5LiBTbywganVzdCB0aG9zZSB0d28gd291bGQgbWVhbiBJIG5lZWQgYEJSQ01GTUFDYCwgYEJSQ01GTUFDX1VTQmAsIGFuZCBgQ0ZHODAyMTFgIGF0IGEgbWluaW11bS5cblxuV2FpdCwgYEJSQ01GTUFDX1VTQmAgaW50cm9kdWNlcyBhIG5ldyBkZXBlbmRlbmN5OiBgVVNCYC4gSXQgbmVlZHMgYFVTQmAgdG8gYmUgc2V0IHRvICd5JyBvciB0byBlcXVhbCBgQlJDTUZNQUNgLiBTbywgSSdsbCBuZWVkIGBVU0JgIGV4cGxpY2l0bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLiBMZXQncyBzZWUuLi4gYEJSQ01GTUFDYCwgYEJSQ01GTUFDX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYCBzaG91bGQgYmUgbXkgY29uZmlndXJhdGlvbnMuIFllcywgdGhhdCBzaG91bGQgY292ZXIgaXQuXG5cblRoZSBpbnRlcmVzdGluZyBiaXQgaGVyZSBpcyB0aGF0IGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgaXMgcmVhY2hhYmxlIHRocm91Z2ggYGNmZzgwMjExYCB3aGVuIGVtdWxhdGluZyBhIEJyb2FkY29tIFVTQiBkZXZpY2UuIFRoYXQncyBhIGdvb2QgZW50cnkgcG9pbnQuIEdpdmVuIHRoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgYW5kIG1pc3NpbmcgUE1LSUQgY29weSBpbiB0aGUgRnVsbE1BQyBkcml2ZXIncyBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBoYW5kbGVyLCBpdCBzb3VuZHMgZGVmaW5pdGVseSB3b3J0aCBteSB0aW1lLiBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoYXQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIHBvaW50LCByZWFjaGFibGUgdmlhIGBjZmc4MDIxMWAgbmV0bGluayBjb21tYW5kcyB3aGVuIGEgdmlydHVhbCBVU0IgQnJvYWRjb20gZGV2aWNlIGlzIGJlaW5nIHVzZWQuIFRoYXQncyBteSB0YXJnZXQsIGFuZCB0aGF0J3MgaG93IEknbGwgZnJhbWUgbXkgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTEwMiwiT3V0cHV0VG9rZW5zIjoxMjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1Nzo1Ni4yMDMwMTE1NjhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjI2MTY5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJDTUZNQUNcIixcbiAgICBcIkJSQ01GTUFDX1VTQlwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX2N5d19leHRlcm5hbF9hdXRoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgYW5kIGFkZHMgbWlzc2luZyBQTUtJRCBjb3B5IGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyJ3MgZXh0ZXJuYWwgYXV0aGVudGljYXRpb24gaGFuZGxlci4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgbmV0bGluayBjb21tYW5kcyB3aGVuIGEgdmlydHVhbCBVU0IgQnJvYWRjb20gZGV2aWNlIGlzIGVtdWxhdGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSQ01GTUFDXCIsXG4gICAgXCJCUkNNRk1BQ19VU0JcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGFuZCBhZGRzIG1pc3NpbmcgUE1LSUQgY29weSBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlcidzIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGhhbmRsZXIuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNmZzgwMjExIG5ldGxpbmsgY29tbWFuZHMgd2hlbiBhIHZpcnR1YWwgVVNCIEJyb2FkY29tIGRldmljZSBpcyBlbXVsYXRlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowk97rk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 11:41:38 +0000 UTC FinishedAt: 2026-07-26 11:57:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3dab139d4795f688e4f243e40c7474df00d329d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB", "CFG80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3dab139d4795f688e4f243e40c7474df00d329d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB", "CFG80211", "USB" ], "series_id": "fe1d686a-5a4b-4b67-beb7-1cf03f9f1384" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "brcmf_cyw_external_auth" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticmNtZl9jeXdfZXh0ZXJuYWxfYXV0aCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBhbmQgYWRkcyBtaXNzaW5nIFBNS0lEIGNvcHkgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXImIzM5O3MgZXh0ZXJuYWwgYXV0aGVudGljYXRpb24gaGFuZGxlci4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgbmV0bGluayBjb21tYW5kcyB3aGVuIGEgdmlydHVhbCBVU0IgQnJvYWRjb20gZGV2aWNlIGlzIGVtdWxhdGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODZlYWNiYWE5OGU1N2RjYTQwNDRkZWU0MTZlNzU4NjNiNmNjNmEzMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDExOjU2OjM2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IDg3Mzc1NGJlNTE3NGJjLi4yYzU5YjVlNTc5NTljMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuQEAgLTIwMCw3ICYjNDM7MjAwLDcgQEAgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfaWYgKmlmcDtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnI7XG4tXHRzdHJ1Y3QgYnJjbWZfYXV0aF9yZXFfc3RhdHVzX2xlIGF1dGhfc3RhdHVzO1xuJiM0MztcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXMgPSB7fTtcbiBcdGludCByZXQgPSAwO1xuIFxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG5AQCAtMjA4LDYgJiM0MzsyMDgsOCBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWZwID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdGRydnIgPSBpZnAtXHUwMDNlZHJ2cjtcbiBcdGlmIChwYXJhbXMtXHUwMDNlc3RhdHVzID09IFdMQU5fU1RBVFVTX1NVQ0NFU1MpIHtcbiYjNDM7XHRcdGlmIChwYXJhbXMtXHUwMDNlcG1raWQpXG4mIzQzO1x0XHRcdG1lbWNweShhdXRoX3N0YXR1cy5wbWtpZCwgcGFyYW1zLVx1MDAzZXBta2lkLCBXTEFOX1BNS0lEX0xFTik7XG4gXHRcdGF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTtcbiBcdH0gZWxzZSB7XG4gXHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O0V4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogc3RhdHVzPSVkXFxuXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19VU0ImIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgYW5kIGFkZHMgbWlzc2luZyBQTUtJRCBjb3B5IGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyJiMzOTtzIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGhhbmRsZXIuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNmZzgwMjExIG5ldGxpbmsgY29tbWFuZHMgd2hlbiBhIHZpcnR1YWwgVVNCIEJyb2FkY29tIGRldmljZSBpcyBlbXVsYXRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDg2ZWFjYmFhOThlNTdkY2E0MDQ0ZGVlNDE2ZTc1ODYzYjZjYzZhMzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAxMTo1NjozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMKaW5kZXggODczNzU0YmU1MTc0YmMuLjJjNTliNWU1Nzk1OWMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwpAQCAtMjAwLDcgJiM0MzsyMDAsNyBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogewogCXN0cnVjdCBicmNtZl9pZiAqaWZwOwogCXN0cnVjdCBicmNtZl9wdWIgKmRydnI7Ci0Jc3RydWN0IGJyY21mX2F1dGhfcmVxX3N0YXR1c19sZSBhdXRoX3N0YXR1czsKJiM0MzsJc3RydWN0IGJyY21mX2F1dGhfcmVxX3N0YXR1c19sZSBhdXRoX3N0YXR1cyA9IHt9OwogCWludCByZXQgPSAwOwogCiAJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O0VudGVyXG4mIzM0Oyk7CkBAIC0yMDgsNiAmIzQzOzIwOCw4IEBAIGJyY21mX2N5d19leHRlcm5hbF9hdXRoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWZwID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAlkcnZyID0gaWZwLSZndDtkcnZyOwogCWlmIChwYXJhbXMtJmd0O3N0YXR1cyA9PSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7CiYjNDM7CQlpZiAocGFyYW1zLSZndDtwbWtpZCkKJiM0MzsJCQltZW1jcHkoYXV0aF9zdGF0dXMucG1raWQsIHBhcmFtcy0mZ3Q7cG1raWQsIFdMQU5fUE1LSURfTEVOKTsKIAkJYXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX1NVQ0NFU1MpOwogCX0gZWxzZSB7CiAJCWJwaHlfZXJyKGRydnIsICYjMzQ7RXh0ZXJuYWwgYXV0aGVudGljYXRpb24gZmFpbGVkOiBzdGF0dXM9JWRcbiYjMzQ7LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY2AuIFNwZWNpZmljYWxseSwgdGhlIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgZnVuY3Rpb24uIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGEgbWlzc2luZyBQTUtJRCBjb3B5LiBJdCBpbml0aWFsaXplcyBgYXV0aF9zdGF0dXNgIGFuZCB0aGVuIGNvcGllcyBgcGFyYW1zLSZndDtwbWtpZGAgdG8gaXQsIGJ1dCBvbmx5IGlmIGBwYXJhbXMtJmd0O3Bta2lkYCBpcyBub3QgTlVMTC4gTWFrZXMgc2Vuc2UsIHRoYXQmIzM5O3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBlbnN1cmUgd2UmIzM5O3JlIGhhbmRsaW5nIHRoZSBQTUtJRCBkYXRhIGNvcnJlY3RseS4gVGhpcyBpcyB0YWdnZWQgYXMgYSBmaXgsIHNvIHByZXN1bWFibHkgdGhpcyB3YXMgYSBidWcuCgpUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGhlcmUgaXMgYGJyY21mbWFjYCwgd2hpY2ggaXMgYSBCcm9hZGNvbSA4MDIuMTEgd2lyZWxlc3MgTEFOIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBob3cgdGVzdGFibGUgaXMgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXJlbGVzcyBkcml2ZXJzIGNhbiBiZSB0cmlja3kgc2luY2UgdGhleSB1c3VhbGx5IHJlbHkgb24gc3BlY2lmaWMgaGFyZHdhcmUsIHVubGVzcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBgYnJjbWZtYWNgIHN1cHBvcnRzIFNESU8sIFVTQiwgYW5kIFBDSUUhIFRoYXQgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzLgoKSSBrbm93IFVTQiBkZXZpY2VzIGNhbiBiZSBlbXVsYXRlZCwgYnV0IHVzdWFsbHkgdGhhdCYjMzk7cyB0aHJvdWdoIFVTQiBnYWRnZXQgb3Igc29tZXRoaW5nIHdpdGggZHVtbXlfaGNkLiBCdXQsIHdhaXQuLi5zeXprYWxsZXIhIEkgcmVtZW1iZXIgdGhleSBoYXZlIGEgdmlydHVhbCBVU0IgZnV6emVyLCBgdmhjaWAuIFNvLCB0aGF0IG1lYW5zIFVTQiBkcml2ZXJzIGFyZSBwb3RlbnRpYWxseSBmdXp6YWJsZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBicmNtZm1hY2AgaGFzIFVTQiBzdXBwb3J0LCB0aGF0JiMzOTtzIHRoZSBrZXkuIElmIGl0IGRvZXMsIHRoaXMgb3BlbnMgdXAgYSB3aG9sZSBuZXcgYXZlbnVlIGZvciBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MTk3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjE5ODpicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMTk5LVx0XHRcdHN0cnVjdCBjZmc4MDIxMV9leHRlcm5hbF9hdXRoX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTIzND1zdGF0aWMgdm9pZCBicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wcyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzNi1cdGRydnItXHUwMDNlb3BzLVx1MDAzZW1nbXRfdHggPSBicmNtZl9jeXdfbWdtdF90eDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjIzNzpcdGRydnItXHUwMDNlb3BzLVx1MDAzZWV4dGVybmFsX2F1dGggPSBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzOC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxMAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNvbnNpZGVyaW5nIGBicmNtZm1hY2AgRnV6emluZyB2aWEgVVNCKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gVGhlIGBicmNtZm1hY2AgZHJpdmVyLiBJbnRyaWd1aW5nIHRhcmdldCwgZXNwZWNpYWxseSB3aXRoIGl0cyBleHBvc3VyZSB0byBwb3RlbnRpYWxseSB1bnRydXN0ZWQgZGF0YSB2aWEgVVNCLiBUaGUgdGhvdWdodCB0aGF0JiMzOTtzIGJ1YmJsaW5nIHVwIGlzLCBjb3VsZCB3ZSBlZmZlY3RpdmVseSBmdXp6IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBieSBsZXZlcmFnaW5nIGEgVVNCIGludGVyZmFjZT8gVGhpcyBhbmdsZSBoYXNuJiMzOTt0IGJlZW4gZXhwbG9yZWQgbmVhcmx5IGFzIG9mdGVuIGFzIHRlc3Rpbmcgb3Zlci10aGUtYWlyLCBhbmQgdGhlIG51YW5jZSBvZiBwb3RlbnRpYWwgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIGlzIHNvbWV0aGluZyB0byBjb25zaWRlci4gV2hhdCYjMzk7cyB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlPyBBcmUgdGhlcmUgc3BlY2lmaWMgVVNCIHRyYW5zZmVyIHR5cGVzIHRoYXQgd291bGQgYmUgbW9zdCBwcm9taXNpbmc/IFRoZSBjb21wbGV4aXR5IG9mIHRoZSBob3N0LXNpZGUgVVNCIHN0YWNrLCB0aGUgaW50cmljYWNpZXMgb2YgdGhlIGRyaXZlciBpdHNlbGYuLi4gdGhpcyBpcyBnb2luZyB0byBiZSBhIGZhc2NpbmF0aW5nIGNoYWxsZW5nZSBhbmQgaXQgY291bGQgYmUgZnJ1aXRmdWwgZm9yIGRpc2NvdmVyaW5nIG5ldyB2dWxuZXJhYmlsaXRpZXMuIFRpbWUgdG8gZGlnIGluIGFuZCBmb3JtdWxhdGUgYSBwbGFuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7U0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7UENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE1MgoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBCUkNNRk1BQ19VU0JgIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgQlJDTUZNQUNfVVNCYCBpcyBhIGRlZmluZWQgZW50aXR5LiBOb3csIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY2AuIE15IHRoaW5raW5nIGlzIHRoYXQgc2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBCcm9hZGNvbSBXaS1GaSBhbmQgaXRzIFVTQiBpbnRlcmZhY2UsIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgbWlnaHQgcHJvdmlkZSBzb21lIHJlbGV2YW50IGluc2lnaHRzLiBJcyB0aGlzIGZ1bmN0aW9uIHNwZWNpZmljIHRvIENZVz8gTXkgcmVjb2xsZWN0aW9uIGlzIHRoYXQgQ1lXIHJlZmVycyB0byB0aGUgQ3lwcmVzcy9Ccm9hZGNvbSBXaS1GaSBpbXBsZW1lbnRhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGlzIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2Ugd2l0aGluIHRoYXQgY29udGV4dCBjb3VsZCBzaGVkIGxpZ2h0IG9uIHRoZSBVU0IgaW50ZWdyYXRpb24uIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgZnVuY3Rpb24gaXRzZWxmLCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEJSQ01GTUFDX1VTQmAuIFRoYXQgd2F5LCBJIGNhbiBlbnN1cmUgSSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIEJSQ01GTUFDXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXCYjMzQ7XG4gICAzOlx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA0Olx0XHRzZWxlY3QgQlJDTVVUSUxcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBCcm9hZGNvbVxuICAgNzpcdFx0ICBGdWxsTUFDIGNoaXBzZXRzLiBJdCBoYXMgdG8gd29yayB3aXRoIGF0IGxlYXN0IG9uZSBvZiB0aGUgYnVzXG4gICA4Olx0XHQgIGludGVyZmFjZSBzdXBwb3J0LiBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkXG4gICA5Olx0XHQgIGJyY21mbWFjLmtvLlxuICAxMDpcdFxuICAxMTpcdGNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG4gIDEyOlx0XHRib29sXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuICAxNTpcdFx0Ym9vbFxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBCUkNNRk1BQ19TRElPXG4gIDE4Olx0XHRib29sIFwmIzM0O1NESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuICAxOTpcdFx0ZGVwZW5kcyBvbiAoTU1DID0geSB8fCBNTUMgPSBCUkNNRk1BQylcbiAgMjA6XHRcdGRlcGVuZHMgb24gQlJDTUZNQUNcbiAgMjE6XHRcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXG4gIDIyOlx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDIzOlx0XHRkZWZhdWx0IHlcbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXG4gIDI2Olx0XHQgIElFRUU4MDIuMTFuIGVtYmVkZGVkIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFNheSBZIGlmIHlvdSB3YW50IHRvXG4gIDI3Olx0XHQgIHVzZSB0aGUgZHJpdmVyIGZvciBhIFNESU8gd2lyZWxlc3MgY2FyZC5cbiAgMjg6XHRcbiAgMjk6XHRjb25maWcgQlJDTUZNQUNfVVNCXG4gIDMwOlx0XHRib29sIFwmIzM0O1VTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4gIDMxOlx0XHRkZXBlbmRzIG9uIChVU0IgPSB5IHx8IFVTQiA9IEJSQ01GTUFDKVxuICAzMjpcdFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xuICAzMzpcdFx0c2VsZWN0IEJSQ01GTUFDX1BST1RPX0JDRENcbiAgMzQ6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgQnJvYWRjb21cbiAgMzc6XHRcdCAgSUVFRTgwMi4xMW4gZW1iZWRkZWQgRnVsbE1BQyBXTEFOIGRyaXZlci4gU2F5IFkgaWYgeW91IHdhbnQgdG9cbiAgMzg6XHRcdCAgdXNlIHRoZSBkcml2ZXIgZm9yIGFuIFVTQiB3aXJlbGVzcyBjYXJkLlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBCUkNNRk1BQ19QQ0lFXG4gIDQxOlx0XHRib29sIFwmIzM0O1BDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xuICA0MzpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNDQ6XHRcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcbiAgNDU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgNDY6XHRcdGhlbHBcbiAgNDc6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXG4gIDQ4Olx0XHQgIElFRUU4MDIuMTFhYyBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xuICA0OTpcdFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYW4gUENJRSB3aXJlbGVzcyBjYXJkLlxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMDcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAuIEl0JiMzOTtzIGFzc2lnbmluZyB0aGlzIGZ1bmN0aW9uIHRvIGBkcnZyLSZndDtvcHMtJmd0O2V4dGVybmFsX2F1dGhgLCB3aGljaCBJIHJlY29nbml6ZSBhcyB0aGUgYGV4dGVybmFsX2F1dGhgIG9wZXJhdGlvbiBpbiBjZmc4MDIxMS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7ZnV6emFibGU/JiMzNDsgQWJzb2x1dGVseS4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCBjcnVjaWFsbHksIGl0JiMzOTtzIGV4cG9zZWQgdGhyb3VnaCBuZXRsaW5rIChubDgwMjExKS4gVGhhdCBtYWtlcyBpdCBhY2Nlc3NpYmxlLCBhc3N1bWluZyB0aGUgZGV2aWNlIHJlZ2lzdGVycyB3aXRoIHRoZSBrZXJuZWwsIG9mIGNvdXJzZS4KClRoZSBuZXh0IHF1ZXN0aW9uIGluIG15IG1pbmQgaXMsICYjMzQ7Y2FuIHRoaXMgZGV2aWNlIHJlZ2lzdHJhdGlvbiBiZSB0cmlnZ2VyZWQgd2l0aGluIHN5emthbGxlcj8mIzM0OyBBaCwgeWVzISBTeXprYWxsZXIgbGV2ZXJhZ2VzIHZoY2kgKHZpcnR1YWwgVVNCKSB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLiBJZiB3ZSBjYW4gZ2V0IGl0IHRvIGVtdWxhdGUgYSBCcm9hZGNvbSBVU0IgZGV2aWNlLCB0aGVuIHRoZSBkcml2ZXIgKnNob3VsZCogcHJvYmUgYW5kIHJlZ2lzdGVyIHdpdGggY2ZnODAyMTEuIEFuZCBpZiB0aGF0IGhhcHBlbnMsIHRoZW4gd2UgY2FuIGhpdCB0aGF0IGBleHRlcm5hbF9hdXRoYCBmdW5jdGlvbiB2aWEgbmw4MDIxMS4KCk5vdywgYmVmb3JlIEkgZ2V0IHRvbyBjYXJyaWVkIGF3YXksIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgY29ycmVjdCBrZXJuZWwgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZS4uLkkmIzM5O2xsIG5lZWQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgZW5hYmxlZCwgY2xlYXJseS4gQW5kLCBvZiBjb3Vyc2UsIGBDRkc4MDIxMWAuIFRlY2huaWNhbGx5LCBgTUFDODAyMTFgIGlzbiYjMzk7dCBzdHJpY3RseSAqcmVxdWlyZWQqIGZvciBhIEZ1bGxNQUMgZHJpdmVyIGxpa2UgdGhpcywgYnV0IGBDRkc4MDIxMWAgaXMuIE9rYXksIGdvb2QuIFRoYXQgYWxsIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guCgpBbHJpZ2h0LCB0aW1lIHRvIHJldmlzaXQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBhbmQgY29uZmlybSB0aGUgYXR0YWNrIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX2N5d19leHRlcm5hbF9hdXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTE5Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoxOTg6YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTE5OS1cdFx0XHRzdHJ1Y3QgY2ZnODAyMTFfZXh0ZXJuYWxfYXV0aF9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0yMzQ9c3RhdGljIHZvaWQgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzYtXHRkcnZyLVx1MDAzZW9wcy1cdTAwM2VtZ210X3R4ID0gYnJjbWZfY3l3X21nbXRfdHg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzc6XHRkcnZyLVx1MDAzZW9wcy1cdTAwM2VleHRlcm5hbF9hdXRoID0gYnJjbWZfY3l3X2V4dGVybmFsX2F1dGg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIHRoZSBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDt3aGVyZSBpcyBgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHNgIGFjdHVhbGx5ICp1c2VkKj8mIzM0Oy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIFRoaXMgbWVhbnMgSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0JiMzOTtzICpjYWxsaW5nKiBpdC4gSXMgaXQgYSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gcm91dGluZT8gSXMgaXQgcGFydCBvZiBhIGNvbnRyb2wgcGF0aCBmb3IgaGFuZGxpbmcgYW4gZXZlbnQ/IEtub3dpbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHdpbGwgaW1tZWRpYXRlbHkgdGVsbCBtZSB3aGF0IGFyZWEgb2YgdGhlIHdpcmVsZXNzIHN0YWNrIHRoaXMgaXMgcmVsZXZhbnQgdG8uIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCBhIGBncmVwYCBvciBhIHNpbWlsYXIgdG9vbCB0byBmaW5kIGFsbCBpbnN0YW5jZXMgb2YgdGhpcyBzeW1ib2wgYmVpbmcgcmVmZXJlbmNlZCwgdGhlbiBhbmFseXplIHRob3NlIGNhbGxzIG1vcmUgY2xvc2VseS4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBvcGVyYXRpb25hbCBjb250ZXh0IGFuZCB3aGF0IGRlcGVuZGVuY2llcyBvciBjb25zdHJhaW50cyBhcmUgYXQgcGxheS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgcHJvYmFibHkgYSBjcml0aWNhbCBwaWVjZSByZWxhdGVkIHRvIGNmZzgwMjExIGludGVncmF0aW9uIHdpdGhpbiB0aGUgQnJvYWRjb20gZHJpdmVyLCBidXQgc2VlaW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljIHB1cnBvc2UuIExldCYjMzk7cyBzdGFydCBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0xOTg9YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzQ6c3RhdGljIHZvaWQgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9Mzc0PWNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzctXHQuYWN0aXZhdGVfZXZlbnRzID0gYnJjbWZfY3l3X2FjdGl2YXRlX2V2ZW50cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjM3ODpcdC5nZXRfY2ZnODAyMTFfb3BzID0gYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzktXHQucmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMgPSBicmNtZl9jeXdfcmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NzQKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYGJyY21mX2N5d19vcHNgIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21ldGhpbmcgd2l0aGluIGBicmNtZl9jeXdfb3BzYC4gTXkgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIGl0cyBzY29wZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbnRleHQuIEl0JiMzOTtzIGNsZWFyIHRoYXQgaXQmIzM5O3MgcmVsYXRlZCB0byBzb21lIGJyb2FkZXIgb3BlcmF0aW9uLCBzbyBJIGhhdmUgdG8gZ28gZGVlcGVyIGFuZCBwaW5wb2ludCB3aGVyZSBgYnJjbWZfY3l3X29wc2AgaXMgYWN0dWFsbHkgKnVzZWQqLiBXaGVyZSBhcmUgdGhlIGNhbGxzPyBXaGF0IGZ1bmN0aW9ucyBhcmUgbGV2ZXJhZ2luZyB0aGlzPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkgbmVlZCB0byB0cmFjZSB0aGlzIG9uZSBkb3duLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9jeXdfb3BzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTM2Mj1zdGF0aWMgdm9pZCBicmNtZl9jeXdfcmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozNzQ6Y29uc3Qgc3RydWN0IGJyY21mX2Z3dmlkX29wcyBicmNtZl9jeXdfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzc1LVx0LnNldF9zYWVfcGFzc3dvcmQgPSBicmNtZl9jeXdfc2V0X3NhZV9wd2QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTQtXHRyZXR1cm4gYnJjbWZfZnd2aWRfcmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jOjE1Olx0XHRcdFx0XHQgICBcdTAwMjZicmNtZl9jeXdfb3BzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTYtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnJjbWZfZnd2aWRfb3BzIGJyY21mX2N5d19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo5OiNkZWZpbmUgQ1lXX1ZPUFNcdChcdTAwMjZicmNtZl9jeXdfb3BzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmgtMTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NDcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgYnJjbWZtYWNgIERyaXZlciYjMzk7cyBDWVcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBoYW5kbGVzIGl0cyB2ZW5kb3JzLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGBicmNtZl9jeXdfb3BzYCBpcyByZWdpc3RlcmVkIGFzIHRoZSB2ZW5kb3Igb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgZm9yIGBCUkNNRl9GV1ZFTkRPUl9DWVdgLiBUaGF0IGluZGljYXRlcyB0aGlzIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgQnJvYWRjb20gQ1lXIChsaWtlbHkgbWVhbmluZyBDeXByZXNzIFdpcmVsZXNzKSBmaXJtd2FyZSBvciBoYXJkd2FyZSB3aXRoaW4gdGhlIGBicmNtZm1hY2AgZnJhbWV3b3JrLiBUaGlzIHJlZ2lzdHJhdGlvbiBpcyBhIGtleSBzdGFydGluZyBwb2ludC4KCk5vdywgSSBuZWVkIHRvIGRpZyBpbiBhIGJpdCBkZWVwZXIuIEdpdmVuIHRoYXQgaXQgaGFzIGl0cyBvd24gYG9wc2Agc3RydWN0dXJlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgZm9yICpzcGVjaWZpYyogY29uZmlndXJhdGlvbiBvcHRpb25zLCBzZXR0aW5ncywgb3IgdmFyaWF0aW9ucyB0YWlsb3JlZCBzcGVjaWZpY2FsbHkgZm9yIENZVyBkZXZpY2VzIHdpdGhpbiB0aGUgYnJvYWRlciBgYnJjbWZtYWNgIGNvZGViYXNlLiBBcmUgdGhlcmUgc3BlY2lhbCBxdWlya3MsIG9wdGltaXphdGlvbnMsIG9yIHBhcmFtZXRlciBvdmVycmlkZXMgYmFzZWQgb24gZGV0ZWN0aW5nIHRoaXMgdmVuZG9yIElEPyBXaGF0IHJvdXRpbmVzIGhhbmRsZSBmaXJtd2FyZSBsb2FkaW5nLCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBvciBwb3dlciBtYW5hZ2VtZW50ICp1bmlxdWVseSogZm9yIENZVz8gVGltZSB0byB0cmFjZSB0aGUgY29kZSBwYXRocyBhbmQgc2VlIHdoYXQgY3VzdG9tIGhhbmRsaW5nIGlzIHByZXNlbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7U0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7UENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NjgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNZVyBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYSBwcmUtZXhpc3RpbmcgY29uZmlndXJhdGlvbiBmaWxlLCBkaXJlY3RpdmUsIG9yIHN5c3RlbSBzZXR0aW5nIHNwZWNpZmljYWxseSBkZWRpY2F0ZWQgdG8gdGhlIENZVyAocHJlc3VtYWJseSBhIEJyb2FkY29tIFdpLUZpIGNoaXBzZXQgb3IgcmVsYXRlZCBoYXJkd2FyZSwgZ2l2ZW4gdGhlIGNvbnRleHQpLiBJdCYjMzk7cyBhbHdheXMgYmVzdCB0byBzdGFydCB3aXRoIGEgY29uZmlndXJhdGlvbiBjaGVjay4gVGhpcyB3aWxsIGRlcGVuZCBvbiB0aGUgT1MgYW5kIHN5c3RlbSBpbiBxdWVzdGlvbi4gSXMgaXQgYSBzdGFuZGFyZCBMaW51eCBkaXN0cmlidXRpb24/IEEgY3VzdG9tIGVtYmVkZGVkIHN5c3RlbT8gS25vd2luZyB0aGUgcGxhdGZvcm0gaXMga2V5LgoKTXkgZm9jdXMgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgaWYgdGhlcmUmIzM5O3MgYW4gZXhpc3RpbmcgZmlsZSBvciBtZWNoYW5pc20gdG8gc2V0IHVwIHBhcmFtZXRlcnMgZm9yIHRoZSBDWVcuIEkgd291bGQgbG9vayBmb3Iga25vd24gY29uZmlndXJhdGlvbiBmaWxlIHBhdGhzLCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG9yIGV2ZW4gYSBkYXRhYmFzZS4gSWYgSSYjMzk7bSBsdWNreSwgYSBxdWljayBgZ3JlcGAgb3IgYGZpbmRgIG1pZ2h0IHJldmVhbCBhIHJlbGV2YW50IGZpbGUuIE1vcmUgbGlrZWx5LCBJIHdpbGwgaGF2ZSB0byBjb25zdWx0IHRoZSBtYW51ZmFjdHVyZXImIzM5O3MgZG9jdW1lbnRhdGlvbi4gVGhlIGdvYWwgaXMgdG8gYXZvaWQgcmVpbnZlbnRpbmcgdGhlIHdoZWVsIGFuZCB0byBsZXZlcmFnZSBhbnkgZXhpc3RpbmcgZnJhbWV3b3JrIHRoYXQgbWlnaHQgYWxyZWFkeSBiZSBpbiBwbGFjZSBmb3IgbWFuYWdpbmcgQ1lXIGRldmljZSBwYXJhbWV0ZXJzLCBzdWNoIGFzIHBvd2VyIG1hbmFnZW1lbnQgc2V0dGluZ3MsIGludGVyZmFjZSBzZXR0aW5ncywgcmVndWxhdG9yeSBkb21haW4gZXRjLiBJZiB0aGF0JiMzOTtzIHRoZSBjYXNlLCBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiB2aWV3IGFuZCBlZGl0IHRoZXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQ19DWVcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTc0CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRleHQsIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OgoKKipEaXZpbmcgaW50byB0aGUgYnJjbWZtYWMgTWFrZWZpbGUqKgoKT2theSwgc28gd2UmIzM5O3JlIHN0YXJ0aW5nIHdpdGggdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGVgLiBJbW1lZGlhdGVseSwgSSBrbm93IHRoaXMgaXMgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlciBjb21waWxhdGlvbiByZXNpZGVzIGZvciB0aGUgYnJjbWZtYWMgZHJpdmVyLiBNeSBtZW50YWwgY2hlY2tsaXN0IGtpY2tzIGluOiBJJiMzOTttIGFudGljaXBhdGluZyB0byBzZWUgdGhlIHR5cGljYWwgTWFrZWZpbGUgZWxlbWVudHM6IHNvdXJjZSBmaWxlIGxpc3RzLCBvYmplY3QgZmlsZSBnZW5lcmF0aW9uIHJ1bGVzLCBkZXBlbmRlbmN5IGRlZmluaXRpb25zLCBpbmNsdXNpb24gcGF0aHMsIHByb2JhYmx5IHNvbWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHNlY3Rpb25zLCBhbmQgaG9wZWZ1bGx5IHdlbGwtZGVmaW5lZCB2YXJpYWJsZXMgZm9yIHRoZSBrZXJuZWwgYnVpbGQgZW52aXJvbm1lbnQuIEkgZXhwZWN0IHRvIHNlZSBmbGFncywgb2JqZWN0IGdlbmVyYXRpb24sIHJ1bGVzIGZvciBrZXJuZWwgbW9kdWxlcywgYW5kIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9yIGNvbmZpZ3VyYXRpb25zLCBhcyB3ZWxsIGFzIHRoZSBtb2R1bGVzIHRoYXQgbWlnaHQgZ2V0IGFkZGVkIGFzIGEgcmVzdWx0IG9mIHRoYXQgYnVpbGQuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIG9wdGltaXphdGlvbiBmbGFncywgZGVidWdnaW5nIHN5bWJvbHMsIGFuZCwgb2YgY291cnNlLCB0aGUgbW9kdWxlIG5hbWUgZGVmaW5pdGlvbi4gSSYjMzk7bGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBzY2FuIGZvciB0aGUgY29tbW9uIGAkKENPTkZJR19CUkNNRk1BQylgIGd1YXJkIOKAkyB0aGF0IHdpbGwgdGVsbCBtZSBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBzdGFuZGFyZCBidWlsZC4gVGhpcyBpbml0aWFsIHNjYW4gaXMgYWJvdXQgYnVpbGRpbmcgYSBtZW50YWwgbWFwIG9mIHRoZSBkcml2ZXImIzM5O3MgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZnJhZ21lbnQgZm9yIEJyb2FkY29tIDgwMi4xMSBOZXR3b3JraW5nIERldmljZSBEcml2ZXJcbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKGMpIDIwMTAgQnJvYWRjb20gQ29ycG9yYXRpb25cbiAgIDY6XHQjXG4gICA3Olx0XG4gICA4Olx0Y2NmbGFncy15ICYjNDM7PSBcXFxuICAgOTpcdFx0LUkgJChzcmMpIFxcXG4gIDEwOlx0XHQtSSAkKHNyYykvLi4vaW5jbHVkZVxuICAxMTpcdFxuICAxMjpcdG9iai0kKENPTkZJR19CUkNNRk1BQykgJiM0Mzs9IGJyY21mbWFjLm9cbiAgMTM6XHRicmNtZm1hYy1vYmpzICYjNDM7PSBcXFxuICAxNDpcdFx0XHRjZmc4MDIxMS5vIFxcXG4gIDE1Olx0XHRcdGNoaXAubyBcXFxuICAxNjpcdFx0XHRmd2lsLm8gXFxcbiAgMTc6XHRcdFx0ZndlaC5vIFxcXG4gIDE4Olx0XHRcdHAycC5vIFxcXG4gIDE5Olx0XHRcdHByb3RvLm8gXFxcbiAgMjA6XHRcdFx0Y29tbW9uLm8gXFxcbiAgMjE6XHRcdFx0Y29yZS5vIFxcXG4gIDIyOlx0XHRcdGZpcm13YXJlLm8gXFxcbiAgMjM6XHRcdFx0Znd2aWQubyBcXFxuICAyNDpcdFx0XHRmZWF0dXJlLm8gXFxcbiAgMjU6XHRcdFx0YnRjb2V4Lm8gXFxcbiAgMjY6XHRcdFx0dmVuZG9yLm8gXFxcbiAgMjc6XHRcdFx0cG5vLm8gXFxcbiAgMjg6XHRcdFx0eHRsdi5vXG4gIDI5Olx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfUFJPVE9fQkNEQykgJiM0Mzs9IFxcXG4gIDMwOlx0XHRcdGJjZGMubyBcXFxuICAzMTpcdFx0XHRmd3NpZ25hbC5vXG4gIDMyOlx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfUFJPVE9fTVNHQlVGKSAmIzQzOz0gXFxcbiAgMzM6XHRcdFx0Y29tbW9ucmluZy5vIFxcXG4gIDM0Olx0XHRcdGZsb3dyaW5nLm8gXFxcbiAgMzU6XHRcdFx0bXNnYnVmLm9cbiAgMzY6XHRicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19TRElPKSAmIzQzOz0gXFxcbiAgMzc6XHRcdFx0c2Rpby5vIFxcXG4gIDM4Olx0XHRcdGJjbXNkaC5vXG4gIDM5Olx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfVVNCKSAmIzQzOz0gXFxcbiAgNDA6XHRcdFx0dXNiLm9cbiAgNDE6XHRicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19QQ0lFKSAmIzQzOz0gXFxcbiAgNDI6XHRcdFx0cGNpZS5vXG4gIDQzOlx0YnJjbWZtYWMtJChDT05GSUdfQlJDTURCRykgJiM0Mzs9IFxcXG4gIDQ0Olx0XHRcdGRlYnVnLm9cbiAgNDU6XHRicmNtZm1hYy0kKENPTkZJR19CUkNNX1RSQUNJTkcpICYjNDM7PSBcXFxuICA0NjpcdFx0XHR0cmFjZXBvaW50Lm9cbiAgNDc6XHRicmNtZm1hYy0kKENPTkZJR19PRikgJiM0Mzs9IFxcXG4gIDQ4Olx0XHRcdG9mLm9cbiAgNDk6XHRicmNtZm1hYy0kKENPTkZJR19ETUkpICYjNDM7PSBcXFxuICA1MDpcdFx0XHRkbWkub1xuICA1MTpcdGJyY21mbWFjLSQoQ09ORklHX0FDUEkpICYjNDM7PSBcXFxuICA1MjpcdFx0XHRhY3BpLm9cbiAgNTM6XHRcbiAgNTQ6XHRpZmVxICgkKENPTkZJR19CUkNNRk1BQyksbSlcbiAgNTU6XHRvYmotbSAmIzQzOz0gd2NjL1xuICA1NjpcdG9iai1tICYjNDM7PSBjeXcvXG4gIDU3Olx0b2JqLW0gJiM0Mzs9IGJjYS9cbiAgNTg6XHRlbHNlXG4gIDU5Olx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUMpICYjNDM7PSB3Y2MvY29yZS5vXG4gIDYwOlx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUMpICYjNDM7PSBjeXcvY29yZS5vXG4gIDYxOlx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUMpICYjNDM7PSBiY2EvY29yZS5vXG4gIDYyOlx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNzMKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqRGl2aW5nIGludG8gdGhlIEJ1aWxkIFN5c3RlbSAtIGBjeXcvY29yZS5vYCBhbmQgYENPTkZJR19CUkNNRk1BQ2AqKgoKUmlnaHQsIHNvIGBjeXcvY29yZS5vYCBpcyBhbHdheXMgYnVpbHQgd2hlbiBgQ09ORklHX0JSQ01GTUFDYCBpcyB0dXJuZWQgb24uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2ggYXQgZmlyc3QgZ2xhbmNlLiBCdXQgaGFuZyBvbiwgYSBzbGlnaHQgd3JpbmtsZSBlbWVyZ2VzLiBJZiBgQ09ORklHX0JSQ01GTUFDYCBpcyBidWlsdCBhcyBhIG1vZHVsZSAoYENPTkZJR19CUkNNRk1BQz1tYCksIGRvZXNuJiMzOTt0IHRoYXQgaW1wbHkgdGhhdCB0aGUgYGN5dy9gIGRpcmVjdG9yeSBjb250YWluaW5nIGBjeXcvY29yZS5vYCAqYWxzbyogYmVjb21lcyBhIHNlcGFyYXRlIG1vZHVsZT8gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgcG9pbnQgSSBuZWVkIHRvIGNsYXJpZnkuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZvciB0aGF0IGRpcmVjdG9yeSBkaXJlY3RseS4gVGhlIG9idmlvdXMgcGxhY2UgdG8gbG9vayBpcyB0aGUgYE1ha2VmaWxlYCBpdHNlbGYsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9NYWtlZmlsZWAuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlIGJ1aWxkIGxvZ2ljIHJlZmxlY3RzIHRoaXMgY29uZGl0aW9uYWwgbW9kdWxhcml6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHQjXG4gICAzOlx0IyBDb3B5cmlnaHQgKGMpIDIwMjIgQnJvYWRjb20gQ29ycG9yYXRpb25cbiAgIDQ6XHRcbiAgIDU6XHRjY2ZsYWdzLXkgJiM0Mzs9IFxcXG4gICA2Olx0XHQtSSAkKHNyYykgXFxcbiAgIDc6XHRcdC1JICQoc3JjKS8uLiBcXFxuICAgODpcdFx0LUkgJChzcmMpLy4uLy4uL2luY2x1ZGVcbiAgIDk6XHRcbiAgMTA6XHRvYmotbSAmIzQzOz0gYnJjbWZtYWMtY3l3Lm9cbiAgMTE6XHRicmNtZm1hYy1jeXctb2JqcyAmIzQzOz0gXFxcbiAgMTI6XHRcdFx0Y29yZS5vIG1vZHVsZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjg1CgkJCQkJCQlvdXRwdXQ6IDU2CgkJCQkJCQl0aG91Z2h0czogMjY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGJyY21mbWFjLWN5dy5rb2AgTW9kdWxlIGFuZCBFeHRlcm5hbCBBdXRoZW50aWNhdGlvbioqCgpPa2F5LCBzbyBJIHNlZSBgYnJjbWZtYWMtY3l3LmtvYCBpcyBidWlsdCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBpbiBgY3l3L2NvcmUuY2Agd29ya3MuIEkgcmVjYWxsIHRoaXMgZnVuY3Rpb24gaXMgcmVhY2hlZCB2aWEgdGhlIGBjZmc4MDIxMWAgZXh0ZXJuYWwgYXV0aGVudGljYXRpb24gb3BlcmF0aW9uLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludC4gTm93LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuCgpJIHNlZSB0aGF0IGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIGFyZSByZWxldmFudCB0byB0aGlzIG1vZHVsZSwgd2hpY2ggaXMgaW1wb3J0YW50IGZvciB0aGluZ3MgbGlrZSBmdXp6aW5nIHZpYSB2aXJ0dWFsIFVTQi4gT2YgY291cnNlLCBgQ0ZHODAyMTFgIGl0c2VsZiBpcyBhbHNvIGNyaXRpY2FsIGhlcmUuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYENGRzgwMjExYC4gSXQgc2VlbXMgdG8gb3B0aW9uYWxseSBkZXBlbmQgb24gYFJGS0lMTGAgYW5kIGBNQUM4MDIxMWAuIEhvd2V2ZXIsIEkmIzM5O20gcHJldHR5IHN1cmUgYENGRzgwMjExYCBpcyB1c3VhbGx5IGVuYWJsZWQgaW4gc3l6a2FsbGVyLgoKTGV0JiMzOTtzIGxvb2sgYXQgYEJSQ01GTUFDYCBpbiBtb3JlIGRldGFpbC4gSXQgZGVwZW5kcyBvbiBgQ0ZHODAyMTFgLiBBbmQgYEJSQ01GTUFDX1VTQmAgZGVwZW5kcyBvbiBgKFVTQiA9IHkgfHwgVVNCID0gQlJDTUZNQUMpYCBhbmQgYEJSQ01GTUFDYC4gU28gdGhlIGtleSBtb2R1bGVzIGFyZSBgQlJDTUZNQUNgIGFuZCBgQlJDTUZNQUNfVVNCYC4gQWxyaWdodCwgSSYjMzk7dmUgZ290IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBkZXBlbmRlbmNpZXMsIEkgc2hvdWxkIGNpcmNsZSBiYWNrIGFuZCByZXZpZXcgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBhZ2FpbiB3aXRoIHRoaXMgY29udGV4dCBpbiBtaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTA6XHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4gMTkxOlx0XHRcdFx0XHRHRlBfS0VSTkVMKTtcbiAxOTI6XHRmcmVlOlxuIDE5MzpcdFx0a2ZyZWUobWZfcGFyYW1zKTtcbiAxOTQ6XHRcdHJldHVybiBlcnI7XG4gMTk1Olx0fVxuIDE5NjpcdFxuIDE5NzpcdHN0YXRpYyBpbnRcbiAxOTg6XHRicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIDE5OTpcdFx0XHRcdHN0cnVjdCBjZmc4MDIxMV9leHRlcm5hbF9hdXRoX3BhcmFtcyAqcGFyYW1zKVxuIDIwMDpcdHtcbiAyMDE6XHRcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuIDIwMjpcdFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbiAyMDM6XHRcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXMgPSB7fTtcbiAyMDQ6XHRcdGludCByZXQgPSAwO1xuIDIwNTpcdFxuIDIwNjpcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG4gMjA3Olx0XG4gMjA4Olx0XHRpZnAgPSBuZXRkZXZfcHJpdihkZXYpO1xuIDIwOTpcdFx0ZHJ2ciA9IGlmcC1cdTAwM2VkcnZyO1xuIDIxMDpcdFx0aWYgKHBhcmFtcy1cdTAwM2VzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykge1xuIDIxMTpcdFx0XHRpZiAocGFyYW1zLVx1MDAzZXBta2lkKVxuIDIxMjpcdFx0XHRcdG1lbWNweShhdXRoX3N0YXR1cy5wbWtpZCwgcGFyYW1zLVx1MDAzZXBta2lkLCBXTEFOX1BNS0lEX0xFTik7XG4gMjEzOlx0XHRcdGF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTtcbiAyMTQ6XHRcdH0gZWxzZSB7XG4gMjE1Olx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O0V4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogc3RhdHVzPSVkXFxuXCYjMzQ7LFxuIDIxNjpcdFx0XHRcdCBwYXJhbXMtXHUwMDNlc3RhdHVzKTtcbiAyMTc6XHRcdFx0YXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX0ZBSUwpO1xuIDIxODpcdFx0fVxuIDIxOTpcdFxuIDIyMDpcdFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBlZXJfbWFjLCBwYXJhbXMtXHUwMDNlYnNzaWQsIEVUSF9BTEVOKTtcbiAyMjE6XHRcdHBhcmFtcy1cdTAwM2Vzc2lkLnNzaWRfbGVuID0gbWluX3QodTgsIHBhcmFtcy1cdTAwM2Vzc2lkLnNzaWRfbGVuLFxuIDIyMjpcdFx0XHRcdFx0ICAgICAgSUVFRTgwMjExX01BWF9TU0lEX0xFTik7XG4gMjIzOlx0XHRhdXRoX3N0YXR1cy5zc2lkX2xlbiA9IGNwdV90b19sZTMyKHBhcmFtcy1cdTAwM2Vzc2lkLnNzaWRfbGVuKTtcbiAyMjQ6XHRcdG1lbWNweShhdXRoX3N0YXR1cy5zc2lkLCBwYXJhbXMtXHUwMDNlc3NpZC5zc2lkLCBwYXJhbXMtXHUwMDNlc3NpZC5zc2lkX2xlbik7XG4gMjI1Olx0XG4gMjI2Olx0XHRyZXQgPSBicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcJiMzNDthdXRoX3N0YXR1c1wmIzM0OywgXHUwMDI2YXV0aF9zdGF0dXMsXG4gMjI3Olx0XHRcdFx0XHQgICAgICAgc2l6ZW9mKGF1dGhfc3RhdHVzKSk7XG4gMjI4Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDIyOTpcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDthdXRoX3N0YXR1cyBpb3ZhciBmYWlsZWQ6IHJldD0lZFxcblwmIzM0OywgcmV0KTtcbiAyMzA6XHRcbiAyMzE6XHRcdHJldHVybiByZXQ7XG4gMjMyOlx0fVxuIDIzMzpcdFxuIDIzNDpcdHN0YXRpYyB2b2lkIGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4gMjM1Olx0e1xuIDIzNjpcdFx0ZHJ2ci1cdTAwM2VvcHMtXHUwMDNlbWdtdF90eCA9IGJyY21mX2N5d19tZ210X3R4O1xuIDIzNzpcdFx0ZHJ2ci1cdTAwM2VvcHMtXHUwMDNlZXh0ZXJuYWxfYXV0aCA9IGJyY21mX2N5d19leHRlcm5hbF9hdXRoO1xuIDIzODpcdH1cbiAyMzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyMzkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogYGF1dGhfc3RhdHVzYCBhbmQgYHBta2lkYCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCB0aWdodGVuaW5nIHVwIHNvbWUgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBhdXRoX3N0YXR1c2AuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGFsc28gbWFraW5nIHN1cmUgdGhhdCBgcG1raWRgIGdldHMgcHJvcGVybHkgY29waWVkLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgZGVmaW5pdGVseSBhIGNoYW5nZSB0aGF0IGltcGFjdHMgdGhlIHdpcmVsZXNzIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgc29tZSB2dWxuZXJhYmlsaXRpZXMgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBpcyB0aGUga2V5IHN5bWJvbCBoZXJlLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBkZWVwZXIgYW5hbHlzaXMuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBzb2x2ZXMgdGhlIHByb2JsZW0gZGVzY3JpYmVkIGluIHRoZSBhc3NvY2lhdGVkIHRpY2tldC4KClRvIGNvbmZpcm0gdGhhdCwgYW5kIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIGVudmlyb25tZW50IGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gYEJSQ01GTUFDYCwgYEJSQ01GTUFDX1VTQmAsIGFuZCBgQ0ZHODAyMTFgIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LCBnaXZlbiB0aGUgZHJpdmVyJiMzOTtzIHB1cnBvc2UuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aG9zZSBhcmUgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlncywgaG93ZXZlcjsgaXQgaXMgbGlrZWx5IHRoYXQgSSYjMzk7bGwgbmVlZCBzb21lIGFkZGl0aW9uYWwgY29udGV4dC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEJSQ01GTUFDYCB0byBiZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBhbnl0aGluZyBlbHNlIGluIHBsYXkgaGVyZSB0aGF0IEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSQ01GTUFDJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE6Y29uZmlnIEJSQ01GTUFDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTE6Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEyLVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNDpjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNS1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTc6Y29uZmlnIEJSQ01GTUFDX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjI5OmNvbmZpZyBCUkNNRk1BQ19VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyMTIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIENGRzgwMjExIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgcmlkaW5nIG9uIGBDRkc4MDIxMWAgdG9kYXkuIEl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2UsIGFuZCBhbnkgY2hhbmdlIEkgbWFrZSBuZWVkcyB0byBiZSBtZXRpY3Vsb3VzbHkgcGxhbm5lZCwgc28gbGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBkZXBlbmRlbmN5IGFuYWx5c2lzLiBUaW1lIHRvIHRyYWNlIHRoZSBsaW5lYWdlIGFuZCBzZWUgd2hhdCB0aGlzIGJlYXN0IGlzIGNvbm5lY3RlZCB0byBpbiB0aGUgc3RhY2suIFdoYXQgbW9kdWxlcyBkZXBlbmQgb24gdGhpcz8gV2hhdCBhc3BlY3RzIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrIGFyZSBmdW5kYW1lbnRhbGx5IHRpZWQgdG8gdGhpcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIHRoZSBkb3duc3RyZWFtIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIG1ha2luZyBhIHR3ZWFrLiBJdOKAmXMgbGlrZSBzdXJnZXJ5OyB5b3UgZG9uJiMzOTt0IHN0YXJ0IGN1dHRpbmcgd2l0aG91dCBrbm93aW5nIHRoZSBwYXRpZW50JiMzOTtzIGZ1bGwgYW5hdG9teS4gTGV04oCZcyBpZGVudGlmeSB0aGUgcG90ZW50aWFsIHJpcHBsZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O2NmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xubmV0L3dpcmVsZXNzL0tjb25maWctNTMtXHRib29sIFwmIzM0O2VuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjY4OmNvbmZpZyBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBjZXJ0aWZpY2F0aW9uIG9udXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy04OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXHRib29sIFwmIzM0O3JlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTAwLVx0Ym9vbCBcJiMzNDthbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjExMTpjb25maWcgQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXHRzdHJpbmcgXCYjMzQ7YWRkaXRpb25hbCByZWdkYiBrZXkgZGlyZWN0b3J5XCYjMzQ7IGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O2NmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNi1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE1OTpjb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVx0Ym9vbCBcJiMzNDtlbmFibGUgcG93ZXJzYXZlIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3OC1cdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE4Nzpjb25maWcgQ0ZHODAyMTFfV0VYVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSB3aXJlbGVzcyBleHRlbnNpb25zIGNvbXBhdGliaWxpdHlcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTMtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1Rcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBjZmc4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzM0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYG5ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlOgoKKipEaXZpbmcgaW50byB0aGUgQ0ZHODAyMTEgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgYENGRzgwMjExYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3aXJlbGVzcyBuZXR3b3JraW5nIGFyZSBzdHJ1Y3R1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheS4gTXkgcHJpbWFyeSBpbnRlcmVzdCBpcyBhbHdheXMgdGhlIGFyY2hpdGVjdHVyZSDigJMgaG93IHRoZSBtb2R1bGVzIGZpdCB0b2dldGhlci4KClNvLCBJJiMzOTttIHNjYW5uaW5nIGZvciBgQ0ZHODAyMTFgLCBsaWtlbHkgc2VhcmNoaW5nIGZvciB0aGUgYGNvbmZpZ2AgYmxvY2sgdGhhdCBkZWZpbmVzIGl0LiBSaWdodCwgaGVyZSBpdCBpcy4gSXQmIzM5O3MgbWFya2VkIGFzIGEgY29yZSB3aXJlbGVzcyBuZXR3b3JraW5nIGNvbXBvbmVudCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIGl0JiMzOTtzIGFuIGB0cmlzdGF0ZWAgd2hpY2ggaXMgdXNlZnVsLiBJIHNob3VsZCBsb29rIGZvciBkZXBlbmRlbmNpZXMuCgpJIHNlZSB0aGF0IGBDRkc4MDIxMWAgY2FuIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBUaGF0IG9wZW5zIHRoZSBkb29yIGZvciBydW50aW1lIGxvYWRpbmcsIHdoaWNoIGlzIGdvb2QuIEltcG9ydGFudCBmb3IgZGlmZmVyZW50IHVzZSBjYXNlcy4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgb2YgY291cnNlLCB0aGF0IGNvcmUgY29tcG9uZW50cyB0aGF0IGFyZSBidWlsdC1pbiByZXF1aXJlIGEgcmVib290IHRvIHVwZGF0ZS4KClRoZSBkZXBlbmRlbmNpZXMgaGVyZSBhcmUgYWx3YXlzIGNydWNpYWwuIEFueXRoaW5nIHRoYXQgaGluZ2VzIG9uIHRoaXM/IE9rYXksIGl0JiMzOTtzIHByZXR0eSBzZWxmLWNvbnRhaW5lZCwgdGhvdWdoIGl0IGRvZXMgZGVwZW5kIG9uIHRoZSBrZXJuZWwgYmVpbmcgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUgbmV0d29ya2luZyBzdGFjaywgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgY2FuIHByb2JhYmx5IHNraXAgb3ZlciB0aGF0IG9uZS4KVGhlcmUmIzM5O3MgcHJvYmFibHkgYSBsb3Qgb2YgZGV2aWNlIGRyaXZlcnMgaW4gdGhlIHdpZGVyIHRyZWUgdGhhdCBob29rIGludG8gdGhpcyBjb25maWd1cmF0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBoYXZlIGEgbG9vayBhdCB0aG9zZSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcy4KQWxyaWdodCwgb3ZlcmFsbCwgdGhlIGNvbmZpZ3VyYXRpb24gc2VlbXMgd2VsbC1kZWZpbmVkIGFuZCBjbGVhcmx5IHN0cnVjdHVyZWQuIE5vdywgSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgY29uZmlndXJhdGlvbiBjaG9pY2VzIGltcGFjdCB0aGUgY29kZSBpdHNlbGYuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBhc3NvY2lhdGVkIHNvdXJjZSBmaWxlcyBhbmQgc2VlIGhvdyB0aG9zZSBgaWZkZWZgIHN0YXRlbWVudHMgYXJlIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE3Olx0Y29uZmlnIENGRzgwMjExXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gIDIwOlx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDIxOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMjI6XHRcdCMgbWF5IG5lZWQgdG8gdXBkYXRlIHRoaXMgd2hlbiBjZXJ0aWZpY2F0ZXMgYXJlIGNoYW5nZWQgYW5kIGFyZVxuICAyMzpcdFx0IyB1c2luZyBhIGRpZmZlcmVudCBhbGdvcml0aG0sIHRob3VnaCByaWdodCBub3cgdGhleSBzaG91bGRuJiMzOTt0XG4gIDI0Olx0XHQjICh0aGlzIGlzIGhlcmUgcmF0aGVyIHRoYW4gYmVsb3cgdG8gYWxsb3cgaXQgdG8gYmUgYSBtb2R1bGUpXG4gIDI1Olx0XHRzZWxlY3QgQ1JZUFRPX1NIQTI1NiBpZiBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgY2ZnODAyMTEgaXMgdGhlIExpbnV4IHdpcmVsZXNzIExBTiAoODAyLjExKSBjb25maWd1cmF0aW9uIEFQSS5cbiAgMjg6XHRcdCAgRW5hYmxlIHRoaXMgaWYgeW91IGhhdmUgYSB3aXJlbGVzcyBkZXZpY2UuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gb24gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDMxOlx0XG4gIDMyOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvRG9jdW1lbnRhdGlvbi9jZmc4MDIxMVxuICAzMzpcdFxuICAzNDpcdFx0ICBXaGVuIGJ1aWx0IGFzIGEgbW9kdWxlIGl0IHdpbGwgYmUgY2FsbGVkIGNmZzgwMjExLlxuICAzNTpcdFxuICAzNjpcdGlmIENGRzgwMjExXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTAyCgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDI2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBCcm9hZGNvbSBXTEFOIERyaXZlciBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEJyb2FkY29tIFdMQU4gZHJpdmVyIHZ1bG5lcmFiaWxpdHkgYW5kIGhvdyB0byBhcHByb2FjaCBpdCBmb3IgZnV6emluZy4gSXQgc2VlbXMgdGhlIGNvcmUgZGVwZW5kZW5jaWVzIGFyZSBhIGJpdCB0YW5nbGVkLiBJIHNlZSB0aGF0IGBDRkc4MDIxMWAgaGluZ2VzIG9uIGBSRktJTExgIOKAkyBlaXRoZXIgaXQmIzM5O3MgZW5hYmxlZCBvciBkaXNhYmxlZCwgYnV0IGl0ICptdXN0KiBiZSBkZWZpbmVkLiBUaGVuLCBgQlJDTUZNQUNgIHJlbGllcyBvbiBgQ0ZHODAyMTFgLCBuYXR1cmFsbHkuIFNvLCBqdXN0IHRob3NlIHR3byB3b3VsZCBtZWFuIEkgbmVlZCBgQlJDTUZNQUNgLCBgQlJDTUZNQUNfVVNCYCwgYW5kIGBDRkc4MDIxMWAgYXQgYSBtaW5pbXVtLgoKV2FpdCwgYEJSQ01GTUFDX1VTQmAgaW50cm9kdWNlcyBhIG5ldyBkZXBlbmRlbmN5OiBgVVNCYC4gSXQgbmVlZHMgYFVTQmAgdG8gYmUgc2V0IHRvICYjMzk7eSYjMzk7IG9yIHRvIGVxdWFsIGBCUkNNRk1BQ2AuIFNvLCBJJiMzOTtsbCBuZWVkIGBVU0JgIGV4cGxpY2l0bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZy4gTGV0JiMzOTtzIHNlZS4uLiBgQlJDTUZNQUNgLCBgQlJDTUZNQUNfVVNCYCwgYENGRzgwMjExYCwgYW5kIGBVU0JgIHNob3VsZCBiZSBteSBjb25maWd1cmF0aW9ucy4gWWVzLCB0aGF0IHNob3VsZCBjb3ZlciBpdC4KClRoZSBpbnRlcmVzdGluZyBiaXQgaGVyZSBpcyB0aGF0IGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgaXMgcmVhY2hhYmxlIHRocm91Z2ggYGNmZzgwMjExYCB3aGVuIGVtdWxhdGluZyBhIEJyb2FkY29tIFVTQiBkZXZpY2UuIFRoYXQmIzM5O3MgYSBnb29kIGVudHJ5IHBvaW50LiBHaXZlbiB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGFuZCBtaXNzaW5nIFBNS0lEIGNvcHkgaW4gdGhlIEZ1bGxNQUMgZHJpdmVyJiMzOTtzIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGhhbmRsZXIsIGl0IHNvdW5kcyBkZWZpbml0ZWx5IHdvcnRoIG15IHRpbWUuIEkgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhhdCBgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSB0aGUgY3JpdGljYWwgcG9pbnQsIHJlYWNoYWJsZSB2aWEgYGNmZzgwMjExYCBuZXRsaW5rIGNvbW1hbmRzIHdoZW4gYSB2aXJ0dWFsIFVTQiBCcm9hZGNvbSBkZXZpY2UgaXMgYmVpbmcgdXNlZC4gVGhhdCYjMzk7cyBteSB0YXJnZXQsIGFuZCB0aGF0JiMzOTtzIGhvdyBJJiMzOTtsbCBmcmFtZSBteSBmdXp6ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19VU0ImIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgYW5kIGFkZHMgbWlzc2luZyBQTUtJRCBjb3B5IGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyJiMzOTtzIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGhhbmRsZXIuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNmZzgwMjExIG5ldGxpbmsgY29tbWFuZHMgd2hlbiBhIHZpcnR1YWwgVVNCIEJyb2FkY29tIGRldmljZSBpcyBlbXVsYXRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJDTUZNQUMmIzM0OywKICAgICYjMzQ7QlJDTUZNQUNfVVNCJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2N5d19leHRlcm5hbF9hdXRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGFuZCBhZGRzIG1pc3NpbmcgUE1LSUQgY29weSBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciYjMzk7cyBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBoYW5kbGVyLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIHdoZW4gYSB2aXJ0dWFsIFVTQiBCcm9hZGNvbSBkZXZpY2UgaXMgZW11bGF0ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NjozNy44Nzc4MzM0NDhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODM5NzQ1MjM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBhbmQgYWRkcyBtaXNzaW5nIFBNS0lEIGNvcHkgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIncyBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBoYW5kbGVyLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIHdoZW4gYSB2aXJ0dWFsIFVTQiBCcm9hZGNvbSBkZXZpY2UgaXMgZW11bGF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjM3Ljg3Nzg0MjQ5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0OTk5OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODZlYWNiYWE5OGU1N2RjYTQwNDRkZWU0MTZlNzU4NjNiNmNjNmEzMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAxMTo1NjozNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuaW5kZXggODczNzU0YmU1MTc0YmMuLjJjNTliNWU1Nzk1OWMwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcXG5AQCAtMjAwLDcgKzIwMCw3IEBAIGJyY21mX2N5d19leHRlcm5hbF9hdXRoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2lmICppZnA7XFxuIFxcdHN0cnVjdCBicmNtZl9wdWIgKmRydnI7XFxuLVxcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7XFxuK1xcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXMgPSB7fTtcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcbiBcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJFbnRlclxcXFxuXFxcIik7XFxuQEAgLTIwOCw2ICsyMDgsOCBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZnAgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHRkcnZyID0gaWZwLVxcdTAwM2VkcnZyO1xcbiBcXHRpZiAocGFyYW1zLVxcdTAwM2VzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykge1xcbitcXHRcXHRpZiAocGFyYW1zLVxcdTAwM2VwbWtpZClcXG4rXFx0XFx0XFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtXFx1MDAzZXBta2lkLCBXTEFOX1BNS0lEX0xFTik7XFxuIFxcdFxcdGF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogc3RhdHVzPSVkXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NjozOC4zNTQxNzA0MDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NzkyMTEwNjk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfVVNCXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBhbmQgYWRkcyBtaXNzaW5nIFBNS0lEIGNvcHkgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIncyBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBoYW5kbGVyLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIHdoZW4gYSB2aXJ0dWFsIFVTQiBCcm9hZGNvbSBkZXZpY2UgaXMgZW11bGF0ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg2ZWFjYmFhOThlNTdkY2E0MDQ0ZGVlNDE2ZTc1ODYzYjZjYzZhMzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxMTo1NjozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IDg3Mzc1NGJlNTE3NGJjLi4yYzU5YjVlNTc5NTljMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuQEAgLTIwMCw3ICsyMDAsNyBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHtcbiBcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbi1cdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7XG4rXHRzdHJ1Y3QgYnJjbWZfYXV0aF9yZXFfc3RhdHVzX2xlIGF1dGhfc3RhdHVzID0ge307XG4gXHRpbnQgcmV0ID0gMDtcbiBcbiBcdGJyY21mX2RiZyhUUkFDRSwgXCJFbnRlclxcblwiKTtcbkBAIC0yMDgsNiArMjA4LDggQEAgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmcCA9IG5ldGRldl9wcml2KGRldik7XG4gXHRkcnZyID0gaWZwLVx1MDAzZWRydnI7XG4gXHRpZiAocGFyYW1zLVx1MDAzZXN0YXR1cyA9PSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XG4rXHRcdGlmIChwYXJhbXMtXHUwMDNlcG1raWQpXG4rXHRcdFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtXHUwMDNlcG1raWQsIFdMQU5fUE1LSURfTEVOKTtcbiBcdFx0YXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX1NVQ0NFU1MpO1xuIFx0fSBlbHNlIHtcbiBcdFx0YnBoeV9lcnIoZHJ2ciwgXCJFeHRlcm5hbCBhdXRoZW50aWNhdGlvbiBmYWlsZWQ6IHN0YXR1cz0lZFxcblwiLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTY6MzguMzU0MTcyMzkyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU2NDM5NjM5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGEgbWlzc2luZyBQTUtJRCBjb3B5LiBJdCBpbml0aWFsaXplcyBgYXV0aF9zdGF0dXNgIGFuZCB0aGVuIGNvcGllcyBgcGFyYW1zLVx1MDAzZXBta2lkYCB0byBpdCwgYnV0IG9ubHkgaWYgYHBhcmFtcy1cdTAwM2VwbWtpZGAgaXMgbm90IE5VTEwuIE1ha2VzIHNlbnNlLCB0aGF0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBlbnN1cmUgd2UncmUgaGFuZGxpbmcgdGhlIFBNS0lEIGRhdGEgY29ycmVjdGx5LiBUaGlzIGlzIHRhZ2dlZCBhcyBhIGZpeCwgc28gcHJlc3VtYWJseSB0aGlzIHdhcyBhIGJ1Zy5cblxuVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBoZXJlIGlzIGBicmNtZm1hY2AsIHdoaWNoIGlzIGEgQnJvYWRjb20gODAyLjExIHdpcmVsZXNzIExBTiBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaG93IHRlc3RhYmxlIGlzIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gV2lyZWxlc3MgZHJpdmVycyBjYW4gYmUgdHJpY2t5IHNpbmNlIHRoZXkgdXN1YWxseSByZWx5IG9uIHNwZWNpZmljIGhhcmR3YXJlLCB1bmxlc3Mgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBgYnJjbWZtYWNgIHN1cHBvcnRzIFNESU8sIFVTQiwgYW5kIFBDSUUhIFRoYXQgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzLlxuXG5JIGtub3cgVVNCIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkLCBidXQgdXN1YWxseSB0aGF0J3MgdGhyb3VnaCBVU0IgZ2FkZ2V0IG9yIHNvbWV0aGluZyB3aXRoIGR1bW15X2hjZC4gQnV0LCB3YWl0Li4uc3l6a2FsbGVyISBJIHJlbWVtYmVyIHRoZXkgaGF2ZSBhIHZpcnR1YWwgVVNCIGZ1enplciwgYHZoY2lgLiBTbywgdGhhdCBtZWFucyBVU0IgZHJpdmVycyBhcmUgcG90ZW50aWFsbHkgZnV6emFibGUuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBicmNtZm1hY2AgaGFzIFVTQiBzdXBwb3J0LCB0aGF0J3MgdGhlIGtleS4gSWYgaXQgZG9lcywgdGhpcyBvcGVucyB1cCBhIHdob2xlIG5ldyBhdmVudWUgZm9yIGZ1enppbmcgdGhpcyBzcGVjaWZpYyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwNiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjQzLjkxODU3MjAzOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc3OTk0MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX2N5d19leHRlcm5hbF9hdXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTE5Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MTk4OmJyY21mX2N5d19leHRlcm5hbF9hdXRoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMTk5LVxcdFxcdFxcdHN0cnVjdCBjZmc4MDIxMV9leHRlcm5hbF9hdXRoX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MjM0PXN0YXRpYyB2b2lkIGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzYtXFx0ZHJ2ci1cXHUwMDNlb3BzLVxcdTAwM2VtZ210X3R4ID0gYnJjbWZfY3l3X21nbXRfdHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MjM3OlxcdGRydnItXFx1MDAzZW9wcy1cXHUwMDNlZXh0ZXJuYWxfYXV0aCA9IGJyY21mX2N5d19leHRlcm5hbF9hdXRoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzOC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjQ2LjE5NjU3MjQ0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTU5MjU3NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIGBicmNtZm1hY2AgRnV6emluZyB2aWEgVVNCKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSBgYnJjbWZtYWNgIGRyaXZlci4gSW50cmlndWluZyB0YXJnZXQsIGVzcGVjaWFsbHkgd2l0aCBpdHMgZXhwb3N1cmUgdG8gcG90ZW50aWFsbHkgdW50cnVzdGVkIGRhdGEgdmlhIFVTQi4gVGhlIHRob3VnaHQgdGhhdCdzIGJ1YmJsaW5nIHVwIGlzLCBjb3VsZCB3ZSBlZmZlY3RpdmVseSBmdXp6IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBieSBsZXZlcmFnaW5nIGEgVVNCIGludGVyZmFjZT8gVGhpcyBhbmdsZSBoYXNuJ3QgYmVlbiBleHBsb3JlZCBuZWFybHkgYXMgb2Z0ZW4gYXMgdGVzdGluZyBvdmVyLXRoZS1haXIsIGFuZCB0aGUgbnVhbmNlIG9mIHBvdGVudGlhbCBoYXJkd2FyZSByZXF1aXJlbWVudHMgaXMgc29tZXRoaW5nIHRvIGNvbnNpZGVyLiBXaGF0J3MgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZT8gQXJlIHRoZXJlIHNwZWNpZmljIFVTQiB0cmFuc2ZlciB0eXBlcyB0aGF0IHdvdWxkIGJlIG1vc3QgcHJvbWlzaW5nPyBUaGUgY29tcGxleGl0eSBvZiB0aGUgaG9zdC1zaWRlIFVTQiBzdGFjaywgdGhlIGludHJpY2FjaWVzIG9mIHRoZSBkcml2ZXIgaXRzZWxmLi4uIHRoaXMgaXMgZ29pbmcgdG8gYmUgYSBmYXNjaW5hdGluZyBjaGFsbGVuZ2UgYW5kIGl0IGNvdWxkIGJlIGZydWl0ZnVsIGZvciBkaXNjb3ZlcmluZyBuZXcgdnVsbmVyYWJpbGl0aWVzLiBUaW1lIHRvIGRpZyBpbiBhbmQgZm9ybXVsYXRlIGEgcGxhbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxMCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjQ5LjU1MjUwMDM3NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU0NjgwMTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxMTpjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEyLVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNDpjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjUxLjUwNzIwODY5NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTg2MzMyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYEJSQ01GTUFDX1VTQmAgTW9kdWxlKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgQlJDTUZNQUNfVVNCYCBpcyBhIGRlZmluZWQgZW50aXR5LiBOb3csIG15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY2AuIE15IHRoaW5raW5nIGlzIHRoYXQgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIEJyb2FkY29tIFdpLUZpIGFuZCBpdHMgVVNCIGludGVyZmFjZSwgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBtaWdodCBwcm92aWRlIHNvbWUgcmVsZXZhbnQgaW5zaWdodHMuIElzIHRoaXMgZnVuY3Rpb24gc3BlY2lmaWMgdG8gQ1lXPyBNeSByZWNvbGxlY3Rpb24gaXMgdGhhdCBDWVcgcmVmZXJzIHRvIHRoZSBDeXByZXNzL0Jyb2FkY29tIFdpLUZpIGltcGxlbWVudGF0aW9uLiBVbmRlcnN0YW5kaW5nIHRoaXMgZnVuY3Rpb24ncyBwdXJwb3NlIHdpdGhpbiB0aGF0IGNvbnRleHQgY291bGQgc2hlZCBsaWdodCBvbiB0aGUgVVNCIGludGVncmF0aW9uLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIGZ1bmN0aW9uIGl0c2VsZiwgbGV0J3MganVzdCBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEJSQ01GTUFDX1VTQmAuIFRoYXQgd2F5LCBJIGNhbiBlbnN1cmUgSSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTUyLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTY6NTQuOTY1ODQzOTY0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIEJSQ01GTUFDXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclxcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gICA0OlxcdFxcdHNlbGVjdCBCUkNNVVRJTFxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIEJyb2FkY29tXFxuICAgNzpcXHRcXHQgIEZ1bGxNQUMgY2hpcHNldHMuIEl0IGhhcyB0byB3b3JrIHdpdGggYXQgbGVhc3Qgb25lIG9mIHRoZSBidXNcXG4gICA4OlxcdFxcdCAgaW50ZXJmYWNlIHN1cHBvcnQuIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZFxcbiAgIDk6XFx0XFx0ICBicmNtZm1hYy5rby5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcXG4gIDEyOlxcdFxcdGJvb2xcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxcbiAgMTU6XFx0XFx0Ym9vbFxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgQlJDTUZNQUNfU0RJT1xcbiAgMTg6XFx0XFx0Ym9vbCBcXFwiU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiAoTU1DID0geSB8fCBNTUMgPSBCUkNNRk1BQylcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gQlJDTUZNQUNcXG4gIDIxOlxcdFxcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXFxuICAyMjpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAyMzpcXHRcXHRkZWZhdWx0IHlcXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXFxuICAyNjpcXHRcXHQgIElFRUU4MDIuMTFuIGVtYmVkZGVkIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFNheSBZIGlmIHlvdSB3YW50IHRvXFxuICAyNzpcXHRcXHQgIHVzZSB0aGUgZHJpdmVyIGZvciBhIFNESU8gd2lyZWxlc3MgY2FyZC5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIEJSQ01GTUFDX1VTQlxcbiAgMzA6XFx0XFx0Ym9vbCBcXFwiVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIChVU0IgPSB5IHx8IFVTQiA9IEJSQ01GTUFDKVxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xcbiAgMzM6XFx0XFx0c2VsZWN0IEJSQ01GTUFDX1BST1RPX0JDRENcXG4gIDM0OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgQnJvYWRjb21cXG4gIDM3OlxcdFxcdCAgSUVFRTgwMi4xMW4gZW1iZWRkZWQgRnVsbE1BQyBXTEFOIGRyaXZlci4gU2F5IFkgaWYgeW91IHdhbnQgdG9cXG4gIDM4OlxcdFxcdCAgdXNlIHRoZSBkcml2ZXIgZm9yIGFuIFVTQiB3aXJlbGVzcyBjYXJkLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRjb25maWcgQlJDTUZNQUNfUENJRVxcbiAgNDE6XFx0XFx0Ym9vbCBcXFwiUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbiAgNDI6XFx0XFx0ZGVwZW5kcyBvbiBCUkNNRk1BQ1xcbiAgNDM6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDQ0OlxcdFxcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG4gIDQ1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDQ2OlxcdFxcdGhlbHBcXG4gIDQ3OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXFxuICA0ODpcXHRcXHQgIElFRUU4MDIuMTFhYyBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xcbiAgNDk6XFx0XFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYW4gUENJRSB3aXJlbGVzcyBjYXJkLlxcbiAgNTA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU2OjU0Ljk2NTkxMzkyM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NDU4NjkxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYC4gSXQncyBhc3NpZ25pbmcgdGhpcyBmdW5jdGlvbiB0byBgZHJ2ci1cdTAwM2VvcHMtXHUwMDNlZXh0ZXJuYWxfYXV0aGAsIHdoaWNoIEkgcmVjb2duaXplIGFzIHRoZSBgZXh0ZXJuYWxfYXV0aGAgb3BlcmF0aW9uIGluIGNmZzgwMjExLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJmdXp6YWJsZT9cIiBBYnNvbHV0ZWx5LiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgd2lyZWxlc3MgZHJpdmVyLCBhbmQgY3J1Y2lhbGx5LCBpdCdzIGV4cG9zZWQgdGhyb3VnaCBuZXRsaW5rIChubDgwMjExKS4gVGhhdCBtYWtlcyBpdCBhY2Nlc3NpYmxlLCBhc3N1bWluZyB0aGUgZGV2aWNlIHJlZ2lzdGVycyB3aXRoIHRoZSBrZXJuZWwsIG9mIGNvdXJzZS5cblxuVGhlIG5leHQgcXVlc3Rpb24gaW4gbXkgbWluZCBpcywgXCJjYW4gdGhpcyBkZXZpY2UgcmVnaXN0cmF0aW9uIGJlIHRyaWdnZXJlZCB3aXRoaW4gc3l6a2FsbGVyP1wiIEFoLCB5ZXMhIFN5emthbGxlciBsZXZlcmFnZXMgdmhjaSAodmlydHVhbCBVU0IpIHRvIGVtdWxhdGUgVVNCIGRldmljZXMuIElmIHdlIGNhbiBnZXQgaXQgdG8gZW11bGF0ZSBhIEJyb2FkY29tIFVTQiBkZXZpY2UsIHRoZW4gdGhlIGRyaXZlciAqc2hvdWxkKiBwcm9iZSBhbmQgcmVnaXN0ZXIgd2l0aCBjZmc4MDIxMS4gQW5kIGlmIHRoYXQgaGFwcGVucywgdGhlbiB3ZSBjYW4gaGl0IHRoYXQgYGV4dGVybmFsX2F1dGhgIGZ1bmN0aW9uIHZpYSBubDgwMjExLlxuXG5Ob3csIGJlZm9yZSBJIGdldCB0b28gY2FycmllZCBhd2F5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGNvcnJlY3Qga2VybmVsIGNvbmZpZ3VyYXRpb24uIExldCdzIHNlZS4uLkknbGwgbmVlZCBgQlJDTUZNQUNgIGFuZCBgQlJDTUZNQUNfVVNCYCBlbmFibGVkLCBjbGVhcmx5LiBBbmQsIG9mIGNvdXJzZSwgYENGRzgwMjExYC4gVGVjaG5pY2FsbHksIGBNQUM4MDIxMWAgaXNuJ3Qgc3RyaWN0bHkgKnJlcXVpcmVkKiBmb3IgYSBGdWxsTUFDIGRyaXZlciBsaWtlIHRoaXMsIGJ1dCBgQ0ZHODAyMTFgIGlzLiBPa2F5LCBnb29kLiBUaGF0IGFsbCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIHJldmlzaXQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBhbmQgY29uZmlybSB0aGUgYXR0YWNrIHN1cmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMDcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzowMC42MTE3ODU0OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NTEyMTU3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0xOTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjE5ODpicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTE5OS1cXHRcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfZXh0ZXJuYWxfYXV0aF9wYXJhbXMgKnBhcmFtcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTIzND1zdGF0aWMgdm9pZCBicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wcyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjM2LVxcdGRydnItXFx1MDAzZW9wcy1cXHUwMDNlbWdtdF90eCA9IGJyY21mX2N5d19tZ210X3R4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjIzNzpcXHRkcnZyLVxcdTAwM2VvcHMtXFx1MDAzZWV4dGVybmFsX2F1dGggPSBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzowMi4zMDY5MTY0MzRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3NTkxMDk5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcmFjaW5nIHRoZSBGdW5jdGlvbiBDYWxsKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwid2hlcmUgaXMgYGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzYCBhY3R1YWxseSAqdXNlZCo/XCIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBUaGlzIG1lYW5zIEknbSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0J3MgKmNhbGxpbmcqIGl0LiBJcyBpdCBhIG1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lPyBJcyBpdCBwYXJ0IG9mIGEgY29udHJvbCBwYXRoIGZvciBoYW5kbGluZyBhbiBldmVudD8gS25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbnMgd2lsbCBpbW1lZGlhdGVseSB0ZWxsIG1lIHdoYXQgYXJlYSBvZiB0aGUgd2lyZWxlc3Mgc3RhY2sgdGhpcyBpcyByZWxldmFudCB0by4gSSdtIHRoaW5raW5nIEknbGwgc3RhcnQgd2l0aCBhIGBncmVwYCBvciBhIHNpbWlsYXIgdG9vbCB0byBmaW5kIGFsbCBpbnN0YW5jZXMgb2YgdGhpcyBzeW1ib2wgYmVpbmcgcmVmZXJlbmNlZCwgdGhlbiBhbmFseXplIHRob3NlIGNhbGxzIG1vcmUgY2xvc2VseS4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBvcGVyYXRpb25hbCBjb250ZXh0IGFuZCB3aGF0IGRlcGVuZGVuY2llcyBvciBjb25zdHJhaW50cyBhcmUgYXQgcGxheS4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgcHJvYmFibHkgYSBjcml0aWNhbCBwaWVjZSByZWxhdGVkIHRvIGNmZzgwMjExIGludGVncmF0aW9uIHdpdGhpbiB0aGUgQnJvYWRjb20gZHJpdmVyLCBidXQgc2VlaW5nIHRoZSBjYWxsIHNpdGVzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHNwZWNpZmljIHB1cnBvc2UuIExldCdzIHN0YXJ0IGRpZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNDIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzowNS43ODI4Mjk2NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1MjI4ODc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0xOTg9YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzQ6c3RhdGljIHZvaWQgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9Mzc0PWNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTM3Ny1cXHQuYWN0aXZhdGVfZXZlbnRzID0gYnJjbWZfY3l3X2FjdGl2YXRlX2V2ZW50cyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozNzg6XFx0LmdldF9jZmc4MDIxMV9vcHMgPSBicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzktXFx0LnJlZ2lzdGVyX2V2ZW50X2hhbmRsZXJzID0gYnJjbWZfY3l3X3JlZ2lzdGVyX2V2ZW50X2hhbmRsZXJzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzowNy40MzUxMjIzNTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MzE4MDE4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGBicmNtZl9jeXdfb3BzYCBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHNvbWV0aGluZyB3aXRoaW4gYGJyY21mX2N5d19vcHNgLiBNeSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gSXQncyBjbGVhciB0aGF0IGl0J3MgcmVsYXRlZCB0byBzb21lIGJyb2FkZXIgb3BlcmF0aW9uLCBzbyBJIGhhdmUgdG8gZ28gZGVlcGVyIGFuZCBwaW5wb2ludCB3aGVyZSBgYnJjbWZfY3l3X29wc2AgaXMgYWN0dWFsbHkgKnVzZWQqLiBXaGVyZSBhcmUgdGhlIGNhbGxzPyBXaGF0IGZ1bmN0aW9ucyBhcmUgbGV2ZXJhZ2luZyB0aGlzPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkgbmVlZCB0byB0cmFjZSB0aGlzIG9uZSBkb3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTc0LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6MTAuODE4MzA0NjkyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjMyNzEyMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX2N5d19vcHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MzYyPXN0YXRpYyB2b2lkIGJyY21mX2N5d19yZWdpc3Rlcl9ldmVudF9oYW5kbGVycyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjM3NDpjb25zdCBzdHJ1Y3QgYnJjbWZfZnd2aWRfb3BzIGJyY21mX2N5d19vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzc1LVxcdC5zZXRfc2FlX3Bhc3N3b3JkID0gYnJjbWZfY3l3X3NldF9zYWVfcHdkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNC1cXHRyZXR1cm4gYnJjbWZfZnd2aWRfcmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoxNTpcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2YnJjbWZfY3l3X29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaC03LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oOjg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo5OiNkZWZpbmUgQ1lXX1ZPUFNcXHQoXFx1MDAyNmJyY21mX2N5d19vcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmgtMTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjEyLjQ1MTAyMDY5M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTkyMjM3MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgYnJjbWZtYWNgIERyaXZlcidzIENZVyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBoYW5kbGVzIGl0cyB2ZW5kb3JzLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGBicmNtZl9jeXdfb3BzYCBpcyByZWdpc3RlcmVkIGFzIHRoZSB2ZW5kb3Igb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgZm9yIGBCUkNNRl9GV1ZFTkRPUl9DWVdgLiBUaGF0IGluZGljYXRlcyB0aGlzIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgQnJvYWRjb20gQ1lXIChsaWtlbHkgbWVhbmluZyBDeXByZXNzIFdpcmVsZXNzKSBmaXJtd2FyZSBvciBoYXJkd2FyZSB3aXRoaW4gdGhlIGBicmNtZm1hY2AgZnJhbWV3b3JrLiBUaGlzIHJlZ2lzdHJhdGlvbiBpcyBhIGtleSBzdGFydGluZyBwb2ludC5cblxuTm93LCBJIG5lZWQgdG8gZGlnIGluIGEgYml0IGRlZXBlci4gR2l2ZW4gdGhhdCBpdCBoYXMgaXRzIG93biBgb3BzYCBzdHJ1Y3R1cmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayBmb3IgKnNwZWNpZmljKiBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNldHRpbmdzLCBvciB2YXJpYXRpb25zIHRhaWxvcmVkIHNwZWNpZmljYWxseSBmb3IgQ1lXIGRldmljZXMgd2l0aGluIHRoZSBicm9hZGVyIGBicmNtZm1hY2AgY29kZWJhc2UuIEFyZSB0aGVyZSBzcGVjaWFsIHF1aXJrcywgb3B0aW1pemF0aW9ucywgb3IgcGFyYW1ldGVyIG92ZXJyaWRlcyBiYXNlZCBvbiBkZXRlY3RpbmcgdGhpcyB2ZW5kb3IgSUQ/IFdoYXQgcm91dGluZXMgaGFuZGxlIGZpcm13YXJlIGxvYWRpbmcsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIG9yIHBvd2VyIG1hbmFnZW1lbnQgKnVuaXF1ZWx5KiBmb3IgQ1lXPyBUaW1lIHRvIHRyYWNlIHRoZSBjb2RlIHBhdGhzIGFuZCBzZWUgd2hhdCBjdXN0b20gaGFuZGxpbmcgaXMgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc0NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjE2LjA0MzI2MDUyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4OTkxMzAwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlJDTUZNQUNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTpjb25maWcgQlJDTUZNQUNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTE6Y29uZmlnIEJSQ01GTUFDX1BST1RPX0JDRENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE1LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNzpjb25maWcgQlJDTUZNQUNfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIlNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjI5OmNvbmZpZyBCUkNNRk1BQ19VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cXHRib29sIFxcXCJVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzoxNy43MzMxNzkwNTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2OTczNDE3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDWVcgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGVyZSdzIGEgcHJlLWV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gZmlsZSwgZGlyZWN0aXZlLCBvciBzeXN0ZW0gc2V0dGluZyBzcGVjaWZpY2FsbHkgZGVkaWNhdGVkIHRvIHRoZSBDWVcgKHByZXN1bWFibHkgYSBCcm9hZGNvbSBXaS1GaSBjaGlwc2V0IG9yIHJlbGF0ZWQgaGFyZHdhcmUsIGdpdmVuIHRoZSBjb250ZXh0KS4gSXQncyBhbHdheXMgYmVzdCB0byBzdGFydCB3aXRoIGEgY29uZmlndXJhdGlvbiBjaGVjay4gVGhpcyB3aWxsIGRlcGVuZCBvbiB0aGUgT1MgYW5kIHN5c3RlbSBpbiBxdWVzdGlvbi4gSXMgaXQgYSBzdGFuZGFyZCBMaW51eCBkaXN0cmlidXRpb24/IEEgY3VzdG9tIGVtYmVkZGVkIHN5c3RlbT8gS25vd2luZyB0aGUgcGxhdGZvcm0gaXMga2V5LlxuXG5NeSBmb2N1cyBub3cgaXMgb24gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSdzIGFuIGV4aXN0aW5nIGZpbGUgb3IgbWVjaGFuaXNtIHRvIHNldCB1cCBwYXJhbWV0ZXJzIGZvciB0aGUgQ1lXLiBJIHdvdWxkIGxvb2sgZm9yIGtub3duIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRocywgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBvciBldmVuIGEgZGF0YWJhc2UuIElmIEknbSBsdWNreSwgYSBxdWljayBgZ3JlcGAgb3IgYGZpbmRgIG1pZ2h0IHJldmVhbCBhIHJlbGV2YW50IGZpbGUuIE1vcmUgbGlrZWx5LCBJIHdpbGwgaGF2ZSB0byBjb25zdWx0IHRoZSBtYW51ZmFjdHVyZXIncyBkb2N1bWVudGF0aW9uLiBUaGUgZ29hbCBpcyB0byBhdm9pZCByZWludmVudGluZyB0aGUgd2hlZWwgYW5kIHRvIGxldmVyYWdlIGFueSBleGlzdGluZyBmcmFtZXdvcmsgdGhhdCBtaWdodCBhbHJlYWR5IGJlIGluIHBsYWNlIGZvciBtYW5hZ2luZyBDWVcgZGV2aWNlIHBhcmFtZXRlcnMsIHN1Y2ggYXMgcG93ZXIgbWFuYWdlbWVudCBzZXR0aW5ncywgaW50ZXJmYWNlIHNldHRpbmdzLCByZWd1bGF0b3J5IGRvbWFpbiBldGMuIElmIHRoYXQncyB0aGUgY2FzZSwgSSBuZWVkIHRvIGtub3cgd2hlcmUgSSBjYW4gdmlldyBhbmQgZWRpdCB0aGVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY2OCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjIxLjEwMjkxNTMxNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMDI1MDQ0MywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSQ01GTUFDX0NZV1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6MjIuNzMzMTc1MTM5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTkyNzM1NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6XG5cbioqRGl2aW5nIGludG8gdGhlIGJyY21mbWFjIE1ha2VmaWxlKipcblxuT2theSwgc28gd2UncmUgc3RhcnRpbmcgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZWAuIEltbWVkaWF0ZWx5LCBJIGtub3cgdGhpcyBpcyB3aGVyZSB0aGUgbWVhdCBvZiB0aGUgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyIGNvbXBpbGF0aW9uIHJlc2lkZXMgZm9yIHRoZSBicmNtZm1hYyBkcml2ZXIuIE15IG1lbnRhbCBjaGVja2xpc3Qga2lja3MgaW46IEknbSBhbnRpY2lwYXRpbmcgdG8gc2VlIHRoZSB0eXBpY2FsIE1ha2VmaWxlIGVsZW1lbnRzOiBzb3VyY2UgZmlsZSBsaXN0cywgb2JqZWN0IGZpbGUgZ2VuZXJhdGlvbiBydWxlcywgZGVwZW5kZW5jeSBkZWZpbml0aW9ucywgaW5jbHVzaW9uIHBhdGhzLCBwcm9iYWJseSBzb21lIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBzZWN0aW9ucywgYW5kIGhvcGVmdWxseSB3ZWxsLWRlZmluZWQgdmFyaWFibGVzIGZvciB0aGUga2VybmVsIGJ1aWxkIGVudmlyb25tZW50LiBJIGV4cGVjdCB0byBzZWUgZmxhZ3MsIG9iamVjdCBnZW5lcmF0aW9uLCBydWxlcyBmb3Iga2VybmVsIG1vZHVsZXMsIGFuZCBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHJlcXVpcmVtZW50cyBvciBjb25maWd1cmF0aW9ucywgYXMgd2VsbCBhcyB0aGUgbW9kdWxlcyB0aGF0IG1pZ2h0IGdldCBhZGRlZCBhcyBhIHJlc3VsdCBvZiB0aGF0IGJ1aWxkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIG9wdGltaXphdGlvbiBmbGFncywgZGVidWdnaW5nIHN5bWJvbHMsIGFuZCwgb2YgY291cnNlLCB0aGUgbW9kdWxlIG5hbWUgZGVmaW5pdGlvbi4gSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBmbGFncy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gc2NhbiBmb3IgdGhlIGNvbW1vbiBgJChDT05GSUdfQlJDTUZNQUMpYCBndWFyZCDigJMgdGhhdCB3aWxsIHRlbGwgbWUgaWYgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBzdGFuZGFyZCBidWlsZC4gVGhpcyBpbml0aWFsIHNjYW4gaXMgYWJvdXQgYnVpbGRpbmcgYSBtZW50YWwgbWFwIG9mIHRoZSBkcml2ZXIncyBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTc0LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6MjYuNTkyNDUwODk4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZnJhZ21lbnQgZm9yIEJyb2FkY29tIDgwMi4xMSBOZXR3b3JraW5nIERldmljZSBEcml2ZXJcXG4gICA0OlxcdCNcXG4gICA1OlxcdCMgQ29weXJpZ2h0IChjKSAyMDEwIEJyb2FkY29tIENvcnBvcmF0aW9uXFxuICAgNjpcXHQjXFxuICAgNzpcXHRcXG4gICA4OlxcdGNjZmxhZ3MteSArPSBcXFxcXFxuICAgOTpcXHRcXHQtSSAkKHNyYykgXFxcXFxcbiAgMTA6XFx0XFx0LUkgJChzcmMpLy4uL2luY2x1ZGVcXG4gIDExOlxcdFxcbiAgMTI6XFx0b2JqLSQoQ09ORklHX0JSQ01GTUFDKSArPSBicmNtZm1hYy5vXFxuICAxMzpcXHRicmNtZm1hYy1vYmpzICs9IFxcXFxcXG4gIDE0OlxcdFxcdFxcdGNmZzgwMjExLm8gXFxcXFxcbiAgMTU6XFx0XFx0XFx0Y2hpcC5vIFxcXFxcXG4gIDE2OlxcdFxcdFxcdGZ3aWwubyBcXFxcXFxuICAxNzpcXHRcXHRcXHRmd2VoLm8gXFxcXFxcbiAgMTg6XFx0XFx0XFx0cDJwLm8gXFxcXFxcbiAgMTk6XFx0XFx0XFx0cHJvdG8ubyBcXFxcXFxuICAyMDpcXHRcXHRcXHRjb21tb24ubyBcXFxcXFxuICAyMTpcXHRcXHRcXHRjb3JlLm8gXFxcXFxcbiAgMjI6XFx0XFx0XFx0ZmlybXdhcmUubyBcXFxcXFxuICAyMzpcXHRcXHRcXHRmd3ZpZC5vIFxcXFxcXG4gIDI0OlxcdFxcdFxcdGZlYXR1cmUubyBcXFxcXFxuICAyNTpcXHRcXHRcXHRidGNvZXgubyBcXFxcXFxuICAyNjpcXHRcXHRcXHR2ZW5kb3IubyBcXFxcXFxuICAyNzpcXHRcXHRcXHRwbm8ubyBcXFxcXFxuICAyODpcXHRcXHRcXHR4dGx2Lm9cXG4gIDI5OlxcdGJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1BST1RPX0JDREMpICs9IFxcXFxcXG4gIDMwOlxcdFxcdFxcdGJjZGMubyBcXFxcXFxuICAzMTpcXHRcXHRcXHRmd3NpZ25hbC5vXFxuICAzMjpcXHRicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19QUk9UT19NU0dCVUYpICs9IFxcXFxcXG4gIDMzOlxcdFxcdFxcdGNvbW1vbnJpbmcubyBcXFxcXFxuICAzNDpcXHRcXHRcXHRmbG93cmluZy5vIFxcXFxcXG4gIDM1OlxcdFxcdFxcdG1zZ2J1Zi5vXFxuICAzNjpcXHRicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19TRElPKSArPSBcXFxcXFxuICAzNzpcXHRcXHRcXHRzZGlvLm8gXFxcXFxcbiAgMzg6XFx0XFx0XFx0YmNtc2RoLm9cXG4gIDM5OlxcdGJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1VTQikgKz0gXFxcXFxcbiAgNDA6XFx0XFx0XFx0dXNiLm9cXG4gIDQxOlxcdGJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1BDSUUpICs9IFxcXFxcXG4gIDQyOlxcdFxcdFxcdHBjaWUub1xcbiAgNDM6XFx0YnJjbWZtYWMtJChDT05GSUdfQlJDTURCRykgKz0gXFxcXFxcbiAgNDQ6XFx0XFx0XFx0ZGVidWcub1xcbiAgNDU6XFx0YnJjbWZtYWMtJChDT05GSUdfQlJDTV9UUkFDSU5HKSArPSBcXFxcXFxuICA0NjpcXHRcXHRcXHR0cmFjZXBvaW50Lm9cXG4gIDQ3OlxcdGJyY21mbWFjLSQoQ09ORklHX09GKSArPSBcXFxcXFxuICA0ODpcXHRcXHRcXHRvZi5vXFxuICA0OTpcXHRicmNtZm1hYy0kKENPTkZJR19ETUkpICs9IFxcXFxcXG4gIDUwOlxcdFxcdFxcdGRtaS5vXFxuICA1MTpcXHRicmNtZm1hYy0kKENPTkZJR19BQ1BJKSArPSBcXFxcXFxuICA1MjpcXHRcXHRcXHRhY3BpLm9cXG4gIDUzOlxcdFxcbiAgNTQ6XFx0aWZlcSAoJChDT05GSUdfQlJDTUZNQUMpLG0pXFxuICA1NTpcXHRvYmotbSArPSB3Y2MvXFxuICA1NjpcXHRvYmotbSArPSBjeXcvXFxuICA1NzpcXHRvYmotbSArPSBiY2EvXFxuICA1ODpcXHRlbHNlXFxuICA1OTpcXHRicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQykgKz0gd2NjL2NvcmUub1xcbiAgNjA6XFx0YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUMpICs9IGN5dy9jb3JlLm9cXG4gIDYxOlxcdGJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDKSArPSBiY2EvY29yZS5vXFxuICA2MjpcXHRlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzoyNi41OTI1MjYwNjlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyNTA1OTA5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgQnVpbGQgU3lzdGVtIC0gYGN5dy9jb3JlLm9gIGFuZCBgQ09ORklHX0JSQ01GTUFDYCoqXG5cblJpZ2h0LCBzbyBgY3l3L2NvcmUub2AgaXMgYWx3YXlzIGJ1aWx0IHdoZW4gYENPTkZJR19CUkNNRk1BQ2AgaXMgdHVybmVkIG9uLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGF0IGZpcnN0IGdsYW5jZS4gQnV0IGhhbmcgb24sIGEgc2xpZ2h0IHdyaW5rbGUgZW1lcmdlcy4gSWYgYENPTkZJR19CUkNNRk1BQ2AgaXMgYnVpbHQgYXMgYSBtb2R1bGUgKGBDT05GSUdfQlJDTUZNQUM9bWApLCBkb2Vzbid0IHRoYXQgaW1wbHkgdGhhdCB0aGUgYGN5dy9gIGRpcmVjdG9yeSBjb250YWluaW5nIGBjeXcvY29yZS5vYCAqYWxzbyogYmVjb21lcyBhIHNlcGFyYXRlIG1vZHVsZT8gVGhhdCdzIHRoZSBjcml0aWNhbCBwb2ludCBJIG5lZWQgdG8gY2xhcmlmeS4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmb3IgdGhhdCBkaXJlY3RvcnkgZGlyZWN0bHkuIFRoZSBvYnZpb3VzIHBsYWNlIHRvIGxvb2sgaXMgdGhlIGBNYWtlZmlsZWAgaXRzZWxmLCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvTWFrZWZpbGVgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBidWlsZCBsb2dpYyByZWZsZWN0cyB0aGlzIGNvbmRpdGlvbmFsIG1vZHVsYXJpemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE3MywiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6MzAuMjE3NTg3NDYzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENvcHlyaWdodCAoYykgMjAyMiBCcm9hZGNvbSBDb3Jwb3JhdGlvblxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjY2ZsYWdzLXkgKz0gXFxcXFxcbiAgIDY6XFx0XFx0LUkgJChzcmMpIFxcXFxcXG4gICA3OlxcdFxcdC1JICQoc3JjKS8uLiBcXFxcXFxuICAgODpcXHRcXHQtSSAkKHNyYykvLi4vLi4vaW5jbHVkZVxcbiAgIDk6XFx0XFxuICAxMDpcXHRvYmotbSArPSBicmNtZm1hYy1jeXcub1xcbiAgMTE6XFx0YnJjbWZtYWMtY3l3LW9ianMgKz0gXFxcXFxcbiAgMTI6XFx0XFx0XFx0Y29yZS5vIG1vZHVsZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjMwLjIxNzY1MDUyM1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzMzMTY0MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGJyY21mbWFjLWN5dy5rb2AgTW9kdWxlIGFuZCBFeHRlcm5hbCBBdXRoZW50aWNhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGBicmNtZm1hYy1jeXcua29gIGlzIGJ1aWx0LCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhgIGluIGBjeXcvY29yZS5jYCB3b3Jrcy4gSSByZWNhbGwgdGhpcyBmdW5jdGlvbiBpcyByZWFjaGVkIHZpYSB0aGUgYGNmZzgwMjExYCBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBvcGVyYXRpb24uIFRoYXQncyB0aGUgZW50cnkgcG9pbnQuIE5vdywgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuXG5cbkkgc2VlIHRoYXQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAgYXJlIHJlbGV2YW50IHRvIHRoaXMgbW9kdWxlLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHRoaW5ncyBsaWtlIGZ1enppbmcgdmlhIHZpcnR1YWwgVVNCLiBPZiBjb3Vyc2UsIGBDRkc4MDIxMWAgaXRzZWxmIGlzIGFsc28gY3JpdGljYWwgaGVyZS4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgQ0ZHODAyMTFgLiBJdCBzZWVtcyB0byBvcHRpb25hbGx5IGRlcGVuZCBvbiBgUkZLSUxMYCBhbmQgYE1BQzgwMjExYC4gSG93ZXZlciwgSSdtIHByZXR0eSBzdXJlIGBDRkc4MDIxMWAgaXMgdXN1YWxseSBlbmFibGVkIGluIHN5emthbGxlci5cblxuTGV0J3MgbG9vayBhdCBgQlJDTUZNQUNgIGluIG1vcmUgZGV0YWlsLiBJdCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIEFuZCBgQlJDTUZNQUNfVVNCYCBkZXBlbmRzIG9uIGAoVVNCID0geSB8fCBVU0IgPSBCUkNNRk1BQylgIGFuZCBgQlJDTUZNQUNgLiBTbyB0aGUga2V5IG1vZHVsZXMgYXJlIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgLiBBbHJpZ2h0LCBJJ3ZlIGdvdCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgZGVwZW5kZW5jaWVzLCBJIHNob3VsZCBjaXJjbGUgYmFjayBhbmQgcmV2aWV3IGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgYWdhaW4gd2l0aCB0aGlzIGNvbnRleHQgaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2ODUsIk91dHB1dFRva2VucyI6NTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1NzozNS41NTA4MTY5NjJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTkwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTkwOlxcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXFxuIDE5MTpcXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG4gMTkyOlxcdGZyZWU6XFxuIDE5MzpcXHRcXHRrZnJlZShtZl9wYXJhbXMpO1xcbiAxOTQ6XFx0XFx0cmV0dXJuIGVycjtcXG4gMTk1OlxcdH1cXG4gMTk2OlxcdFxcbiAxOTc6XFx0c3RhdGljIGludFxcbiAxOTg6XFx0YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gMTk5OlxcdFxcdFxcdFxcdHN0cnVjdCBjZmc4MDIxMV9leHRlcm5hbF9hdXRoX3BhcmFtcyAqcGFyYW1zKVxcbiAyMDA6XFx0e1xcbiAyMDE6XFx0XFx0c3RydWN0IGJyY21mX2lmICppZnA7XFxuIDIwMjpcXHRcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyO1xcbiAyMDM6XFx0XFx0c3RydWN0IGJyY21mX2F1dGhfcmVxX3N0YXR1c19sZSBhdXRoX3N0YXR1cyA9IHt9O1xcbiAyMDQ6XFx0XFx0aW50IHJldCA9IDA7XFxuIDIwNTpcXHRcXG4gMjA2OlxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG4gMjA3OlxcdFxcbiAyMDg6XFx0XFx0aWZwID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gMjA5OlxcdFxcdGRydnIgPSBpZnAtXFx1MDAzZWRydnI7XFxuIDIxMDpcXHRcXHRpZiAocGFyYW1zLVxcdTAwM2VzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykge1xcbiAyMTE6XFx0XFx0XFx0aWYgKHBhcmFtcy1cXHUwMDNlcG1raWQpXFxuIDIxMjpcXHRcXHRcXHRcXHRtZW1jcHkoYXV0aF9zdGF0dXMucG1raWQsIHBhcmFtcy1cXHUwMDNlcG1raWQsIFdMQU5fUE1LSURfTEVOKTtcXG4gMjEzOlxcdFxcdFxcdGF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTtcXG4gMjE0OlxcdFxcdH0gZWxzZSB7XFxuIDIxNTpcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiRXh0ZXJuYWwgYXV0aGVudGljYXRpb24gZmFpbGVkOiBzdGF0dXM9JWRcXFxcblxcXCIsXFxuIDIxNjpcXHRcXHRcXHRcXHQgcGFyYW1zLVxcdTAwM2VzdGF0dXMpO1xcbiAyMTc6XFx0XFx0XFx0YXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX0ZBSUwpO1xcbiAyMTg6XFx0XFx0fVxcbiAyMTk6XFx0XFxuIDIyMDpcXHRcXHRtZW1jcHkoYXV0aF9zdGF0dXMucGVlcl9tYWMsIHBhcmFtcy1cXHUwMDNlYnNzaWQsIEVUSF9BTEVOKTtcXG4gMjIxOlxcdFxcdHBhcmFtcy1cXHUwMDNlc3NpZC5zc2lkX2xlbiA9IG1pbl90KHU4LCBwYXJhbXMtXFx1MDAzZXNzaWQuc3NpZF9sZW4sXFxuIDIyMjpcXHRcXHRcXHRcXHRcXHQgICAgICBJRUVFODAyMTFfTUFYX1NTSURfTEVOKTtcXG4gMjIzOlxcdFxcdGF1dGhfc3RhdHVzLnNzaWRfbGVuID0gY3B1X3RvX2xlMzIocGFyYW1zLVxcdTAwM2Vzc2lkLnNzaWRfbGVuKTtcXG4gMjI0OlxcdFxcdG1lbWNweShhdXRoX3N0YXR1cy5zc2lkLCBwYXJhbXMtXFx1MDAzZXNzaWQuc3NpZCwgcGFyYW1zLVxcdTAwM2Vzc2lkLnNzaWRfbGVuKTtcXG4gMjI1OlxcdFxcbiAyMjY6XFx0XFx0cmV0ID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXFxcImF1dGhfc3RhdHVzXFxcIiwgXFx1MDAyNmF1dGhfc3RhdHVzLFxcbiAyMjc6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNpemVvZihhdXRoX3N0YXR1cykpO1xcbiAyMjg6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDIyOTpcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiYXV0aF9zdGF0dXMgaW92YXIgZmFpbGVkOiByZXQ9JWRcXFxcblxcXCIsIHJldCk7XFxuIDIzMDpcXHRcXG4gMjMxOlxcdFxcdHJldHVybiByZXQ7XFxuIDIzMjpcXHR9XFxuIDIzMzpcXHRcXG4gMjM0OlxcdHN0YXRpYyB2b2lkIGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuIDIzNTpcXHR7XFxuIDIzNjpcXHRcXHRkcnZyLVxcdTAwM2VvcHMtXFx1MDAzZW1nbXRfdHggPSBicmNtZl9jeXdfbWdtdF90eDtcXG4gMjM3OlxcdFxcdGRydnItXFx1MDAzZW9wcy1cXHUwMDNlZXh0ZXJuYWxfYXV0aCA9IGJyY21mX2N5d19leHRlcm5hbF9hdXRoO1xcbiAyMzg6XFx0fVxcbiAyMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjM1LjU1MDkwMTcwMloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODUyMjQyMjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzOiBgYXV0aF9zdGF0dXNgIGFuZCBgcG1raWRgKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgdGlnaHRlbmluZyB1cCBzb21lIG1lbW9yeSBpbml0aWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYXV0aF9zdGF0dXNgLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGFsc28gbWFraW5nIHN1cmUgdGhhdCBgcG1raWRgIGdldHMgcHJvcGVybHkgY29waWVkLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgZGVmaW5pdGVseSBhIGNoYW5nZSB0aGF0IGltcGFjdHMgdGhlIHdpcmVsZXNzIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgc29tZSB2dWxuZXJhYmlsaXRpZXMgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBpcyB0aGUga2V5IHN5bWJvbCBoZXJlLCBzbyB0aGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGRlZXBlciBhbmFseXNpcy4gTGV0J3Mgc2VlIGlmIHRoaXMgc29sdmVzIHRoZSBwcm9ibGVtIGRlc2NyaWJlZCBpbiB0aGUgYXNzb2NpYXRlZCB0aWNrZXQuXG5cblRvIGNvbmZpcm0gdGhhdCwgYW5kIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIGVudmlyb25tZW50IGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gYEJSQ01GTUFDYCwgYEJSQ01GTUFDX1VTQmAsIGFuZCBgQ0ZHODAyMTFgIGFyZSBkZWZpbml0ZWx5IHJlbGV2YW50LCBnaXZlbiB0aGUgZHJpdmVyJ3MgcHVycG9zZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHRob3NlIGFyZSB0aGUgb25seSByZWxldmFudCBjb25maWdzLCBob3dldmVyOyBpdCBpcyBsaWtlbHkgdGhhdCBJJ2xsIG5lZWQgc29tZSBhZGRpdGlvbmFsIGNvbnRleHQuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBCUkNNRk1BQ2AgdG8gYmUgc3VyZSB0aGVyZSBpc24ndCBhbnl0aGluZyBlbHNlIGluIHBsYXkgaGVyZSB0aGF0IEknbSBtaXNzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjIzOSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6MzkuNDAzMTQ3MzQ3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDAzMTg4NzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxMTpjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEyLVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNDpjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjQxLjQwNjM0MzE5MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIxODY4Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIENGRzgwMjExIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCdzIHJpZGluZyBvbiBgQ0ZHODAyMTFgIHRvZGF5LiBJdCdzIGEgY3JpdGljYWwgcGllY2UsIGFuZCBhbnkgY2hhbmdlIEkgbWFrZSBuZWVkcyB0byBiZSBtZXRpY3Vsb3VzbHkgcGxhbm5lZCwgc28gbGV0J3Mgc3RhcnQgd2l0aCBhIGRlcGVuZGVuY3kgYW5hbHlzaXMuIFRpbWUgdG8gdHJhY2UgdGhlIGxpbmVhZ2UgYW5kIHNlZSB3aGF0IHRoaXMgYmVhc3QgaXMgY29ubmVjdGVkIHRvIGluIHRoZSBzdGFjay4gV2hhdCBtb2R1bGVzIGRlcGVuZCBvbiB0aGlzPyBXaGF0IGFzcGVjdHMgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2sgYXJlIGZ1bmRhbWVudGFsbHkgdGllZCB0byB0aGlzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBhbGwgdGhlIGRvd25zdHJlYW0gaW1wbGljYXRpb25zIGJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgbWFraW5nIGEgdHdlYWsuIEl04oCZcyBsaWtlIHN1cmdlcnk7IHlvdSBkb24ndCBzdGFydCBjdXR0aW5nIHdpdGhvdXQga25vd2luZyB0aGUgcGF0aWVudCdzIGZ1bGwgYW5hdG9teS4gTGV04oCZcyBpZGVudGlmeSB0aGUgcG90ZW50aWFsIHJpcHBsZSBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzIxMiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjQ0LjIyODIxNDQxNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2NzQyMzIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjU3OjQ1Ljk5NTY0MjczNloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDk5ODYwMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGU6XG5cbioqRGl2aW5nIGludG8gdGhlIENGRzgwMjExIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBgQ0ZHODAyMTFgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHdpcmVsZXNzIG5ldHdvcmtpbmcgYXJlIHN0cnVjdHVyZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5LiBNeSBwcmltYXJ5IGludGVyZXN0IGlzIGFsd2F5cyB0aGUgYXJjaGl0ZWN0dXJlIOKAkyBob3cgdGhlIG1vZHVsZXMgZml0IHRvZ2V0aGVyLlxuXG5TbywgSSdtIHNjYW5uaW5nIGZvciBgQ0ZHODAyMTFgLCBsaWtlbHkgc2VhcmNoaW5nIGZvciB0aGUgYGNvbmZpZ2AgYmxvY2sgdGhhdCBkZWZpbmVzIGl0LiBSaWdodCwgaGVyZSBpdCBpcy4gSXQncyBtYXJrZWQgYXMgYSBjb3JlIHdpcmVsZXNzIG5ldHdvcmtpbmcgY29tcG9uZW50LCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgaXQncyBhbiBgdHJpc3RhdGVgIHdoaWNoIGlzIHVzZWZ1bC4gSSBzaG91bGQgbG9vayBmb3IgZGVwZW5kZW5jaWVzLlxuXG5JIHNlZSB0aGF0IGBDRkc4MDIxMWAgY2FuIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBUaGF0IG9wZW5zIHRoZSBkb29yIGZvciBydW50aW1lIGxvYWRpbmcsIHdoaWNoIGlzIGdvb2QuIEltcG9ydGFudCBmb3IgZGlmZmVyZW50IHVzZSBjYXNlcy4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgb2YgY291cnNlLCB0aGF0IGNvcmUgY29tcG9uZW50cyB0aGF0IGFyZSBidWlsdC1pbiByZXF1aXJlIGEgcmVib290IHRvIHVwZGF0ZS5cblxuVGhlIGRlcGVuZGVuY2llcyBoZXJlIGFyZSBhbHdheXMgY3J1Y2lhbC4gQW55dGhpbmcgdGhhdCBoaW5nZXMgb24gdGhpcz8gT2theSwgaXQncyBwcmV0dHkgc2VsZi1jb250YWluZWQsIHRob3VnaCBpdCBkb2VzIGRlcGVuZCBvbiB0aGUga2VybmVsIGJlaW5nIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgdGhlIG5ldHdvcmtpbmcgc3RhY2ssIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGNhbiBwcm9iYWJseSBza2lwIG92ZXIgdGhhdCBvbmUuXG5UaGVyZSdzIHByb2JhYmx5IGEgbG90IG9mIGRldmljZSBkcml2ZXJzIGluIHRoZSB3aWRlciB0cmVlIHRoYXQgaG9vayBpbnRvIHRoaXMgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgaGF2ZSBhIGxvb2sgYXQgdGhvc2UgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMuXG5BbHJpZ2h0LCBvdmVyYWxsLCB0aGUgY29uZmlndXJhdGlvbiBzZWVtcyB3ZWxsLWRlZmluZWQgYW5kIGNsZWFybHkgc3RydWN0dXJlZC4gTm93LCBJIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBjb25maWd1cmF0aW9uIGNob2ljZXMgaW1wYWN0IHRoZSBjb2RlIGl0c2VsZi4gVGltZSB0byBkaXZlIGludG8gdGhlIGFzc29jaWF0ZWQgc291cmNlIGZpbGVzIGFuZCBzZWUgaG93IHRob3NlIGBpZmRlZmAgc3RhdGVtZW50cyBhcmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQzMzQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1Nzo1MC4wOTU1MDY0NDZaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTcsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTc6XFx0Y29uZmlnIENGRzgwMjExXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiY2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gUkZLSUxMIHx8ICFSRktJTExcXG4gIDIwOlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDIxOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMjI6XFx0XFx0IyBtYXkgbmVlZCB0byB1cGRhdGUgdGhpcyB3aGVuIGNlcnRpZmljYXRlcyBhcmUgY2hhbmdlZCBhbmQgYXJlXFxuICAyMzpcXHRcXHQjIHVzaW5nIGEgZGlmZmVyZW50IGFsZ29yaXRobSwgdGhvdWdoIHJpZ2h0IG5vdyB0aGV5IHNob3VsZG4ndFxcbiAgMjQ6XFx0XFx0IyAodGhpcyBpcyBoZXJlIHJhdGhlciB0aGFuIGJlbG93IHRvIGFsbG93IGl0IHRvIGJlIGEgbW9kdWxlKVxcbiAgMjU6XFx0XFx0c2VsZWN0IENSWVBUT19TSEEyNTYgaWYgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXFxuICAyNjpcXHRcXHRoZWxwXFxuICAyNzpcXHRcXHQgIGNmZzgwMjExIGlzIHRoZSBMaW51eCB3aXJlbGVzcyBMQU4gKDgwMi4xMSkgY29uZmlndXJhdGlvbiBBUEkuXFxuICAyODpcXHRcXHQgIEVuYWJsZSB0aGlzIGlmIHlvdSBoYXZlIGEgd2lyZWxlc3MgZGV2aWNlLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlZmVyIHRvIGRvY3VtZW50YXRpb24gb24gdGhlIHdpcmVsZXNzIHdpa2k6XFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vZGV2ZWxvcGVycy9Eb2N1bWVudGF0aW9uL2NmZzgwMjExXFxuICAzMzpcXHRcXG4gIDM0OlxcdFxcdCAgV2hlbiBidWlsdCBhcyBhIG1vZHVsZSBpdCB3aWxsIGJlIGNhbGxlZCBjZmc4MDIxMS5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0aWYgQ0ZHODAyMTFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6NTc6NTAuMDk1NTcyMzg2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDc0MzY2ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQnJvYWRjb20gV0xBTiBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgQnJvYWRjb20gV0xBTiBkcml2ZXIgdnVsbmVyYWJpbGl0eSBhbmQgaG93IHRvIGFwcHJvYWNoIGl0IGZvciBmdXp6aW5nLiBJdCBzZWVtcyB0aGUgY29yZSBkZXBlbmRlbmNpZXMgYXJlIGEgYml0IHRhbmdsZWQuIEkgc2VlIHRoYXQgYENGRzgwMjExYCBoaW5nZXMgb24gYFJGS0lMTGAg4oCTIGVpdGhlciBpdCdzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGJ1dCBpdCAqbXVzdCogYmUgZGVmaW5lZC4gVGhlbiwgYEJSQ01GTUFDYCByZWxpZXMgb24gYENGRzgwMjExYCwgbmF0dXJhbGx5LiBTbywganVzdCB0aG9zZSB0d28gd291bGQgbWVhbiBJIG5lZWQgYEJSQ01GTUFDYCwgYEJSQ01GTUFDX1VTQmAsIGFuZCBgQ0ZHODAyMTFgIGF0IGEgbWluaW11bS5cblxuV2FpdCwgYEJSQ01GTUFDX1VTQmAgaW50cm9kdWNlcyBhIG5ldyBkZXBlbmRlbmN5OiBgVVNCYC4gSXQgbmVlZHMgYFVTQmAgdG8gYmUgc2V0IHRvICd5JyBvciB0byBlcXVhbCBgQlJDTUZNQUNgLiBTbywgSSdsbCBuZWVkIGBVU0JgIGV4cGxpY2l0bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLiBMZXQncyBzZWUuLi4gYEJSQ01GTUFDYCwgYEJSQ01GTUFDX1VTQmAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYCBzaG91bGQgYmUgbXkgY29uZmlndXJhdGlvbnMuIFllcywgdGhhdCBzaG91bGQgY292ZXIgaXQuXG5cblRoZSBpbnRlcmVzdGluZyBiaXQgaGVyZSBpcyB0aGF0IGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgaXMgcmVhY2hhYmxlIHRocm91Z2ggYGNmZzgwMjExYCB3aGVuIGVtdWxhdGluZyBhIEJyb2FkY29tIFVTQiBkZXZpY2UuIFRoYXQncyBhIGdvb2QgZW50cnkgcG9pbnQuIEdpdmVuIHRoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgYW5kIG1pc3NpbmcgUE1LSUQgY29weSBpbiB0aGUgRnVsbE1BQyBkcml2ZXIncyBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBoYW5kbGVyLCBpdCBzb3VuZHMgZGVmaW5pdGVseSB3b3J0aCBteSB0aW1lLiBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoYXQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIHBvaW50LCByZWFjaGFibGUgdmlhIGBjZmc4MDIxMWAgbmV0bGluayBjb21tYW5kcyB3aGVuIGEgdmlydHVhbCBVU0IgQnJvYWRjb20gZGV2aWNlIGlzIGJlaW5nIHVzZWQuIFRoYXQncyBteSB0YXJnZXQsIGFuZCB0aGF0J3MgaG93IEknbGwgZnJhbWUgbXkgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTEwMiwiT3V0cHV0VG9rZW5zIjoxMjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMTo1Nzo1Ni4yMDMwMTE1NjhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjI2MTY5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJDTUZNQUNcIixcbiAgICBcIkJSQ01GTUFDX1VTQlwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX2N5d19leHRlcm5hbF9hdXRoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgYW5kIGFkZHMgbWlzc2luZyBQTUtJRCBjb3B5IGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyJ3MgZXh0ZXJuYWwgYXV0aGVudGljYXRpb24gaGFuZGxlci4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgbmV0bGluayBjb21tYW5kcyB3aGVuIGEgdmlydHVhbCBVU0IgQnJvYWRjb20gZGV2aWNlIGlzIGVtdWxhdGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSQ01GTUFDXCIsXG4gICAgXCJCUkNNRk1BQ19VU0JcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGFuZCBhZGRzIG1pc3NpbmcgUE1LSUQgY29weSBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlcidzIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGhhbmRsZXIuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGNmZzgwMjExIG5ldGxpbmsgY29tbWFuZHMgd2hlbiBhIHZpcnR1YWwgVVNCIEJyb2FkY29tIGRldmljZSBpcyBlbXVsYXRlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowk97rk[1] Phase: Succeeded StartedAt: 2026-07-26 11:58:07 +0000 UTC FinishedAt: 2026-07-26 11:58:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 11:58:07 +0000 UTC FinishedAt: 2026-07-26 11:58:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2] Phase: Succeeded StartedAt: 2026-07-26 11:58:07 +0000 UTC FinishedAt: 2026-07-26 13:07:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-26 11:58:07 +0000 UTC FinishedAt: 2026-07-26 13:07:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 11:58:07 +0000 UTC FinishedAt: 2026-07-26 11:58:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 11:58:07 +0000 UTC FinishedAt: 2026-07-26 11:58:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowk97rk/series-workflowk97rk-convert-artifact-1380627996/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 11:58:17 +0000 UTC FinishedAt: 2026-07-26 12:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 11:58:17 +0000 UTC FinishedAt: 2026-07-26 12:27:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3839b028-0041-4a34-a07b-bc8b9c1da4ae,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-workflowk97rk/series-workflowk97rk-convert-artifact-1380627996/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": "627a3497-f9f6-4908-88c1-4ee0ab56d5ce", "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-workflowk97rk/series-workflowk97rk-build-action-3505740874/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 11:58:17 +0000 UTC FinishedAt: 2026-07-26 12:27:16 +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:*3839b028-0041-4a34-a07b-bc8b9c1da4ae,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-workflowk97rk/series-workflowk97rk-convert-artifact-1380627996/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": "627a3497-f9f6-4908-88c1-4ee0ab56d5ce", "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-workflowk97rk/series-workflowk97rk-build-action-3505740874/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 12:27:26 +0000 UTC FinishedAt: 2026-07-26 12:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 12:27:26 +0000 UTC FinishedAt: 2026-07-26 12:27:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 12:27:26 +0000 UTC FinishedAt: 2026-07-26 12:27:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 12:27:26 +0000 UTC FinishedAt: 2026-07-26 12:27:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowk97rk/series-workflowk97rk-convert-artifact-3307006299/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 12:27:36 +0000 UTC FinishedAt: 2026-07-26 12:29:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 12:27:36 +0000 UTC FinishedAt: 2026-07-26 12:29:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*627a3497-f9f6-4908-88c1-4ee0ab56d5ce,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-workflowk97rk/series-workflowk97rk-build-action-3505740874/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-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 12:29:31 +0000 UTC FinishedAt: 2026-07-26 12:29:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 12:29:31 +0000 UTC FinishedAt: 2026-07-26 12:29:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 12:29:31 +0000 UTC FinishedAt: 2026-07-26 13:02:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 12:29:31 +0000 UTC FinishedAt: 2026-07-26 13:02:10 +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:*3839b028-0041-4a34-a07b-bc8b9c1da4ae,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-workflowk97rk/series-workflowk97rk-convert-artifact-3307006299/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": "e9d74239-af1e-482e-b295-4d0118aac7a2", "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-workflowk97rk/series-workflowk97rk-build-action-3343945727/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 12:29:31 +0000 UTC FinishedAt: 2026-07-26 13:02:00 +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:*3839b028-0041-4a34-a07b-bc8b9c1da4ae,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-workflowk97rk/series-workflowk97rk-convert-artifact-3307006299/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": "e9d74239-af1e-482e-b295-4d0118aac7a2", "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-workflowk97rk/series-workflowk97rk-build-action-3343945727/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-26 13:02:10 +0000 UTC FinishedAt: 2026-07-26 13:02:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-26 13:02:10 +0000 UTC FinishedAt: 2026-07-26 13:02:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-26 13:02:10 +0000 UTC FinishedAt: 2026-07-26 13:04:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-26 13:02:10 +0000 UTC FinishedAt: 2026-07-26 13:04:21 +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:*e9d74239-af1e-482e-b295-4d0118aac7a2,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-workflowk97rk/series-workflowk97rk-build-action-3343945727/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-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-26 13:04:31 +0000 UTC FinishedAt: 2026-07-26 13:07:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-26 13:04:31 +0000 UTC FinishedAt: 2026-07-26 13:07:32 +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":["brcmf_cyw_external_auth"],"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:*627a3497-f9f6-4908-88c1-4ee0ab56d5ce,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e9d74239-af1e-482e-b295-4d0118aac7a2,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-workflowk97rk/series-workflowk97rk-build-action-3505740874/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-workflowk97rk/series-workflowk97rk-build-action-3343945727/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-26 13:04:31 +0000 UTC FinishedAt: 2026-07-26 13:04:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-26 13:04:31 +0000 UTC FinishedAt: 2026-07-26 13:04:39 +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":["brcmf_cyw_external_auth"],"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-workflowk97rk/series-workflowk97rk-convert-artifact-2887226964/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-26 13:04:31 +0000 UTC FinishedAt: 2026-07-26 13:04:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-26 13:04:31 +0000 UTC FinishedAt: 2026-07-26 13:04:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-26 13:04:31 +0000 UTC FinishedAt: 2026-07-26 13:04:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-26 13:04:41 +0000 UTC FinishedAt: 2026-07-26 13:07:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk97rk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cyw_external_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3dab139d4795f688e4f243e40c7474df00d329d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB","CFG80211","USB"],"series_id":"fe1d686a-5a4b-4b67-beb7-1cf03f9f1384","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-26 13:04:41 +0000 UTC FinishedAt: 2026-07-26 13:07:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*627a3497-f9f6-4908-88c1-4ee0ab56d5ce,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e9d74239-af1e-482e-b295-4d0118aac7a2,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-workflowk97rk/series-workflowk97rk-build-action-3505740874/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-workflowk97rk/series-workflowk97rk-build-action-3343945727/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-workflowk97rk/series-workflowk97rk-convert-artifact-2887226964/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,}