Name: series-workflowrjkd7 Phase: Succeeded StartedAt: 2026-07-24 07:42:22 +0000 UTC FinishedAt: 2026-07-24 10:05:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[0] Phase: Succeeded StartedAt: 2026-07-24 07:42:22 +0000 UTC FinishedAt: 2026-07-24 08:21:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 07:42:22 +0000 UTC FinishedAt: 2026-07-24 08:21:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U" ], "series_id": "d3ca83cf-b254-4b42-8b08-db889d50a9c2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_init_eht_caps" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfaW5pdF9laHRfY2FwcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRUhUIGNhcGFiaWxpdGllcyBpbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUgYW5kIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMWExYjgxMmUxNWM2ZGRjZDAxN2YxYmI3ZjZmNzYxY2ExNzFkNzNjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMjQgMDg6MTk6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5pbmRleCBhOTA1OTg2NmI3MDE2MS4uNjE0MWU1ZDAyNGM3YmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuQEAgLTE4NywxOSAmIzQzOzE4NywyMSBAQCBtdDc5MjVfaW5pdF9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxuIFx0XHRlaHRfY2FwX2VsZW0tXHUwMDNlcGh5X2NhcF9pbmZvWzBdIHw9XG4gXHRcdFx0SUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcbiBcbiYjNDM7XHR2YWwgPSAoc3RzIFx1MDAzZSAzKSA/IHN0cyAtIDEgOiAzO1xuJiM0MztcbiBcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMF0gfD1cbi1cdFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHMoc3RzIC0gMSwgQklUKDApKSxcbiYjNDM7XHRcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgQklUKDApKSxcbiBcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0spO1xuIFxuIFx0ZWh0X2NhcF9lbGVtLVx1MDAzZXBoeV9jYXBfaW5mb1sxXSA9XG4tXHRcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHN0cyAtIDEsIEdFTk1BU0soMiwgMSkpLFxuJiM0MztcdFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHModmFsLCBHRU5NQVNLKDIsIDEpKSxcbiBcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0spIHxcbi1cdFx0dThfZW5jb2RlX2JpdHMoc3RzIC0gMSxcbiYjNDM7XHRcdHU4X2VuY29kZV9iaXRzKHZhbCxcbiBcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzE2ME1IWl9NQVNLKTtcbiBcbiBcdGlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haIFx1MDAyNlx1MDAyNiBpc18zMjBtaHpfc3VwcG9ydGVkKFx1MDAyNnBoeS1cdTAwM2VkZXYtXHUwMDNlbXQ3NikpXG4gXHRcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMV0gfD1cbi1cdFx0XHR1OF9lbmNvZGVfYml0cyhzdHMgLSAxLFxuJiM0MztcdFx0XHR1OF9lbmNvZGVfYml0cyh2YWwsXG4gXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzMyME1IWl9NQVNLKTtcbiBcbiBcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMl0gPVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X2luaXRfZWh0X2NhcHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEVIVCBjYXBhYmlsaXRpZXMgaW5pdGlhbGl6YXRpb24gaW4gdGhlIE1UNzkyNSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIHRoZSBVU0IgZGV2aWNlIHByb2JlIGFuZCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMWExYjgxMmUxNWM2ZGRjZDAxN2YxYmI3ZjZmNzYxY2ExNzFkNzNjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMjQgMDg6MTk6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMKaW5kZXggYTkwNTk4NjZiNzAxNjEuLjYxNDFlNWQwMjRjN2JhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jCkBAIC0xODcsMTkgJiM0MzsxODcsMjEgQEAgbXQ3OTI1X2luaXRfZWh0X2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgZW51bSBubDgwMjExX2JhbmQgYmFuZCwKIAkJZWh0X2NhcF9lbGVtLSZndDtwaHlfY2FwX2luZm9bMF0gfD0KIAkJCUlFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7CiAKJiM0MzsJdmFsID0gKHN0cyAmZ3Q7IDMpID8gc3RzIC0gMSA6IDM7CiYjNDM7CiAJZWh0X2NhcF9lbGVtLSZndDtwaHlfY2FwX2luZm9bMF0gfD0KLQkJdThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHMoc3RzIC0gMSwgQklUKDApKSwKJiM0MzsJCXU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgQklUKDApKSwKIAkJCSAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAwX0JFQU1GT1JNRUVfU1NfODBNSFpfTUFTSyk7CiAKIAllaHRfY2FwX2VsZW0tJmd0O3BoeV9jYXBfaW5mb1sxXSA9Ci0JCXU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHN0cyAtIDEsIEdFTk1BU0soMiwgMSkpLAomIzQzOwkJdThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHModmFsLCBHRU5NQVNLKDIsIDEpKSwKIAkJCSAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfODBNSFpfTUFTSykgfAotCQl1OF9lbmNvZGVfYml0cyhzdHMgLSAxLAomIzQzOwkJdThfZW5jb2RlX2JpdHModmFsLAogCQkJICAgICAgIElFRUU4MDIxMV9FSFRfUEhZX0NBUDFfQkVBTUZPUk1FRV9TU18xNjBNSFpfTUFTSyk7CiAKIAlpZiAoYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWiAmYW1wOyZhbXA7IGlzXzMyMG1oel9zdXBwb3J0ZWQoJmFtcDtwaHktJmd0O2Rldi0mZ3Q7bXQ3NikpCiAJCWVodF9jYXBfZWxlbS0mZ3Q7cGh5X2NhcF9pbmZvWzFdIHw9Ci0JCQl1OF9lbmNvZGVfYml0cyhzdHMgLSAxLAomIzQzOwkJCXU4X2VuY29kZV9iaXRzKHZhbCwKIAkJCQkgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzMyME1IWl9NQVNLKTsKIAogCWVodF9jYXBfZWxlbS0mZ3Q7cGh5X2NhcF9pbmZvWzJdID0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiBhIE1lZGlhVGVrIE1UNzkyNSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYG10NzkyNV9pbml0X2VodF9jYXBzYCBmdW5jdGlvbi4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHdlYWtpbmcgaG93IHRoZSBgc3RzYCB2YWx1ZSBpcyB1c2VkIHRvIHBhY2sgYml0cyBpbnRvIGBlaHRfY2FwX2VsZW0tJmd0O3BoeV9jYXBfaW5mb2AuIFNwZWNpZmljYWxseSwgdGhpcyBgdmFsID0gKHN0cyAmZ3Q7IDMpID8gc3RzIC0gMSA6IDM7YCBsaW5lIGlzIHJhaXNpbmcgYSBmbGFnLiBUaGV5JiMzOTtyZSBiYXNpY2FsbHkgY2xhbXBpbmcgb3IgcmVtYXBwaW5nIHRoZSBgc3RzYCB2YWx1ZSBiZWZvcmUgaXTigJlzIHVzZWQuIFRoaXMgY291bGQgYmUgYSB2ZWN0b3IgZm9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgdGVzdGFibGUgaXMgdGhpcz8gVGhpcyBpcyBhIE1lZGlhVGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIG1lYW5zIGl04oCZcyBsaWtlbHkgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gR2V0dGluZyB0aGlzIHRoaW5nIGZ1enphYmxlIGlzIHRoZSBjaGFsbGVuZ2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFueSB3YXkgdG8gcmVhY2ggdGhpcyBkcml2ZXIgZWFzaWx5IGluIGEgdmlydHVhbGl6ZWQgb3Igc2ltdWxhdGVkIGVudmlyb25tZW50LiBJdCYjMzk7cyBub3QgdXN1YWxseSB0cml2aWFsIHRvIGZ1enogV2ktRmkgY2hpcCBkcml2ZXJzLCBlc3BlY2lhbGx5IFBDSSBvbmVzLCB1bmxlc3MgdGhleSBoYXZlIGEgVVNCIG9yIFNESU8gZXF1aXZhbGVudCB0aGF0IGNhbiBiZSBlbXVsYXRlZC4gT2Z0ZW4sIGZ1enppbmcgc3BlY2lmaWMgUENJIGRyaXZlcnMgZm9yIFdpLUZpIGlzIGEgdmVyeSBuaWNoZSBwdXJzdWl0LiBXZSBtaWdodCBoYXZlIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBidXQgSSYjMzk7bSBub3QgaW1tZWRpYXRlbHkgdGhpbmtpbmcgb2YgYSBnb29kIHBhdGggaGVyZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBkaXJlY3RvcnksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gLiBJZiB0aGVyZSYjMzk7cyBhIFVTQiB2ZXJzaW9uIG9mIHRoaXMgZHJpdmVyLCBpdCBjb3VsZCBiZSBhIGdhbWUtY2hhbmdlci4gVGhhdCBtaWdodCBiZSBhIG11Y2ggbW9yZSBtYW5hZ2VhYmxlIGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLiBJZiBJIGNhbiBmaW5kIGEgVVNCIHZlcnNpb24gb3IgYSBjbG9zZSBlcXVpdmFsZW50IHRoYXTigJlzIGVhc2llciB0byBzaW11bGF0ZSwgdGhpcyB3aG9sZSB0aGluZyBiZWNvbWVzIG11Y2ggbW9yZSBwcm9taXNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3OTI1LmgmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7cGNpX21hYy5jJiMzNDssCiAgICAmIzM0O3BjaV9tY3UuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmMmIzM0OywKICAgICYjMzQ7cmVnZC5oJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg4CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byBVU0IgRnV6emluZyBQb3RlbnRpYWwqKgoKUmlnaHQsICpmaW5hbGx5KiwgdGhlcmUmIzM5O3MgYHVzYi5jYCEgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UmIzM5O3ZlIHBvdGVudGlhbGx5IGdvdCBhIHByb21pc2luZyB0YXJnZXQgaGVyZS4gVVNCIGVtdWxhdGlvbiwgbGlrZSB3aXRoIHNvbWV0aGluZyBiYXNlZCBvbiBkdW1teV9oY2Qgb3IgZXZlbiBsZXZlcmFnaW5nIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGNvdWxkIHByZXNlbnQgYSByZWFsbHkgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UuIFVTQiBkcml2ZXJzIGFyZSBvZnRlbiBjb21wbGV4IGFuZCBwb29ybHkgdGVzdGVkLCByaXBlIGZvciBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcy4gTXkgbWluZCBpcyBhbHJlYWR5IHJhY2luZyB0aHJvdWdoIHBvdGVudGlhbCBmYXVsdCBpbmplY3Rpb24gc3RyYXRlZ2llcy4KCkxldCYjMzk7cyBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCB0aGlzIHRoaW5nIGRvZXMuIFRoZSBgbXQ3OTI1X2luaXRfZWh0X2NhcHNgIGZ1bmN0aW9uLCB3aGljaCByZXNpZGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLCBpcyBteSBuZXh0IGZvY3VzLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB0byBmaW5kIGFueSBwb3RlbnRpYWwgZmxhd3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X2luaXRfZWh0X2NhcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE2MD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE2MTptdDc5MjVfaW5pdF9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE2Mi1cdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yOTg9X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMTUtXHRcdG10NzkyNV9pbml0X2hlX2NhcHMocGh5LCBiYW5kLCBcdTAwMjZkYXRhW25dLCBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMTY6XHRcdG10NzkyNV9pbml0X2VodF9jYXBzKHBoeSwgYmFuZCwgXHUwMDI2ZGF0YVtuXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzE3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NjMKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGZvciBtdDc5MjUqKgoKT2theSwgdGltZSB0byBnZXQgdG8gaXQuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gdGhlIGBtdDc5MjVgIGRyaXZlci4gSSBrbm93IGl04oCZcyBsaWtlbHkgc3ByZWFkIGFjcm9zcyBhIGZldyBkaWZmZXJlbnQgZmlsZXMgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGZlYXR1cmUgc2V0LCBzbyBJJiMzOTtsbCBuZWVkIHRvIGJlIG1ldGhvZGljYWwuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgY29uZGl0aW9uYWwgYnVpbGQgbG9naWMgc3Vycm91bmRpbmcgdGhpcyBzcGVjaWZpYyB3aXJlbGVzcyBtb2R1bGUuIEFyZSB0aGVyZSBhbnkgZGVmYXVsdCBzZXR0aW5ncyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGZsYWdzIG9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cyB0aGF0IG1pZ2h0IHRyaXAgbWUgdXAgbGF0ZXI/IEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdmFyaW91cyBjb25maWd1cmF0aW9uIGNob2ljZXMuIElmIGEgbmV3IHByb2JsZW0gYXJpc2VzLCBJIG5lZWQgdG8gYmUgYWJsZSB0byB0cm91Ymxlc2hvb3QuIEkmIzM5O20gbG9va2luZyBmb3IgYSBjbGVhciBtYXAgb2Ygd2hhdCYjMzk7cyBhdmFpbGFibGUgYW5kIGhvdyBpdCBhbGwgaGFuZ3MgdG9nZXRoZXIgc28gdGhhdCBJIGNhbiBwcm92aWRlIGFuIGFjY3VyYXRlIGFuc3dlciB0byB0aGUgaXNzdWUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIG1vZHVsZSBpcyBpbnRlbmRlZCB0byBiZWhhdmUgaW4gZGlmZmVyZW50IGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NjYKCQkJCQkJCW91dHB1dDogNTYKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QgaGVyZS4KCioqQW5hbHl6aW5nIHRoZSBNVDc5MjVVIFVTQiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBNVDc5MjVVYCBkcml2ZXIsIHdoaWNoIGlzIHNwZWNpZmljYWxseSBmb3IgVVNCLiBNeSBpbml0aWFsIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgaG93IHRoaXMgYWxsIGNvbm5lY3RzLiBUaGUgcHJpbWFyeSBxdWVzdGlvbiBpcyB3aGV0aGVyIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AgaXMgYWN0dWFsbHkgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIFVTQiBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBJdCBsb29rcyBsaWtlIGBfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzYCB0aGVuIGNhbGxzIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AuIFRoYXQmIzM5O3MgdGhlIGxpbmsgSSB3YXMgaG9waW5nIGZvci4gU28gdGhlIEVuaGFuY2VkIEhpZ2ggVGhyb3VnaHB1dCAoRUhUKSBjYXBhYmlsaXRpZXMgaW5pdGlhbGl6YXRpb24gaXMgbGlua2VkIHRvIHN0cmVhbSBzZXR0aW5nLiBJIG5vdyBoYXZlIGEgaGFuZGxlIHRvIHdvcmsgd2l0aCwgdG8gc2VlIHdoZXJlIHRoZSBVU0IgaW5pdGlhbGl6YXRpb24gY2FsbHMgcmVzaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yOTc9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyOTg6X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI5OS1cdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0zMjQ9dm9pZCBtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjYtXHRpZiAocGh5LVx1MDAzZW10NzYtXHUwMDNlY2FwLmhhc18yZ2h6KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjMyNzpcdFx0X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHksIFx1MDAyNnBoeS1cdTAwM2VtdDc2LVx1MDAzZXNiYW5kXzJnLnNiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMyOC1cdFx0XHRcdFx0XHROTDgwMjExX0JBTkRfMkdIWik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzMC1cdGlmIChwaHktXHUwMDNlbXQ3Ni1cdTAwM2VjYXAuaGFzXzVnaHopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MzMxOlx0XHRfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHBoeSwgXHUwMDI2cGh5LVx1MDAzZW10NzYtXHUwMDNlc2JhbmRfNWcuc2JhbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzMyLVx0XHRcdFx0XHRcdE5MODAyMTFfQkFORF81R0haKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzM0LVx0aWYgKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNhcC5oYXNfNmdoeilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMzU6XHRcdF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMocGh5LCBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzYmFuZF82Zy5zYmFuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMzYtXHRcdFx0XHRcdFx0Tkw4MDIxMV9CQU5EXzZHSFopO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDUxCgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoYXQ6CgoqKlRyYWNpbmcgdGhlIENhbGwgUGF0aCBvZiBgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNgLiAgVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzOiB3aGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICpjYWxsZWQqIGZyb20/IEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uLCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgcG9zaXRpb24gaW4gdGhlIG92ZXJhbGwgZHJpdmVyIHN0cnVjdHVyZSBpcyBjcml0aWNhbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGxvY2F0aW9uIHdpdGhpbiB0aGUgY29kZSBiYXNlIHdoZXJlIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gaXMgaW52b2tlZC4gIEtub3dpbmcgdGhlIGNhbGwgcGF0aCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgcHVycG9zZSwgdGhlIGNvbnRleHQgaXQgb3BlcmF0ZXMgaW4sIGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBoZXJlLCBzdGVwIGJ5IHN0ZXAsIHRvIHVuZGVyc3RhbmQgaXRzIGVudHJ5IHBvaW50LiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyAtIGBncmVwYCwgc291cmNlIGNvZGUgbmF2aWdhdGlvbiwgb3IgbWF5YmUgZXZlbiBhIGRlYnVnZ2VyIGlmIHRoaW5ncyBnZXQgdHJpY2t5IC0gdG8gdW5jb3ZlciB0aGUgZXhhY3QgY2FsbGluZyBmdW5jdGlvbnMgYW5kIHRoZWlyIHJvbGVzLiBLbm93aW5nIHRoZSBjYWxsIGNvbnRleHQgaXMgdGhlIHN0YXJ0IG9mIHRydWx5IHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmN0aW9uJiMzOTtzIHNpZ25pZmljYW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTE1NT1zdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY1LVx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE2NjpcdG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2Ny1cdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yOTc9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyOTg6X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI5OS1cdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MzI0OnZvaWQgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMyNi1cdGlmIChwaHktXHUwMDNlbXQ3Ni1cdTAwM2VjYXAuaGFzXzJnaHopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MzI3Olx0XHRfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHBoeSwgXHUwMDI2cGh5LVx1MDAzZW10NzYtXHUwMDNlc2JhbmRfMmcuc2JhbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzI4LVx0XHRcdFx0XHRcdE5MODAyMTFfQkFORF8yR0haKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzMwLVx0aWYgKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNhcC5oYXNfNWdoeilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMzE6XHRcdF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMocGh5LCBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzYmFuZF81Zy5zYmFuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMzItXHRcdFx0XHRcdFx0Tkw4MDIxMV9CQU5EXzVHSFopO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMzQtXHRpZiAocGh5LVx1MDAzZW10NzYtXHUwMDNlY2FwLmhhc182Z2h6KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjMzNTpcdFx0X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHksIFx1MDAyNnBoeS1cdTAwM2VtdDc2LVx1MDAzZXNiYW5kXzZnLnNiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzNi1cdFx0XHRcdFx0XHROTDgwMjExX0JBTkRfNkdIWik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE2MDc9bXQ3OTI1X3NldF9hbnRlbm5hKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNjI1LVx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMocGh5LVx1MDAzZW10NzYsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE2MjY6XHRtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE2MjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzExPXZvaWQgbXQ3OTI1X3N0YXRzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMxMjp2b2lkIG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzEzLWludCBtdDc5MjVfaW5pdF9tbG9fY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM9MjE9dm9pZCBtdDc5MjVfcmVnZF9iZV9jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTYyLVx0ZGV2LVx1MDAzZWhhc19laHQgPSBuZXc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM6NjM6XHRtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTY0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE5MQoJCQkJCQkJb3V0cHV0OiA1NwoJCQkJCQkJdGhvdWdodHM6IDk2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgQnVnIGluIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIGl0cyBleGVjdXRpb24uIEl0IHNlZW1zIHRoaXMgY29kZSBzbmlwcGV0LCBzcGVjaWZpY2FsbHkgdGhlIGxpbmUgYHZhbCA9IChzdHMgJmd0OyAzKSA/IHN0cyAtIDEgOiAzO2AsIGlzIHJlYWNoZWQgZHVyaW5nIHNldmVyYWwgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gcHJvY2Vzc2VzIHdpdGhpbiB0aGUgYG10NzkyNWAgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYG10NzkyNV9pbml0X3dvcmtgLCBgbXQ3OTI1X3NldF9hbnRlbm5hYCwgYW5kIGBtdDc5MjVfcmVnZF9iZV9jdHJsYCwgd2hpY2ggYXJlIGFsbCB0cmlnZ2VyZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHByb2JlZC4gR2l2ZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgYE1UNzkyNVVgIFVTQiBkcml2ZXIsIHN5emthbGxlciBjb3VsZCBkZWZpbml0ZWx5IGJlIHVzZWQgdG8gZW11bGF0ZSB0aGlzIGRldmljZSBhbmQgdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4KClRoZSBwYXRjaCBhaW1zIHRvIGZpeCBhIHNpdHVhdGlvbiB3aGVyZSBgc3RzYCAod2hpY2ggSSYjMzk7bSBhc3N1bWluZyBpcyB0aGUgbnVtYmVyIG9mIHNwYXRpYWwgc3RyZWFtcykgbWlnaHQgZXhjZWVkIGEgY2VydGFpbiBib3VuZCwgY2F1c2luZyBhIGJpdGZpZWxkIG92ZXJmbG93IGJlY2F1c2UgYHN0cyAtIDFgIHdvdWxkIGJlIG91dCBvZiByYW5nZS4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHNpbXBseSBgc3RzIC0gMWAuIFRoZSBmaXggaXMgYSB0ZXJuYXJ5IG9wZXJhdG9yLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgJiMzNDtPa2F5LCBtYWtlcyBzZW5zZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGluZ3Mgc3RheSBpbiBib3VuZHMmIzM0Oy4gSG93ZXZlciwgbGV0JiMzOTtzIHN0ZXAgdGhyb3VnaCB0aGUgbG9naWMuICBJZiBgc3RzYCBpcyA0LCB0aGVuIGBzdHMgJmd0OyAzYCBpcyB0cnVlLCBzbyBgdmFsYCBiZWNvbWVzIGA0IC0gMSA9IDNgLiBJZiBgc3RzYCBpcyA1LCB0aGVuIGB2YWxgIHdvdWxkIGJlY29tZSA0LiBCdXQsIHdhaXQuLi5pZiBgc3RzYCBpcyAxLCB0aGVuIGBzdHMgJmd0OyAzYCBpcyBmYWxzZSwgYW5kIGB2YWxgIGdldHMgc2V0IHRvICozKi4gSG9sZCBvbi4gVGhlIG9yaWdpbmFsIGNvZGUgd291bGQgaGF2ZSBzZXQgYHZhbCA9IHN0cyAtIDFgLCB3aGljaCBtZWFucyBpdCB3b3VsZCBoYXZlIGJlY29tZSAwLiAgCgpJIGhhdmUgdG8gZ28gYmFjayBhbmQgY2hlY2suICBJcyB0aGlzIGNvcnJlY3Q/ICBXaGF0IHRoZSBhdXRob3IgYWN0dWFsbHkgd3JvdGU6IGB2YWwgPSAoc3RzICZndDsgMykgPyBzdHMgLSAxIDogMztgLgoKTm93LCBpZiBgc3RzYCBpcyAxLCBgdmFsYCBpcyAqc2V0IHRvIDMqLiBXaGF0JiMzOTtzIGdvaW5nIG9uIGhlcmU/ICBJcyB0aGlzIHdoYXQgdGhlIGF1dGhvciBpbnRlbmRlZD8gTWF5YmUsIGEgdHlwbz8gSSB3b25kZXIgaWYgdGhlIGF1dGhvciB3YXMgYWN0dWFsbHkgZ29pbmcgZm9yIGB2YWwgPSAoc3RzICZndDsgMykgPyAzIDogc3RzIC0gMTtgLiBUaGVuLCB0aGUgYmVoYXZpb3Igd291bGQgYmUgY2FwcGVkIGF0IDMsIHdoaWNoIG1ha2VzIGEgbG90IG1vcmUgc2Vuc2UgZ2l2ZW4gbXkgYXNzdW1wdGlvbiB0aGF0IGB2YWxgIGlzIHVzZWQgZm9yIGJpdC1lbmNvZGluZyB0aGUgbnVtYmVyIG9mIHN0cmVhbXMuCgpMZXQmIzM5O3MgcmUtcnVuIHRoZSBudW1iZXJzOiAgSWYgYHN0c2AgaXMgNCwgKm9yaWdpbmFsIGNvZGUqIGBzdHMgLSAxID0gM2AsIGFuZCB0aGUgcGF0Y2ggd291bGQgeWllbGQgdGhlIHZhbHVlIDMuIElmIGBzdHNgIGlzIDEsIGBzdHMgLSAxID0gMGAuIFdpdGggdGhlIHBhdGNoLCBpZiBgc3RzYCBpcyAxLCBgdmFsID0gM2AuIE5vLCBubyB0aGF0JiMzOTtzIG5vdCByaWdodC4KCk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2ggb25lIG1vcmUgdGltZS4gVGhlIGNvZGUgaXMuLi4gYHZhbCA9IChzdHMgJmd0OyAzKSA/IHN0cyAtIDEgOiAzO2AuLi4gSWYgYHN0c2AgaXMgNCwgYHZhbCA9IDNgLiBJZiBgc3RzYCBpcyAxLCB0aGVuIGB2YWwgPSAzYC4gSWYgYHN0c2AgaXMgNSwgYHZhbGAgaXMgNC4KCk9rYXksIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBidWcuIEl0IHNlZW1zIGxpa2UgYSBsb2dpYyBlcnJvci4gU2V0dGluZyBgdmFsID0gM2AgKmV2ZXJ5KiB0aW1lIGBzdHNgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAzIGRvZXNuJiMzOTt0IG1ha2Ugc2Vuc2UsIGNvbnNpZGVyaW5nIHRoZSBvcmlnaW5hbCBsb2dpYy4gTG9va3MgbGlrZSB0aGlzIG5lZWRzIGEgY2xvc2VyIGxvb2ssIHRoZSBsb2dpYyBkZWZpbml0ZWx5IG5lZWRzIGNsYXJpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmFsID0gXFwoc3RzIFx1MDAzZSAzXFwpIFxcPyAzIDogc3RzIC0gMTsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTgxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIENvbmRpdGlvbmFsIExvZ2ljKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGlzIHBhdGNoLiBJJiMzOTttIGdvaW5nIHRocm91Z2ggaXQgYWdhaW4sIGFuZCBoZXJlJiMzOTtzIHdoYXQgaXQgc2hvd3M6CmBgYGMKJiM0MzsJdmFsID0gKHN0cyAmZ3Q7IDMpID8gMyA6IHN0cyAtIDE7CmBgYApTb21ldGhpbmcgZG9lc24mIzM5O3QgZmVlbCByaWdodC4gTGV0IG1lIHJlLXJlYWQgdGhpcyBkaWZmLiBJJiMzOTttIGNoZWNraW5nIGl0IGFnYWluOgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IDMgOiBzdHMgLSAxOwpgYGAKV2FpdCwgZGlkIEkgbWlzaW50ZXJwcmV0IGl0IHRoZSBmaXJzdCB0aW1lPyBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBMZXQgbWUgY29uZmlybSB3aXRoIHRoZSBwcm9tcHQgaXRzZWxmLgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IDMgOiBzdHMgLSAxOwpgYGAKTm93IHdhaXQgYSBzZWNvbmQuLi4gVGhpcyBsb29rcyBsaWtlOgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IHN0cyAtIDEgOiAzOwpgYGAKTm8sIHRoYXQgY2FuJiMzOTt0IGJlIHJpZ2h0Li4uIExldCBtZSByZS1jaGVjayB0aGUgcHJvbXB0LgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IDMgOiBzdHMgLSAxOwpgYGAKV2FpdCwgdGhlIHByb21wdCBzYXlzLi4uCmBgYGMKJiM0MzsJdmFsID0gKHN0cyAmZ3Q7IDMpID8gc3RzIC0gMSA6IDM7CmBgYApObywgd2FpdCEgVGhlIHByb21wdCAqYWN0dWFsbHkqIHNheXMuLi4KYGBgYwomIzQzOwl2YWwgPSAoc3RzICZndDsgMykgPyAzIDogc3RzIC0gMTsKYGBgCk9rYXksIGxldCBtZSBqdXN0IGNvcHkgaXQgZnJvbSB0aGUgcHJvbXB0IHNvIEkgZG9uJiMzOTt0IG1pc3JlYWQgaXQgYWdhaW4uIFdhaXQsIEkgY2FuJiMzOTt0IGNvcHkgaXQuLi4gT2theSwgbGV0IG1lIGNhcmVmdWxseSByZXJlYWQgdGhlIHByb21wdC4KYGBgYwomIzQzOwl2YWwgPSAoc3RzICZndDsgMykgPyAzIDogc3RzIC0gMTsKYGBgClJpZ2h0LiBXYWl0LCBub3cgSSB0aGluay4uLgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IHN0cyAtIDEgOiAzOwpgYGAKTm8sIG5vLCBpdCYjMzk7cy4uLgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IDMgOiBzdHMgLSAxOwpgYGAKSSBuZWVkIHRvIGVsaW1pbmF0ZSBhbnkgY2hhbmNlIG9mIGVycm9yIGluIG15IHJlYWRpbmcuIEkmIzM5O20gZ29pbmcgdG8gcnVuIGEgc2NyaXB0LCBvciB1c2UgYSB0b29sIHRvIHJlYWQgdGhlIGZpbGUgYW5kIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHRcbiAxODE6XHRcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMF0gPVxuIDE4MjpcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwX05EUF80X0VIVF9MRlRfMzJfR0kgfFxuIDE4MzpcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwX1NVX0JFQU1GT1JNRVIgfFxuIDE4NDpcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwX1NVX0JFQU1GT1JNRUU7XG4gMTg1Olx0XG4gMTg2Olx0XHRpZiAoYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWiBcdTAwMjZcdTAwMjYgaXNfMzIwbWh6X3N1cHBvcnRlZChcdTAwMjZwaHktXHUwMDNlZGV2LVx1MDAzZW10NzYpKVxuIDE4NzpcdFx0XHRlaHRfY2FwX2VsZW0tXHUwMDNlcGh5X2NhcF9pbmZvWzBdIHw9XG4gMTg4Olx0XHRcdFx0SUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcbiAxODk6XHRcbiAxOTA6XHRcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7XG4gMTkxOlx0XG4gMTkyOlx0XHRlaHRfY2FwX2VsZW0tXHUwMDNlcGh5X2NhcF9pbmZvWzBdIHw9XG4gMTkzOlx0XHRcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgQklUKDApKSxcbiAxOTQ6XHRcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0spO1xuIDE5NTpcdFxuIDE5NjpcdFx0ZWh0X2NhcF9lbGVtLVx1MDAzZXBoeV9jYXBfaW5mb1sxXSA9XG4gMTk3Olx0XHRcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgR0VOTUFTSygyLCAxKSksXG4gMTk4Olx0XHRcdFx0ICAgICAgIElFRUU4MDIxMV9FSFRfUEhZX0NBUDFfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLKSB8XG4gMTk5Olx0XHRcdHU4X2VuY29kZV9iaXRzKHZhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0NTAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTcGF0aWFsIFN0cmVhbSBDYWxjdWxhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBsaW5lIG9mIGNvZGU6IGB2YWwgPSAoc3RzICZndDsgMykgPyBzdHMgLSAxIDogMztgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBhIHRlcm5hcnkgb3BlcmF0b3IuIExldCYjMzk7cyBicmVhayBpdCBkb3duLiBJZiBgc3RzYCBpcyA0LCB0aGVuIHRoZSBjb25kaXRpb24gYHN0cyAmZ3Q7IDNgIGlzIHRydWUsIHNvIGB2YWxgIGJlY29tZXMgYDQgLSAxYCwgd2hpY2ggaXMgMy4gSWYgYHN0c2AgaXMgNSwgaXQmIzM5O3MgYDUgLSAxID0gNGAuIEFuZCBpZiBgc3RzYCBpcywgc2F5LCAxLCB0aGVuIHRoZSBjb25kaXRpb24gaXMgZmFsc2UsIGFuZCBgdmFsYCBpcyBzZXQgdG8gMy4gQWxyaWdodCwgc28gaWYgYHN0c2AgaXMgMiwgb3IgMyBpdCYjMzk7cyBhbHNvIDMuIFNvLCBpZiBgc3RzYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMywgYHZhbGAgaXMgYWx3YXlzIDMuIEJ1dCwgaWYgYHN0c2AgaXMgZ3JlYXRlciB0aGFuIDMsIGB2YWxgIGlzIGBzdHMgLSAxYC4KCkxldCBtZSBqdXN0IHJ1biB0aHJvdWdoIGEgZmV3IG1vcmUgZXhhbXBsZXMgaW4gbXkgaGVhZC4gSWYgYHN0c2AgaXMgMSwgYHZhbCA9IDNgLiAyIGFsc28gZXF1YWxzIDMsIGFuZCAzIGFsc28uIFRoZW4gNCBsZWFkcyB0byAzLCA1IGdpdmVzIDQsIGFuZCA4IGdpdmVzIDcuIFJpZ2h0LCBzbyBgdmFsYCBpcyBhbHdheXMgYXQgbGVhc3QgMy4gTm93LCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgYHN0c2AgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHNwYXRpYWwgc3RyZWFtcy4gU28sIGlmIHdlIGhhdmUgb25seSBvbmUgc3BhdGlhbCBzdHJlYW0sIGB2YWxgIGlzIDMuIEkgc3VwcG9zZSB0aGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gZmlndXJlIG91dCB3aGF0IHRoZSB2YWx1ZSBvZiBgc3RzYCBhY3R1YWxseSBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MDpcdHN0YXRpYyB2b2lkXG4gMTYxOlx0bXQ3OTI1X2luaXRfZWh0X2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgZW51bSBubDgwMjExX2JhbmQgYmFuZCxcbiAxNjI6XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRhICpkYXRhKVxuIDE2MzpcdHtcbiAxNjQ6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3RhX2VodF9jYXAgKmVodF9jYXAgPSBcdTAwMjZkYXRhLVx1MDAzZWVodF9jYXA7XG4gMTY1Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2VodF9jYXBfZWxlbV9maXhlZCAqZWh0X2NhcF9lbGVtID0gXHUwMDI2ZWh0X2NhcC1cdTAwM2VlaHRfY2FwX2VsZW07XG4gMTY2Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2VodF9tY3NfbnNzX3N1cHAgKmVodF9uc3MgPSBcdTAwMjZlaHRfY2FwLVx1MDAzZWVodF9tY3NfbnNzX3N1cHA7XG4gMTY3Olx0XHRlbnVtIG5sODAyMTFfY2hhbl93aWR0aCB3aWR0aCA9IHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNoYW5kZWYud2lkdGg7XG4gMTY4Olx0XHRpbnQgbnNzID0gaHdlaWdodDgocGh5LVx1MDAzZW10NzYtXHUwMDNlYW50ZW5uYV9tYXNrKTtcbiAxNjk6XHRcdGludCBzdHMgPSBod2VpZ2h0MTYocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhaW5tYXNrKTtcbiAxNzA6XHRcdHU4IHZhbDtcbiAxNzE6XHRcbiAxNzI6XHRcdGlmICghcGh5LVx1MDAzZWRldi1cdTAwM2VoYXNfZWh0KVxuIDE3MzpcdFx0XHRyZXR1cm47XG4gMTc0Olx0XG4gMTc1Olx0XHRlaHRfY2FwLVx1MDAzZWhhc19laHQgPSB0cnVlO1xuIDE3NjpcdFxuIDE3NzpcdFx0ZWh0X2NhcF9lbGVtLVx1MDAzZW1hY19jYXBfaW5mb1swXSA9XG4gMTc4Olx0XHRcdElFRUU4MDIxMV9FSFRfTUFDX0NBUDBfRVBDU19QUklPX0FDQ0VTUyB8XG4gMTc5Olx0XHRcdElFRUU4MDIxMV9FSFRfTUFDX0NBUDBfT01fQ09OVFJPTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NDUKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAyMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVjb2RpbmcgdGhlIEFudGVubmEgQ2hhaW4gTWFzayoqCgpPa2F5LCBzbyBgc3RzYCBpcyBkZXJpdmVkIGZyb20gYGh3ZWlnaHQxNihwaHktJmd0O210NzYtJmd0O2NoYWlubWFzaylgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgYGNoYWlubWFza2AgcmVwcmVzZW50cyB0aGUgYW50ZW5uYSBjaGFpbiBtYXNrLCBhbmQgYGh3ZWlnaHQxNmAgbGlrZWx5IGNvdW50cyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBjaGFpbnMuIEZvciB0aGUgTVQ3OTI1LCB3aGljaCBJIGtub3cgaXMgYSAyeDIgZGV2aWNlLCB0aGlzIG1lYW5zIGBzdHNgIGNhbiBiZSBhdCBtb3N0IDIuCgpOb3csIGhvbGQgb24uLi4gaWYgYHN0c2AgaXMgYXQgbW9zdCAyLCB0aGVuIHRoZSBjb25kaXRpb25hbCBgc3RzICZndDsgM2Agd291bGQgKmFsd2F5cyogYmUgZmFsc2UsIGFuZCBzbyBgdmFsYCB3b3VsZCBiZSBhc3NpZ25lZCBhIHZhbHVlIG9mIDMuIEJ1dCB3aHkgYXJlIHdlIHNldHRpbmcgYHZhbGAgdG8gMywgaW5pdGlhbGx5PyBUaGF0IGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IGNsaWNrLiBUaGlzIHNtZWxscyBsaWtlIGFuIEVIVCAoODAyLjExYmUpIHRoaW5nLgoKSSBzaG91bGQgY2hlY2sgd2hhdCBgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0tgIGFjdHVhbGx5IHJlcHJlc2VudHMuIFJpZ2h0LCBJIHJlbWVtYmVyIHRoYXQgdGhlIEJlYW1mb3JtZWUgU1MgZmllbGRzIGluIDgwMi4xMWJlIGluZGljYXRlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzcGF0aWFsIHN0cmVhbXMgc3VwcG9ydGVkIHdoZW4gb3BlcmF0aW5nIGFzIGEgYmVhbWZvcm1lZS4gT2theSwgdGhlIHZhbHVlIGl0c2VsZiBpcyBlbmNvZGVkIGluIGFuIGBzdHMgLSAxYCBtYW5uZXI/IFdhaXQsIHRoYXQgZG9lc24mIzM5O3QgZmVlbCByaWdodC4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoaXMsIGVpdGhlciB0aHJvdWdoIHRoZSA4MDIuMTFiZSBkcmFmdCBzcGVjaWZpY2F0aW9uIG9yLCBtb3JlIGVmZmljaWVudGx5LCBieSBjaGVja2luZyB0aGUgcmVsZXZhbnQga2VybmVsIGRlZmluaXRpb25zIHRvIGVuc3VyZSBJJiMzOTttIGdldHRpbmcgdGhlIGxvZ2ljIGNvcnJlY3QgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2llZWU4MDIxMS1laHQuaD0xNzg9c3RydWN0IGllZWU4MDIxMV9laHRfb3BlcmF0aW9uX2luZm8ge1xuLS1cbmluY2x1ZGUvbGludXgvaWVlZTgwMjExLWVodC5oLTIxMi0vKiBFSFQgYmVhbWZvcm1lZSBudW1iZXIgb2Ygc3BhdGlhbCBzdHJlYW1zIFx1MDAzYz0gODBNSHogaXMgc3BsaXQgKi9cbmluY2x1ZGUvbGludXgvaWVlZTgwMjExLWVodC5oOjIxMzojZGVmaW5lIElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLXHRcdDB4ODBcbmluY2x1ZGUvbGludXgvaWVlZTgwMjExLWVodC5oLTIxNC0jZGVmaW5lIElFRUU4MDIxMV9FSFRfUEhZX0NBUDFfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLXHRcdDB4MDNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0MzEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAzMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEVIVCBDYXBhYmlsaXR5IEluaXRpYWxpemF0aW9uIGluIHRoZSBNVDc5MjUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBFSFQgY2FwYWJpbGl0aWVzIGFyZSBoYW5kbGVkIGZvciB0aGUgTVQ3OTI1LiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiBhIDMtYml0IGZpZWxkLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHNwbGl0IHdpdGggMSBiaXQgaW4gQ0FQMCBhbmQgdGhlIHJlbWFpbmluZyAyIGluIENBUDEuIFRoZSBjdXJyZW50IHZhbHVlIGlzIGB2YWxgLiBJZiBgdmFsYCBoaXRzIDMsIG15IGZpcnN0IHRob3VnaHQgaXMgJiMzNDs0IHNwYXRpYWwgc3RyZWFtcz8mIzM0OywgYnV0IHdhaXQsIEkgaGF2ZSB0byByZW1lbWJlciBob3cgaXQmIzM5O3MgZW5jb2RlZC4gSXQmIzM5O3MgZW5jb2RpbmcgKjMqLCBub3QgcmVwcmVzZW50aW5nIDQuCgpUaGVuIEkgZ2V0IGh1bmcgdXAgb24gdGhpcyB2YXJpYWJsZSBgc3RzYC4gSW4gdGhlIG9sZCBjb2RlLCB3aGVuIGBzdHMgPSAyYCwgdGhleSB3ZXJlIGRvaW5nIGBzdHMgLSAxYCwgcmVzdWx0aW5nIGluIDEuIEJ1dCB3aXRoIHRoZSBwYXRjaCwgdGhlIGB2YWxgIGlzIHNldCB0byAzLiBXaHkgc2V0IGl0IHRvIDM/IERvZXMgdGhhdCB2YWx1ZSBoYXZlIHNwZWNpYWwgbWVhbmluZywgbGlrZSDigJxub3Qgc3VwcG9ydGVk4oCdIG9yIGEgbWF4aW11bSBvZiA0IHN0cmVhbXM/CgpIbW0sIG1heWJlIGl0IHJlbGF0ZXMgdG8gdGhlIGRldmljZSYjMzk7cyBjYXBhYmlsaXRpZXMuIElmIGl0JiMzOTtzIGEgMngyIGRldmljZSwgY291bGQgaXQgcG90ZW50aWFsbHkgYWN0IGFzIGEgYmVhbWZvcm1lZSBmb3IgdXAgdG8gNCBzcGF0aWFsIHN0cmVhbXM/IEkgd2lzaCBJIGhhZCB0aGUgY29tbWl0IG1lc3NhZ2U7IHRoYXQgd291bGQgbGlrZWx5IGNsZWFyIHRoaW5ncyB1cC4gTm8gd29ycmllcywgSSBjYW4gY2hlY2sgdGhlIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgd2l0aGluIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AgaW4gYG10NzkyNS9tYWluLmNgLgoKSXMgdGhpcyBzb21ldGhpbmcgd29ydGggZnV6emluZz8gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIEVIVCBjYXBhYmlsaXRpZXMgZm9yIE1lZGlhVGVrJiMzOTtzIE1UNzkyNSwgd2hpY2ggaXMgYSBXaS1GaSA3IGRldmljZS4gWWVzLCBhYnNvbHV0ZWx5LiBJIGNhbiBlbXVsYXRlIGl0IHVzaW5nIFVTQiAoYE1UNzkyNVVgKS4gSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYENPTkZJR19NVDc5MjVVYCBmaXJzdC4gTm93LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhhdCBjb25maWcgaXNuJiMzOTt0IGRlcGVuZGVudCBvbiBzb21ldGhpbmcgZWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzkyNVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzNDIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBtdDc5MjUqKgoKT2theSwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLCBzbyB0aGUgZmlyc3QgcGxhY2UgdG8gbG9vayBpcyB0aGUgYEtjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AuIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGlzIHRoZSBoZWFydCBvZiBkZWZpbmluZyBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBkcml2ZXIuIEJ5IGNoZWNraW5nIHRoaXMsIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBncmFzcCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLCB3aGF0IG90aGVyIG1vZHVsZXMgaXQgcmVsaWVzIG9uLCBhbmQgd2hhdCBwbGF0Zm9ybSBjb25maWd1cmF0aW9ucyBzdXBwb3J0IGl0LiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgTVQ3OTI1IGRyaXZlciBmaXRzIGludG8gdGhlIGxhcmdlciBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQgYW5kIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24gZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgc2hvdWxkIEkgbmVlZCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyNV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyNUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcbiAgMTQ6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDE1Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3OTI1VVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRzZWxlY3QgTVQ3OTJ4X1VTQlxuICAyMjpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMjM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjQ6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXG4gIDI3Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAyODpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTAwCgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogNzg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1UNzkyNVUgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNVDc5MjVVIGRyaXZlci4gSXQgcmVsaWVzIG9uIGJvdGggYE1BQzgwMjExYCBhbmQgYFVTQmAsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGUgc3BlY2lmaWMgY2hhbmdlIGlzIGluIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AsIGFuZCBJIHNlZSBpdCYjMzk7cyBzZWxlY3RlZCBhcyBgTVQ3OTI1X0NPTU1PTmAuIFNvIHRoZSBmaXJzdCBzdGVwIGlzIHRvIGVuYWJsZSBgTVQ3OTI1VWAsIHNpbmNlIHRoYXQmIzM5O3MgdGhlIHRhcmdldC4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcywgc28sIGlzIGl0IGV2ZW4gd29ydGggaXQ/IFdlbGwsIHllcy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4gSSBkb24mIzM5O3Qgc2VlIGFueSBvdGhlciBmdW5jdGlvbiBtb2RpZmllZCwgb3IgZXZlbiBvdGhlciBmaWxlcy4gSnVzdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jYCwgZm9jdXNpbmcgb24gYG10NzkyNV9pbml0X2VodF9jYXBzYC4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZSBsb2dpYyBvZiB0aGlzIHBhdGNoLiBUaGUgcmVsZXZhbnQgY29kZSBzbmlwcGV0IGlzOgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IHN0cyAtIDEgOiAzOwpgYGAKT2theSwgc28gbGV0JiMzOTtzIHdhbGsgdGhyb3VnaCBpdC4gSWYgYHN0c2AgaXMgMSwgMiwgb3IgMywgdGhlbiBgdmFsYCBpcyAzLiBJZiBgc3RzYCBpcyA0LCBgdmFsYCBiZWNvbWVzIDMsIGFuZCBpZiBgc3RzYCBpcyA1LCB0aGVuIGl0IGJlY29tZXMgNC4gU28gYHZhbGAgaXMgYWx3YXlzIGF0IGxlYXN0IDMuIE5vdywgdGhpcyBgdmFsYCBsb29rcyBsaWtlIHRoZSBiZWFtZm9ybWVlIFNTIGZpZWxkLiBXaXRoIGEgMy1iaXQgZmllbGQgd2Uga25vdyB0aGF0OgoqICAgVmFsdWUgMDogMSBzcGF0aWFsIHN0cmVhbQoqICAgVmFsdWUgMTogMiBzcGF0aWFsIHN0cmVhbXMKKiAgIFZhbHVlIDI6IDMgc3BhdGlhbCBzdHJlYW1zCiogICBWYWx1ZSAzOiA0IHNwYXRpYWwgc3RyZWFtcwoqICAgVmFsdWUgNDogNSBzcGF0aWFsIHN0cmVhbXMKKiAgIFZhbHVlIDU6IDYgc3BhdGlhbCBzdHJlYW1zCiogICBWYWx1ZSA2OiA3IHNwYXRpYWwgc3RyZWFtcwoqICAgVmFsdWUgNzogOCBzcGF0aWFsIHN0cmVhbXMKCklmIGB2YWxgIGlzIDMsIHRoYXQgcmVwcmVzZW50cyA0IHNwYXRpYWwgc3RyZWFtcy4gQSAyeDIgZGV2aWNlIChgc3RzPTJgKSBhZHZlcnRpc2luZyA0IHNwYXRpYWwgc3RyZWFtcyBhcyBhIGJlYW1mb3JtZWU/IFRoYXQmIzM5O3Mgd2hhdCBJJiMzOTttIHF1ZXN0aW9uaW5nLiBJcyB0aGlzIGJlY2F1c2Ugb2YgYSByZXF1aXJlbWVudCBpbiA4MDIuMTFiZSwgb3IgcGVyaGFwcyB0aGUgaGFyZHdhcmUgaGFzIGEgbGltaXQgb2YgdXAgdG8gNCBzcGF0aWFsIHN0cmVhbXMgZm9yIHNvdW5kaW5nPyBQZXJoYXBzIHRoZSA4MDIuMTFiZSBkcmFmdCAqcmVxdWlyZXMqIGF0IGxlYXN0IDQgc3BhdGlhbCBzdHJlYW1zIGZvciBiZWFtZm9ybWVlLCBvciBtYXliZSB0aGUgaGFyZHdhcmUgbGltaXRzIGl0LiBObyBtYXR0ZXIgd2hhdCwgaXQmIzM5O3MgYSAqZnVuY3Rpb25hbCogY2hhbmdlIGluIHRoZSBkcml2ZXIgYW5kIHdvcnRoIGludmVzdGlnYXRpbmcuCgpOb3csIGlzIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AgcmVhY2hhYmxlPyBJIGhhdmUgdG8gY29uZmlybSB0aGlzLiBJdCYjMzk7cyBjYWxsZWQgYnkgYF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNgLCB3aGljaCBpcyBjYWxsZWQgYnkgYG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzYCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgYnkgYG10NzkyNV9pbml0X3dvcmtgLCBgbXQ3OTI1X3NldF9hbnRlbm5hYCwgYW5kIGBtdDc5MjVfcmVnZF9iZV9jdHJsYC4gYG10NzkyNV9pbml0X3dvcmtgIGlzIHNjaGVkdWxlZCAqZHVyaW5nKiB0aGUgZGV2aWNlIHByb2JlLiBTbywgd2hlbiB0aGUgVVNCIGRldmljZSBpcyBwcm9iZWQsIHRoaXMgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gaXMgZXhlY3V0ZWQuIFRoZXJlZm9yZSwgZnV6emluZyB0aGUgVVNCIHByb2JlIHByb2Nlc3Mgd2lsbCBhYnNvbHV0ZWx5IGhpdCB0aGlzIGNvZGUuCgpJIHRoaW5rIEkgaGF2ZSBteSBhbnN3ZXJzLgoKKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgCiogICBgRm9jdXNTeW1ib2xzOiBtdDc5MjVfaW5pdF9laHRfY2Fwc2AKKiAgIGBFbmFibGVDb25maWdzOiBNVDc5MjVVYAoqICAgYFJlYXNvbmluZzogVGhlIHBhdGNoIG1vZGlmaWVzIEVIVCBjYXBhYmlsaXRpZXMgaW5pdGlhbGl6YXRpb24uIEl0JiMzOTtzIHJlYWNoYWJsZSBkdXJpbmcgVVNCIGRldmljZSBwcm9iZSwgYW5kIGZ1enppbmcgdGhlIHByb2JlIHByb2Nlc3MgaXMgdmlhYmxlLmAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfaW5pdF9laHRfY2FwcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRUhUIGNhcGFiaWxpdGllcyBpbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUgYW5kIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfaW5pdF9laHRfY2FwcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRUhUIGNhcGFiaWxpdGllcyBpbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUgYW5kIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo0Ny43MDUxNTQ3NjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTIzMjg5NDMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2luaXRfZWh0X2NhcHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRUhUIGNhcGFiaWxpdGllcyBpbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUgYW5kIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjE5OjQ3LjcwNTE2MTc1NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA5ODQ0NDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTFhMWI4MTJlMTVjNmRkY2QwMTdmMWJiN2Y2Zjc2MWNhMTcxZDczY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAyNCAwODoxOTo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcXG5pbmRleCBhOTA1OTg2NmI3MDE2MS4uNjE0MWU1ZDAyNGM3YmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXFxuQEAgLTE4NywxOSArMTg3LDIxIEBAIG10NzkyNV9pbml0X2VodF9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXFxuIFxcdFxcdGVodF9jYXBfZWxlbS1cXHUwMDNlcGh5X2NhcF9pbmZvWzBdIHw9XFxuIFxcdFxcdFxcdElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7XFxuIFxcbitcXHR2YWwgPSAoc3RzIFxcdTAwM2UgMykgPyBzdHMgLSAxIDogMztcXG4rXFxuIFxcdGVodF9jYXBfZWxlbS1cXHUwMDNlcGh5X2NhcF9pbmZvWzBdIHw9XFxuLVxcdFxcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHN0cyAtIDEsIEJJVCgwKSksXFxuK1xcdFxcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgQklUKDApKSxcXG4gXFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLKTtcXG4gXFxuIFxcdGVodF9jYXBfZWxlbS1cXHUwMDNlcGh5X2NhcF9pbmZvWzFdID1cXG4tXFx0XFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHMoc3RzIC0gMSwgR0VOTUFTSygyLCAxKSksXFxuK1xcdFxcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgR0VOTUFTSygyLCAxKSksXFxuIFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfODBNSFpfTUFTSykgfFxcbi1cXHRcXHR1OF9lbmNvZGVfYml0cyhzdHMgLSAxLFxcbitcXHRcXHR1OF9lbmNvZGVfYml0cyh2YWwsXFxuIFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfMTYwTUhaX01BU0spO1xcbiBcXG4gXFx0aWYgKGJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFogXFx1MDAyNlxcdTAwMjYgaXNfMzIwbWh6X3N1cHBvcnRlZChcXHUwMDI2cGh5LVxcdTAwM2VkZXYtXFx1MDAzZW10NzYpKVxcbiBcXHRcXHRlaHRfY2FwX2VsZW0tXFx1MDAzZXBoeV9jYXBfaW5mb1sxXSB8PVxcbi1cXHRcXHRcXHR1OF9lbmNvZGVfYml0cyhzdHMgLSAxLFxcbitcXHRcXHRcXHR1OF9lbmNvZGVfYml0cyh2YWwsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfMzIwTUhaX01BU0spO1xcbiBcXG4gXFx0ZWh0X2NhcF9lbGVtLVxcdTAwM2VwaHlfY2FwX2luZm9bMl0gPVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo0OC40MTYwMDg5MTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NDUyMjAyNjU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2luaXRfZWh0X2NhcHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRUhUIGNhcGFiaWxpdGllcyBpbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUgYW5kIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTFhMWI4MTJlMTVjNmRkY2QwMTdmMWJiN2Y2Zjc2MWNhMTcxZDczY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDA4OjE5OjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5pbmRleCBhOTA1OTg2NmI3MDE2MS4uNjE0MWU1ZDAyNGM3YmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuQEAgLTE4NywxOSArMTg3LDIxIEBAIG10NzkyNV9pbml0X2VodF9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXG4gXHRcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMF0gfD1cbiBcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xuIFxuK1x0dmFsID0gKHN0cyBcdTAwM2UgMykgPyBzdHMgLSAxIDogMztcbitcbiBcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMF0gfD1cbi1cdFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHMoc3RzIC0gMSwgQklUKDApKSxcbitcdFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHModmFsLCBCSVQoMCkpLFxuIFx0XHRcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAwX0JFQU1GT1JNRUVfU1NfODBNSFpfTUFTSyk7XG4gXG4gXHRlaHRfY2FwX2VsZW0tXHUwMDNlcGh5X2NhcF9pbmZvWzFdID1cbi1cdFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHMoc3RzIC0gMSwgR0VOTUFTSygyLCAxKSksXG4rXHRcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgR0VOTUFTSygyLCAxKSksXG4gXHRcdFx0ICAgICAgIElFRUU4MDIxMV9FSFRfUEhZX0NBUDFfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLKSB8XG4tXHRcdHU4X2VuY29kZV9iaXRzKHN0cyAtIDEsXG4rXHRcdHU4X2VuY29kZV9iaXRzKHZhbCxcbiBcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzE2ME1IWl9NQVNLKTtcbiBcbiBcdGlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haIFx1MDAyNlx1MDAyNiBpc18zMjBtaHpfc3VwcG9ydGVkKFx1MDAyNnBoeS1cdTAwM2VkZXYtXHUwMDNlbXQ3NikpXG4gXHRcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMV0gfD1cbi1cdFx0XHR1OF9lbmNvZGVfYml0cyhzdHMgLSAxLFxuK1x0XHRcdHU4X2VuY29kZV9iaXRzKHZhbCxcbiBcdFx0XHRcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfMzIwTUhaX01BU0spO1xuIFxuIFx0ZWh0X2NhcF9lbGVtLVx1MDAzZXBoeV9jYXBfaW5mb1syXSA9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo0OC40MTYwMTE2NDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTk0MDUyNTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIGEgTWVkaWFUZWsgTVQ3OTI1IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYG10NzkyNV9pbml0X2VodF9jYXBzYCBmdW5jdGlvbi4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSB0d2Vha2luZyBob3cgdGhlIGBzdHNgIHZhbHVlIGlzIHVzZWQgdG8gcGFjayBiaXRzIGludG8gYGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9gLiBTcGVjaWZpY2FsbHksIHRoaXMgYHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7YCBsaW5lIGlzIHJhaXNpbmcgYSBmbGFnLiBUaGV5J3JlIGJhc2ljYWxseSBjbGFtcGluZyBvciByZW1hcHBpbmcgdGhlIGBzdHNgIHZhbHVlIGJlZm9yZSBpdOKAmXMgdXNlZC4gVGhpcyBjb3VsZCBiZSBhIHZlY3RvciBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciBhbmQgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS5cblxuTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgaG93IHRlc3RhYmxlIGlzIHRoaXM/IFRoaXMgaXMgYSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBtZWFucyBpdOKAmXMgbGlrZWx5IHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUuIEdldHRpbmcgdGhpcyB0aGluZyBmdXp6YWJsZSBpcyB0aGUgY2hhbGxlbmdlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSB3YXkgdG8gcmVhY2ggdGhpcyBkcml2ZXIgZWFzaWx5IGluIGEgdmlydHVhbGl6ZWQgb3Igc2ltdWxhdGVkIGVudmlyb25tZW50LiBJdCdzIG5vdCB1c3VhbGx5IHRyaXZpYWwgdG8gZnV6eiBXaS1GaSBjaGlwIGRyaXZlcnMsIGVzcGVjaWFsbHkgUENJIG9uZXMsIHVubGVzcyB0aGV5IGhhdmUgYSBVU0Igb3IgU0RJTyBlcXVpdmFsZW50IHRoYXQgY2FuIGJlIGVtdWxhdGVkLiBPZnRlbiwgZnV6emluZyBzcGVjaWZpYyBQQ0kgZHJpdmVycyBmb3IgV2ktRmkgaXMgYSB2ZXJ5IG5pY2hlIHB1cnN1aXQuIFdlIG1pZ2h0IGhhdmUgc29tZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIGJ1dCBJJ20gbm90IGltbWVkaWF0ZWx5IHRoaW5raW5nIG9mIGEgZ29vZCBwYXRoIGhlcmUuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdGhlIGRpcmVjdG9yeSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2AuIElmIHRoZXJlJ3MgYSBVU0IgdmVyc2lvbiBvZiB0aGlzIGRyaXZlciwgaXQgY291bGQgYmUgYSBnYW1lLWNoYW5nZXIuIFRoYXQgbWlnaHQgYmUgYSBtdWNoIG1vcmUgbWFuYWdlYWJsZSBlbnRyeSBwb2ludCBmb3IgZnV6emluZy4gSWYgSSBjYW4gZmluZCBhIFVTQiB2ZXJzaW9uIG9yIGEgY2xvc2UgZXF1aXZhbGVudCB0aGF04oCZcyBlYXNpZXIgdG8gc2ltdWxhdGUsIHRoaXMgd2hvbGUgdGhpbmcgYmVjb21lcyBtdWNoIG1vcmUgcHJvbWlzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzcxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MTk6NTguMDEwMDY2MTg2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwibWFjLmNcIixcbiAgICBcIm1hYy5oXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1jdS5jXCIsXG4gICAgXCJtY3UuaFwiLFxuICAgIFwibXQ3OTI1LmhcIixcbiAgICBcInBjaS5jXCIsXG4gICAgXCJwY2lfbWFjLmNcIixcbiAgICBcInBjaV9tY3UuY1wiLFxuICAgIFwicmVnZC5jXCIsXG4gICAgXCJyZWdkLmhcIixcbiAgICBcInJlZ3MuaFwiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidXNiLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MTk6NTguMDEwMTMxNjY2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NTQ1MDg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byBVU0IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5SaWdodCwgKmZpbmFsbHkqLCB0aGVyZSdzIGB1c2IuY2AhIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlJ3ZlIHBvdGVudGlhbGx5IGdvdCBhIHByb21pc2luZyB0YXJnZXQgaGVyZS4gVVNCIGVtdWxhdGlvbiwgbGlrZSB3aXRoIHNvbWV0aGluZyBiYXNlZCBvbiBkdW1teV9oY2Qgb3IgZXZlbiBsZXZlcmFnaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgY291bGQgcHJlc2VudCBhIHJlYWxseSBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZS4gVVNCIGRyaXZlcnMgYXJlIG9mdGVuIGNvbXBsZXggYW5kIHBvb3JseSB0ZXN0ZWQsIHJpcGUgZm9yIGZpbmRpbmcgdnVsbmVyYWJpbGl0aWVzLiBNeSBtaW5kIGlzIGFscmVhZHkgcmFjaW5nIHRocm91Z2ggcG90ZW50aWFsIGZhdWx0IGluamVjdGlvbiBzdHJhdGVnaWVzLlxuXG5MZXQncyBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCB0aGlzIHRoaW5nIGRvZXMuIFRoZSBgbXQ3OTI1X2luaXRfZWh0X2NhcHNgIGZ1bmN0aW9uLCB3aGljaCByZXNpZGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLCBpcyBteSBuZXh0IGZvY3VzLiBMZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIHRvIGZpbmQgYW55IHBvdGVudGlhbCBmbGF3cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE4OCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDowMi41ODU1ODQ2NzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5NDM1NjczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9pbml0X2VodF9jYXBzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTYwPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE2MTptdDc5MjVfaW5pdF9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNjItXFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI5OD1fX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzE1LVxcdFxcdG10NzkyNV9pbml0X2hlX2NhcHMocGh5LCBiYW5kLCBcXHUwMDI2ZGF0YVtuXSwgaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjMxNjpcXHRcXHRtdDc5MjVfaW5pdF9laHRfY2FwcyhwaHksIGJhbmQsIFxcdTAwMjZkYXRhW25dKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzE3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDowMi43NjUwMjcwNTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkyODE4MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBtdDc5MjUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCB0byBpdC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgcmVsYXRlZCB0byB0aGUgYG10NzkyNWAgZHJpdmVyLiBJIGtub3cgaXTigJlzIGxpa2VseSBzcHJlYWQgYWNyb3NzIGEgZmV3IGRpZmZlcmVudCBmaWxlcyBkZXBlbmRpbmcgb24gdGhlIGFyY2hpdGVjdHVyZSBhbmQgZmVhdHVyZSBzZXQsIHNvIEknbGwgbmVlZCB0byBiZSBtZXRob2RpY2FsLiBUaGlzIGlzbid0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgY29uZGl0aW9uYWwgYnVpbGQgbG9naWMgc3Vycm91bmRpbmcgdGhpcyBzcGVjaWZpYyB3aXJlbGVzcyBtb2R1bGUuIEFyZSB0aGVyZSBhbnkgZGVmYXVsdCBzZXR0aW5ncyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGZsYWdzIG9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cyB0aGF0IG1pZ2h0IHRyaXAgbWUgdXAgbGF0ZXI/IEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdmFyaW91cyBjb25maWd1cmF0aW9uIGNob2ljZXMuIElmIGEgbmV3IHByb2JsZW0gYXJpc2VzLCBJIG5lZWQgdG8gYmUgYWJsZSB0byB0cm91Ymxlc2hvb3QuIEknbSBsb29raW5nIGZvciBhIGNsZWFyIG1hcCBvZiB3aGF0J3MgYXZhaWxhYmxlIGFuZCBob3cgaXQgYWxsIGhhbmdzIHRvZ2V0aGVyIHNvIHRoYXQgSSBjYW4gcHJvdmlkZSBhbiBhY2N1cmF0ZSBhbnN3ZXIgdG8gdGhlIGlzc3VlLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBtb2R1bGUgaXMgaW50ZW5kZWQgdG8gYmVoYXZlIGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDowNy4wNTc4NDc5MTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzMzEzMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjA3LjM5MTE2NjgzM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjEyNjMzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdCBoZXJlLlxuXG4qKkFuYWx5emluZyB0aGUgTVQ3OTI1VSBVU0IgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYE1UNzkyNVVgIGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGZvciBVU0IuIE15IGluaXRpYWwgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBob3cgdGhpcyBhbGwgY29ubmVjdHMuIFRoZSBwcmltYXJ5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgYG10NzkyNV9pbml0X2VodF9jYXBzYCBpcyBhY3R1YWxseSBjYWxsZWQgYXMgcGFydCBvZiB0aGUgVVNCIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIEl0IGxvb2tzIGxpa2UgYF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNgIHRoZW4gY2FsbHMgYG10NzkyNV9pbml0X2VodF9jYXBzYC4gVGhhdCdzIHRoZSBsaW5rIEkgd2FzIGhvcGluZyBmb3IuIFNvIHRoZSBFbmhhbmNlZCBIaWdoIFRocm91Z2hwdXQgKEVIVCkgY2FwYWJpbGl0aWVzIGluaXRpYWxpemF0aW9uIGlzIGxpbmtlZCB0byBzdHJlYW0gc2V0dGluZy4gSSBub3cgaGF2ZSBhIGhhbmRsZSB0byB3b3JrIHdpdGgsIHRvIHNlZSB3aGVyZSB0aGUgVVNCIGluaXRpYWxpemF0aW9uIGNhbGxzIHJlc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ2NiwiT3V0cHV0VG9rZW5zIjo1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjExLjUxMjQzMjU4M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk3MDAwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2Fwc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI5Nz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyOTg6X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yOTktXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MzI0PXZvaWQgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjYtXFx0aWYgKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2FwLmhhc18yZ2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMjc6XFx0XFx0X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHksIFxcdTAwMjZwaHktXFx1MDAzZW10NzYtXFx1MDAzZXNiYW5kXzJnLnNiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjgtXFx0XFx0XFx0XFx0XFx0XFx0Tkw4MDIxMV9CQU5EXzJHSFopO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzMC1cXHRpZiAocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjYXAuaGFzXzVnaHopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjMzMTpcXHRcXHRfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfNWcuc2JhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzMi1cXHRcXHRcXHRcXHRcXHRcXHROTDgwMjExX0JBTkRfNUdIWik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzM0LVxcdGlmIChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNhcC5oYXNfNmdoeilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MzM1OlxcdFxcdF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMocGh5LCBcXHUwMDI2cGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VzYmFuZF82Zy5zYmFuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzM2LVxcdFxcdFxcdFxcdFxcdFxcdE5MODAyMTFfQkFORF82R0haKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MjA6MTEuNjEyMTM4NDEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Njc2OTYxODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhhdDpcblxuKipUcmFjaW5nIHRoZSBDYWxsIFBhdGggb2YgYG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2Fwc2AuICBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXM6IHdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gSXQncyBhIGtleSBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIHBvc2l0aW9uIGluIHRoZSBvdmVyYWxsIGRyaXZlciBzdHJ1Y3R1cmUgaXMgY3JpdGljYWwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBsb2NhdGlvbiB3aXRoaW4gdGhlIGNvZGUgYmFzZSB3aGVyZSB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGlzIGludm9rZWQuICBLbm93aW5nIHRoZSBjYWxsIHBhdGggd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UsIHRoZSBjb250ZXh0IGl0IG9wZXJhdGVzIGluLCBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gaGVyZSwgc3RlcCBieSBzdGVwLCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludC4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyAtIGBncmVwYCwgc291cmNlIGNvZGUgbmF2aWdhdGlvbiwgb3IgbWF5YmUgZXZlbiBhIGRlYnVnZ2VyIGlmIHRoaW5ncyBnZXQgdHJpY2t5IC0gdG8gdW5jb3ZlciB0aGUgZXhhY3QgY2FsbGluZyBmdW5jdGlvbnMgYW5kIHRoZWlyIHJvbGVzLiBLbm93aW5nIHRoZSBjYWxsIGNvbnRleHQgaXMgdGhlIHN0YXJ0IG9mIHRydWx5IHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmN0aW9uJ3Mgc2lnbmlmaWNhbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDUxLCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MjA6MTUuNDc5ODM3ODY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ5NTg4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0xNTU9c3RhdGljIHZvaWQgbXQ3OTI1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY1LVxcdG10NzZfc2V0X3N0cmVhbV9jYXBzKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNjY6XFx0bXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY3LVxcdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI5Nz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyOTg6X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yOTktXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMjQ6dm9pZCBtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjYtXFx0aWYgKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2FwLmhhc18yZ2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMjc6XFx0XFx0X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHksIFxcdTAwMjZwaHktXFx1MDAzZW10NzYtXFx1MDAzZXNiYW5kXzJnLnNiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjgtXFx0XFx0XFx0XFx0XFx0XFx0Tkw4MDIxMV9CQU5EXzJHSFopO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzMC1cXHRpZiAocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjYXAuaGFzXzVnaHopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjMzMTpcXHRcXHRfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfNWcuc2JhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzMi1cXHRcXHRcXHRcXHRcXHRcXHROTDgwMjExX0JBTkRfNUdIWik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzM0LVxcdGlmIChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNhcC5oYXNfNmdoeilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MzM1OlxcdFxcdF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMocGh5LCBcXHUwMDI2cGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VzYmFuZF82Zy5zYmFuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzM2LVxcdFxcdFxcdFxcdFxcdFxcdE5MODAyMTFfQkFORF82R0haKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xNjA3PW10NzkyNV9zZXRfYW50ZW5uYShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNjI1LVxcdG10NzZfc2V0X3N0cmVhbV9jYXBzKHBoeS1cXHUwMDNlbXQ3NiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE2MjY6XFx0bXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTYyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTMxMT12b2lkIG10NzkyNV9zdGF0c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzEyOnZvaWQgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzEzLWludCBtdDc5MjVfaW5pdF9tbG9fY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYz0yMT12b2lkIG10NzkyNV9yZWdkX2JlX2N0cmwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy02Mi1cXHRkZXYtXFx1MDAzZWhhc19laHQgPSBuZXc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jOjYzOlxcdG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTY0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MjA6MTUuNTk0ODAzMjQ2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDc4NTI3OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBCdWcgaW4gYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIGl0cyBleGVjdXRpb24uIEl0IHNlZW1zIHRoaXMgY29kZSBzbmlwcGV0LCBzcGVjaWZpY2FsbHkgdGhlIGxpbmUgYHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7YCwgaXMgcmVhY2hlZCBkdXJpbmcgc2V2ZXJhbCBpbml0aWFsaXphdGlvbiBhbmQgY29uZmlndXJhdGlvbiBwcm9jZXNzZXMgd2l0aGluIHRoZSBgbXQ3OTI1YCB3aXJlbGVzcyBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQncyBjYWxsZWQgZHVyaW5nIGBtdDc5MjVfaW5pdF93b3JrYCwgYG10NzkyNV9zZXRfYW50ZW5uYWAsIGFuZCBgbXQ3OTI1X3JlZ2RfYmVfY3RybGAsIHdoaWNoIGFyZSBhbGwgdHJpZ2dlcmVkIHdoZW4gdGhlIGRldmljZSBpcyBwcm9iZWQuIEdpdmVuIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYE1UNzkyNVVgIFVTQiBkcml2ZXIsIHN5emthbGxlciBjb3VsZCBkZWZpbml0ZWx5IGJlIHVzZWQgdG8gZW11bGF0ZSB0aGlzIGRldmljZSBhbmQgdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cblxuVGhlIHBhdGNoIGFpbXMgdG8gZml4IGEgc2l0dWF0aW9uIHdoZXJlIGBzdHNgICh3aGljaCBJJ20gYXNzdW1pbmcgaXMgdGhlIG51bWJlciBvZiBzcGF0aWFsIHN0cmVhbXMpIG1pZ2h0IGV4Y2VlZCBhIGNlcnRhaW4gYm91bmQsIGNhdXNpbmcgYSBiaXRmaWVsZCBvdmVyZmxvdyBiZWNhdXNlIGBzdHMgLSAxYCB3b3VsZCBiZSBvdXQgb2YgcmFuZ2UuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBzaW1wbHkgYHN0cyAtIDFgLiBUaGUgZml4IGlzIGEgdGVybmFyeSBvcGVyYXRvci5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJPa2F5LCBtYWtlcyBzZW5zZS4gTGV0J3MgbWFrZSBzdXJlIHRoaW5ncyBzdGF5IGluIGJvdW5kc1wiLiBIb3dldmVyLCBsZXQncyBzdGVwIHRocm91Z2ggdGhlIGxvZ2ljLiAgSWYgYHN0c2AgaXMgNCwgdGhlbiBgc3RzIFx1MDAzZSAzYCBpcyB0cnVlLCBzbyBgdmFsYCBiZWNvbWVzIGA0IC0gMSA9IDNgLiBJZiBgc3RzYCBpcyA1LCB0aGVuIGB2YWxgIHdvdWxkIGJlY29tZSA0LiBCdXQsIHdhaXQuLi5pZiBgc3RzYCBpcyAxLCB0aGVuIGBzdHMgXHUwMDNlIDNgIGlzIGZhbHNlLCBhbmQgYHZhbGAgZ2V0cyBzZXQgdG8gKjMqLiBIb2xkIG9uLiBUaGUgb3JpZ2luYWwgY29kZSB3b3VsZCBoYXZlIHNldCBgdmFsID0gc3RzIC0gMWAsIHdoaWNoIG1lYW5zIGl0IHdvdWxkIGhhdmUgYmVjb21lIDAuICBcblxuSSBoYXZlIHRvIGdvIGJhY2sgYW5kIGNoZWNrLiAgSXMgdGhpcyBjb3JyZWN0PyAgV2hhdCB0aGUgYXV0aG9yIGFjdHVhbGx5IHdyb3RlOiBgdmFsID0gKHN0cyBcdTAwM2UgMykgPyBzdHMgLSAxIDogMztgLlxuXG5Ob3csIGlmIGBzdHNgIGlzIDEsIGB2YWxgIGlzICpzZXQgdG8gMyouIFdoYXQncyBnb2luZyBvbiBoZXJlPyAgSXMgdGhpcyB3aGF0IHRoZSBhdXRob3IgaW50ZW5kZWQ/IE1heWJlLCBhIHR5cG8/IEkgd29uZGVyIGlmIHRoZSBhdXRob3Igd2FzIGFjdHVhbGx5IGdvaW5nIGZvciBgdmFsID0gKHN0cyBcdTAwM2UgMykgPyAzIDogc3RzIC0gMTtgLiBUaGVuLCB0aGUgYmVoYXZpb3Igd291bGQgYmUgY2FwcGVkIGF0IDMsIHdoaWNoIG1ha2VzIGEgbG90IG1vcmUgc2Vuc2UgZ2l2ZW4gbXkgYXNzdW1wdGlvbiB0aGF0IGB2YWxgIGlzIHVzZWQgZm9yIGJpdC1lbmNvZGluZyB0aGUgbnVtYmVyIG9mIHN0cmVhbXMuXG5cbkxldCdzIHJlLXJ1biB0aGUgbnVtYmVyczogIElmIGBzdHNgIGlzIDQsICpvcmlnaW5hbCBjb2RlKiBgc3RzIC0gMSA9IDNgLCBhbmQgdGhlIHBhdGNoIHdvdWxkIHlpZWxkIHRoZSB2YWx1ZSAzLiBJZiBgc3RzYCBpcyAxLCBgc3RzIC0gMSA9IDBgLiBXaXRoIHRoZSBwYXRjaCwgaWYgYHN0c2AgaXMgMSwgYHZhbCA9IDNgLiBObywgbm8gdGhhdCdzIG5vdCByaWdodC5cblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaCBvbmUgbW9yZSB0aW1lLiBUaGUgY29kZSBpcy4uLiBgdmFsID0gKHN0cyBcdTAwM2UgMykgPyBzdHMgLSAxIDogMztgLi4uIElmIGBzdHNgIGlzIDQsIGB2YWwgPSAzYC4gSWYgYHN0c2AgaXMgMSwgdGhlbiBgdmFsID0gM2AuIElmIGBzdHNgIGlzIDUsIGB2YWxgIGlzIDQuXG5cbk9rYXksIEknbSBwcmV0dHkgc3VyZSB0aGF0IHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGJ1Zy4gSXQgc2VlbXMgbGlrZSBhIGxvZ2ljIGVycm9yLiBTZXR0aW5nIGB2YWwgPSAzYCAqZXZlcnkqIHRpbWUgYHN0c2AgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMgZG9lc24ndCBtYWtlIHNlbnNlLCBjb25zaWRlcmluZyB0aGUgb3JpZ2luYWwgbG9naWMuIExvb2tzIGxpa2UgdGhpcyBuZWVkcyBhIGNsb3NlciBsb29rLCB0aGUgbG9naWMgZGVmaW5pdGVseSBuZWVkcyBjbGFyaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTkxLCJPdXRwdXRUb2tlbnMiOjU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjI4LjA3MzMzNDQ1MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMyNTgyMDAwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2YWwgPSBcXFxcKHN0cyBcXHUwMDNlIDNcXFxcKSBcXFxcPyAzIDogc3RzIC0gMTtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDoyOC40MDU5MjYxODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ0NDI1MjI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOYXZpZ2F0aW5nIHRoZSBDb25kaXRpb25hbCBMb2dpYyoqXG5cbk9rYXksIGxldCdzIHRha2UgYW5vdGhlciBsb29rIGF0IHRoaXMgcGF0Y2guIEknbSBnb2luZyB0aHJvdWdoIGl0IGFnYWluLCBhbmQgaGVyZSdzIHdoYXQgaXQgc2hvd3M6XG5gYGBjXG4rXHR2YWwgPSAoc3RzIFx1MDAzZSAzKSA/IDMgOiBzdHMgLSAxO1xuYGBgXG5Tb21ldGhpbmcgZG9lc24ndCBmZWVsIHJpZ2h0LiBMZXQgbWUgcmUtcmVhZCB0aGlzIGRpZmYuIEknbSBjaGVja2luZyBpdCBhZ2FpbjpcbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gMyA6IHN0cyAtIDE7XG5gYGBcbldhaXQsIGRpZCBJIG1pc2ludGVycHJldCBpdCB0aGUgZmlyc3QgdGltZT8gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gTGV0IG1lIGNvbmZpcm0gd2l0aCB0aGUgcHJvbXB0IGl0c2VsZi5cbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gMyA6IHN0cyAtIDE7XG5gYGBcbk5vdyB3YWl0IGEgc2Vjb25kLi4uIFRoaXMgbG9va3MgbGlrZTpcbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7XG5gYGBcbk5vLCB0aGF0IGNhbid0IGJlIHJpZ2h0Li4uIExldCBtZSByZS1jaGVjayB0aGUgcHJvbXB0LlxuYGBgY1xuK1x0dmFsID0gKHN0cyBcdTAwM2UgMykgPyAzIDogc3RzIC0gMTtcbmBgYFxuV2FpdCwgdGhlIHByb21wdCBzYXlzLi4uXG5gYGBjXG4rXHR2YWwgPSAoc3RzIFx1MDAzZSAzKSA/IHN0cyAtIDEgOiAzO1xuYGBgXG5Obywgd2FpdCEgVGhlIHByb21wdCAqYWN0dWFsbHkqIHNheXMuLi5cbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gMyA6IHN0cyAtIDE7XG5gYGBcbk9rYXksIGxldCBtZSBqdXN0IGNvcHkgaXQgZnJvbSB0aGUgcHJvbXB0IHNvIEkgZG9uJ3QgbWlzcmVhZCBpdCBhZ2Fpbi4gV2FpdCwgSSBjYW4ndCBjb3B5IGl0Li4uIE9rYXksIGxldCBtZSBjYXJlZnVsbHkgcmVyZWFkIHRoZSBwcm9tcHQuXG5gYGBjXG4rXHR2YWwgPSAoc3RzIFx1MDAzZSAzKSA/IDMgOiBzdHMgLSAxO1xuYGBgXG5SaWdodC4gV2FpdCwgbm93IEkgdGhpbmsuLi5cbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7XG5gYGBcbk5vLCBubywgaXQncy4uLlxuYGBgY1xuK1x0dmFsID0gKHN0cyBcdTAwM2UgMykgPyAzIDogc3RzIC0gMTtcbmBgYFxuSSBuZWVkIHRvIGVsaW1pbmF0ZSBhbnkgY2hhbmNlIG9mIGVycm9yIGluIG15IHJlYWRpbmcuIEknbSBnb2luZyB0byBydW4gYSBzY3JpcHQsIG9yIHVzZSBhIHRvb2wgdG8gcmVhZCB0aGUgZmlsZSBhbmQgYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk4MSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDozNS44NTAxODE2MDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODA6XFx0XFxuIDE4MTpcXHRcXHRlaHRfY2FwX2VsZW0tXFx1MDAzZXBoeV9jYXBfaW5mb1swXSA9XFxuIDE4MjpcXHRcXHRcXHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwX05EUF80X0VIVF9MRlRfMzJfR0kgfFxcbiAxODM6XFx0XFx0XFx0SUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9TVV9CRUFNRk9STUVSIHxcXG4gMTg0OlxcdFxcdFxcdElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfU1VfQkVBTUZPUk1FRTtcXG4gMTg1OlxcdFxcbiAxODY6XFx0XFx0aWYgKGJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFogXFx1MDAyNlxcdTAwMjYgaXNfMzIwbWh6X3N1cHBvcnRlZChcXHUwMDI2cGh5LVxcdTAwM2VkZXYtXFx1MDAzZW10NzYpKVxcbiAxODc6XFx0XFx0XFx0ZWh0X2NhcF9lbGVtLVxcdTAwM2VwaHlfY2FwX2luZm9bMF0gfD1cXG4gMTg4OlxcdFxcdFxcdFxcdElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7XFxuIDE4OTpcXHRcXG4gMTkwOlxcdFxcdHZhbCA9IChzdHMgXFx1MDAzZSAzKSA/IHN0cyAtIDEgOiAzO1xcbiAxOTE6XFx0XFxuIDE5MjpcXHRcXHRlaHRfY2FwX2VsZW0tXFx1MDAzZXBoeV9jYXBfaW5mb1swXSB8PVxcbiAxOTM6XFx0XFx0XFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHModmFsLCBCSVQoMCkpLFxcbiAxOTQ6XFx0XFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLKTtcXG4gMTk1OlxcdFxcbiAxOTY6XFx0XFx0ZWh0X2NhcF9lbGVtLVxcdTAwM2VwaHlfY2FwX2luZm9bMV0gPVxcbiAxOTc6XFx0XFx0XFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHModmFsLCBHRU5NQVNLKDIsIDEpKSxcXG4gMTk4OlxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfODBNSFpfTUFTSykgfFxcbiAxOTk6XFx0XFx0XFx0dThfZW5jb2RlX2JpdHModmFsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDozNS44NTAzNzI4MTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4Mjk4MDIzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNwYXRpYWwgU3RyZWFtIENhbGN1bGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBsaW5lIG9mIGNvZGU6IGB2YWwgPSAoc3RzIFx1MDAzZSAzKSA/IHN0cyAtIDEgOiAzO2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGEgdGVybmFyeSBvcGVyYXRvci4gTGV0J3MgYnJlYWsgaXQgZG93bi4gSWYgYHN0c2AgaXMgNCwgdGhlbiB0aGUgY29uZGl0aW9uIGBzdHMgXHUwMDNlIDNgIGlzIHRydWUsIHNvIGB2YWxgIGJlY29tZXMgYDQgLSAxYCwgd2hpY2ggaXMgMy4gSWYgYHN0c2AgaXMgNSwgaXQncyBgNSAtIDEgPSA0YC4gQW5kIGlmIGBzdHNgIGlzLCBzYXksIDEsIHRoZW4gdGhlIGNvbmRpdGlvbiBpcyBmYWxzZSwgYW5kIGB2YWxgIGlzIHNldCB0byAzLiBBbHJpZ2h0LCBzbyBpZiBgc3RzYCBpcyAyLCBvciAzIGl0J3MgYWxzbyAzLiBTbywgaWYgYHN0c2AgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMsIGB2YWxgIGlzIGFsd2F5cyAzLiBCdXQsIGlmIGBzdHNgIGlzIGdyZWF0ZXIgdGhhbiAzLCBgdmFsYCBpcyBgc3RzIC0gMWAuXG5cbkxldCBtZSBqdXN0IHJ1biB0aHJvdWdoIGEgZmV3IG1vcmUgZXhhbXBsZXMgaW4gbXkgaGVhZC4gSWYgYHN0c2AgaXMgMSwgYHZhbCA9IDNgLiAyIGFsc28gZXF1YWxzIDMsIGFuZCAzIGFsc28uIFRoZW4gNCBsZWFkcyB0byAzLCA1IGdpdmVzIDQsIGFuZCA4IGdpdmVzIDcuIFJpZ2h0LCBzbyBgdmFsYCBpcyBhbHdheXMgYXQgbGVhc3QgMy4gTm93LCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgYHN0c2AgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHNwYXRpYWwgc3RyZWFtcy4gU28sIGlmIHdlIGhhdmUgb25seSBvbmUgc3BhdGlhbCBzdHJlYW0sIGB2YWxgIGlzIDMuIEkgc3VwcG9zZSB0aGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gZmlndXJlIG91dCB3aGF0IHRoZSB2YWx1ZSBvZiBgc3RzYCBhY3R1YWxseSBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NTAsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDo0MS44MzMzNTU5NjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjA6XFx0c3RhdGljIHZvaWRcXG4gMTYxOlxcdG10NzkyNV9pbml0X2VodF9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXFxuIDE2MjpcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfc2JhbmRfaWZ0eXBlX2RhdGEgKmRhdGEpXFxuIDE2MzpcXHR7XFxuIDE2NDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YV9laHRfY2FwICplaHRfY2FwID0gXFx1MDAyNmRhdGEtXFx1MDAzZWVodF9jYXA7XFxuIDE2NTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2VodF9jYXBfZWxlbV9maXhlZCAqZWh0X2NhcF9lbGVtID0gXFx1MDAyNmVodF9jYXAtXFx1MDAzZWVodF9jYXBfZWxlbTtcXG4gMTY2OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfZWh0X21jc19uc3Nfc3VwcCAqZWh0X25zcyA9IFxcdTAwMjZlaHRfY2FwLVxcdTAwM2VlaHRfbWNzX25zc19zdXBwO1xcbiAxNjc6XFx0XFx0ZW51bSBubDgwMjExX2NoYW5fd2lkdGggd2lkdGggPSBwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNoYW5kZWYud2lkdGg7XFxuIDE2ODpcXHRcXHRpbnQgbnNzID0gaHdlaWdodDgocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VhbnRlbm5hX21hc2spO1xcbiAxNjk6XFx0XFx0aW50IHN0cyA9IGh3ZWlnaHQxNihwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNoYWlubWFzayk7XFxuIDE3MDpcXHRcXHR1OCB2YWw7XFxuIDE3MTpcXHRcXG4gMTcyOlxcdFxcdGlmICghcGh5LVxcdTAwM2VkZXYtXFx1MDAzZWhhc19laHQpXFxuIDE3MzpcXHRcXHRcXHRyZXR1cm47XFxuIDE3NDpcXHRcXG4gMTc1OlxcdFxcdGVodF9jYXAtXFx1MDAzZWhhc19laHQgPSB0cnVlO1xcbiAxNzY6XFx0XFxuIDE3NzpcXHRcXHRlaHRfY2FwX2VsZW0tXFx1MDAzZW1hY19jYXBfaW5mb1swXSA9XFxuIDE3ODpcXHRcXHRcXHRJRUVFODAyMTFfRUhUX01BQ19DQVAwX0VQQ1NfUFJJT19BQ0NFU1MgfFxcbiAxNzk6XFx0XFx0XFx0SUVFRTgwMjExX0VIVF9NQUNfQ0FQMF9PTV9DT05UUk9MO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDo0MS44MzM1Mzc2MTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2Nzc3ODcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWNvZGluZyB0aGUgQW50ZW5uYSBDaGFpbiBNYXNrKipcblxuT2theSwgc28gYHN0c2AgaXMgZGVyaXZlZCBmcm9tIGBod2VpZ2h0MTYocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhaW5tYXNrKWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlIOKAkyBgY2hhaW5tYXNrYCByZXByZXNlbnRzIHRoZSBhbnRlbm5hIGNoYWluIG1hc2ssIGFuZCBgaHdlaWdodDE2YCBsaWtlbHkgY291bnRzIHRoZSBudW1iZXIgb2YgYWN0aXZlIGNoYWlucy4gRm9yIHRoZSBNVDc5MjUsIHdoaWNoIEkga25vdyBpcyBhIDJ4MiBkZXZpY2UsIHRoaXMgbWVhbnMgYHN0c2AgY2FuIGJlIGF0IG1vc3QgMi5cblxuTm93LCBob2xkIG9uLi4uIGlmIGBzdHNgIGlzIGF0IG1vc3QgMiwgdGhlbiB0aGUgY29uZGl0aW9uYWwgYHN0cyBcdTAwM2UgM2Agd291bGQgKmFsd2F5cyogYmUgZmFsc2UsIGFuZCBzbyBgdmFsYCB3b3VsZCBiZSBhc3NpZ25lZCBhIHZhbHVlIG9mIDMuIEJ1dCB3aHkgYXJlIHdlIHNldHRpbmcgYHZhbGAgdG8gMywgaW5pdGlhbGx5PyBUaGF0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgY2xpY2suIFRoaXMgc21lbGxzIGxpa2UgYW4gRUhUICg4MDIuMTFiZSkgdGhpbmcuXG5cbkkgc2hvdWxkIGNoZWNrIHdoYXQgYElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLYCBhY3R1YWxseSByZXByZXNlbnRzLiBSaWdodCwgSSByZW1lbWJlciB0aGF0IHRoZSBCZWFtZm9ybWVlIFNTIGZpZWxkcyBpbiA4MDIuMTFiZSBpbmRpY2F0ZSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3BhdGlhbCBzdHJlYW1zIHN1cHBvcnRlZCB3aGVuIG9wZXJhdGluZyBhcyBhIGJlYW1mb3JtZWUuIE9rYXksIHRoZSB2YWx1ZSBpdHNlbGYgaXMgZW5jb2RlZCBpbiBhbiBgc3RzIC0gMWAgbWFubmVyPyBXYWl0LCB0aGF0IGRvZXNuJ3QgZmVlbCByaWdodC4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoaXMsIGVpdGhlciB0aHJvdWdoIHRoZSA4MDIuMTFiZSBkcmFmdCBzcGVjaWZpY2F0aW9uIG9yLCBtb3JlIGVmZmljaWVudGx5LCBieSBjaGVja2luZyB0aGUgcmVsZXZhbnQga2VybmVsIGRlZmluaXRpb25zIHRvIGVuc3VyZSBJJ20gZ2V0dGluZyB0aGUgbG9naWMgY29ycmVjdCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY0NSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjQ3LjcwMTMxODUxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTk4ODU3NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9pZWVlODAyMTEtZWh0Lmg9MTc4PXN0cnVjdCBpZWVlODAyMTFfZWh0X29wZXJhdGlvbl9pbmZvIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvaWVlZTgwMjExLWVodC5oLTIxMi0vKiBFSFQgYmVhbWZvcm1lZSBudW1iZXIgb2Ygc3BhdGlhbCBzdHJlYW1zIFxcdTAwM2M9IDgwTUh6IGlzIHNwbGl0ICovXFxuaW5jbHVkZS9saW51eC9pZWVlODAyMTEtZWh0Lmg6MjEzOiNkZWZpbmUgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0tcXHRcXHQweDgwXFxuaW5jbHVkZS9saW51eC9pZWVlODAyMTEtZWh0LmgtMjE0LSNkZWZpbmUgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0tcXHRcXHQweDAzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjQ3LjkwMTIwOTAzM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDIxMjk1ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBFSFQgQ2FwYWJpbGl0eSBJbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IEVIVCBjYXBhYmlsaXRpZXMgYXJlIGhhbmRsZWQgZm9yIHRoZSBNVDc5MjUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIGEgMy1iaXQgZmllbGQuIEl0IGxvb2tzIGxpa2UgaXQncyBzcGxpdCB3aXRoIDEgYml0IGluIENBUDAgYW5kIHRoZSByZW1haW5pbmcgMiBpbiBDQVAxLiBUaGUgY3VycmVudCB2YWx1ZSBpcyBgdmFsYC4gSWYgYHZhbGAgaGl0cyAzLCBteSBmaXJzdCB0aG91Z2h0IGlzIFwiNCBzcGF0aWFsIHN0cmVhbXM/XCIsIGJ1dCB3YWl0LCBJIGhhdmUgdG8gcmVtZW1iZXIgaG93IGl0J3MgZW5jb2RlZC4gSXQncyBlbmNvZGluZyAqMyosIG5vdCByZXByZXNlbnRpbmcgNC5cblxuVGhlbiBJIGdldCBodW5nIHVwIG9uIHRoaXMgdmFyaWFibGUgYHN0c2AuIEluIHRoZSBvbGQgY29kZSwgd2hlbiBgc3RzID0gMmAsIHRoZXkgd2VyZSBkb2luZyBgc3RzIC0gMWAsIHJlc3VsdGluZyBpbiAxLiBCdXQgd2l0aCB0aGUgcGF0Y2gsIHRoZSBgdmFsYCBpcyBzZXQgdG8gMy4gV2h5IHNldCBpdCB0byAzPyBEb2VzIHRoYXQgdmFsdWUgaGF2ZSBzcGVjaWFsIG1lYW5pbmcsIGxpa2Ug4oCcbm90IHN1cHBvcnRlZOKAnSBvciBhIG1heGltdW0gb2YgNCBzdHJlYW1zP1xuXG5IbW0sIG1heWJlIGl0IHJlbGF0ZXMgdG8gdGhlIGRldmljZSdzIGNhcGFiaWxpdGllcy4gSWYgaXQncyBhIDJ4MiBkZXZpY2UsIGNvdWxkIGl0IHBvdGVudGlhbGx5IGFjdCBhcyBhIGJlYW1mb3JtZWUgZm9yIHVwIHRvIDQgc3BhdGlhbCBzdHJlYW1zPyBJIHdpc2ggSSBoYWQgdGhlIGNvbW1pdCBtZXNzYWdlOyB0aGF0IHdvdWxkIGxpa2VseSBjbGVhciB0aGluZ3MgdXAuIE5vIHdvcnJpZXMsIEkgY2FuIGNoZWNrIHRoZSBwYXRjaC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHdpdGhpbiBgbXQ3OTI1X2luaXRfZWh0X2NhcHNgIGluIGBtdDc5MjUvbWFpbi5jYC5cblxuSXMgdGhpcyBzb21ldGhpbmcgd29ydGggZnV6emluZz8gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gRUhUIGNhcGFiaWxpdGllcyBmb3IgTWVkaWFUZWsncyBNVDc5MjUsIHdoaWNoIGlzIGEgV2ktRmkgNyBkZXZpY2UuIFllcywgYWJzb2x1dGVseS4gSSBjYW4gZW11bGF0ZSBpdCB1c2luZyBVU0IgKGBNVDc5MjVVYCkuIEknbGwgbmVlZCB0byBlbmFibGUgYENPTkZJR19NVDc5MjVVYCBmaXJzdC4gTm93LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhhdCBjb25maWcgaXNuJ3QgZGVwZW5kZW50IG9uIHNvbWV0aGluZyBlbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQzMSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDo1NS45MjI1MDg5OTZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjU1NTgzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTI1VVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjU2LjIyNTA3MjMwOVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjUzNjA4NDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBtdDc5MjUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCB0aGUgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciwgc28gdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2sgaXMgdGhlIGBLY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AuIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGlzIHRoZSBoZWFydCBvZiBkZWZpbmluZyBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBkcml2ZXIuIEJ5IGNoZWNraW5nIHRoaXMsIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBncmFzcCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLCB3aGF0IG90aGVyIG1vZHVsZXMgaXQgcmVsaWVzIG9uLCBhbmQgd2hhdCBwbGF0Zm9ybSBjb25maWd1cmF0aW9ucyBzdXBwb3J0IGl0LiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgTVQ3OTI1IGRyaXZlciBmaXRzIGludG8gdGhlIGxhcmdlciBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQgYW5kIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24gZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgc2hvdWxkIEkgbmVlZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzNDIsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMTowMC40Nzg2ODQzMDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzkyeF9MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFxuICAgNzpcXHRjb25maWcgTVQ3OTI1RVxcbiAgIDg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAgOTpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXFxuICAxNDpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMTU6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1UNzkyNVVcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXFxuICAyNzpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMjg6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MjE6MDAuNDc4ODE5MjY0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzA3NzYyNjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE1UNzkyNVUgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgTVQ3OTI1VSBkcml2ZXIuIEl0IHJlbGllcyBvbiBib3RoIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGUgc3BlY2lmaWMgY2hhbmdlIGlzIGluIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AsIGFuZCBJIHNlZSBpdCdzIHNlbGVjdGVkIGFzIGBNVDc5MjVfQ09NTU9OYC4gU28gdGhlIGZpcnN0IHN0ZXAgaXMgdG8gZW5hYmxlIGBNVDc5MjVVYCwgc2luY2UgdGhhdCdzIHRoZSB0YXJnZXQuIE5vdywgSSdtIHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcywgc28sIGlzIGl0IGV2ZW4gd29ydGggaXQ/IFdlbGwsIHllcy4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24uIEkgZG9uJ3Qgc2VlIGFueSBvdGhlciBmdW5jdGlvbiBtb2RpZmllZCwgb3IgZXZlbiBvdGhlciBmaWxlcy4gSnVzdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jYCwgZm9jdXNpbmcgb24gYG10NzkyNV9pbml0X2VodF9jYXBzYC5cblxuTGV0J3MgYnJlYWsgZG93biB0aGUgbG9naWMgb2YgdGhpcyBwYXRjaC4gVGhlIHJlbGV2YW50IGNvZGUgc25pcHBldCBpczpcbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7XG5gYGBcbk9rYXksIHNvIGxldCdzIHdhbGsgdGhyb3VnaCBpdC4gSWYgYHN0c2AgaXMgMSwgMiwgb3IgMywgdGhlbiBgdmFsYCBpcyAzLiBJZiBgc3RzYCBpcyA0LCBgdmFsYCBiZWNvbWVzIDMsIGFuZCBpZiBgc3RzYCBpcyA1LCB0aGVuIGl0IGJlY29tZXMgNC4gU28gYHZhbGAgaXMgYWx3YXlzIGF0IGxlYXN0IDMuIE5vdywgdGhpcyBgdmFsYCBsb29rcyBsaWtlIHRoZSBiZWFtZm9ybWVlIFNTIGZpZWxkLiBXaXRoIGEgMy1iaXQgZmllbGQgd2Uga25vdyB0aGF0OlxuKiAgIFZhbHVlIDA6IDEgc3BhdGlhbCBzdHJlYW1cbiogICBWYWx1ZSAxOiAyIHNwYXRpYWwgc3RyZWFtc1xuKiAgIFZhbHVlIDI6IDMgc3BhdGlhbCBzdHJlYW1zXG4qICAgVmFsdWUgMzogNCBzcGF0aWFsIHN0cmVhbXNcbiogICBWYWx1ZSA0OiA1IHNwYXRpYWwgc3RyZWFtc1xuKiAgIFZhbHVlIDU6IDYgc3BhdGlhbCBzdHJlYW1zXG4qICAgVmFsdWUgNjogNyBzcGF0aWFsIHN0cmVhbXNcbiogICBWYWx1ZSA3OiA4IHNwYXRpYWwgc3RyZWFtc1xuXG5JZiBgdmFsYCBpcyAzLCB0aGF0IHJlcHJlc2VudHMgNCBzcGF0aWFsIHN0cmVhbXMuIEEgMngyIGRldmljZSAoYHN0cz0yYCkgYWR2ZXJ0aXNpbmcgNCBzcGF0aWFsIHN0cmVhbXMgYXMgYSBiZWFtZm9ybWVlPyBUaGF0J3Mgd2hhdCBJJ20gcXVlc3Rpb25pbmcuIElzIHRoaXMgYmVjYXVzZSBvZiBhIHJlcXVpcmVtZW50IGluIDgwMi4xMWJlLCBvciBwZXJoYXBzIHRoZSBoYXJkd2FyZSBoYXMgYSBsaW1pdCBvZiB1cCB0byA0IHNwYXRpYWwgc3RyZWFtcyBmb3Igc291bmRpbmc/IFBlcmhhcHMgdGhlIDgwMi4xMWJlIGRyYWZ0ICpyZXF1aXJlcyogYXQgbGVhc3QgNCBzcGF0aWFsIHN0cmVhbXMgZm9yIGJlYW1mb3JtZWUsIG9yIG1heWJlIHRoZSBoYXJkd2FyZSBsaW1pdHMgaXQuIE5vIG1hdHRlciB3aGF0LCBpdCdzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBpbiB0aGUgZHJpdmVyIGFuZCB3b3J0aCBpbnZlc3RpZ2F0aW5nLlxuXG5Ob3csIGlzIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AgcmVhY2hhYmxlPyBJIGhhdmUgdG8gY29uZmlybSB0aGlzLiBJdCdzIGNhbGxlZCBieSBgX19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2Fwc2AsIHdoaWNoIGlzIGNhbGxlZCBieSBgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNgLCB3aGljaCBpcyB0aGVuIGNhbGxlZCBieSBgbXQ3OTI1X2luaXRfd29ya2AsIGBtdDc5MjVfc2V0X2FudGVubmFgLCBhbmQgYG10NzkyNV9yZWdkX2JlX2N0cmxgLiBgbXQ3OTI1X2luaXRfd29ya2AgaXMgc2NoZWR1bGVkICpkdXJpbmcqIHRoZSBkZXZpY2UgcHJvYmUuIFNvLCB3aGVuIHRoZSBVU0IgZGV2aWNlIGlzIHByb2JlZCwgdGhpcyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBpcyBleGVjdXRlZC4gVGhlcmVmb3JlLCBmdXp6aW5nIHRoZSBVU0IgcHJvYmUgcHJvY2VzcyB3aWxsIGFic29sdXRlbHkgaGl0IHRoaXMgY29kZS5cblxuSSB0aGluayBJIGhhdmUgbXkgYW5zd2Vycy5cblxuKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgXG4qICAgYEZvY3VzU3ltYm9sczogbXQ3OTI1X2luaXRfZWh0X2NhcHNgXG4qICAgYEVuYWJsZUNvbmZpZ3M6IE1UNzkyNVVgXG4qICAgYFJlYXNvbmluZzogVGhlIHBhdGNoIG1vZGlmaWVzIEVIVCBjYXBhYmlsaXRpZXMgaW5pdGlhbGl6YXRpb24uIEl0J3MgcmVhY2hhYmxlIGR1cmluZyBVU0IgZGV2aWNlIHByb2JlLCBhbmQgZnV6emluZyB0aGUgcHJvYmUgcHJvY2VzcyBpcyB2aWFibGUuYFxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDEwMCwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIxOjEyLjc4NjU4OTEzOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTQ0MTg2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNV9pbml0X2VodF9jYXBzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEVIVCBjYXBhYmlsaXRpZXMgaW5pdGlhbGl6YXRpb24gaW4gdGhlIE1UNzkyNSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIHRoZSBVU0IgZGV2aWNlIHByb2JlIGFuZCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfaW5pdF9laHRfY2Fwc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBFSFQgY2FwYWJpbGl0aWVzIGluaXRpYWxpemF0aW9uIGluIHRoZSBNVDc5MjUgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyB0aGUgVVNCIGRldmljZSBwcm9iZSBhbmQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowrjkd7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 07:42:22 +0000 UTC FinishedAt: 2026-07-24 08:21:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U" ], "series_id": "d3ca83cf-b254-4b42-8b08-db889d50a9c2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_init_eht_caps" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfaW5pdF9laHRfY2FwcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRUhUIGNhcGFiaWxpdGllcyBpbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUgYW5kIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMWExYjgxMmUxNWM2ZGRjZDAxN2YxYmI3ZjZmNzYxY2ExNzFkNzNjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMjQgMDg6MTk6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5pbmRleCBhOTA1OTg2NmI3MDE2MS4uNjE0MWU1ZDAyNGM3YmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuQEAgLTE4NywxOSAmIzQzOzE4NywyMSBAQCBtdDc5MjVfaW5pdF9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxuIFx0XHRlaHRfY2FwX2VsZW0tXHUwMDNlcGh5X2NhcF9pbmZvWzBdIHw9XG4gXHRcdFx0SUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcbiBcbiYjNDM7XHR2YWwgPSAoc3RzIFx1MDAzZSAzKSA/IHN0cyAtIDEgOiAzO1xuJiM0MztcbiBcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMF0gfD1cbi1cdFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHMoc3RzIC0gMSwgQklUKDApKSxcbiYjNDM7XHRcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgQklUKDApKSxcbiBcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0spO1xuIFxuIFx0ZWh0X2NhcF9lbGVtLVx1MDAzZXBoeV9jYXBfaW5mb1sxXSA9XG4tXHRcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHN0cyAtIDEsIEdFTk1BU0soMiwgMSkpLFxuJiM0MztcdFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHModmFsLCBHRU5NQVNLKDIsIDEpKSxcbiBcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0spIHxcbi1cdFx0dThfZW5jb2RlX2JpdHMoc3RzIC0gMSxcbiYjNDM7XHRcdHU4X2VuY29kZV9iaXRzKHZhbCxcbiBcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzE2ME1IWl9NQVNLKTtcbiBcbiBcdGlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haIFx1MDAyNlx1MDAyNiBpc18zMjBtaHpfc3VwcG9ydGVkKFx1MDAyNnBoeS1cdTAwM2VkZXYtXHUwMDNlbXQ3NikpXG4gXHRcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMV0gfD1cbi1cdFx0XHR1OF9lbmNvZGVfYml0cyhzdHMgLSAxLFxuJiM0MztcdFx0XHR1OF9lbmNvZGVfYml0cyh2YWwsXG4gXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzMyME1IWl9NQVNLKTtcbiBcbiBcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMl0gPVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjE5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X2luaXRfZWh0X2NhcHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEVIVCBjYXBhYmlsaXRpZXMgaW5pdGlhbGl6YXRpb24gaW4gdGhlIE1UNzkyNSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIHRoZSBVU0IgZGV2aWNlIHByb2JlIGFuZCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMWExYjgxMmUxNWM2ZGRjZDAxN2YxYmI3ZjZmNzYxY2ExNzFkNzNjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMjQgMDg6MTk6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMKaW5kZXggYTkwNTk4NjZiNzAxNjEuLjYxNDFlNWQwMjRjN2JhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jCkBAIC0xODcsMTkgJiM0MzsxODcsMjEgQEAgbXQ3OTI1X2luaXRfZWh0X2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgZW51bSBubDgwMjExX2JhbmQgYmFuZCwKIAkJZWh0X2NhcF9lbGVtLSZndDtwaHlfY2FwX2luZm9bMF0gfD0KIAkJCUlFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7CiAKJiM0MzsJdmFsID0gKHN0cyAmZ3Q7IDMpID8gc3RzIC0gMSA6IDM7CiYjNDM7CiAJZWh0X2NhcF9lbGVtLSZndDtwaHlfY2FwX2luZm9bMF0gfD0KLQkJdThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHMoc3RzIC0gMSwgQklUKDApKSwKJiM0MzsJCXU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgQklUKDApKSwKIAkJCSAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAwX0JFQU1GT1JNRUVfU1NfODBNSFpfTUFTSyk7CiAKIAllaHRfY2FwX2VsZW0tJmd0O3BoeV9jYXBfaW5mb1sxXSA9Ci0JCXU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHN0cyAtIDEsIEdFTk1BU0soMiwgMSkpLAomIzQzOwkJdThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHModmFsLCBHRU5NQVNLKDIsIDEpKSwKIAkJCSAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfODBNSFpfTUFTSykgfAotCQl1OF9lbmNvZGVfYml0cyhzdHMgLSAxLAomIzQzOwkJdThfZW5jb2RlX2JpdHModmFsLAogCQkJICAgICAgIElFRUU4MDIxMV9FSFRfUEhZX0NBUDFfQkVBTUZPUk1FRV9TU18xNjBNSFpfTUFTSyk7CiAKIAlpZiAoYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWiAmYW1wOyZhbXA7IGlzXzMyMG1oel9zdXBwb3J0ZWQoJmFtcDtwaHktJmd0O2Rldi0mZ3Q7bXQ3NikpCiAJCWVodF9jYXBfZWxlbS0mZ3Q7cGh5X2NhcF9pbmZvWzFdIHw9Ci0JCQl1OF9lbmNvZGVfYml0cyhzdHMgLSAxLAomIzQzOwkJCXU4X2VuY29kZV9iaXRzKHZhbCwKIAkJCQkgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzMyME1IWl9NQVNLKTsKIAogCWVodF9jYXBfZWxlbS0mZ3Q7cGh5X2NhcF9pbmZvWzJdID0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiBhIE1lZGlhVGVrIE1UNzkyNSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYG10NzkyNV9pbml0X2VodF9jYXBzYCBmdW5jdGlvbi4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHdlYWtpbmcgaG93IHRoZSBgc3RzYCB2YWx1ZSBpcyB1c2VkIHRvIHBhY2sgYml0cyBpbnRvIGBlaHRfY2FwX2VsZW0tJmd0O3BoeV9jYXBfaW5mb2AuIFNwZWNpZmljYWxseSwgdGhpcyBgdmFsID0gKHN0cyAmZ3Q7IDMpID8gc3RzIC0gMSA6IDM7YCBsaW5lIGlzIHJhaXNpbmcgYSBmbGFnLiBUaGV5JiMzOTtyZSBiYXNpY2FsbHkgY2xhbXBpbmcgb3IgcmVtYXBwaW5nIHRoZSBgc3RzYCB2YWx1ZSBiZWZvcmUgaXTigJlzIHVzZWQuIFRoaXMgY291bGQgYmUgYSB2ZWN0b3IgZm9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBob3cgdGVzdGFibGUgaXMgdGhpcz8gVGhpcyBpcyBhIE1lZGlhVGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIG1lYW5zIGl04oCZcyBsaWtlbHkgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gR2V0dGluZyB0aGlzIHRoaW5nIGZ1enphYmxlIGlzIHRoZSBjaGFsbGVuZ2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFueSB3YXkgdG8gcmVhY2ggdGhpcyBkcml2ZXIgZWFzaWx5IGluIGEgdmlydHVhbGl6ZWQgb3Igc2ltdWxhdGVkIGVudmlyb25tZW50LiBJdCYjMzk7cyBub3QgdXN1YWxseSB0cml2aWFsIHRvIGZ1enogV2ktRmkgY2hpcCBkcml2ZXJzLCBlc3BlY2lhbGx5IFBDSSBvbmVzLCB1bmxlc3MgdGhleSBoYXZlIGEgVVNCIG9yIFNESU8gZXF1aXZhbGVudCB0aGF0IGNhbiBiZSBlbXVsYXRlZC4gT2Z0ZW4sIGZ1enppbmcgc3BlY2lmaWMgUENJIGRyaXZlcnMgZm9yIFdpLUZpIGlzIGEgdmVyeSBuaWNoZSBwdXJzdWl0LiBXZSBtaWdodCBoYXZlIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBidXQgSSYjMzk7bSBub3QgaW1tZWRpYXRlbHkgdGhpbmtpbmcgb2YgYSBnb29kIHBhdGggaGVyZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBkaXJlY3RvcnksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gLiBJZiB0aGVyZSYjMzk7cyBhIFVTQiB2ZXJzaW9uIG9mIHRoaXMgZHJpdmVyLCBpdCBjb3VsZCBiZSBhIGdhbWUtY2hhbmdlci4gVGhhdCBtaWdodCBiZSBhIG11Y2ggbW9yZSBtYW5hZ2VhYmxlIGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLiBJZiBJIGNhbiBmaW5kIGEgVVNCIHZlcnNpb24gb3IgYSBjbG9zZSBlcXVpdmFsZW50IHRoYXTigJlzIGVhc2llciB0byBzaW11bGF0ZSwgdGhpcyB3aG9sZSB0aGluZyBiZWNvbWVzIG11Y2ggbW9yZSBwcm9taXNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7ZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O2luaXQuYyYjMzQ7LAogICAgJiMzNDttYWMuYyYjMzQ7LAogICAgJiMzNDttYWMuaCYjMzQ7LAogICAgJiMzNDttYWluLmMmIzM0OywKICAgICYjMzQ7bWN1LmMmIzM0OywKICAgICYjMzQ7bWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3OTI1LmgmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7cGNpX21hYy5jJiMzNDssCiAgICAmIzM0O3BjaV9tY3UuYyYjMzQ7LAogICAgJiMzNDtyZWdkLmMmIzM0OywKICAgICYjMzQ7cmVnZC5oJiMzNDssCiAgICAmIzM0O3JlZ3MuaCYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTg4CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byBVU0IgRnV6emluZyBQb3RlbnRpYWwqKgoKUmlnaHQsICpmaW5hbGx5KiwgdGhlcmUmIzM5O3MgYHVzYi5jYCEgTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgd2UmIzM5O3ZlIHBvdGVudGlhbGx5IGdvdCBhIHByb21pc2luZyB0YXJnZXQgaGVyZS4gVVNCIGVtdWxhdGlvbiwgbGlrZSB3aXRoIHNvbWV0aGluZyBiYXNlZCBvbiBkdW1teV9oY2Qgb3IgZXZlbiBsZXZlcmFnaW5nIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGNvdWxkIHByZXNlbnQgYSByZWFsbHkgaW50ZXJlc3RpbmcgYXR0YWNrIHN1cmZhY2UuIFVTQiBkcml2ZXJzIGFyZSBvZnRlbiBjb21wbGV4IGFuZCBwb29ybHkgdGVzdGVkLCByaXBlIGZvciBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcy4gTXkgbWluZCBpcyBhbHJlYWR5IHJhY2luZyB0aHJvdWdoIHBvdGVudGlhbCBmYXVsdCBpbmplY3Rpb24gc3RyYXRlZ2llcy4KCkxldCYjMzk7cyBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCB0aGlzIHRoaW5nIGRvZXMuIFRoZSBgbXQ3OTI1X2luaXRfZWh0X2NhcHNgIGZ1bmN0aW9uLCB3aGljaCByZXNpZGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLCBpcyBteSBuZXh0IGZvY3VzLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB0byBmaW5kIGFueSBwb3RlbnRpYWwgZmxhd3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X2luaXRfZWh0X2NhcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE2MD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE2MTptdDc5MjVfaW5pdF9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE2Mi1cdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yOTg9X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMTUtXHRcdG10NzkyNV9pbml0X2hlX2NhcHMocGh5LCBiYW5kLCBcdTAwMjZkYXRhW25dLCBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMTY6XHRcdG10NzkyNV9pbml0X2VodF9jYXBzKHBoeSwgYmFuZCwgXHUwMDI2ZGF0YVtuXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzE3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NjMKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBEaXZlIGZvciBtdDc5MjUqKgoKT2theSwgdGltZSB0byBnZXQgdG8gaXQuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gdGhlIGBtdDc5MjVgIGRyaXZlci4gSSBrbm93IGl04oCZcyBsaWtlbHkgc3ByZWFkIGFjcm9zcyBhIGZldyBkaWZmZXJlbnQgZmlsZXMgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGZlYXR1cmUgc2V0LCBzbyBJJiMzOTtsbCBuZWVkIHRvIGJlIG1ldGhvZGljYWwuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgY29uZGl0aW9uYWwgYnVpbGQgbG9naWMgc3Vycm91bmRpbmcgdGhpcyBzcGVjaWZpYyB3aXJlbGVzcyBtb2R1bGUuIEFyZSB0aGVyZSBhbnkgZGVmYXVsdCBzZXR0aW5ncyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGZsYWdzIG9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cyB0aGF0IG1pZ2h0IHRyaXAgbWUgdXAgbGF0ZXI/IEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdmFyaW91cyBjb25maWd1cmF0aW9uIGNob2ljZXMuIElmIGEgbmV3IHByb2JsZW0gYXJpc2VzLCBJIG5lZWQgdG8gYmUgYWJsZSB0byB0cm91Ymxlc2hvb3QuIEkmIzM5O20gbG9va2luZyBmb3IgYSBjbGVhciBtYXAgb2Ygd2hhdCYjMzk7cyBhdmFpbGFibGUgYW5kIGhvdyBpdCBhbGwgaGFuZ3MgdG9nZXRoZXIgc28gdGhhdCBJIGNhbiBwcm92aWRlIGFuIGFjY3VyYXRlIGFuc3dlciB0byB0aGUgaXNzdWUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIG1vZHVsZSBpcyBpbnRlbmRlZCB0byBiZWhhdmUgaW4gZGlmZmVyZW50IGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Mjpjb25maWcgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NjYKCQkJCQkJCW91dHB1dDogNTYKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QgaGVyZS4KCioqQW5hbHl6aW5nIHRoZSBNVDc5MjVVIFVTQiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBNVDc5MjVVYCBkcml2ZXIsIHdoaWNoIGlzIHNwZWNpZmljYWxseSBmb3IgVVNCLiBNeSBpbml0aWFsIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgaG93IHRoaXMgYWxsIGNvbm5lY3RzLiBUaGUgcHJpbWFyeSBxdWVzdGlvbiBpcyB3aGV0aGVyIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AgaXMgYWN0dWFsbHkgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIFVTQiBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBJdCBsb29rcyBsaWtlIGBfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzYCB0aGVuIGNhbGxzIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AuIFRoYXQmIzM5O3MgdGhlIGxpbmsgSSB3YXMgaG9waW5nIGZvci4gU28gdGhlIEVuaGFuY2VkIEhpZ2ggVGhyb3VnaHB1dCAoRUhUKSBjYXBhYmlsaXRpZXMgaW5pdGlhbGl6YXRpb24gaXMgbGlua2VkIHRvIHN0cmVhbSBzZXR0aW5nLiBJIG5vdyBoYXZlIGEgaGFuZGxlIHRvIHdvcmsgd2l0aCwgdG8gc2VlIHdoZXJlIHRoZSBVU0IgaW5pdGlhbGl6YXRpb24gY2FsbHMgcmVzaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yOTc9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyOTg6X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI5OS1cdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0zMjQ9dm9pZCBtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjYtXHRpZiAocGh5LVx1MDAzZW10NzYtXHUwMDNlY2FwLmhhc18yZ2h6KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjMyNzpcdFx0X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHksIFx1MDAyNnBoeS1cdTAwM2VtdDc2LVx1MDAzZXNiYW5kXzJnLnNiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMyOC1cdFx0XHRcdFx0XHROTDgwMjExX0JBTkRfMkdIWik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzMC1cdGlmIChwaHktXHUwMDNlbXQ3Ni1cdTAwM2VjYXAuaGFzXzVnaHopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MzMxOlx0XHRfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHBoeSwgXHUwMDI2cGh5LVx1MDAzZW10NzYtXHUwMDNlc2JhbmRfNWcuc2JhbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzMyLVx0XHRcdFx0XHRcdE5MODAyMTFfQkFORF81R0haKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzM0LVx0aWYgKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNhcC5oYXNfNmdoeilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMzU6XHRcdF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMocGh5LCBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzYmFuZF82Zy5zYmFuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMzYtXHRcdFx0XHRcdFx0Tkw4MDIxMV9CQU5EXzZHSFopO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDUxCgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoYXQ6CgoqKlRyYWNpbmcgdGhlIENhbGwgUGF0aCBvZiBgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNgLiAgVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzOiB3aGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5ICpjYWxsZWQqIGZyb20/IEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uLCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgcG9zaXRpb24gaW4gdGhlIG92ZXJhbGwgZHJpdmVyIHN0cnVjdHVyZSBpcyBjcml0aWNhbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGxvY2F0aW9uIHdpdGhpbiB0aGUgY29kZSBiYXNlIHdoZXJlIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24gaXMgaW52b2tlZC4gIEtub3dpbmcgdGhlIGNhbGwgcGF0aCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgcHVycG9zZSwgdGhlIGNvbnRleHQgaXQgb3BlcmF0ZXMgaW4sIGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBoZXJlLCBzdGVwIGJ5IHN0ZXAsIHRvIHVuZGVyc3RhbmQgaXRzIGVudHJ5IHBvaW50LiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyAtIGBncmVwYCwgc291cmNlIGNvZGUgbmF2aWdhdGlvbiwgb3IgbWF5YmUgZXZlbiBhIGRlYnVnZ2VyIGlmIHRoaW5ncyBnZXQgdHJpY2t5IC0gdG8gdW5jb3ZlciB0aGUgZXhhY3QgY2FsbGluZyBmdW5jdGlvbnMgYW5kIHRoZWlyIHJvbGVzLiBLbm93aW5nIHRoZSBjYWxsIGNvbnRleHQgaXMgdGhlIHN0YXJ0IG9mIHRydWx5IHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmN0aW9uJiMzOTtzIHNpZ25pZmljYW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTE1NT1zdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY1LVx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE2NjpcdG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2Ny1cdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yOTc9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyOTg6X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI5OS1cdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MzI0OnZvaWQgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMyNi1cdGlmIChwaHktXHUwMDNlbXQ3Ni1cdTAwM2VjYXAuaGFzXzJnaHopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MzI3Olx0XHRfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHBoeSwgXHUwMDI2cGh5LVx1MDAzZW10NzYtXHUwMDNlc2JhbmRfMmcuc2JhbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzI4LVx0XHRcdFx0XHRcdE5MODAyMTFfQkFORF8yR0haKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzMwLVx0aWYgKHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNhcC5oYXNfNWdoeilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMzE6XHRcdF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMocGh5LCBcdTAwMjZwaHktXHUwMDNlbXQ3Ni1cdTAwM2VzYmFuZF81Zy5zYmFuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMzItXHRcdFx0XHRcdFx0Tkw4MDIxMV9CQU5EXzVHSFopO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMzQtXHRpZiAocGh5LVx1MDAzZW10NzYtXHUwMDNlY2FwLmhhc182Z2h6KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjMzNTpcdFx0X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHksIFx1MDAyNnBoeS1cdTAwM2VtdDc2LVx1MDAzZXNiYW5kXzZnLnNiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzNi1cdFx0XHRcdFx0XHROTDgwMjExX0JBTkRfNkdIWik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE2MDc9bXQ3OTI1X3NldF9hbnRlbm5hKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgcmFkaW9faWR4LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNjI1LVx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMocGh5LVx1MDAzZW10NzYsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE2MjY6XHRtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE2MjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzExPXZvaWQgbXQ3OTI1X3N0YXRzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMxMjp2b2lkIG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzEzLWludCBtdDc5MjVfaW5pdF9tbG9fY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM9MjE9dm9pZCBtdDc5MjVfcmVnZF9iZV9jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4ICphbHBoYTIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTYyLVx0ZGV2LVx1MDAzZWhhc19laHQgPSBuZXc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9yZWdkLmM6NjM6XHRtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTY0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE5MQoJCQkJCQkJb3V0cHV0OiA1NwoJCQkJCQkJdGhvdWdodHM6IDk2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgQnVnIGluIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIGl0cyBleGVjdXRpb24uIEl0IHNlZW1zIHRoaXMgY29kZSBzbmlwcGV0LCBzcGVjaWZpY2FsbHkgdGhlIGxpbmUgYHZhbCA9IChzdHMgJmd0OyAzKSA/IHN0cyAtIDEgOiAzO2AsIGlzIHJlYWNoZWQgZHVyaW5nIHNldmVyYWwgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gcHJvY2Vzc2VzIHdpdGhpbiB0aGUgYG10NzkyNWAgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgYG10NzkyNV9pbml0X3dvcmtgLCBgbXQ3OTI1X3NldF9hbnRlbm5hYCwgYW5kIGBtdDc5MjVfcmVnZF9iZV9jdHJsYCwgd2hpY2ggYXJlIGFsbCB0cmlnZ2VyZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHByb2JlZC4gR2l2ZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgYE1UNzkyNVVgIFVTQiBkcml2ZXIsIHN5emthbGxlciBjb3VsZCBkZWZpbml0ZWx5IGJlIHVzZWQgdG8gZW11bGF0ZSB0aGlzIGRldmljZSBhbmQgdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC4KClRoZSBwYXRjaCBhaW1zIHRvIGZpeCBhIHNpdHVhdGlvbiB3aGVyZSBgc3RzYCAod2hpY2ggSSYjMzk7bSBhc3N1bWluZyBpcyB0aGUgbnVtYmVyIG9mIHNwYXRpYWwgc3RyZWFtcykgbWlnaHQgZXhjZWVkIGEgY2VydGFpbiBib3VuZCwgY2F1c2luZyBhIGJpdGZpZWxkIG92ZXJmbG93IGJlY2F1c2UgYHN0cyAtIDFgIHdvdWxkIGJlIG91dCBvZiByYW5nZS4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHNpbXBseSBgc3RzIC0gMWAuIFRoZSBmaXggaXMgYSB0ZXJuYXJ5IG9wZXJhdG9yLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgJiMzNDtPa2F5LCBtYWtlcyBzZW5zZS4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGluZ3Mgc3RheSBpbiBib3VuZHMmIzM0Oy4gSG93ZXZlciwgbGV0JiMzOTtzIHN0ZXAgdGhyb3VnaCB0aGUgbG9naWMuICBJZiBgc3RzYCBpcyA0LCB0aGVuIGBzdHMgJmd0OyAzYCBpcyB0cnVlLCBzbyBgdmFsYCBiZWNvbWVzIGA0IC0gMSA9IDNgLiBJZiBgc3RzYCBpcyA1LCB0aGVuIGB2YWxgIHdvdWxkIGJlY29tZSA0LiBCdXQsIHdhaXQuLi5pZiBgc3RzYCBpcyAxLCB0aGVuIGBzdHMgJmd0OyAzYCBpcyBmYWxzZSwgYW5kIGB2YWxgIGdldHMgc2V0IHRvICozKi4gSG9sZCBvbi4gVGhlIG9yaWdpbmFsIGNvZGUgd291bGQgaGF2ZSBzZXQgYHZhbCA9IHN0cyAtIDFgLCB3aGljaCBtZWFucyBpdCB3b3VsZCBoYXZlIGJlY29tZSAwLiAgCgpJIGhhdmUgdG8gZ28gYmFjayBhbmQgY2hlY2suICBJcyB0aGlzIGNvcnJlY3Q/ICBXaGF0IHRoZSBhdXRob3IgYWN0dWFsbHkgd3JvdGU6IGB2YWwgPSAoc3RzICZndDsgMykgPyBzdHMgLSAxIDogMztgLgoKTm93LCBpZiBgc3RzYCBpcyAxLCBgdmFsYCBpcyAqc2V0IHRvIDMqLiBXaGF0JiMzOTtzIGdvaW5nIG9uIGhlcmU/ICBJcyB0aGlzIHdoYXQgdGhlIGF1dGhvciBpbnRlbmRlZD8gTWF5YmUsIGEgdHlwbz8gSSB3b25kZXIgaWYgdGhlIGF1dGhvciB3YXMgYWN0dWFsbHkgZ29pbmcgZm9yIGB2YWwgPSAoc3RzICZndDsgMykgPyAzIDogc3RzIC0gMTtgLiBUaGVuLCB0aGUgYmVoYXZpb3Igd291bGQgYmUgY2FwcGVkIGF0IDMsIHdoaWNoIG1ha2VzIGEgbG90IG1vcmUgc2Vuc2UgZ2l2ZW4gbXkgYXNzdW1wdGlvbiB0aGF0IGB2YWxgIGlzIHVzZWQgZm9yIGJpdC1lbmNvZGluZyB0aGUgbnVtYmVyIG9mIHN0cmVhbXMuCgpMZXQmIzM5O3MgcmUtcnVuIHRoZSBudW1iZXJzOiAgSWYgYHN0c2AgaXMgNCwgKm9yaWdpbmFsIGNvZGUqIGBzdHMgLSAxID0gM2AsIGFuZCB0aGUgcGF0Y2ggd291bGQgeWllbGQgdGhlIHZhbHVlIDMuIElmIGBzdHNgIGlzIDEsIGBzdHMgLSAxID0gMGAuIFdpdGggdGhlIHBhdGNoLCBpZiBgc3RzYCBpcyAxLCBgdmFsID0gM2AuIE5vLCBubyB0aGF0JiMzOTtzIG5vdCByaWdodC4KCk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2ggb25lIG1vcmUgdGltZS4gVGhlIGNvZGUgaXMuLi4gYHZhbCA9IChzdHMgJmd0OyAzKSA/IHN0cyAtIDEgOiAzO2AuLi4gSWYgYHN0c2AgaXMgNCwgYHZhbCA9IDNgLiBJZiBgc3RzYCBpcyAxLCB0aGVuIGB2YWwgPSAzYC4gSWYgYHN0c2AgaXMgNSwgYHZhbGAgaXMgNC4KCk9rYXksIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBidWcuIEl0IHNlZW1zIGxpa2UgYSBsb2dpYyBlcnJvci4gU2V0dGluZyBgdmFsID0gM2AgKmV2ZXJ5KiB0aW1lIGBzdHNgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAzIGRvZXNuJiMzOTt0IG1ha2Ugc2Vuc2UsIGNvbnNpZGVyaW5nIHRoZSBvcmlnaW5hbCBsb2dpYy4gTG9va3MgbGlrZSB0aGlzIG5lZWRzIGEgY2xvc2VyIGxvb2ssIHRoZSBsb2dpYyBkZWZpbml0ZWx5IG5lZWRzIGNsYXJpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmFsID0gXFwoc3RzIFx1MDAzZSAzXFwpIFxcPyAzIDogc3RzIC0gMTsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTgxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIENvbmRpdGlvbmFsIExvZ2ljKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGlzIHBhdGNoLiBJJiMzOTttIGdvaW5nIHRocm91Z2ggaXQgYWdhaW4sIGFuZCBoZXJlJiMzOTtzIHdoYXQgaXQgc2hvd3M6CmBgYGMKJiM0MzsJdmFsID0gKHN0cyAmZ3Q7IDMpID8gMyA6IHN0cyAtIDE7CmBgYApTb21ldGhpbmcgZG9lc24mIzM5O3QgZmVlbCByaWdodC4gTGV0IG1lIHJlLXJlYWQgdGhpcyBkaWZmLiBJJiMzOTttIGNoZWNraW5nIGl0IGFnYWluOgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IDMgOiBzdHMgLSAxOwpgYGAKV2FpdCwgZGlkIEkgbWlzaW50ZXJwcmV0IGl0IHRoZSBmaXJzdCB0aW1lPyBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBMZXQgbWUgY29uZmlybSB3aXRoIHRoZSBwcm9tcHQgaXRzZWxmLgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IDMgOiBzdHMgLSAxOwpgYGAKTm93IHdhaXQgYSBzZWNvbmQuLi4gVGhpcyBsb29rcyBsaWtlOgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IHN0cyAtIDEgOiAzOwpgYGAKTm8sIHRoYXQgY2FuJiMzOTt0IGJlIHJpZ2h0Li4uIExldCBtZSByZS1jaGVjayB0aGUgcHJvbXB0LgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IDMgOiBzdHMgLSAxOwpgYGAKV2FpdCwgdGhlIHByb21wdCBzYXlzLi4uCmBgYGMKJiM0MzsJdmFsID0gKHN0cyAmZ3Q7IDMpID8gc3RzIC0gMSA6IDM7CmBgYApObywgd2FpdCEgVGhlIHByb21wdCAqYWN0dWFsbHkqIHNheXMuLi4KYGBgYwomIzQzOwl2YWwgPSAoc3RzICZndDsgMykgPyAzIDogc3RzIC0gMTsKYGBgCk9rYXksIGxldCBtZSBqdXN0IGNvcHkgaXQgZnJvbSB0aGUgcHJvbXB0IHNvIEkgZG9uJiMzOTt0IG1pc3JlYWQgaXQgYWdhaW4uIFdhaXQsIEkgY2FuJiMzOTt0IGNvcHkgaXQuLi4gT2theSwgbGV0IG1lIGNhcmVmdWxseSByZXJlYWQgdGhlIHByb21wdC4KYGBgYwomIzQzOwl2YWwgPSAoc3RzICZndDsgMykgPyAzIDogc3RzIC0gMTsKYGBgClJpZ2h0LiBXYWl0LCBub3cgSSB0aGluay4uLgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IHN0cyAtIDEgOiAzOwpgYGAKTm8sIG5vLCBpdCYjMzk7cy4uLgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IDMgOiBzdHMgLSAxOwpgYGAKSSBuZWVkIHRvIGVsaW1pbmF0ZSBhbnkgY2hhbmNlIG9mIGVycm9yIGluIG15IHJlYWRpbmcuIEkmIzM5O20gZ29pbmcgdG8gcnVuIGEgc2NyaXB0LCBvciB1c2UgYSB0b29sIHRvIHJlYWQgdGhlIGZpbGUgYW5kIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHRcbiAxODE6XHRcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMF0gPVxuIDE4MjpcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwX05EUF80X0VIVF9MRlRfMzJfR0kgfFxuIDE4MzpcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwX1NVX0JFQU1GT1JNRVIgfFxuIDE4NDpcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwX1NVX0JFQU1GT1JNRUU7XG4gMTg1Olx0XG4gMTg2Olx0XHRpZiAoYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWiBcdTAwMjZcdTAwMjYgaXNfMzIwbWh6X3N1cHBvcnRlZChcdTAwMjZwaHktXHUwMDNlZGV2LVx1MDAzZW10NzYpKVxuIDE4NzpcdFx0XHRlaHRfY2FwX2VsZW0tXHUwMDNlcGh5X2NhcF9pbmZvWzBdIHw9XG4gMTg4Olx0XHRcdFx0SUVFRTgwMjExX0VIVF9QSFlfQ0FQMF8zMjBNSFpfSU5fNkdIWjtcbiAxODk6XHRcbiAxOTA6XHRcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7XG4gMTkxOlx0XG4gMTkyOlx0XHRlaHRfY2FwX2VsZW0tXHUwMDNlcGh5X2NhcF9pbmZvWzBdIHw9XG4gMTkzOlx0XHRcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgQklUKDApKSxcbiAxOTQ6XHRcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0spO1xuIDE5NTpcdFxuIDE5NjpcdFx0ZWh0X2NhcF9lbGVtLVx1MDAzZXBoeV9jYXBfaW5mb1sxXSA9XG4gMTk3Olx0XHRcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgR0VOTUFTSygyLCAxKSksXG4gMTk4Olx0XHRcdFx0ICAgICAgIElFRUU4MDIxMV9FSFRfUEhZX0NBUDFfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLKSB8XG4gMTk5Olx0XHRcdHU4X2VuY29kZV9iaXRzKHZhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0NTAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTcGF0aWFsIFN0cmVhbSBDYWxjdWxhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBsaW5lIG9mIGNvZGU6IGB2YWwgPSAoc3RzICZndDsgMykgPyBzdHMgLSAxIDogMztgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBhIHRlcm5hcnkgb3BlcmF0b3IuIExldCYjMzk7cyBicmVhayBpdCBkb3duLiBJZiBgc3RzYCBpcyA0LCB0aGVuIHRoZSBjb25kaXRpb24gYHN0cyAmZ3Q7IDNgIGlzIHRydWUsIHNvIGB2YWxgIGJlY29tZXMgYDQgLSAxYCwgd2hpY2ggaXMgMy4gSWYgYHN0c2AgaXMgNSwgaXQmIzM5O3MgYDUgLSAxID0gNGAuIEFuZCBpZiBgc3RzYCBpcywgc2F5LCAxLCB0aGVuIHRoZSBjb25kaXRpb24gaXMgZmFsc2UsIGFuZCBgdmFsYCBpcyBzZXQgdG8gMy4gQWxyaWdodCwgc28gaWYgYHN0c2AgaXMgMiwgb3IgMyBpdCYjMzk7cyBhbHNvIDMuIFNvLCBpZiBgc3RzYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMywgYHZhbGAgaXMgYWx3YXlzIDMuIEJ1dCwgaWYgYHN0c2AgaXMgZ3JlYXRlciB0aGFuIDMsIGB2YWxgIGlzIGBzdHMgLSAxYC4KCkxldCBtZSBqdXN0IHJ1biB0aHJvdWdoIGEgZmV3IG1vcmUgZXhhbXBsZXMgaW4gbXkgaGVhZC4gSWYgYHN0c2AgaXMgMSwgYHZhbCA9IDNgLiAyIGFsc28gZXF1YWxzIDMsIGFuZCAzIGFsc28uIFRoZW4gNCBsZWFkcyB0byAzLCA1IGdpdmVzIDQsIGFuZCA4IGdpdmVzIDcuIFJpZ2h0LCBzbyBgdmFsYCBpcyBhbHdheXMgYXQgbGVhc3QgMy4gTm93LCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgYHN0c2AgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHNwYXRpYWwgc3RyZWFtcy4gU28sIGlmIHdlIGhhdmUgb25seSBvbmUgc3BhdGlhbCBzdHJlYW0sIGB2YWxgIGlzIDMuIEkgc3VwcG9zZSB0aGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gZmlndXJlIG91dCB3aGF0IHRoZSB2YWx1ZSBvZiBgc3RzYCBhY3R1YWxseSBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MDpcdHN0YXRpYyB2b2lkXG4gMTYxOlx0bXQ3OTI1X2luaXRfZWh0X2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSwgZW51bSBubDgwMjExX2JhbmQgYmFuZCxcbiAxNjI6XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRhICpkYXRhKVxuIDE2MzpcdHtcbiAxNjQ6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3RhX2VodF9jYXAgKmVodF9jYXAgPSBcdTAwMjZkYXRhLVx1MDAzZWVodF9jYXA7XG4gMTY1Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2VodF9jYXBfZWxlbV9maXhlZCAqZWh0X2NhcF9lbGVtID0gXHUwMDI2ZWh0X2NhcC1cdTAwM2VlaHRfY2FwX2VsZW07XG4gMTY2Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2VodF9tY3NfbnNzX3N1cHAgKmVodF9uc3MgPSBcdTAwMjZlaHRfY2FwLVx1MDAzZWVodF9tY3NfbnNzX3N1cHA7XG4gMTY3Olx0XHRlbnVtIG5sODAyMTFfY2hhbl93aWR0aCB3aWR0aCA9IHBoeS1cdTAwM2VtdDc2LVx1MDAzZWNoYW5kZWYud2lkdGg7XG4gMTY4Olx0XHRpbnQgbnNzID0gaHdlaWdodDgocGh5LVx1MDAzZW10NzYtXHUwMDNlYW50ZW5uYV9tYXNrKTtcbiAxNjk6XHRcdGludCBzdHMgPSBod2VpZ2h0MTYocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhaW5tYXNrKTtcbiAxNzA6XHRcdHU4IHZhbDtcbiAxNzE6XHRcbiAxNzI6XHRcdGlmICghcGh5LVx1MDAzZWRldi1cdTAwM2VoYXNfZWh0KVxuIDE3MzpcdFx0XHRyZXR1cm47XG4gMTc0Olx0XG4gMTc1Olx0XHRlaHRfY2FwLVx1MDAzZWhhc19laHQgPSB0cnVlO1xuIDE3NjpcdFxuIDE3NzpcdFx0ZWh0X2NhcF9lbGVtLVx1MDAzZW1hY19jYXBfaW5mb1swXSA9XG4gMTc4Olx0XHRcdElFRUU4MDIxMV9FSFRfTUFDX0NBUDBfRVBDU19QUklPX0FDQ0VTUyB8XG4gMTc5Olx0XHRcdElFRUU4MDIxMV9FSFRfTUFDX0NBUDBfT01fQ09OVFJPTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NDUKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAyMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVjb2RpbmcgdGhlIEFudGVubmEgQ2hhaW4gTWFzayoqCgpPa2F5LCBzbyBgc3RzYCBpcyBkZXJpdmVkIGZyb20gYGh3ZWlnaHQxNihwaHktJmd0O210NzYtJmd0O2NoYWlubWFzaylgLiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgYGNoYWlubWFza2AgcmVwcmVzZW50cyB0aGUgYW50ZW5uYSBjaGFpbiBtYXNrLCBhbmQgYGh3ZWlnaHQxNmAgbGlrZWx5IGNvdW50cyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBjaGFpbnMuIEZvciB0aGUgTVQ3OTI1LCB3aGljaCBJIGtub3cgaXMgYSAyeDIgZGV2aWNlLCB0aGlzIG1lYW5zIGBzdHNgIGNhbiBiZSBhdCBtb3N0IDIuCgpOb3csIGhvbGQgb24uLi4gaWYgYHN0c2AgaXMgYXQgbW9zdCAyLCB0aGVuIHRoZSBjb25kaXRpb25hbCBgc3RzICZndDsgM2Agd291bGQgKmFsd2F5cyogYmUgZmFsc2UsIGFuZCBzbyBgdmFsYCB3b3VsZCBiZSBhc3NpZ25lZCBhIHZhbHVlIG9mIDMuIEJ1dCB3aHkgYXJlIHdlIHNldHRpbmcgYHZhbGAgdG8gMywgaW5pdGlhbGx5PyBUaGF0IGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IGNsaWNrLiBUaGlzIHNtZWxscyBsaWtlIGFuIEVIVCAoODAyLjExYmUpIHRoaW5nLgoKSSBzaG91bGQgY2hlY2sgd2hhdCBgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0tgIGFjdHVhbGx5IHJlcHJlc2VudHMuIFJpZ2h0LCBJIHJlbWVtYmVyIHRoYXQgdGhlIEJlYW1mb3JtZWUgU1MgZmllbGRzIGluIDgwMi4xMWJlIGluZGljYXRlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzcGF0aWFsIHN0cmVhbXMgc3VwcG9ydGVkIHdoZW4gb3BlcmF0aW5nIGFzIGEgYmVhbWZvcm1lZS4gT2theSwgdGhlIHZhbHVlIGl0c2VsZiBpcyBlbmNvZGVkIGluIGFuIGBzdHMgLSAxYCBtYW5uZXI/IFdhaXQsIHRoYXQgZG9lc24mIzM5O3QgZmVlbCByaWdodC4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoaXMsIGVpdGhlciB0aHJvdWdoIHRoZSA4MDIuMTFiZSBkcmFmdCBzcGVjaWZpY2F0aW9uIG9yLCBtb3JlIGVmZmljaWVudGx5LCBieSBjaGVja2luZyB0aGUgcmVsZXZhbnQga2VybmVsIGRlZmluaXRpb25zIHRvIGVuc3VyZSBJJiMzOTttIGdldHRpbmcgdGhlIGxvZ2ljIGNvcnJlY3QgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2llZWU4MDIxMS1laHQuaD0xNzg9c3RydWN0IGllZWU4MDIxMV9laHRfb3BlcmF0aW9uX2luZm8ge1xuLS1cbmluY2x1ZGUvbGludXgvaWVlZTgwMjExLWVodC5oLTIxMi0vKiBFSFQgYmVhbWZvcm1lZSBudW1iZXIgb2Ygc3BhdGlhbCBzdHJlYW1zIFx1MDAzYz0gODBNSHogaXMgc3BsaXQgKi9cbmluY2x1ZGUvbGludXgvaWVlZTgwMjExLWVodC5oOjIxMzojZGVmaW5lIElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLXHRcdDB4ODBcbmluY2x1ZGUvbGludXgvaWVlZTgwMjExLWVodC5oLTIxNC0jZGVmaW5lIElFRUU4MDIxMV9FSFRfUEhZX0NBUDFfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLXHRcdDB4MDNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0MzEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAzMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEVIVCBDYXBhYmlsaXR5IEluaXRpYWxpemF0aW9uIGluIHRoZSBNVDc5MjUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBFSFQgY2FwYWJpbGl0aWVzIGFyZSBoYW5kbGVkIGZvciB0aGUgTVQ3OTI1LiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiBhIDMtYml0IGZpZWxkLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHNwbGl0IHdpdGggMSBiaXQgaW4gQ0FQMCBhbmQgdGhlIHJlbWFpbmluZyAyIGluIENBUDEuIFRoZSBjdXJyZW50IHZhbHVlIGlzIGB2YWxgLiBJZiBgdmFsYCBoaXRzIDMsIG15IGZpcnN0IHRob3VnaHQgaXMgJiMzNDs0IHNwYXRpYWwgc3RyZWFtcz8mIzM0OywgYnV0IHdhaXQsIEkgaGF2ZSB0byByZW1lbWJlciBob3cgaXQmIzM5O3MgZW5jb2RlZC4gSXQmIzM5O3MgZW5jb2RpbmcgKjMqLCBub3QgcmVwcmVzZW50aW5nIDQuCgpUaGVuIEkgZ2V0IGh1bmcgdXAgb24gdGhpcyB2YXJpYWJsZSBgc3RzYC4gSW4gdGhlIG9sZCBjb2RlLCB3aGVuIGBzdHMgPSAyYCwgdGhleSB3ZXJlIGRvaW5nIGBzdHMgLSAxYCwgcmVzdWx0aW5nIGluIDEuIEJ1dCB3aXRoIHRoZSBwYXRjaCwgdGhlIGB2YWxgIGlzIHNldCB0byAzLiBXaHkgc2V0IGl0IHRvIDM/IERvZXMgdGhhdCB2YWx1ZSBoYXZlIHNwZWNpYWwgbWVhbmluZywgbGlrZSDigJxub3Qgc3VwcG9ydGVk4oCdIG9yIGEgbWF4aW11bSBvZiA0IHN0cmVhbXM/CgpIbW0sIG1heWJlIGl0IHJlbGF0ZXMgdG8gdGhlIGRldmljZSYjMzk7cyBjYXBhYmlsaXRpZXMuIElmIGl0JiMzOTtzIGEgMngyIGRldmljZSwgY291bGQgaXQgcG90ZW50aWFsbHkgYWN0IGFzIGEgYmVhbWZvcm1lZSBmb3IgdXAgdG8gNCBzcGF0aWFsIHN0cmVhbXM/IEkgd2lzaCBJIGhhZCB0aGUgY29tbWl0IG1lc3NhZ2U7IHRoYXQgd291bGQgbGlrZWx5IGNsZWFyIHRoaW5ncyB1cC4gTm8gd29ycmllcywgSSBjYW4gY2hlY2sgdGhlIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgd2l0aGluIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AgaW4gYG10NzkyNS9tYWluLmNgLgoKSXMgdGhpcyBzb21ldGhpbmcgd29ydGggZnV6emluZz8gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIEVIVCBjYXBhYmlsaXRpZXMgZm9yIE1lZGlhVGVrJiMzOTtzIE1UNzkyNSwgd2hpY2ggaXMgYSBXaS1GaSA3IGRldmljZS4gWWVzLCBhYnNvbHV0ZWx5LiBJIGNhbiBlbXVsYXRlIGl0IHVzaW5nIFVTQiAoYE1UNzkyNVVgKS4gSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYENPTkZJR19NVDc5MjVVYCBmaXJzdC4gTm93LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhhdCBjb25maWcgaXNuJiMzOTt0IGRlcGVuZGVudCBvbiBzb21ldGhpbmcgZWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzkyNVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzNDIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBtdDc5MjUqKgoKT2theSwgdGltZSB0byBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLCBzbyB0aGUgZmlyc3QgcGxhY2UgdG8gbG9vayBpcyB0aGUgYEtjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AuIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGlzIHRoZSBoZWFydCBvZiBkZWZpbmluZyBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBkcml2ZXIuIEJ5IGNoZWNraW5nIHRoaXMsIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBncmFzcCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLCB3aGF0IG90aGVyIG1vZHVsZXMgaXQgcmVsaWVzIG9uLCBhbmQgd2hhdCBwbGF0Zm9ybSBjb25maWd1cmF0aW9ucyBzdXBwb3J0IGl0LiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgTVQ3OTI1IGRyaXZlciBmaXRzIGludG8gdGhlIGxhcmdlciBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQgYW5kIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24gZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgc2hvdWxkIEkgbmVlZCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyNV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyNUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcbiAgMTQ6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDE1Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3OTI1VVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRzZWxlY3QgTVQ3OTJ4X1VTQlxuICAyMjpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMjM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjQ6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXG4gIDI3Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAyODpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MTAwCgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogNzg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE1UNzkyNVUgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNVDc5MjVVIGRyaXZlci4gSXQgcmVsaWVzIG9uIGJvdGggYE1BQzgwMjExYCBhbmQgYFVTQmAsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGUgc3BlY2lmaWMgY2hhbmdlIGlzIGluIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AsIGFuZCBJIHNlZSBpdCYjMzk7cyBzZWxlY3RlZCBhcyBgTVQ3OTI1X0NPTU1PTmAuIFNvIHRoZSBmaXJzdCBzdGVwIGlzIHRvIGVuYWJsZSBgTVQ3OTI1VWAsIHNpbmNlIHRoYXQmIzM5O3MgdGhlIHRhcmdldC4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcywgc28sIGlzIGl0IGV2ZW4gd29ydGggaXQ/IFdlbGwsIHllcy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbi4gSSBkb24mIzM5O3Qgc2VlIGFueSBvdGhlciBmdW5jdGlvbiBtb2RpZmllZCwgb3IgZXZlbiBvdGhlciBmaWxlcy4gSnVzdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jYCwgZm9jdXNpbmcgb24gYG10NzkyNV9pbml0X2VodF9jYXBzYC4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZSBsb2dpYyBvZiB0aGlzIHBhdGNoLiBUaGUgcmVsZXZhbnQgY29kZSBzbmlwcGV0IGlzOgpgYGBjCiYjNDM7CXZhbCA9IChzdHMgJmd0OyAzKSA/IHN0cyAtIDEgOiAzOwpgYGAKT2theSwgc28gbGV0JiMzOTtzIHdhbGsgdGhyb3VnaCBpdC4gSWYgYHN0c2AgaXMgMSwgMiwgb3IgMywgdGhlbiBgdmFsYCBpcyAzLiBJZiBgc3RzYCBpcyA0LCBgdmFsYCBiZWNvbWVzIDMsIGFuZCBpZiBgc3RzYCBpcyA1LCB0aGVuIGl0IGJlY29tZXMgNC4gU28gYHZhbGAgaXMgYWx3YXlzIGF0IGxlYXN0IDMuIE5vdywgdGhpcyBgdmFsYCBsb29rcyBsaWtlIHRoZSBiZWFtZm9ybWVlIFNTIGZpZWxkLiBXaXRoIGEgMy1iaXQgZmllbGQgd2Uga25vdyB0aGF0OgoqICAgVmFsdWUgMDogMSBzcGF0aWFsIHN0cmVhbQoqICAgVmFsdWUgMTogMiBzcGF0aWFsIHN0cmVhbXMKKiAgIFZhbHVlIDI6IDMgc3BhdGlhbCBzdHJlYW1zCiogICBWYWx1ZSAzOiA0IHNwYXRpYWwgc3RyZWFtcwoqICAgVmFsdWUgNDogNSBzcGF0aWFsIHN0cmVhbXMKKiAgIFZhbHVlIDU6IDYgc3BhdGlhbCBzdHJlYW1zCiogICBWYWx1ZSA2OiA3IHNwYXRpYWwgc3RyZWFtcwoqICAgVmFsdWUgNzogOCBzcGF0aWFsIHN0cmVhbXMKCklmIGB2YWxgIGlzIDMsIHRoYXQgcmVwcmVzZW50cyA0IHNwYXRpYWwgc3RyZWFtcy4gQSAyeDIgZGV2aWNlIChgc3RzPTJgKSBhZHZlcnRpc2luZyA0IHNwYXRpYWwgc3RyZWFtcyBhcyBhIGJlYW1mb3JtZWU/IFRoYXQmIzM5O3Mgd2hhdCBJJiMzOTttIHF1ZXN0aW9uaW5nLiBJcyB0aGlzIGJlY2F1c2Ugb2YgYSByZXF1aXJlbWVudCBpbiA4MDIuMTFiZSwgb3IgcGVyaGFwcyB0aGUgaGFyZHdhcmUgaGFzIGEgbGltaXQgb2YgdXAgdG8gNCBzcGF0aWFsIHN0cmVhbXMgZm9yIHNvdW5kaW5nPyBQZXJoYXBzIHRoZSA4MDIuMTFiZSBkcmFmdCAqcmVxdWlyZXMqIGF0IGxlYXN0IDQgc3BhdGlhbCBzdHJlYW1zIGZvciBiZWFtZm9ybWVlLCBvciBtYXliZSB0aGUgaGFyZHdhcmUgbGltaXRzIGl0LiBObyBtYXR0ZXIgd2hhdCwgaXQmIzM5O3MgYSAqZnVuY3Rpb25hbCogY2hhbmdlIGluIHRoZSBkcml2ZXIgYW5kIHdvcnRoIGludmVzdGlnYXRpbmcuCgpOb3csIGlzIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AgcmVhY2hhYmxlPyBJIGhhdmUgdG8gY29uZmlybSB0aGlzLiBJdCYjMzk7cyBjYWxsZWQgYnkgYF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNgLCB3aGljaCBpcyBjYWxsZWQgYnkgYG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzYCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgYnkgYG10NzkyNV9pbml0X3dvcmtgLCBgbXQ3OTI1X3NldF9hbnRlbm5hYCwgYW5kIGBtdDc5MjVfcmVnZF9iZV9jdHJsYC4gYG10NzkyNV9pbml0X3dvcmtgIGlzIHNjaGVkdWxlZCAqZHVyaW5nKiB0aGUgZGV2aWNlIHByb2JlLiBTbywgd2hlbiB0aGUgVVNCIGRldmljZSBpcyBwcm9iZWQsIHRoaXMgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gaXMgZXhlY3V0ZWQuIFRoZXJlZm9yZSwgZnV6emluZyB0aGUgVVNCIHByb2JlIHByb2Nlc3Mgd2lsbCBhYnNvbHV0ZWx5IGhpdCB0aGlzIGNvZGUuCgpJIHRoaW5rIEkgaGF2ZSBteSBhbnN3ZXJzLgoKKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgCiogICBgRm9jdXNTeW1ib2xzOiBtdDc5MjVfaW5pdF9laHRfY2Fwc2AKKiAgIGBFbmFibGVDb25maWdzOiBNVDc5MjVVYAoqICAgYFJlYXNvbmluZzogVGhlIHBhdGNoIG1vZGlmaWVzIEVIVCBjYXBhYmlsaXRpZXMgaW5pdGlhbGl6YXRpb24uIEl0JiMzOTtzIHJlYWNoYWJsZSBkdXJpbmcgVVNCIGRldmljZSBwcm9iZSwgYW5kIGZ1enppbmcgdGhlIHByb2JlIHByb2Nlc3MgaXMgdmlhYmxlLmAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfaW5pdF9laHRfY2FwcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRUhUIGNhcGFiaWxpdGllcyBpbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUgYW5kIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfaW5pdF9laHRfY2FwcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRUhUIGNhcGFiaWxpdGllcyBpbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUgYW5kIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo0Ny43MDUxNTQ3NjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTIzMjg5NDMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2luaXRfZWh0X2NhcHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRUhUIGNhcGFiaWxpdGllcyBpbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUgYW5kIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjE5OjQ3LjcwNTE2MTc1NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA5ODQ0NDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTFhMWI4MTJlMTVjNmRkY2QwMTdmMWJiN2Y2Zjc2MWNhMTcxZDczY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAyNCAwODoxOTo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcXG5pbmRleCBhOTA1OTg2NmI3MDE2MS4uNjE0MWU1ZDAyNGM3YmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXFxuQEAgLTE4NywxOSArMTg3LDIxIEBAIG10NzkyNV9pbml0X2VodF9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXFxuIFxcdFxcdGVodF9jYXBfZWxlbS1cXHUwMDNlcGh5X2NhcF9pbmZvWzBdIHw9XFxuIFxcdFxcdFxcdElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7XFxuIFxcbitcXHR2YWwgPSAoc3RzIFxcdTAwM2UgMykgPyBzdHMgLSAxIDogMztcXG4rXFxuIFxcdGVodF9jYXBfZWxlbS1cXHUwMDNlcGh5X2NhcF9pbmZvWzBdIHw9XFxuLVxcdFxcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHN0cyAtIDEsIEJJVCgwKSksXFxuK1xcdFxcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgQklUKDApKSxcXG4gXFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLKTtcXG4gXFxuIFxcdGVodF9jYXBfZWxlbS1cXHUwMDNlcGh5X2NhcF9pbmZvWzFdID1cXG4tXFx0XFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHMoc3RzIC0gMSwgR0VOTUFTSygyLCAxKSksXFxuK1xcdFxcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgR0VOTUFTSygyLCAxKSksXFxuIFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfODBNSFpfTUFTSykgfFxcbi1cXHRcXHR1OF9lbmNvZGVfYml0cyhzdHMgLSAxLFxcbitcXHRcXHR1OF9lbmNvZGVfYml0cyh2YWwsXFxuIFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfMTYwTUhaX01BU0spO1xcbiBcXG4gXFx0aWYgKGJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFogXFx1MDAyNlxcdTAwMjYgaXNfMzIwbWh6X3N1cHBvcnRlZChcXHUwMDI2cGh5LVxcdTAwM2VkZXYtXFx1MDAzZW10NzYpKVxcbiBcXHRcXHRlaHRfY2FwX2VsZW0tXFx1MDAzZXBoeV9jYXBfaW5mb1sxXSB8PVxcbi1cXHRcXHRcXHR1OF9lbmNvZGVfYml0cyhzdHMgLSAxLFxcbitcXHRcXHRcXHR1OF9lbmNvZGVfYml0cyh2YWwsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfMzIwTUhaX01BU0spO1xcbiBcXG4gXFx0ZWh0X2NhcF9lbGVtLVxcdTAwM2VwaHlfY2FwX2luZm9bMl0gPVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo0OC40MTYwMDg5MTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NDUyMjAyNjU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2luaXRfZWh0X2NhcHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRUhUIGNhcGFiaWxpdGllcyBpbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgdGhlIFVTQiBkZXZpY2UgcHJvYmUgYW5kIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTFhMWI4MTJlMTVjNmRkY2QwMTdmMWJiN2Y2Zjc2MWNhMTcxZDczY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDA4OjE5OjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5pbmRleCBhOTA1OTg2NmI3MDE2MS4uNjE0MWU1ZDAyNGM3YmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuQEAgLTE4NywxOSArMTg3LDIxIEBAIG10NzkyNV9pbml0X2VodF9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXG4gXHRcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMF0gfD1cbiBcdFx0XHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwXzMyME1IWl9JTl82R0haO1xuIFxuK1x0dmFsID0gKHN0cyBcdTAwM2UgMykgPyBzdHMgLSAxIDogMztcbitcbiBcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMF0gfD1cbi1cdFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHMoc3RzIC0gMSwgQklUKDApKSxcbitcdFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHModmFsLCBCSVQoMCkpLFxuIFx0XHRcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAwX0JFQU1GT1JNRUVfU1NfODBNSFpfTUFTSyk7XG4gXG4gXHRlaHRfY2FwX2VsZW0tXHUwMDNlcGh5X2NhcF9pbmZvWzFdID1cbi1cdFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHMoc3RzIC0gMSwgR0VOTUFTSygyLCAxKSksXG4rXHRcdHU4X2VuY29kZV9iaXRzKHU4X2dldF9iaXRzKHZhbCwgR0VOTUFTSygyLCAxKSksXG4gXHRcdFx0ICAgICAgIElFRUU4MDIxMV9FSFRfUEhZX0NBUDFfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLKSB8XG4tXHRcdHU4X2VuY29kZV9iaXRzKHN0cyAtIDEsXG4rXHRcdHU4X2VuY29kZV9iaXRzKHZhbCxcbiBcdFx0XHQgICAgICAgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzE2ME1IWl9NQVNLKTtcbiBcbiBcdGlmIChiYW5kID09IE5MODAyMTFfQkFORF82R0haIFx1MDAyNlx1MDAyNiBpc18zMjBtaHpfc3VwcG9ydGVkKFx1MDAyNnBoeS1cdTAwM2VkZXYtXHUwMDNlbXQ3NikpXG4gXHRcdGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9bMV0gfD1cbi1cdFx0XHR1OF9lbmNvZGVfYml0cyhzdHMgLSAxLFxuK1x0XHRcdHU4X2VuY29kZV9iaXRzKHZhbCxcbiBcdFx0XHRcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfMzIwTUhaX01BU0spO1xuIFxuIFx0ZWh0X2NhcF9lbGVtLVx1MDAzZXBoeV9jYXBfaW5mb1syXSA9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoxOTo0OC40MTYwMTE2NDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTk0MDUyNTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIGEgTWVkaWFUZWsgTVQ3OTI1IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYG10NzkyNV9pbml0X2VodF9jYXBzYCBmdW5jdGlvbi4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSB0d2Vha2luZyBob3cgdGhlIGBzdHNgIHZhbHVlIGlzIHVzZWQgdG8gcGFjayBiaXRzIGludG8gYGVodF9jYXBfZWxlbS1cdTAwM2VwaHlfY2FwX2luZm9gLiBTcGVjaWZpY2FsbHksIHRoaXMgYHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7YCBsaW5lIGlzIHJhaXNpbmcgYSBmbGFnLiBUaGV5J3JlIGJhc2ljYWxseSBjbGFtcGluZyBvciByZW1hcHBpbmcgdGhlIGBzdHNgIHZhbHVlIGJlZm9yZSBpdOKAmXMgdXNlZC4gVGhpcyBjb3VsZCBiZSBhIHZlY3RvciBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciBhbmQgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS5cblxuTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgaG93IHRlc3RhYmxlIGlzIHRoaXM/IFRoaXMgaXMgYSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBtZWFucyBpdOKAmXMgbGlrZWx5IHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUuIEdldHRpbmcgdGhpcyB0aGluZyBmdXp6YWJsZSBpcyB0aGUgY2hhbGxlbmdlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSB3YXkgdG8gcmVhY2ggdGhpcyBkcml2ZXIgZWFzaWx5IGluIGEgdmlydHVhbGl6ZWQgb3Igc2ltdWxhdGVkIGVudmlyb25tZW50LiBJdCdzIG5vdCB1c3VhbGx5IHRyaXZpYWwgdG8gZnV6eiBXaS1GaSBjaGlwIGRyaXZlcnMsIGVzcGVjaWFsbHkgUENJIG9uZXMsIHVubGVzcyB0aGV5IGhhdmUgYSBVU0Igb3IgU0RJTyBlcXVpdmFsZW50IHRoYXQgY2FuIGJlIGVtdWxhdGVkLiBPZnRlbiwgZnV6emluZyBzcGVjaWZpYyBQQ0kgZHJpdmVycyBmb3IgV2ktRmkgaXMgYSB2ZXJ5IG5pY2hlIHB1cnN1aXQuIFdlIG1pZ2h0IGhhdmUgc29tZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMsIGJ1dCBJJ20gbm90IGltbWVkaWF0ZWx5IHRoaW5raW5nIG9mIGEgZ29vZCBwYXRoIGhlcmUuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdGhlIGRpcmVjdG9yeSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2AuIElmIHRoZXJlJ3MgYSBVU0IgdmVyc2lvbiBvZiB0aGlzIGRyaXZlciwgaXQgY291bGQgYmUgYSBnYW1lLWNoYW5nZXIuIFRoYXQgbWlnaHQgYmUgYSBtdWNoIG1vcmUgbWFuYWdlYWJsZSBlbnRyeSBwb2ludCBmb3IgZnV6emluZy4gSWYgSSBjYW4gZmluZCBhIFVTQiB2ZXJzaW9uIG9yIGEgY2xvc2UgZXF1aXZhbGVudCB0aGF04oCZcyBlYXNpZXIgdG8gc2ltdWxhdGUsIHRoaXMgd2hvbGUgdGhpbmcgYmVjb21lcyBtdWNoIG1vcmUgcHJvbWlzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzcxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MTk6NTguMDEwMDY2MTg2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJkZWJ1Z2ZzLmNcIixcbiAgICBcImluaXQuY1wiLFxuICAgIFwibWFjLmNcIixcbiAgICBcIm1hYy5oXCIsXG4gICAgXCJtYWluLmNcIixcbiAgICBcIm1jdS5jXCIsXG4gICAgXCJtY3UuaFwiLFxuICAgIFwibXQ3OTI1LmhcIixcbiAgICBcInBjaS5jXCIsXG4gICAgXCJwY2lfbWFjLmNcIixcbiAgICBcInBjaV9tY3UuY1wiLFxuICAgIFwicmVnZC5jXCIsXG4gICAgXCJyZWdkLmhcIixcbiAgICBcInJlZ3MuaFwiLFxuICAgIFwidGVzdG1vZGUuY1wiLFxuICAgIFwidXNiLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MTk6NTguMDEwMTMxNjY2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NTQ1MDg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byBVU0IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5SaWdodCwgKmZpbmFsbHkqLCB0aGVyZSdzIGB1c2IuY2AhIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlJ3ZlIHBvdGVudGlhbGx5IGdvdCBhIHByb21pc2luZyB0YXJnZXQgaGVyZS4gVVNCIGVtdWxhdGlvbiwgbGlrZSB3aXRoIHNvbWV0aGluZyBiYXNlZCBvbiBkdW1teV9oY2Qgb3IgZXZlbiBsZXZlcmFnaW5nIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgY291bGQgcHJlc2VudCBhIHJlYWxseSBpbnRlcmVzdGluZyBhdHRhY2sgc3VyZmFjZS4gVVNCIGRyaXZlcnMgYXJlIG9mdGVuIGNvbXBsZXggYW5kIHBvb3JseSB0ZXN0ZWQsIHJpcGUgZm9yIGZpbmRpbmcgdnVsbmVyYWJpbGl0aWVzLiBNeSBtaW5kIGlzIGFscmVhZHkgcmFjaW5nIHRocm91Z2ggcG90ZW50aWFsIGZhdWx0IGluamVjdGlvbiBzdHJhdGVnaWVzLlxuXG5MZXQncyBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCB0aGlzIHRoaW5nIGRvZXMuIFRoZSBgbXQ3OTI1X2luaXRfZWh0X2NhcHNgIGZ1bmN0aW9uLCB3aGljaCByZXNpZGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLCBpcyBteSBuZXh0IGZvY3VzLiBMZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIHRvIGZpbmQgYW55IHBvdGVudGlhbCBmbGF3cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE4OCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDowMi41ODU1ODQ2NzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc5NDM1NjczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9pbml0X2VodF9jYXBzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTYwPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE2MTptdDc5MjVfaW5pdF9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNjItXFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3NiYW5kX2lmdHlwZV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI5OD1fX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzE1LVxcdFxcdG10NzkyNV9pbml0X2hlX2NhcHMocGh5LCBiYW5kLCBcXHUwMDI2ZGF0YVtuXSwgaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjMxNjpcXHRcXHRtdDc5MjVfaW5pdF9laHRfY2FwcyhwaHksIGJhbmQsIFxcdTAwMjZkYXRhW25dKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzE3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDowMi43NjUwMjcwNTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkyODE4MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBtdDc5MjUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCB0byBpdC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgcmVsYXRlZCB0byB0aGUgYG10NzkyNWAgZHJpdmVyLiBJIGtub3cgaXTigJlzIGxpa2VseSBzcHJlYWQgYWNyb3NzIGEgZmV3IGRpZmZlcmVudCBmaWxlcyBkZXBlbmRpbmcgb24gdGhlIGFyY2hpdGVjdHVyZSBhbmQgZmVhdHVyZSBzZXQsIHNvIEknbGwgbmVlZCB0byBiZSBtZXRob2RpY2FsLiBUaGlzIGlzbid0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgY29uZGl0aW9uYWwgYnVpbGQgbG9naWMgc3Vycm91bmRpbmcgdGhpcyBzcGVjaWZpYyB3aXJlbGVzcyBtb2R1bGUuIEFyZSB0aGVyZSBhbnkgZGVmYXVsdCBzZXR0aW5ncyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGZsYWdzIG9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgY29tcG9uZW50cyB0aGF0IG1pZ2h0IHRyaXAgbWUgdXAgbGF0ZXI/IEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdmFyaW91cyBjb25maWd1cmF0aW9uIGNob2ljZXMuIElmIGEgbmV3IHByb2JsZW0gYXJpc2VzLCBJIG5lZWQgdG8gYmUgYWJsZSB0byB0cm91Ymxlc2hvb3QuIEknbSBsb29raW5nIGZvciBhIGNsZWFyIG1hcCBvZiB3aGF0J3MgYXZhaWxhYmxlIGFuZCBob3cgaXQgYWxsIGhhbmdzIHRvZ2V0aGVyIHNvIHRoYXQgSSBjYW4gcHJvdmlkZSBhbiBhY2N1cmF0ZSBhbnN3ZXIgdG8gdGhlIGlzc3VlLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBtb2R1bGUgaXMgaW50ZW5kZWQgdG8gYmVoYXZlIGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDowNy4wNTc4NDc5MTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzMzEzMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjA3LjM5MTE2NjgzM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjEyNjMzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdCBoZXJlLlxuXG4qKkFuYWx5emluZyB0aGUgTVQ3OTI1VSBVU0IgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYE1UNzkyNVVgIGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGZvciBVU0IuIE15IGluaXRpYWwgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBob3cgdGhpcyBhbGwgY29ubmVjdHMuIFRoZSBwcmltYXJ5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgYG10NzkyNV9pbml0X2VodF9jYXBzYCBpcyBhY3R1YWxseSBjYWxsZWQgYXMgcGFydCBvZiB0aGUgVVNCIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIEl0IGxvb2tzIGxpa2UgYF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNgIHRoZW4gY2FsbHMgYG10NzkyNV9pbml0X2VodF9jYXBzYC4gVGhhdCdzIHRoZSBsaW5rIEkgd2FzIGhvcGluZyBmb3IuIFNvIHRoZSBFbmhhbmNlZCBIaWdoIFRocm91Z2hwdXQgKEVIVCkgY2FwYWJpbGl0aWVzIGluaXRpYWxpemF0aW9uIGlzIGxpbmtlZCB0byBzdHJlYW0gc2V0dGluZy4gSSBub3cgaGF2ZSBhIGhhbmRsZSB0byB3b3JrIHdpdGgsIHRvIHNlZSB3aGVyZSB0aGUgVVNCIGluaXRpYWxpemF0aW9uIGNhbGxzIHJlc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ2NiwiT3V0cHV0VG9rZW5zIjo1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjExLjUxMjQzMjU4M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk3MDAwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2Fwc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI5Nz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyOTg6X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yOTktXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MzI0PXZvaWQgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjYtXFx0aWYgKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2FwLmhhc18yZ2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMjc6XFx0XFx0X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHksIFxcdTAwMjZwaHktXFx1MDAzZW10NzYtXFx1MDAzZXNiYW5kXzJnLnNiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjgtXFx0XFx0XFx0XFx0XFx0XFx0Tkw4MDIxMV9CQU5EXzJHSFopO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzMC1cXHRpZiAocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjYXAuaGFzXzVnaHopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjMzMTpcXHRcXHRfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfNWcuc2JhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzMi1cXHRcXHRcXHRcXHRcXHRcXHROTDgwMjExX0JBTkRfNUdIWik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzM0LVxcdGlmIChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNhcC5oYXNfNmdoeilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MzM1OlxcdFxcdF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMocGh5LCBcXHUwMDI2cGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VzYmFuZF82Zy5zYmFuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzM2LVxcdFxcdFxcdFxcdFxcdFxcdE5MODAyMTFfQkFORF82R0haKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MjA6MTEuNjEyMTM4NDEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Njc2OTYxODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhhdDpcblxuKipUcmFjaW5nIHRoZSBDYWxsIFBhdGggb2YgYG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2Fwc2AuICBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXM6IHdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmNhbGxlZCogZnJvbT8gSXQncyBhIGtleSBmdW5jdGlvbiwgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIHBvc2l0aW9uIGluIHRoZSBvdmVyYWxsIGRyaXZlciBzdHJ1Y3R1cmUgaXMgY3JpdGljYWwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBsb2NhdGlvbiB3aXRoaW4gdGhlIGNvZGUgYmFzZSB3aGVyZSB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uIGlzIGludm9rZWQuICBLbm93aW5nIHRoZSBjYWxsIHBhdGggd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UsIHRoZSBjb250ZXh0IGl0IG9wZXJhdGVzIGluLCBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gaGVyZSwgc3RlcCBieSBzdGVwLCB0byB1bmRlcnN0YW5kIGl0cyBlbnRyeSBwb2ludC4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyAtIGBncmVwYCwgc291cmNlIGNvZGUgbmF2aWdhdGlvbiwgb3IgbWF5YmUgZXZlbiBhIGRlYnVnZ2VyIGlmIHRoaW5ncyBnZXQgdHJpY2t5IC0gdG8gdW5jb3ZlciB0aGUgZXhhY3QgY2FsbGluZyBmdW5jdGlvbnMgYW5kIHRoZWlyIHJvbGVzLiBLbm93aW5nIHRoZSBjYWxsIGNvbnRleHQgaXMgdGhlIHN0YXJ0IG9mIHRydWx5IHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmN0aW9uJ3Mgc2lnbmlmaWNhbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDUxLCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MjA6MTUuNDc5ODM3ODY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ5NTg4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0xNTU9c3RhdGljIHZvaWQgbXQ3OTI1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY1LVxcdG10NzZfc2V0X3N0cmVhbV9jYXBzKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNjY6XFx0bXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY3LVxcdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI5Nz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyOTg6X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yOTktXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMjQ6dm9pZCBtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjYtXFx0aWYgKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlY2FwLmhhc18yZ2h6KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozMjc6XFx0XFx0X19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhwaHksIFxcdTAwMjZwaHktXFx1MDAzZW10NzYtXFx1MDAzZXNiYW5kXzJnLnNiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0zMjgtXFx0XFx0XFx0XFx0XFx0XFx0Tkw4MDIxMV9CQU5EXzJHSFopO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzMC1cXHRpZiAocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VjYXAuaGFzXzVnaHopXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjMzMTpcXHRcXHRfX210NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHBoeSwgXFx1MDAyNnBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlc2JhbmRfNWcuc2JhbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTMzMi1cXHRcXHRcXHRcXHRcXHRcXHROTDgwMjExX0JBTkRfNUdIWik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzM0LVxcdGlmIChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNhcC5oYXNfNmdoeilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MzM1OlxcdFxcdF9fbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMocGh5LCBcXHUwMDI2cGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VzYmFuZF82Zy5zYmFuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzM2LVxcdFxcdFxcdFxcdFxcdFxcdE5MODAyMTFfQkFORF82R0haKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xNjA3PW10NzkyNV9zZXRfYW50ZW5uYShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNjI1LVxcdG10NzZfc2V0X3N0cmVhbV9jYXBzKHBoeS1cXHUwMDNlbXQ3NiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE2MjY6XFx0bXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTYyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTMxMT12b2lkIG10NzkyNV9zdGF0c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzEyOnZvaWQgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzEzLWludCBtdDc5MjVfaW5pdF9tbG9fY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYz0yMT12b2lkIG10NzkyNV9yZWdkX2JlX2N0cmwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggKmFscGhhMilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3JlZ2QuYy02Mi1cXHRkZXYtXFx1MDAzZWhhc19laHQgPSBuZXc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jOjYzOlxcdG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcmVnZC5jLTY0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MjA6MTUuNTk0ODAzMjQ2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDc4NTI3OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBCdWcgaW4gYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIGl0cyBleGVjdXRpb24uIEl0IHNlZW1zIHRoaXMgY29kZSBzbmlwcGV0LCBzcGVjaWZpY2FsbHkgdGhlIGxpbmUgYHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7YCwgaXMgcmVhY2hlZCBkdXJpbmcgc2V2ZXJhbCBpbml0aWFsaXphdGlvbiBhbmQgY29uZmlndXJhdGlvbiBwcm9jZXNzZXMgd2l0aGluIHRoZSBgbXQ3OTI1YCB3aXJlbGVzcyBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQncyBjYWxsZWQgZHVyaW5nIGBtdDc5MjVfaW5pdF93b3JrYCwgYG10NzkyNV9zZXRfYW50ZW5uYWAsIGFuZCBgbXQ3OTI1X3JlZ2RfYmVfY3RybGAsIHdoaWNoIGFyZSBhbGwgdHJpZ2dlcmVkIHdoZW4gdGhlIGRldmljZSBpcyBwcm9iZWQuIEdpdmVuIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYE1UNzkyNVVgIFVTQiBkcml2ZXIsIHN5emthbGxlciBjb3VsZCBkZWZpbml0ZWx5IGJlIHVzZWQgdG8gZW11bGF0ZSB0aGlzIGRldmljZSBhbmQgdHJpZ2dlciB0aGlzIGNvZGUgcGF0aC5cblxuVGhlIHBhdGNoIGFpbXMgdG8gZml4IGEgc2l0dWF0aW9uIHdoZXJlIGBzdHNgICh3aGljaCBJJ20gYXNzdW1pbmcgaXMgdGhlIG51bWJlciBvZiBzcGF0aWFsIHN0cmVhbXMpIG1pZ2h0IGV4Y2VlZCBhIGNlcnRhaW4gYm91bmQsIGNhdXNpbmcgYSBiaXRmaWVsZCBvdmVyZmxvdyBiZWNhdXNlIGBzdHMgLSAxYCB3b3VsZCBiZSBvdXQgb2YgcmFuZ2UuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBzaW1wbHkgYHN0cyAtIDFgLiBUaGUgZml4IGlzIGEgdGVybmFyeSBvcGVyYXRvci5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJPa2F5LCBtYWtlcyBzZW5zZS4gTGV0J3MgbWFrZSBzdXJlIHRoaW5ncyBzdGF5IGluIGJvdW5kc1wiLiBIb3dldmVyLCBsZXQncyBzdGVwIHRocm91Z2ggdGhlIGxvZ2ljLiAgSWYgYHN0c2AgaXMgNCwgdGhlbiBgc3RzIFx1MDAzZSAzYCBpcyB0cnVlLCBzbyBgdmFsYCBiZWNvbWVzIGA0IC0gMSA9IDNgLiBJZiBgc3RzYCBpcyA1LCB0aGVuIGB2YWxgIHdvdWxkIGJlY29tZSA0LiBCdXQsIHdhaXQuLi5pZiBgc3RzYCBpcyAxLCB0aGVuIGBzdHMgXHUwMDNlIDNgIGlzIGZhbHNlLCBhbmQgYHZhbGAgZ2V0cyBzZXQgdG8gKjMqLiBIb2xkIG9uLiBUaGUgb3JpZ2luYWwgY29kZSB3b3VsZCBoYXZlIHNldCBgdmFsID0gc3RzIC0gMWAsIHdoaWNoIG1lYW5zIGl0IHdvdWxkIGhhdmUgYmVjb21lIDAuICBcblxuSSBoYXZlIHRvIGdvIGJhY2sgYW5kIGNoZWNrLiAgSXMgdGhpcyBjb3JyZWN0PyAgV2hhdCB0aGUgYXV0aG9yIGFjdHVhbGx5IHdyb3RlOiBgdmFsID0gKHN0cyBcdTAwM2UgMykgPyBzdHMgLSAxIDogMztgLlxuXG5Ob3csIGlmIGBzdHNgIGlzIDEsIGB2YWxgIGlzICpzZXQgdG8gMyouIFdoYXQncyBnb2luZyBvbiBoZXJlPyAgSXMgdGhpcyB3aGF0IHRoZSBhdXRob3IgaW50ZW5kZWQ/IE1heWJlLCBhIHR5cG8/IEkgd29uZGVyIGlmIHRoZSBhdXRob3Igd2FzIGFjdHVhbGx5IGdvaW5nIGZvciBgdmFsID0gKHN0cyBcdTAwM2UgMykgPyAzIDogc3RzIC0gMTtgLiBUaGVuLCB0aGUgYmVoYXZpb3Igd291bGQgYmUgY2FwcGVkIGF0IDMsIHdoaWNoIG1ha2VzIGEgbG90IG1vcmUgc2Vuc2UgZ2l2ZW4gbXkgYXNzdW1wdGlvbiB0aGF0IGB2YWxgIGlzIHVzZWQgZm9yIGJpdC1lbmNvZGluZyB0aGUgbnVtYmVyIG9mIHN0cmVhbXMuXG5cbkxldCdzIHJlLXJ1biB0aGUgbnVtYmVyczogIElmIGBzdHNgIGlzIDQsICpvcmlnaW5hbCBjb2RlKiBgc3RzIC0gMSA9IDNgLCBhbmQgdGhlIHBhdGNoIHdvdWxkIHlpZWxkIHRoZSB2YWx1ZSAzLiBJZiBgc3RzYCBpcyAxLCBgc3RzIC0gMSA9IDBgLiBXaXRoIHRoZSBwYXRjaCwgaWYgYHN0c2AgaXMgMSwgYHZhbCA9IDNgLiBObywgbm8gdGhhdCdzIG5vdCByaWdodC5cblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaCBvbmUgbW9yZSB0aW1lLiBUaGUgY29kZSBpcy4uLiBgdmFsID0gKHN0cyBcdTAwM2UgMykgPyBzdHMgLSAxIDogMztgLi4uIElmIGBzdHNgIGlzIDQsIGB2YWwgPSAzYC4gSWYgYHN0c2AgaXMgMSwgdGhlbiBgdmFsID0gM2AuIElmIGBzdHNgIGlzIDUsIGB2YWxgIGlzIDQuXG5cbk9rYXksIEknbSBwcmV0dHkgc3VyZSB0aGF0IHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGJ1Zy4gSXQgc2VlbXMgbGlrZSBhIGxvZ2ljIGVycm9yLiBTZXR0aW5nIGB2YWwgPSAzYCAqZXZlcnkqIHRpbWUgYHN0c2AgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMgZG9lc24ndCBtYWtlIHNlbnNlLCBjb25zaWRlcmluZyB0aGUgb3JpZ2luYWwgbG9naWMuIExvb2tzIGxpa2UgdGhpcyBuZWVkcyBhIGNsb3NlciBsb29rLCB0aGUgbG9naWMgZGVmaW5pdGVseSBuZWVkcyBjbGFyaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTkxLCJPdXRwdXRUb2tlbnMiOjU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjI4LjA3MzMzNDQ1MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMyNTgyMDAwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2YWwgPSBcXFxcKHN0cyBcXHUwMDNlIDNcXFxcKSBcXFxcPyAzIDogc3RzIC0gMTtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDoyOC40MDU5MjYxODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ0NDI1MjI5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOYXZpZ2F0aW5nIHRoZSBDb25kaXRpb25hbCBMb2dpYyoqXG5cbk9rYXksIGxldCdzIHRha2UgYW5vdGhlciBsb29rIGF0IHRoaXMgcGF0Y2guIEknbSBnb2luZyB0aHJvdWdoIGl0IGFnYWluLCBhbmQgaGVyZSdzIHdoYXQgaXQgc2hvd3M6XG5gYGBjXG4rXHR2YWwgPSAoc3RzIFx1MDAzZSAzKSA/IDMgOiBzdHMgLSAxO1xuYGBgXG5Tb21ldGhpbmcgZG9lc24ndCBmZWVsIHJpZ2h0LiBMZXQgbWUgcmUtcmVhZCB0aGlzIGRpZmYuIEknbSBjaGVja2luZyBpdCBhZ2FpbjpcbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gMyA6IHN0cyAtIDE7XG5gYGBcbldhaXQsIGRpZCBJIG1pc2ludGVycHJldCBpdCB0aGUgZmlyc3QgdGltZT8gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gTGV0IG1lIGNvbmZpcm0gd2l0aCB0aGUgcHJvbXB0IGl0c2VsZi5cbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gMyA6IHN0cyAtIDE7XG5gYGBcbk5vdyB3YWl0IGEgc2Vjb25kLi4uIFRoaXMgbG9va3MgbGlrZTpcbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7XG5gYGBcbk5vLCB0aGF0IGNhbid0IGJlIHJpZ2h0Li4uIExldCBtZSByZS1jaGVjayB0aGUgcHJvbXB0LlxuYGBgY1xuK1x0dmFsID0gKHN0cyBcdTAwM2UgMykgPyAzIDogc3RzIC0gMTtcbmBgYFxuV2FpdCwgdGhlIHByb21wdCBzYXlzLi4uXG5gYGBjXG4rXHR2YWwgPSAoc3RzIFx1MDAzZSAzKSA/IHN0cyAtIDEgOiAzO1xuYGBgXG5Obywgd2FpdCEgVGhlIHByb21wdCAqYWN0dWFsbHkqIHNheXMuLi5cbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gMyA6IHN0cyAtIDE7XG5gYGBcbk9rYXksIGxldCBtZSBqdXN0IGNvcHkgaXQgZnJvbSB0aGUgcHJvbXB0IHNvIEkgZG9uJ3QgbWlzcmVhZCBpdCBhZ2Fpbi4gV2FpdCwgSSBjYW4ndCBjb3B5IGl0Li4uIE9rYXksIGxldCBtZSBjYXJlZnVsbHkgcmVyZWFkIHRoZSBwcm9tcHQuXG5gYGBjXG4rXHR2YWwgPSAoc3RzIFx1MDAzZSAzKSA/IDMgOiBzdHMgLSAxO1xuYGBgXG5SaWdodC4gV2FpdCwgbm93IEkgdGhpbmsuLi5cbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7XG5gYGBcbk5vLCBubywgaXQncy4uLlxuYGBgY1xuK1x0dmFsID0gKHN0cyBcdTAwM2UgMykgPyAzIDogc3RzIC0gMTtcbmBgYFxuSSBuZWVkIHRvIGVsaW1pbmF0ZSBhbnkgY2hhbmNlIG9mIGVycm9yIGluIG15IHJlYWRpbmcuIEknbSBnb2luZyB0byBydW4gYSBzY3JpcHQsIG9yIHVzZSBhIHRvb2wgdG8gcmVhZCB0aGUgZmlsZSBhbmQgYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk4MSwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDozNS44NTAxODE2MDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODA6XFx0XFxuIDE4MTpcXHRcXHRlaHRfY2FwX2VsZW0tXFx1MDAzZXBoeV9jYXBfaW5mb1swXSA9XFxuIDE4MjpcXHRcXHRcXHRJRUVFODAyMTFfRUhUX1BIWV9DQVAwX05EUF80X0VIVF9MRlRfMzJfR0kgfFxcbiAxODM6XFx0XFx0XFx0SUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9TVV9CRUFNRk9STUVSIHxcXG4gMTg0OlxcdFxcdFxcdElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfU1VfQkVBTUZPUk1FRTtcXG4gMTg1OlxcdFxcbiAxODY6XFx0XFx0aWYgKGJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFogXFx1MDAyNlxcdTAwMjYgaXNfMzIwbWh6X3N1cHBvcnRlZChcXHUwMDI2cGh5LVxcdTAwM2VkZXYtXFx1MDAzZW10NzYpKVxcbiAxODc6XFx0XFx0XFx0ZWh0X2NhcF9lbGVtLVxcdTAwM2VwaHlfY2FwX2luZm9bMF0gfD1cXG4gMTg4OlxcdFxcdFxcdFxcdElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfMzIwTUhaX0lOXzZHSFo7XFxuIDE4OTpcXHRcXG4gMTkwOlxcdFxcdHZhbCA9IChzdHMgXFx1MDAzZSAzKSA/IHN0cyAtIDEgOiAzO1xcbiAxOTE6XFx0XFxuIDE5MjpcXHRcXHRlaHRfY2FwX2VsZW0tXFx1MDAzZXBoeV9jYXBfaW5mb1swXSB8PVxcbiAxOTM6XFx0XFx0XFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHModmFsLCBCSVQoMCkpLFxcbiAxOTQ6XFx0XFx0XFx0XFx0ICAgICAgIElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLKTtcXG4gMTk1OlxcdFxcbiAxOTY6XFx0XFx0ZWh0X2NhcF9lbGVtLVxcdTAwM2VwaHlfY2FwX2luZm9bMV0gPVxcbiAxOTc6XFx0XFx0XFx0dThfZW5jb2RlX2JpdHModThfZ2V0X2JpdHModmFsLCBHRU5NQVNLKDIsIDEpKSxcXG4gMTk4OlxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfRUhUX1BIWV9DQVAxX0JFQU1GT1JNRUVfU1NfODBNSFpfTUFTSykgfFxcbiAxOTk6XFx0XFx0XFx0dThfZW5jb2RlX2JpdHModmFsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDozNS44NTAzNzI4MTVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4Mjk4MDIzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNwYXRpYWwgU3RyZWFtIENhbGN1bGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBsaW5lIG9mIGNvZGU6IGB2YWwgPSAoc3RzIFx1MDAzZSAzKSA/IHN0cyAtIDEgOiAzO2AuIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGEgdGVybmFyeSBvcGVyYXRvci4gTGV0J3MgYnJlYWsgaXQgZG93bi4gSWYgYHN0c2AgaXMgNCwgdGhlbiB0aGUgY29uZGl0aW9uIGBzdHMgXHUwMDNlIDNgIGlzIHRydWUsIHNvIGB2YWxgIGJlY29tZXMgYDQgLSAxYCwgd2hpY2ggaXMgMy4gSWYgYHN0c2AgaXMgNSwgaXQncyBgNSAtIDEgPSA0YC4gQW5kIGlmIGBzdHNgIGlzLCBzYXksIDEsIHRoZW4gdGhlIGNvbmRpdGlvbiBpcyBmYWxzZSwgYW5kIGB2YWxgIGlzIHNldCB0byAzLiBBbHJpZ2h0LCBzbyBpZiBgc3RzYCBpcyAyLCBvciAzIGl0J3MgYWxzbyAzLiBTbywgaWYgYHN0c2AgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMsIGB2YWxgIGlzIGFsd2F5cyAzLiBCdXQsIGlmIGBzdHNgIGlzIGdyZWF0ZXIgdGhhbiAzLCBgdmFsYCBpcyBgc3RzIC0gMWAuXG5cbkxldCBtZSBqdXN0IHJ1biB0aHJvdWdoIGEgZmV3IG1vcmUgZXhhbXBsZXMgaW4gbXkgaGVhZC4gSWYgYHN0c2AgaXMgMSwgYHZhbCA9IDNgLiAyIGFsc28gZXF1YWxzIDMsIGFuZCAzIGFsc28uIFRoZW4gNCBsZWFkcyB0byAzLCA1IGdpdmVzIDQsIGFuZCA4IGdpdmVzIDcuIFJpZ2h0LCBzbyBgdmFsYCBpcyBhbHdheXMgYXQgbGVhc3QgMy4gTm93LCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgYHN0c2AgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHNwYXRpYWwgc3RyZWFtcy4gU28sIGlmIHdlIGhhdmUgb25seSBvbmUgc3BhdGlhbCBzdHJlYW0sIGB2YWxgIGlzIDMuIEkgc3VwcG9zZSB0aGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gZmlndXJlIG91dCB3aGF0IHRoZSB2YWx1ZSBvZiBgc3RzYCBhY3R1YWxseSBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NTAsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDo0MS44MzMzNTU5NjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjA6XFx0c3RhdGljIHZvaWRcXG4gMTYxOlxcdG10NzkyNV9pbml0X2VodF9jYXBzKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHksIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQsXFxuIDE2MjpcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfc2JhbmRfaWZ0eXBlX2RhdGEgKmRhdGEpXFxuIDE2MzpcXHR7XFxuIDE2NDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N0YV9laHRfY2FwICplaHRfY2FwID0gXFx1MDAyNmRhdGEtXFx1MDAzZWVodF9jYXA7XFxuIDE2NTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2VodF9jYXBfZWxlbV9maXhlZCAqZWh0X2NhcF9lbGVtID0gXFx1MDAyNmVodF9jYXAtXFx1MDAzZWVodF9jYXBfZWxlbTtcXG4gMTY2OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfZWh0X21jc19uc3Nfc3VwcCAqZWh0X25zcyA9IFxcdTAwMjZlaHRfY2FwLVxcdTAwM2VlaHRfbWNzX25zc19zdXBwO1xcbiAxNjc6XFx0XFx0ZW51bSBubDgwMjExX2NoYW5fd2lkdGggd2lkdGggPSBwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNoYW5kZWYud2lkdGg7XFxuIDE2ODpcXHRcXHRpbnQgbnNzID0gaHdlaWdodDgocGh5LVxcdTAwM2VtdDc2LVxcdTAwM2VhbnRlbm5hX21hc2spO1xcbiAxNjk6XFx0XFx0aW50IHN0cyA9IGh3ZWlnaHQxNihwaHktXFx1MDAzZW10NzYtXFx1MDAzZWNoYWlubWFzayk7XFxuIDE3MDpcXHRcXHR1OCB2YWw7XFxuIDE3MTpcXHRcXG4gMTcyOlxcdFxcdGlmICghcGh5LVxcdTAwM2VkZXYtXFx1MDAzZWhhc19laHQpXFxuIDE3MzpcXHRcXHRcXHRyZXR1cm47XFxuIDE3NDpcXHRcXG4gMTc1OlxcdFxcdGVodF9jYXAtXFx1MDAzZWhhc19laHQgPSB0cnVlO1xcbiAxNzY6XFx0XFxuIDE3NzpcXHRcXHRlaHRfY2FwX2VsZW0tXFx1MDAzZW1hY19jYXBfaW5mb1swXSA9XFxuIDE3ODpcXHRcXHRcXHRJRUVFODAyMTFfRUhUX01BQ19DQVAwX0VQQ1NfUFJJT19BQ0NFU1MgfFxcbiAxNzk6XFx0XFx0XFx0SUVFRTgwMjExX0VIVF9NQUNfQ0FQMF9PTV9DT05UUk9MO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDo0MS44MzM1Mzc2MTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2Nzc3ODcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWNvZGluZyB0aGUgQW50ZW5uYSBDaGFpbiBNYXNrKipcblxuT2theSwgc28gYHN0c2AgaXMgZGVyaXZlZCBmcm9tIGBod2VpZ2h0MTYocGh5LVx1MDAzZW10NzYtXHUwMDNlY2hhaW5tYXNrKWAuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlIOKAkyBgY2hhaW5tYXNrYCByZXByZXNlbnRzIHRoZSBhbnRlbm5hIGNoYWluIG1hc2ssIGFuZCBgaHdlaWdodDE2YCBsaWtlbHkgY291bnRzIHRoZSBudW1iZXIgb2YgYWN0aXZlIGNoYWlucy4gRm9yIHRoZSBNVDc5MjUsIHdoaWNoIEkga25vdyBpcyBhIDJ4MiBkZXZpY2UsIHRoaXMgbWVhbnMgYHN0c2AgY2FuIGJlIGF0IG1vc3QgMi5cblxuTm93LCBob2xkIG9uLi4uIGlmIGBzdHNgIGlzIGF0IG1vc3QgMiwgdGhlbiB0aGUgY29uZGl0aW9uYWwgYHN0cyBcdTAwM2UgM2Agd291bGQgKmFsd2F5cyogYmUgZmFsc2UsIGFuZCBzbyBgdmFsYCB3b3VsZCBiZSBhc3NpZ25lZCBhIHZhbHVlIG9mIDMuIEJ1dCB3aHkgYXJlIHdlIHNldHRpbmcgYHZhbGAgdG8gMywgaW5pdGlhbGx5PyBUaGF0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgY2xpY2suIFRoaXMgc21lbGxzIGxpa2UgYW4gRUhUICg4MDIuMTFiZSkgdGhpbmcuXG5cbkkgc2hvdWxkIGNoZWNrIHdoYXQgYElFRUU4MDIxMV9FSFRfUEhZX0NBUDBfQkVBTUZPUk1FRV9TU184ME1IWl9NQVNLYCBhY3R1YWxseSByZXByZXNlbnRzLiBSaWdodCwgSSByZW1lbWJlciB0aGF0IHRoZSBCZWFtZm9ybWVlIFNTIGZpZWxkcyBpbiA4MDIuMTFiZSBpbmRpY2F0ZSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3BhdGlhbCBzdHJlYW1zIHN1cHBvcnRlZCB3aGVuIG9wZXJhdGluZyBhcyBhIGJlYW1mb3JtZWUuIE9rYXksIHRoZSB2YWx1ZSBpdHNlbGYgaXMgZW5jb2RlZCBpbiBhbiBgc3RzIC0gMWAgbWFubmVyPyBXYWl0LCB0aGF0IGRvZXNuJ3QgZmVlbCByaWdodC4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoaXMsIGVpdGhlciB0aHJvdWdoIHRoZSA4MDIuMTFiZSBkcmFmdCBzcGVjaWZpY2F0aW9uIG9yLCBtb3JlIGVmZmljaWVudGx5LCBieSBjaGVja2luZyB0aGUgcmVsZXZhbnQga2VybmVsIGRlZmluaXRpb25zIHRvIGVuc3VyZSBJJ20gZ2V0dGluZyB0aGUgbG9naWMgY29ycmVjdCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY0NSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjQ3LjcwMTMxODUxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTk4ODU3NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9pZWVlODAyMTEtZWh0Lmg9MTc4PXN0cnVjdCBpZWVlODAyMTFfZWh0X29wZXJhdGlvbl9pbmZvIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvaWVlZTgwMjExLWVodC5oLTIxMi0vKiBFSFQgYmVhbWZvcm1lZSBudW1iZXIgb2Ygc3BhdGlhbCBzdHJlYW1zIFxcdTAwM2M9IDgwTUh6IGlzIHNwbGl0ICovXFxuaW5jbHVkZS9saW51eC9pZWVlODAyMTEtZWh0Lmg6MjEzOiNkZWZpbmUgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMF9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0tcXHRcXHQweDgwXFxuaW5jbHVkZS9saW51eC9pZWVlODAyMTEtZWh0LmgtMjE0LSNkZWZpbmUgSUVFRTgwMjExX0VIVF9QSFlfQ0FQMV9CRUFNRk9STUVFX1NTXzgwTUhaX01BU0tcXHRcXHQweDAzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjQ3LjkwMTIwOTAzM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDIxMjk1ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBFSFQgQ2FwYWJpbGl0eSBJbml0aWFsaXphdGlvbiBpbiB0aGUgTVQ3OTI1IERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IEVIVCBjYXBhYmlsaXRpZXMgYXJlIGhhbmRsZWQgZm9yIHRoZSBNVDc5MjUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIGEgMy1iaXQgZmllbGQuIEl0IGxvb2tzIGxpa2UgaXQncyBzcGxpdCB3aXRoIDEgYml0IGluIENBUDAgYW5kIHRoZSByZW1haW5pbmcgMiBpbiBDQVAxLiBUaGUgY3VycmVudCB2YWx1ZSBpcyBgdmFsYC4gSWYgYHZhbGAgaGl0cyAzLCBteSBmaXJzdCB0aG91Z2h0IGlzIFwiNCBzcGF0aWFsIHN0cmVhbXM/XCIsIGJ1dCB3YWl0LCBJIGhhdmUgdG8gcmVtZW1iZXIgaG93IGl0J3MgZW5jb2RlZC4gSXQncyBlbmNvZGluZyAqMyosIG5vdCByZXByZXNlbnRpbmcgNC5cblxuVGhlbiBJIGdldCBodW5nIHVwIG9uIHRoaXMgdmFyaWFibGUgYHN0c2AuIEluIHRoZSBvbGQgY29kZSwgd2hlbiBgc3RzID0gMmAsIHRoZXkgd2VyZSBkb2luZyBgc3RzIC0gMWAsIHJlc3VsdGluZyBpbiAxLiBCdXQgd2l0aCB0aGUgcGF0Y2gsIHRoZSBgdmFsYCBpcyBzZXQgdG8gMy4gV2h5IHNldCBpdCB0byAzPyBEb2VzIHRoYXQgdmFsdWUgaGF2ZSBzcGVjaWFsIG1lYW5pbmcsIGxpa2Ug4oCcbm90IHN1cHBvcnRlZOKAnSBvciBhIG1heGltdW0gb2YgNCBzdHJlYW1zP1xuXG5IbW0sIG1heWJlIGl0IHJlbGF0ZXMgdG8gdGhlIGRldmljZSdzIGNhcGFiaWxpdGllcy4gSWYgaXQncyBhIDJ4MiBkZXZpY2UsIGNvdWxkIGl0IHBvdGVudGlhbGx5IGFjdCBhcyBhIGJlYW1mb3JtZWUgZm9yIHVwIHRvIDQgc3BhdGlhbCBzdHJlYW1zPyBJIHdpc2ggSSBoYWQgdGhlIGNvbW1pdCBtZXNzYWdlOyB0aGF0IHdvdWxkIGxpa2VseSBjbGVhciB0aGluZ3MgdXAuIE5vIHdvcnJpZXMsIEkgY2FuIGNoZWNrIHRoZSBwYXRjaC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHdpdGhpbiBgbXQ3OTI1X2luaXRfZWh0X2NhcHNgIGluIGBtdDc5MjUvbWFpbi5jYC5cblxuSXMgdGhpcyBzb21ldGhpbmcgd29ydGggZnV6emluZz8gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gRUhUIGNhcGFiaWxpdGllcyBmb3IgTWVkaWFUZWsncyBNVDc5MjUsIHdoaWNoIGlzIGEgV2ktRmkgNyBkZXZpY2UuIFllcywgYWJzb2x1dGVseS4gSSBjYW4gZW11bGF0ZSBpdCB1c2luZyBVU0IgKGBNVDc5MjVVYCkuIEknbGwgbmVlZCB0byBlbmFibGUgYENPTkZJR19NVDc5MjVVYCBmaXJzdC4gTm93LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhhdCBjb25maWcgaXNuJ3QgZGVwZW5kZW50IG9uIHNvbWV0aGluZyBlbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQzMSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMDo1NS45MjI1MDg5OTZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjU1NTgzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTI1VVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIwOjU2LjIyNTA3MjMwOVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjUzNjA4NDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBtdDc5MjUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCB0aGUgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciwgc28gdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2sgaXMgdGhlIGBLY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBoZWFkaW5nIHN0cmFpZ2h0IGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AuIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGlzIHRoZSBoZWFydCBvZiBkZWZpbmluZyBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBkcml2ZXIuIEJ5IGNoZWNraW5nIHRoaXMsIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBncmFzcCB3aGF0IGZlYXR1cmVzIGFyZSBlbmFibGVkLCB3aGF0IG90aGVyIG1vZHVsZXMgaXQgcmVsaWVzIG9uLCBhbmQgd2hhdCBwbGF0Zm9ybSBjb25maWd1cmF0aW9ucyBzdXBwb3J0IGl0LiBUaGlzIGlzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgTVQ3OTI1IGRyaXZlciBmaXRzIGludG8gdGhlIGxhcmdlciBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQgYW5kIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24gZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgc2hvdWxkIEkgbmVlZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzNDIsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODoyMTowMC40Nzg2ODQzMDRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyOTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzkyeF9MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFxuICAgNzpcXHRjb25maWcgTVQ3OTI1RVxcbiAgIDg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAgOTpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXFxuICAxNDpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMTU6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1UNzkyNVVcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXFxuICAyNzpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMjg6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6MjE6MDAuNDc4ODE5MjY0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzA3NzYyNjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE1UNzkyNVUgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgTVQ3OTI1VSBkcml2ZXIuIEl0IHJlbGllcyBvbiBib3RoIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGUgc3BlY2lmaWMgY2hhbmdlIGlzIGluIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AsIGFuZCBJIHNlZSBpdCdzIHNlbGVjdGVkIGFzIGBNVDc5MjVfQ09NTU9OYC4gU28gdGhlIGZpcnN0IHN0ZXAgaXMgdG8gZW5hYmxlIGBNVDc5MjVVYCwgc2luY2UgdGhhdCdzIHRoZSB0YXJnZXQuIE5vdywgSSdtIHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcywgc28sIGlzIGl0IGV2ZW4gd29ydGggaXQ/IFdlbGwsIHllcy4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24uIEkgZG9uJ3Qgc2VlIGFueSBvdGhlciBmdW5jdGlvbiBtb2RpZmllZCwgb3IgZXZlbiBvdGhlciBmaWxlcy4gSnVzdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jYCwgZm9jdXNpbmcgb24gYG10NzkyNV9pbml0X2VodF9jYXBzYC5cblxuTGV0J3MgYnJlYWsgZG93biB0aGUgbG9naWMgb2YgdGhpcyBwYXRjaC4gVGhlIHJlbGV2YW50IGNvZGUgc25pcHBldCBpczpcbmBgYGNcbitcdHZhbCA9IChzdHMgXHUwMDNlIDMpID8gc3RzIC0gMSA6IDM7XG5gYGBcbk9rYXksIHNvIGxldCdzIHdhbGsgdGhyb3VnaCBpdC4gSWYgYHN0c2AgaXMgMSwgMiwgb3IgMywgdGhlbiBgdmFsYCBpcyAzLiBJZiBgc3RzYCBpcyA0LCBgdmFsYCBiZWNvbWVzIDMsIGFuZCBpZiBgc3RzYCBpcyA1LCB0aGVuIGl0IGJlY29tZXMgNC4gU28gYHZhbGAgaXMgYWx3YXlzIGF0IGxlYXN0IDMuIE5vdywgdGhpcyBgdmFsYCBsb29rcyBsaWtlIHRoZSBiZWFtZm9ybWVlIFNTIGZpZWxkLiBXaXRoIGEgMy1iaXQgZmllbGQgd2Uga25vdyB0aGF0OlxuKiAgIFZhbHVlIDA6IDEgc3BhdGlhbCBzdHJlYW1cbiogICBWYWx1ZSAxOiAyIHNwYXRpYWwgc3RyZWFtc1xuKiAgIFZhbHVlIDI6IDMgc3BhdGlhbCBzdHJlYW1zXG4qICAgVmFsdWUgMzogNCBzcGF0aWFsIHN0cmVhbXNcbiogICBWYWx1ZSA0OiA1IHNwYXRpYWwgc3RyZWFtc1xuKiAgIFZhbHVlIDU6IDYgc3BhdGlhbCBzdHJlYW1zXG4qICAgVmFsdWUgNjogNyBzcGF0aWFsIHN0cmVhbXNcbiogICBWYWx1ZSA3OiA4IHNwYXRpYWwgc3RyZWFtc1xuXG5JZiBgdmFsYCBpcyAzLCB0aGF0IHJlcHJlc2VudHMgNCBzcGF0aWFsIHN0cmVhbXMuIEEgMngyIGRldmljZSAoYHN0cz0yYCkgYWR2ZXJ0aXNpbmcgNCBzcGF0aWFsIHN0cmVhbXMgYXMgYSBiZWFtZm9ybWVlPyBUaGF0J3Mgd2hhdCBJJ20gcXVlc3Rpb25pbmcuIElzIHRoaXMgYmVjYXVzZSBvZiBhIHJlcXVpcmVtZW50IGluIDgwMi4xMWJlLCBvciBwZXJoYXBzIHRoZSBoYXJkd2FyZSBoYXMgYSBsaW1pdCBvZiB1cCB0byA0IHNwYXRpYWwgc3RyZWFtcyBmb3Igc291bmRpbmc/IFBlcmhhcHMgdGhlIDgwMi4xMWJlIGRyYWZ0ICpyZXF1aXJlcyogYXQgbGVhc3QgNCBzcGF0aWFsIHN0cmVhbXMgZm9yIGJlYW1mb3JtZWUsIG9yIG1heWJlIHRoZSBoYXJkd2FyZSBsaW1pdHMgaXQuIE5vIG1hdHRlciB3aGF0LCBpdCdzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBpbiB0aGUgZHJpdmVyIGFuZCB3b3J0aCBpbnZlc3RpZ2F0aW5nLlxuXG5Ob3csIGlzIGBtdDc5MjVfaW5pdF9laHRfY2Fwc2AgcmVhY2hhYmxlPyBJIGhhdmUgdG8gY29uZmlybSB0aGlzLiBJdCdzIGNhbGxlZCBieSBgX19tdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2Fwc2AsIHdoaWNoIGlzIGNhbGxlZCBieSBgbXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHNgLCB3aGljaCBpcyB0aGVuIGNhbGxlZCBieSBgbXQ3OTI1X2luaXRfd29ya2AsIGBtdDc5MjVfc2V0X2FudGVubmFgLCBhbmQgYG10NzkyNV9yZWdkX2JlX2N0cmxgLiBgbXQ3OTI1X2luaXRfd29ya2AgaXMgc2NoZWR1bGVkICpkdXJpbmcqIHRoZSBkZXZpY2UgcHJvYmUuIFNvLCB3aGVuIHRoZSBVU0IgZGV2aWNlIGlzIHByb2JlZCwgdGhpcyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBpcyBleGVjdXRlZC4gVGhlcmVmb3JlLCBmdXp6aW5nIHRoZSBVU0IgcHJvYmUgcHJvY2VzcyB3aWxsIGFic29sdXRlbHkgaGl0IHRoaXMgY29kZS5cblxuSSB0aGluayBJIGhhdmUgbXkgYW5zd2Vycy5cblxuKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgXG4qICAgYEZvY3VzU3ltYm9sczogbXQ3OTI1X2luaXRfZWh0X2NhcHNgXG4qICAgYEVuYWJsZUNvbmZpZ3M6IE1UNzkyNVVgXG4qICAgYFJlYXNvbmluZzogVGhlIHBhdGNoIG1vZGlmaWVzIEVIVCBjYXBhYmlsaXRpZXMgaW5pdGlhbGl6YXRpb24uIEl0J3MgcmVhY2hhYmxlIGR1cmluZyBVU0IgZGV2aWNlIHByb2JlLCBhbmQgZnV6emluZyB0aGUgcHJvYmUgcHJvY2VzcyBpcyB2aWFibGUuYFxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDEwMCwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjIxOjEyLjc4NjU4OTEzOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTQ0MTg2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNV9pbml0X2VodF9jYXBzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEVIVCBjYXBhYmlsaXRpZXMgaW5pdGlhbGl6YXRpb24gaW4gdGhlIE1UNzkyNSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIHRoZSBVU0IgZGV2aWNlIHByb2JlIGFuZCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfaW5pdF9laHRfY2Fwc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBFSFQgY2FwYWJpbGl0aWVzIGluaXRpYWxpemF0aW9uIGluIHRoZSBNVDc5MjUgZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyB0aGUgVVNCIGRldmljZSBwcm9iZSBhbmQgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowrjkd7[1] Phase: Succeeded StartedAt: 2026-07-24 08:21:24 +0000 UTC FinishedAt: 2026-07-24 08:21:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-24 08:21:24 +0000 UTC FinishedAt: 2026-07-24 08:21:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2] Phase: Succeeded StartedAt: 2026-07-24 08:21:24 +0000 UTC FinishedAt: 2026-07-24 10:05:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-24 08:21:24 +0000 UTC FinishedAt: 2026-07-24 10:05:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-24 08:21:24 +0000 UTC FinishedAt: 2026-07-24 08:21:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-24 08:21:24 +0000 UTC FinishedAt: 2026-07-24 08:21:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrjkd7/series-workflowrjkd7-convert-artifact-1895453977/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-24 08:21:45 +0000 UTC FinishedAt: 2026-07-24 09:04:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-24 08:21:45 +0000 UTC FinishedAt: 2026-07-24 09:04:20 +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:*c19bd358-99b4-421b-991e-6c64756cdce5,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-workflowrjkd7/series-workflowrjkd7-convert-artifact-1895453977/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": "7b2cd2bf-6736-46be-9167-ae35d6b584e0", "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-workflowrjkd7/series-workflowrjkd7-build-action-1777563831/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-24 08:21:45 +0000 UTC FinishedAt: 2026-07-24 09:03:59 +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:*c19bd358-99b4-421b-991e-6c64756cdce5,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-workflowrjkd7/series-workflowrjkd7-convert-artifact-1895453977/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": "7b2cd2bf-6736-46be-9167-ae35d6b584e0", "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-workflowrjkd7/series-workflowrjkd7-build-action-1777563831/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-24 09:04:20 +0000 UTC FinishedAt: 2026-07-24 09:04:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-24 09:04:20 +0000 UTC FinishedAt: 2026-07-24 09:04:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-24 09:04:20 +0000 UTC FinishedAt: 2026-07-24 09:04:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-24 09:04:20 +0000 UTC FinishedAt: 2026-07-24 09:04:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrjkd7/series-workflowrjkd7-convert-artifact-3633306860/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-24 09:04:40 +0000 UTC FinishedAt: 2026-07-24 09:06:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-24 09:04:40 +0000 UTC FinishedAt: 2026-07-24 09:06:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7b2cd2bf-6736-46be-9167-ae35d6b584e0,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-workflowrjkd7/series-workflowrjkd7-build-action-1777563831/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-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-24 09:06:52 +0000 UTC FinishedAt: 2026-07-24 09:06:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-24 09:06:52 +0000 UTC FinishedAt: 2026-07-24 09:06:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-24 09:06:52 +0000 UTC FinishedAt: 2026-07-24 10:00:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-24 09:06:52 +0000 UTC FinishedAt: 2026-07-24 10:00:06 +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:*c19bd358-99b4-421b-991e-6c64756cdce5,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-workflowrjkd7/series-workflowrjkd7-convert-artifact-3633306860/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": "e26421d9-a530-45a9-80e8-44ba75c4595b", "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-workflowrjkd7/series-workflowrjkd7-build-action-3877024648/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-24 09:06:52 +0000 UTC FinishedAt: 2026-07-24 09:59:56 +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:*c19bd358-99b4-421b-991e-6c64756cdce5,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-workflowrjkd7/series-workflowrjkd7-convert-artifact-3633306860/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": "e26421d9-a530-45a9-80e8-44ba75c4595b", "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-workflowrjkd7/series-workflowrjkd7-build-action-3877024648/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-24 10:00:06 +0000 UTC FinishedAt: 2026-07-24 10:00:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-24 10:00:06 +0000 UTC FinishedAt: 2026-07-24 10:00:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-24 10:00:06 +0000 UTC FinishedAt: 2026-07-24 10:02:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-24 10:00:06 +0000 UTC FinishedAt: 2026-07-24 10:02:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e26421d9-a530-45a9-80e8-44ba75c4595b,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-workflowrjkd7/series-workflowrjkd7-build-action-3877024648/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-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-24 10:02:12 +0000 UTC FinishedAt: 2026-07-24 10:05:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-24 10:02:12 +0000 UTC FinishedAt: 2026-07-24 10:05:11 +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":["mt7925_init_eht_caps"],"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:*7b2cd2bf-6736-46be-9167-ae35d6b584e0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e26421d9-a530-45a9-80e8-44ba75c4595b,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-workflowrjkd7/series-workflowrjkd7-build-action-1777563831/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-workflowrjkd7/series-workflowrjkd7-build-action-3877024648/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-24 10:02:12 +0000 UTC FinishedAt: 2026-07-24 10:02:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-24 10:02:12 +0000 UTC FinishedAt: 2026-07-24 10:02:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"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-workflowrjkd7/series-workflowrjkd7-convert-artifact-3718149333/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-24 10:02:12 +0000 UTC FinishedAt: 2026-07-24 10:02:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-24 10:02:12 +0000 UTC FinishedAt: 2026-07-24 10:02:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-24 10:02:12 +0000 UTC FinishedAt: 2026-07-24 10:02:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-24 10:02:22 +0000 UTC FinishedAt: 2026-07-24 10:05:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrjkd7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_init_eht_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"d3ca83cf-b254-4b42-8b08-db889d50a9c2","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-24 10:02:22 +0000 UTC FinishedAt: 2026-07-24 10:04:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7b2cd2bf-6736-46be-9167-ae35d6b584e0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e26421d9-a530-45a9-80e8-44ba75c4595b,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-workflowrjkd7/series-workflowrjkd7-build-action-1777563831/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-workflowrjkd7/series-workflowrjkd7-build-action-3877024648/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-workflowrjkd7/series-workflowrjkd7-convert-artifact-3718149333/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,}