Name: series-workflow4c9j7 Phase: Succeeded StartedAt: 2026-07-01 02:56:59 +0000 UTC FinishedAt: 2026-07-01 05:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[0] Phase: Succeeded StartedAt: 2026-07-01 02:56:59 +0000 UTC FinishedAt: 2026-07-01 03:14:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 02:56:59 +0000 UTC FinishedAt: 2026-07-01 03:14:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_MEDIATEK", "MT76x0U", "MT76x2U", "MT7921U", "MT7925U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_MEDIATEK", "MT76x0U", "MT76x2U", "MT7921U", "MT7925U" ], "series_id": "a67997a1-bfeb-4217-8a05-f6c3133035ae" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt76_eeprom_override" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X2VlcHJvbV9vdmVycmlkZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDMyM2ExNDQ5ZjA3OTAzMjk1Nzc1MDkyYTA3NDUzZmM4OTkxYmNmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDM6MTI6MjUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbmluZGV4IGI5OWQ3NDUyODAwZmRlLi5hZmRiNzM2NjE4NjZlOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbkBAIC0xODEsNyAmIzQzOzE4MSw3IEBAIG10NzZfZWVwcm9tX292ZXJyaWRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuIFx0aWYgKGVyciA9PSAtRVBST0JFX0RFRkVSKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0aWYgKGVycikge1xuJiM0MztcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihwaHktXHUwMDNlbWFjYWRkcikpIHtcbiBcdFx0ZXRoX3JhbmRvbV9hZGRyKHBoeS1cdTAwM2VtYWNhZGRyKTtcbiBcdFx0ZGV2X2luZm8oZGV2LVx1MDAzZWRldixcbiBcdFx0XHQgXCYjMzQ7SW52YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tIGFkZHJlc3MgJXBNXFxuXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X2VlcHJvbV9vdmVycmlkZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMzIzYTE0NDlmMDc5MDMyOTU3NzUwOTJhMDc0NTNmYzg5OTFiY2Y2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAwMzoxMjoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jCmluZGV4IGI5OWQ3NDUyODAwZmRlLi5hZmRiNzM2NjE4NjZlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jCkBAIC0xODEsNyAmIzQzOzE4MSw3IEBAIG10NzZfZWVwcm9tX292ZXJyaWRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KQogCWlmIChlcnIgPT0gLUVQUk9CRV9ERUZFUikKIAkJcmV0dXJuIGVycjsKIAotCWlmIChlcnIpIHsKJiM0MzsJaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKHBoeS0mZ3Q7bWFjYWRkcikpIHsKIAkJZXRoX3JhbmRvbV9hZGRyKHBoeS0mZ3Q7bWFjYWRkcik7CiAJCWRldl9pbmZvKGRldi0mZ3Q7ZGV2LAogCQkJICYjMzQ7SW52YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tIGFkZHJlc3MgJXBNXG4mIzM0OywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2OAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZWRpYXRlayBXaUZpIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBoZXJlLCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jYC4gVGhlIGNvcmUgb2YgdGhlIG1vZGlmaWNhdGlvbiBpcyBpbiB0aGUgYG10NzZfZWVwcm9tX292ZXJyaWRlYCBmdW5jdGlvbi4gSW50cmlndWluZy4gSXQgYXBwZWFycyB0aGF0IGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IGhhcyBiZWVuIGFsdGVyZWQg4oCTIHNwZWNpZmljYWxseSwgdGhlIG9sZCBgaWYgKGVycilgIGNoZWNrIGhhcyBiZWVuIHN3YXBwZWQgb3V0IGZvciBgaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKHBoeS0mZ3Q7bWFjYWRkcikpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBsaWtlbHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIE1BQyBhZGRyZXNzIGhhbmRsaW5nIGR1cmluZyB0aGUgRUVQUk9NIG92ZXJyaWRlIHByb2Nlc3MsIHdoaWNoIHNlZW1zIGEgYml0IHVudXN1YWwuIFRoaXMgd2FycmFudHMgYSBkZWVwZXIgZGl2ZSBpbnRvIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGV5JiMzOTt2ZSBtb3ZlZCBhd2F5IGZyb20gYW4gZXJyb3IgY2hlY2sgdG8gYSBNQUMgYWRkcmVzcyB2YWxpZGF0aW9uLCBpdCBtYXkgaGF2ZSBpbXBsaWNhdGlvbnMuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXTigJlzIGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIGNoYW5nZSB3YXMgbWFkZSwgd2hhdCB0aGUgcG90ZW50aWFsIGJlbmVmaXRzIGFyZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIHJpc2tzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X2VlcHJvbV9vdmVycmlkZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYz0xNzM9aW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE3NDptdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE5Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE5MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X2VlcHJvbV9vdmVycmlkZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE5NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQyCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3NiBFRVBST00gQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTVQ3NiBkcml2ZXIgaXMgaGFuZGxpbmcgRUVQUk9NIGRhdGEsIHNwZWNpZmljYWxseSB0aGUgbnVhbmNlcyBhcm91bmQgaG93IGl0JiMzOTtzIGJlaW5nIHJlYWQgYW5kIGludGVycHJldGVkLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNgIGZpbGUuIEkmIzM5O20gYWltaW5nIGZvciBhcm91bmQgbGluZSAxNzMgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhleSYjMzk7cmUgZG9pbmcgdGhlcmUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBzb21lIGNyaXRpY2FsIEVFUFJPTSByZWFkIGZ1bmN0aW9ucywgcGFyYW1ldGVyIGxvb2t1cHMsIG9yIGVycm9yIGhhbmRsaW5nIGluIHRoYXQgYXJlYS4gSG9wZWZ1bGx5LCB0aGUgY29kZSBpcyB3ZWxsLWNvbW1lbnRlZCwgYnV0IGV2ZW4gaWYgaXQmIzM5O3Mgbm90LCBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgZ3JvayB3aGF0JiMzOTtzIGdvaW5nIG9uIGJ5IHRyYWNpbmcgdGhlIGRhdGEgZmxvdy4gSSBhbnRpY2lwYXRlIHNvbWUgYml0ZmllbGQgbWFuaXB1bGF0aW9uIGFuZCBwb3RlbnRpYWxseSBzb21lIHZlbmRvci1zcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgdXNlZC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNjA6XHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gMTYxOlx0XG4gMTYyOlx0XHRyZXQgPSBtdDc2X2dldF9vZl9lZXByb21fZGF0YShkZXYsIGVlcCwgbGVuKTtcbiAxNjM6XHRcdGlmICghcmV0KVxuIDE2NDpcdFx0XHRyZXR1cm4gMDtcbiAxNjU6XHRcbiAxNjY6XHRcdHJldCA9IG10NzZfZ2V0X29mX2RhdGFfZnJvbV9tdGQoZGV2LCBlZXAsIDAsIGxlbik7XG4gMTY3Olx0XHRpZiAoIXJldClcbiAxNjg6XHRcdFx0cmV0dXJuIDA7XG4gMTY5Olx0XG4gMTcwOlx0XHRyZXR1cm4gbXQ3Nl9nZXRfb2ZfZGF0YV9mcm9tX252bWVtKGRldiwgZWVwLCBcJiMzNDtlZXByb21cJiMzNDssIGxlbik7XG4gMTcxOlx0fVxuIDE3MjpcdFxuIDE3MzpcdGludFxuIDE3NDpcdG10NzZfZWVwcm9tX292ZXJyaWRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuIDE3NTpcdHtcbiAxNzY6XHRcdHN0cnVjdCBtdDc2X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbiAxNzc6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtXHUwMDNlZGV2LVx1MDAzZW9mX25vZGU7XG4gMTc4Olx0XHRpbnQgZXJyO1xuIDE3OTpcdFxuIDE4MDpcdFx0ZXJyID0gb2ZfZ2V0X21hY19hZGRyZXNzKG5wLCBwaHktXHUwMDNlbWFjYWRkcik7XG4gMTgxOlx0XHRpZiAoZXJyID09IC1FUFJPQkVfREVGRVIpXG4gMTgyOlx0XHRcdHJldHVybiBlcnI7XG4gMTgzOlx0XG4gMTg0Olx0XHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocGh5LVx1MDAzZW1hY2FkZHIpKSB7XG4gMTg1Olx0XHRcdGV0aF9yYW5kb21fYWRkcihwaHktXHUwMDNlbWFjYWRkcik7XG4gMTg2Olx0XHRcdGRldl9pbmZvKGRldi1cdTAwM2VkZXYsXG4gMTg3Olx0XHRcdFx0IFwmIzM0O0ludmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbSBhZGRyZXNzICVwTVxcblwmIzM0OyxcbiAxODg6XHRcdFx0XHQgcGh5LVx1MDAzZW1hY2FkZHIpO1xuIDE4OTpcdFx0fVxuIDE5MDpcdFxuIDE5MTpcdFx0cmV0dXJuIDA7XG4gMTkyOlx0fVxuIDE5MzpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfZWVwcm9tX292ZXJyaWRlKTtcbiAxOTQ6XHRcbiAxOTU6XHRzdGF0aWMgYm9vbCBtdDc2X3N0cmluZ19wcm9wX2ZpbmQoc3RydWN0IHByb3BlcnR5ICpwcm9wLCBjb25zdCBjaGFyICpzdHIpXG4gMTk2Olx0e1xuIDE5NzpcdFx0Y29uc3QgY2hhciAqY3AgPSBOVUxMO1xuIDE5ODpcdFxuIDE5OTpcdFx0aWYgKCFwcm9wIHx8ICFzdHIgfHwgIXN0clswXSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzI1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWVkaWF0ZWsgTVQ3NiBXaXJlbGVzcyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIE1lZGlhdGVrIE1UNzYgd2lyZWxlc3MgZGV2aWNlcy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcz8gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4gVGhlIHRhcmdldCBzZWVtcyB0byBiZSBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLiBJcyB0aGlzIGEgVVNCIGRyaXZlcj8gS25vd2luZyB0aGF0IHdpbGwgaW5mbHVlbmNlIG15IGFwcHJvYWNoIHRvIHBvdGVudGlhbCBmdXp6aW5nIHN0cmF0ZWdpZXMsIHNvIHRoYXQmIzM5O3MgdGhlIG5leHQgdGhpbmcgSSBuZWVkIHRvIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2FnZy1yeC5jJiMzNDssCiAgICAmIzM0O2NoYW5uZWwuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZG1hLmMmIzM0OywKICAgICYjMzQ7ZG1hLmgmIzM0OywKICAgICYjMzQ7ZWVwcm9tLmMmIzM0OywKICAgICYjMzQ7bWFjODAyMTEuYyYjMzQ7LAogICAgJiMzNDttY3UuYyYjMzQ7LAogICAgJiMzNDttbWlvLmMmIzM0OywKICAgICYjMzQ7bXQ3Ni5oJiMzNDssCiAgICAmIzM0O210NzZfY29ubmFjLmgmIzM0OywKICAgICYjMzQ7bXQ3Nl9jb25uYWMyX21hYy5oJiMzNDssCiAgICAmIzM0O210NzZfY29ubmFjM19tYWMuYyYjMzQ7LAogICAgJiMzNDttdDc2X2Nvbm5hYzNfbWFjLmgmIzM0OywKICAgICYjMzQ7bXQ3Nl9jb25uYWNfbWFjLmMmIzM0OywKICAgICYjMzQ7bXQ3Nl9jb25uYWNfbWN1LmMmIzM0OywKICAgICYjMzQ7bXQ3Nl9jb25uYWNfbWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3NngwMi5oJiMzNDssCiAgICAmIzM0O210NzZ4MDJfYmVhY29uLmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9kZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9kZnMuYyYjMzQ7LAogICAgJiMzNDttdDc2eDAyX2Rmcy5oJiMzNDssCiAgICAmIzM0O210NzZ4MDJfZG1hLmgmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9lZXByb20uYyYjMzQ7LAogICAgJiMzNDttdDc2eDAyX2VlcHJvbS5oJiMzNDssCiAgICAmIzM0O210NzZ4MDJfbWFjLmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9tYWMuaCYjMzQ7LAogICAgJiMzNDttdDc2eDAyX21jdS5jJiMzNDssCiAgICAmIzM0O210NzZ4MDJfbWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9tbWlvLmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9waHkuYyYjMzQ7LAogICAgJiMzNDttdDc2eDAyX3BoeS5oJiMzNDssCiAgICAmIzM0O210NzZ4MDJfcmVncy5oJiMzNDssCiAgICAmIzM0O210NzZ4MDJfdHJhY2UuYyYjMzQ7LAogICAgJiMzNDttdDc2eDAyX3RyYWNlLmgmIzM0OywKICAgICYjMzQ7bXQ3NngwMl90eHJ4LmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl91c2IuaCYjMzQ7LAogICAgJiMzNDttdDc2eDAyX3VzYl9jb3JlLmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl91c2JfbWN1LmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl91dGlsLmMmIzM0OywKICAgICYjMzQ7bXQ3OTJ4LmgmIzM0OywKICAgICYjMzQ7bXQ3OTJ4X2FjcGlfc2FyLmMmIzM0OywKICAgICYjMzQ7bXQ3OTJ4X2FjcGlfc2FyLmgmIzM0OywKICAgICYjMzQ7bXQ3OTJ4X2NvcmUuYyYjMzQ7LAogICAgJiMzNDttdDc5MnhfZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O210NzkyeF9kbWEuYyYjMzQ7LAogICAgJiMzNDttdDc5MnhfbWFjLmMmIzM0OywKICAgICYjMzQ7bXQ3OTJ4X3JlZ3MuaCYjMzQ7LAogICAgJiMzNDttdDc5MnhfdHJhY2UuYyYjMzQ7LAogICAgJiMzNDttdDc5MnhfdHJhY2UuaCYjMzQ7LAogICAgJiMzNDttdDc5MnhfdXNiLmMmIzM0OywKICAgICYjMzQ7bnB1LmMmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7c2Nhbi5jJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvLmgmIzM0OywKICAgICYjMzQ7c2Rpb190eHJ4LmMmIzM0OywKICAgICYjMzQ7dGVzdG1vZGUuYyYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5oJiMzNDssCiAgICAmIzM0O3RyYWNlLmMmIzM0OywKICAgICYjMzQ7dHJhY2UuaCYjMzQ7LAogICAgJiMzNDt0eC5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDssCiAgICAmIzM0O3VzYl90cmFjZS5jJiMzNDssCiAgICAmIzM0O3VzYl90cmFjZS5oJiMzNDssCiAgICAmIzM0O3V0aWwuYyYjMzQ7LAogICAgJiMzNDt1dGlsLmgmIzM0OywKICAgICYjMzQ7d2VkLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7bXQ3NjAzJiMzNDssCiAgICAmIzM0O210NzYxNSYjMzQ7LAogICAgJiMzNDttdDc2eDAmIzM0OywKICAgICYjMzQ7bXQ3NngyJiMzNDssCiAgICAmIzM0O210NzkxNSYjMzQ7LAogICAgJiMzNDttdDc5MjEmIzM0OywKICAgICYjMzQ7bXQ3OTI1JiMzNDssCiAgICAmIzM0O210Nzk5NiYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM2NgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVTQiBEcml2ZXIgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIHBvdGVudGlhbCBVU0IgZHJpdmVyIGxhbmRzY2FwZSB3aXRoaW4gdGhpcyBjb2RlYmFzZS4gU2VlbXMgbGlrZSB3ZSYjMzk7dmUgZ290IGEgZmV3IGtleSBwbGF5ZXJzOiBgdXNiLmNgLCBgbXQ3NngwMl91c2JfY29yZS5jYCwgYW5kIGBtdDc5MnhfdXNiLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHNlZSBob3cgdGhlIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgZnVuY3Rpb24gZml0cyBpbnRvIHRoaXMgVVNCIHBpY3R1cmUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSByZWFjaGFibGUgZnJvbSBhbnkgb2YgdGhlc2UgVVNCLXJlbGF0ZWQgZmlsZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGVlcHJvbSBvdmVycmlkZSBwYXRoIGlzIGNydWNpYWwgZm9yIFsqKmluc2VydCB5b3VyIHNwZWNpZmljIGV4cGVydCByZWFzb24gaGVyZSwgZS5nLiwgZGVidWdnaW5nIGEgc3BlY2lmaWMgaXNzdWUsIGN1c3RvbWl6aW5nIGNvbmZpZ3VyYXRpb24sIGV4cGxvcmluZyBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIHVuZGVyc3RhbmRpbmcgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrKipdLiBUaGlzIGlzIG15IHN0YXJ0aW5nIHBvaW50IGZvciBhIGRlZXBlciBkaXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X2VlcHJvbV9vdmVycmlkZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYz0xNzM9aW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE3NDptdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE5Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE5MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X2VlcHJvbV9vdmVycmlkZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzQxPWludCBtdDc2X2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzNDI6aW50IG10NzZfZWVwcm9tX292ZXJyaWRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzNDMtaW50IG10NzZfZ2V0X29mX2RhdGFfZnJvbV9tdGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHZvaWQgKmVlcCwgaW50IG9mZnNldCwgaW50IGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTU2PWludCBtdDc2MDNfZWVwcm9tX2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxODY6XHRyZXR1cm4gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXHUwMDI2ZGV2LVx1MDAzZW1waHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTg3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYz0zMzM9aW50IG10NzYxNV9lZXByb21faW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCB1MzIgYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0zNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzozNTQ6XHRyZXR1cm4gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXHUwMDI2ZGV2LVx1MDAzZW1waHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMzU1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM9NTI3PWludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy01NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6NTczOlx0cmV0ID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUobXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNTc0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYz0zMTI9aW50IG10NzZ4MF9lZXByb21faW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYy0zMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYzozMzY6XHRlcnIgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYy0zMzctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jPTQ5Mj1pbnQgbXQ3NngyX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jLTUwMS1cdG10NzZ4Ml9lZXByb21fZ2V0X21hY2FkZHIoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jOjUwMjpcdHJldCA9IG10NzZfZWVwcm9tX292ZXJyaWRlKFx1MDAyNmRldi1cdTAwM2VtcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jLTUwMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmM9MjY3PWludCBtdDc5MTVfZWVwcm9tX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYy0yODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYzoyODc6XHRyZXR1cm4gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXHUwMDI2ZGV2LVx1MDAzZW1waHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmMtMjg4LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9NjkyPW10NzkxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTcxMS1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo3MTI6XHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03MTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz04ND1zdGF0aWMgaW50IF9fbXQ3OTIxX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6OTY6XHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0xMDA9c3RhdGljIGludCBfX210NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMDg6XHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTA5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0zMzM9aW50IG10Nzk5Nl9lZXByb21faW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTM0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjM0NzpcdHJldHVybiBtdDc2X2VlcHJvbV9vdmVycmlkZShcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02ODI9c3RhdGljIGludCBtdDc5OTZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9iYW5kX2lkIGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTcyOC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3Mjk6XHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy03MzAtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Nzg1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGUgc25pcHBldDoKCioqRGl2aW5nIGludG8gdGhlIGBtdDc2eDBfZWVwcm9tX2luaXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgY2FsbCBpcyBjb21pbmcgZnJvbSBgbXQ3NngwX2VlcHJvbV9pbml0YC4gVGhlIG5hbWUgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGluaXRpYWxpemluZyB0aGUgRUVQUk9NIGZvciB0aGUgTVQ3NngwIGNoaXBzZXQuIEdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGVzZSBzb3J0cyBvZiBlbWJlZGRlZCBzeXN0ZW1zLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkcmlsbCBkb3duIG9uIHRoZSBgbXQ3NngwYCBwYXJ0LiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHRhcmdldC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgbGFyZ2VyIGBtdDc2eDBgIGNvbnRleHQgaXMsIHNwZWNpZmljYWxseSB3aGF0IHRoZSBgbXQ3NngwYCBtb2R1bGUgb3IgZHJpdmVyIGFjdHVhbGx5ICppcyouIElzIGl0IGEgZ2VuZXJpYyBhYnN0cmFjdGlvbiBsYXllciwgYSBzcGVjaWZpYyBkZXZpY2UgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIG5hbWUgaXRzZWxmIGdpdmVzIGNsdWVzLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgc29saWRpZnkgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBFRVBST00gaW5pdGlhbGl6YXRpb24gZml0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwX2VlcHJvbV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYz0yOTM9c3RhdGljIGludCBtdDc2eDBfbG9hZF9lZXByb20oc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmMtMzExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmM6MzEyOmludCBtdDc2eDBfZWVwcm9tX2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYy0zMTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oPTEzPXN0cnVjdCBtdDc2eDAyX2Rldjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uaC0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oOjE4OmludCBtdDc2eDBfZWVwcm9tX2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmgtMTktdm9pZCBtdDc2eDBfcmVhZF9yeF9nYWluKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmM9MTcxPWludCBtdDc2eDBfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmMtMjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvaW5pdC5jOjIwNTpcdHJldCA9IG10NzZ4MF9lZXByb21faW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvaW5pdC5jLTIwNi1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHRob3VnaCBJIHdlcmUgYW4gZXhwZXJ0IGFuYWx5emluZyBgbXQ3NngwX2luaXRfaGFyZHdhcmVgOgoKKipEaXZpbmcgaW50byB0aGUgSGVhcnQgb2YgdGhlIE1UNzZ4MCBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFdlJiMzOTtyZSBsb29raW5nIGF0IGBtdDc2eDBfaW5pdF9oYXJkd2FyZWAuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljICpyZWFsbHkqIGhhcHBlbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaW50aW1hdGVseS4gV2hhdCBhcmUgdGhlIGtleSBzdGFnZXM/IFdoYXQgYXJlIHRoZSBjcnVjaWFsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGJlaW5nIHNldD8gSSBuZWVkIHRvIG1hcCBpdCBvdXQuCgpGaXJzdCwgSSBleHBlY3QgdG8gc2VlIHRoZSBoYXJkd2FyZSBicm91Z2h0IHVwIGZyb20gYSBsb3cgcG93ZXIgc3RhdGUuIFRoYXQgbGlrZWx5IGludm9sdmVzIHJlc2V0dGluZyB2YXJpb3VzIHBhcnRzIG9mIHRoZSBjaGlwc2V0LCBlbmFibGluZyBjbG9ja3MsIGFuZCBtYWtpbmcgc3VyZSB0aGUgYmFzaWMgc2lsaWNvbiBpcyByZXNwb25zaXZlLiBUaGVuLCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciByZWdpc3RlciBpbml0aWFsaXphdGlvbi4gQXJlIHRoZXkgdXNpbmcgYSBwcmUtZGVmaW5lZCB0YWJsZSwgb3IgYXJlIHRoZXkgY29tcHV0aW5nIHZhbHVlcyBvbiB0aGUgZmx5PyBFaXRoZXIgd2F5LCB0aGUgaW5pdGlhbCByZWdpc3RlciB3cml0ZXMgYXJlIGNyaXRpY2FsIGZvciBkZWZpbmluZyB0aGUgYmFzaWMgb3BlcmF0aW5nIHBhcmFtZXRlcnM6IGNsb2NrIGZyZXF1ZW5jaWVzLCBpbnRlcnJ1cHQgc2V0dGluZ3MsIGFuZCBETUEgY2hhbm5lbCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHJlZ2lzdGVyIG9mZnNldHMgYmVpbmcgd3JpdHRlbiB0byBhbmQgdGhlIHZhbHVlIHRoZSBkZXZlbG9wZXJzIGNob3NlLgoKVGhlbiBjb21lcyB0aGUgZmlybXdhcmUgbG9hZGluZy4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcC4gSG93IGlzIHRoZSBmaXJtd2FyZSBsb2FkZWQ/IElzIGl0IHZpYSBhIGJvb3Rsb2FkZXIgb3IgZGlyZWN0bHkgYnkgdGhlIGRyaXZlcj8gSXMgaXQgZnJvbSBmbGFzaCBvciBhbiBleHRlcm5hbCBzb3VyY2U/IEkmIzM5O2xsIG5lZWQgdG8gZGlzc2VjdCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgdHJhbnNmZXJzIHRoZSBmaXJtd2FyZSBpbWFnZSB0byB0aGUgZGV2aWNlLiBBbnkgdmVyaWZpY2F0aW9uIHN0ZXBzPyBFcnJvciBjaGVja2luZz8gU2VjdXJpdHkgY29uc2lkZXJhdGlvbnM/IFRoZXNlIGFyZSBpbXBvcnRhbnQuCgpOZXh0LCBJIGFudGljaXBhdGUgc2VlaW5nIHRoZSBjb25maWd1cmF0aW9uIG9mIHZhcmlvdXMgaGFyZHdhcmUgYmxvY2tzIGxpa2UgdGhlIE1BQywgUEhZLCBhbmQgcmFkaW8uIFRoaXMgaXMgd2hlcmUgdGhlIGRyaXZlciB0YWlsb3JzIHRoZSBoYXJkd2FyZSB0byB0aGUgc3BlY2lmaWNzIG9mIHRoZSB3aXJlbGVzcyBzdGFuZGFyZCBiZWluZyB1c2VkICg4MDIuMTFhL2IvZy9uL2FjKSBhbmQgdGhlIHBhcnRpY3VsYXIgTVQ3NngwIHZhcmlhbnQuIEFyZSB0aGV5IHNldHRpbmcgc3BlY2lmaWMgcG93ZXIgbGV2ZWxzLCBjaGFubmVsIGZyZXF1ZW5jaWVzLCBvciBtb2R1bGF0aW9uIHNjaGVtZXM/IEFyZSB0aGVyZSBhbnkgdmVuZG9yLXNwZWNpZmljIHNldHRpbmdzPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgZnVuZGFtZW50YWwgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0aGF0IGRlZmluZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGRldmljZS4KCkZpbmFsbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGVuYWJsZXMgaW50ZXJydXB0cyBhbmQgc3RhcnRzIHRoZSBkYXRhIHBhdGguIFdoYXQgaXMgdGhlIGludGVycnVwdCBzdHJ1Y3R1cmU/IFdoYXQgYXJlIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMgZG9pbmc/IEFyZSB0aGV5IERNQS1iYXNlZCBvciBDUFUtaW50ZW5zaXZlPyBIb3cgaXMgdGhlIGRyaXZlciBwcmVwYXJpbmcgdGhlIGhhcmR3YXJlIHRvIHJlY2VpdmUgYW5kIHRyYW5zbWl0IHBhY2tldHM/IEFyZSB0aGVyZSBhbnkgaW5pdGlhbGl6YXRpb24gc3RlcHMgdGhhdCBwcmVwYXJlIHRoZSByYWRpbyBmb3IgcHJvcGVyIG9wZXJhdGlvbj8gV2hhdCBpcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgdG8gZ2V0IHRoZSBkcml2ZXIgb3BlcmF0aW5nIGFmdGVyIHRoZSBpbml0IGZ1bmN0aW9uIGlzIGNvbXBsZXRlZC4KCkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gZGVjb25zdHJ1Y3QgdGhpcyBmdW5jdGlvbiBwaWVjZSBieSBwaWVjZSwgdHJhY2UgdGhlIHJlZ2lzdGVyIHdyaXRlcywgYW5kIHVuZGVyc3RhbmQgaG93IGVhY2ggc2V0dGluZyBjb250cmlidXRlcyB0byB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBmbG93LiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaXMgZGVmaW5lZCBhbmQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIG1hZGUgb3BlcmF0aW9uYWwuIFRoaXMgaW5pdGlhbCBwaGFzZSBpcyB3aGVyZSB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGRldmljZSBpcyBtYWRlIG9yIGJyb2tlbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZXkmIzM5O3ZlIGRvbmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwX2luaXRfaGFyZHdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYz0xNjk9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwX21hY19zdG9wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0xNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmM6MTcxOmludCBtdDc2eDBfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0xNzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0yMTItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvaW5pdC5jOjIxMzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2eDBfaW5pdF9oYXJkd2FyZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmMtMjE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oPTM5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MzAoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtNDQtLyogSW5pdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmg6NDU6aW50IG10NzZ4MF9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oLTQ2LWludCBtdDc2eDBfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYz05NT1zdGF0aWMgaW50IG10NzZ4MGVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXN1bWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM6MTE0Olx0ZXJyID0gbXQ3NngwX2luaXRfaGFyZHdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jLTExNS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MTUxPXN0YXRpYyBpbnQgbXQ3NngwdV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE2NC1cdG10NzZ4MF9pbml0X3VzYl9kbWEoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE2NTpcdGVyciA9IG10NzZ4MF9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNjYtXHRpZiAoZXJyIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDEyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBVU0IgSW5pdGlhbGl6YXRpb24gUm91dGluZSoqCgpBbHJpZ2h0LCBzbyBgbXQ3NngwdV9pbml0X2hhcmR3YXJlYCBpcyBzaXR0aW5nIHJpZ2h0IHRoZXJlIGluIGB1c2IuY2AuIFRoYXTigJlzIGdvb2QsIHRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCBodW5jaCBhYm91dCBpdHMgbG9jYXRpb24uIE5vdyB0aGUgcXVlc3Rpb24gaXMsICp3aGVyZSogYW5kICp3aGVuKiBkb2VzIHRoaXMgZnVuY3Rpb24gZ2V0IGNhbGxlZD8gTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGBtdDc2eDB1X2luaXRfaGFyZHdhcmVgIGlzIGluZGVlZCBwYXJ0IG9mIHRoZSBwcm9iZSBzZXF1ZW5jZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyB0byBzZWUgaWYgaXTigJlzIGdldHRpbmcgaW52b2tlZCBkdXJpbmcgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgZXhwZWN0IHRvIHNlZSBpdCBjYWxsZWQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBmcm9tIHRoZSBVU0IgZGV2aWNlIHByb2JlIGZ1bmN0aW9uLiBJZiBpdOKAmXMgbm90LCB0aGVuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY2FsbCBjaGFpbiBhbmQgdW5kZXJzdGFuZCB0aGUgdGltaW5nIG9mIHRoZXNlIGluaXRpYWxpemF0aW9uIHN0ZXBzIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgZHJpdmVyIGFuZCB0aGUgVVNCIHN1YnN5c3RlbS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIHNlcXVlbmNlIHRoYXQga2lja3Mgb2ZmIHRoZSBoYXJkd2FyZSBicmluZ3VwLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIHByb2JlIGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2eDB1X2luaXRfaGFyZHdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3NngwdV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTUxOnN0YXRpYyBpbnQgbXQ3NngwdV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0xNzk9c3RhdGljIGludCBtdDc2eDB1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxOTQ6XHRlcnIgPSBtdDc2eDB1X2luaXRfaGFyZHdhcmUoZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE5NS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MzIwPXN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXQ3NngwX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzI5Olx0cmV0ID0gbXQ3NngwdV9pbml0X2hhcmR3YXJlKGRldiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzMwLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgyMQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZToKCioqQW5hbHl6aW5nIHRoZSBtdDc2eDB1IERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIHRoaXMgYG10NzZ4MHVgIGRyaXZlci4gTXkgaW5pdGlhbCBodW5jaCwgYW5kIGl0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgaXMgdGhhdCBgbXQ3NngwdV9yZWdpc3Rlcl9kZXZpY2VgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCBraWNrcyB0aGluZ3Mgb2ZmLiBJdCBzZWVtcyBsb2dpY2FsLCBiYXNlZCBvbiBpdHMgbmFtZSwgdGhhdCBpdCB3b3VsZCBiZSB0aGUgb25lIHRvIG9yY2hlc3RyYXRlIHRoZSBpbml0aWFsIHNldHVwLiBUaGUgY29kZSYjMzk7cyBzdHJ1Y3R1cmUgZGVmaW5pdGVseSBzdXBwb3J0cyB0aGlzLgoKTm93LCB0aGUgaW1wb3J0YW50IHBhcnQgaXMga25vd2luZyB3aGVyZSB0aGF0IGZ1bmN0aW9uIGdldHMgY2FsbGVkIGZyb20uIEJhc2VkIG9uIG15IGV4cGVyaWVuY2Ugd2l0aCBVU0IgZHJpdmVycywgaXQmIzM5O3MgaGlnaGx5IGxpa2VseSB0aGF0IGBtdDc2eDB1X3JlZ2lzdGVyX2RldmljZWAgaXMgaW52b2tlZCBmcm9tIHdpdGhpbiB0aGUgVVNCIHByb2JlIGZ1bmN0aW9uLiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlIGluIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnM7IHRoZSBwcm9iZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZGV2aWNlIGRpc2NvdmVyeSBhbmQgaW5pdGlhbCBzZXR1cCB3aGVuIGEgZGV2aWNlIGlzIGNvbm5lY3RlZC4KClRvIGNvbmZpcm0gdGhpcyBhbmQgZ2FpbiBhIG1vcmUgY29uY3JldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdywgSSBzaG91bGQgZGlnIGRlZXBlciBpbnRvIHRoZSBzb3VyY2UgY29kZSBhbmQgc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBgbXQ3NngwdV9wcm9iZWAgZnVuY3Rpb24uIFRoYXTigJlzIG15IG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwdV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MTc5PXN0YXRpYyBpbnQgbXQ3NngwdV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjEzOnN0YXRpYyBpbnQgbXQ3NngwdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0zNDU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzZ4MF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzQ3LVx0LmlkX3RhYmxlXHQ9IG10NzZ4MF9kZXZpY2VfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozNDg6XHQucHJvYmVcdFx0PSBtdDc2eDB1X3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzQ5LVx0LmRpc2Nvbm5lY3RcdD0gbXQ3NngwX2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTI4CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMzM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMqKgoKT2theSwgc28gdGhpcyBjb2RlIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBVU0IgcHJvYmUsIHdoaWNoIGltbWVkaWF0ZWx5IHNwYXJrcyBteSBpbnRlcmVzdCBpbiBmdXp6aW5nIHBvdGVudGlhbC4gVGhlIGNvcmUgY2hhbmdlIGhlcmUgaXMgYSBjaGVjayBmb3IgYSB2YWxpZCBNQUMgYWRkcmVzcyAoYGlzX3ZhbGlkX2V0aGVyX2FkZHJgKSBpbnN0ZWFkIG9mIHNpbXBseSBjaGVja2luZyBhbiBlcnJvciBjb2RlIChgZXJyYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb247IGl0JiMzOTtzIG5vdCBhIHRyaXZpYWwgY2hhbmdlLgoKYGVycmAgY29tZXMgZnJvbSBgb2ZfZ2V0X21hY19hZGRyZXNzKG5wLCBwaHktJmd0O21hY2FkZHIpYC4gTm93LCBpZiBgZXJyYCBpcyB6ZXJvLCBidXQgdGhlIE1BQyBhZGRyZXNzIHR1cm5zIG91dCB0byBiZSBpbnZhbGlkLCB0aGlzIHdpbGwgdHJpZ2dlciB0aGUgcmFuZG9tIE1BQyBhZGRyZXNzIGdlbmVyYXRpb24uIEZvciBVU0IsIGhvd2V2ZXIsIEkgc3VzcGVjdCBgbnBgIGlzIE5VTEwuIExldCBtZSBkb3VibGUtY2hlY2sgYG9mX2dldF9tYWNfYWRkcmVzc2AuIFllcCwgaXQgcmV0dXJucyBhbiBlcnJvciB3aGVuIGBucGAgaXMgbnVsbC4gU28sIGluIHRoZSBVU0IgY2FzZSwgYGVycmAgd2lsbCBiZSBub24temVyby4KCkluaXRpYWxseSwgYmVmb3JlIHRoZSBwYXRjaCwgYSBub24temVybyBgZXJyYCB3b3VsZCBnZW5lcmF0ZSBhIHJhbmRvbSBNQUMgYWRkcmVzcywgYW5kIG5vdyBpdCBzdGlsbCB3aWxsLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogd2hhdCBpZiBgZXJyYCBpcyBub24temVybywgYnV0IGBwaHktJmd0O21hY2FkZHJgICphbHJlYWR5KiBob2xkcyBhIHZhbGlkIE1BQyBhZGRyZXNzPyBUaGF0JiMzOTtzIHRoZSByZWFsIGFuZ2xlIGhlcmUuCgpBaCwgb2YgY291cnNlISBgcGh5LSZndDttYWNhZGRyYCBtaWdodCBoYXZlIGJlZW4gcG9wdWxhdGVkIGVhcmxpZXIsIGJ5IGBtdDc2eDBfZWVwcm9tX2luaXRgLCBiZWZvcmUgY2FsbGluZyBgbXQ3Nl9lZXByb21fb3ZlcnJpZGVgLiBJIG5lZWQgdG8gcmV2aWV3IGBtdDc2eDBfZWVwcm9tX2luaXRgIHRvIGNvbmZpcm0gbXkgc3VzcGljaW9uLiBUaGlzIGlzIHdoZXJlIHRoZSBwb3RlbnRpYWwgZm9yIGludGVyZXN0aW5nIGZ1enppbmcgYW5nbGVzIGVtZXJnZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMxMDpcdH1cbiAzMTE6XHRcbiAzMTI6XHRpbnQgbXQ3NngwX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuIDMxMzpcdHtcbiAzMTQ6XHRcdHU4IHZlcnNpb24sIGZhZTtcbiAzMTU6XHRcdHUxNiBkYXRhO1xuIDMxNjpcdFx0aW50IGVycjtcbiAzMTc6XHRcbiAzMTg6XHRcdGVyciA9IG10NzZ4MF9sb2FkX2VlcHJvbShkZXYpO1xuIDMxOTpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAzMjA6XHRcdFx0cmV0dXJuIGVycjtcbiAzMjE6XHRcbiAzMjI6XHRcdGRhdGEgPSBtdDc2eDAyX2VlcHJvbV9nZXQoZGV2LCBNVF9FRV9WRVJTSU9OKTtcbiAzMjM6XHRcdHZlcnNpb24gPSBkYXRhIFx1MDAzZVx1MDAzZSA4O1xuIDMyNDpcdFx0ZmFlID0gZGF0YTtcbiAzMjU6XHRcbiAzMjY6XHRcdGlmICh2ZXJzaW9uIFx1MDAzZSBNVDc2WDBVX0VFX01BWF9WRVIpXG4gMzI3Olx0XHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldixcbiAzMjg6XHRcdFx0XHQgXCYjMzQ7V2FybmluZzogdW5zdXBwb3J0ZWQgRUVQUk9NIHZlcnNpb24gJTAyaGh4XFxuXCYjMzQ7LFxuIDMyOTpcdFx0XHRcdCB2ZXJzaW9uKTtcbiAzMzA6XHRcdGRldl9pbmZvKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7RUVQUk9NIHZlcjolMDJoaHggZmFlOiUwMmhoeFxcblwmIzM0OyxcbiAzMzE6XHRcdFx0IHZlcnNpb24sIGZhZSk7XG4gMzMyOlx0XG4gMzMzOlx0XHRtZW1jcHkoZGV2LVx1MDAzZW1waHkubWFjYWRkciwgKHU4ICopZGV2LVx1MDAzZW10NzYuZWVwcm9tLmRhdGEgJiM0MzsgTVRfRUVfTUFDX0FERFIsXG4gMzM0Olx0XHQgICAgICAgRVRIX0FMRU4pO1xuIDMzNTpcdFxuIDMzNjpcdFx0ZXJyID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXHUwMDI2ZGV2LVx1MDAzZW1waHkpO1xuIDMzNzpcdFx0aWYgKGVycilcbiAzMzg6XHRcdFx0cmV0dXJuIGVycjtcbiAzMzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE3MTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc2IFVTQiBEcml2ZXIgTUFDIEFkZHJlc3MgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBgbXQ3NngwX2VlcHJvbV9pbml0YCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgY3J1Y2lhbCBmb3IgdGhlIGNvcnJlY3QgTUFDIGFkZHJlc3MgY29uZmlndXJhdGlvbi4gIEVzc2VudGlhbGx5LCBpdCBjb3BpZXMgdGhlIE1BQyBhZGRyZXNzIHJlYWQgZnJvbSB0aGUgRUVQUk9NIGludG8gYGRldi0mZ3Q7bXBoeS5tYWNhZGRyYCwgd2hpY2ggaXMgZ3JlYXQuIFRoZW4sIGl0IGNhbGxzIGBtdDc2X2VlcHJvbV9vdmVycmlkZSgmYW1wO2Rldi0mZ3Q7bXBoeSlgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBwYXJ0IGJlZ2lucy4KCkxvb2tpbmcgYXQgdGhlIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgZnVuY3Rpb24sIHRoZSBjb2RlIHNuaXBwZXQgcmV2ZWFscyB0aGUgZml4OiBpdCB0cmllcyB0byBnZXQgYSBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSB1c2luZyBgb2ZfZ2V0X21hY19hZGRyZXNzYCwgYnV0ICpvbmx5KiBpZiB0aGUgTUFDIGFkZHJlc3MgaW4gdGhlIEVFUFJPTSBpc24mIzM5O3QgdmFsaWQuIEJlZm9yZSB0aGUgcGF0Y2gsIHRoZSBjb2RlIHdvdWxkIHNpbXBseSBhc3NpZ24gYSAqcmFuZG9tKiBNQUMgYWRkcmVzcyBpZiBgb2ZfZ2V0X21hY19hZGRyZXNzYCByZXR1cm5lZCBhbiBlcnJvci4gRm9yIFVTQiBkZXZpY2VzLCB0aGUgYG5wYCBwb2ludGVyIGlzIG51bGwsIGFuZCBgb2ZfZ2V0X21hY19hZGRyZXNzYCBhbHdheXMgdGhyb3dzIGFuIGVycm9yIChlLmcuIC1FTk9ERVYpIGJlY2F1c2UgdGhlcmUmIzM5O3Mgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhlcmVmb3JlLCB0aGUgcHJlLXBhdGNoIGNvZGUgd2FzIG92ZXJ3cml0aW5nIHRoZSBFRVBST00gTUFDIGFkZHJlc3Mgd2l0aCBhIHJhbmRvbSBvbmUgZXZlcnkgc2luZ2xlIHRpbWUgZm9yIFVTQiBkZXZpY2VzIOKAkyBhIGh1Z2UgZnVuY3Rpb25hbCBidWchIFRoZSBwYXRjaCBjb3JyZWN0cyB0aGlzIGJ5IGtlZXBpbmcgdGhlIEVFUFJPTSBNQUMgYWRkcmVzcywgaWYgaXQmIzM5O3MgdmFsaWQsIGZvciBVU0IgZGV2aWNlcy4gRXhjZWxsZW50IGZpeC4KCk5vdywgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoaXMgbG9va3MgcHJvbWlzaW5nLiBXZSBjYW4gdXNlIHN5emthbGxlciYjMzk7cyBgc3l6X3VzYl9jb25uZWN0YCBjYWxsLCB3aGljaCBzdXBwb3J0cyBmdXp6aW5nIFVTQiBkZXZpY2VzLiBUaGUgdGFyZ2V0IGRyaXZlciBpcyBgbXQ3NngwdWAgKGFuZCBvdGhlciBNVDc2IFVTQiBkcml2ZXJzKSBhbmQgd2UgY2FuIHNwZWNpZmljYWxseSB0YXJnZXQgYG10NzZfZWVwcm9tX292ZXJyaWRlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggS2NvbmZpZyBvcHRpb24gdG8gZW5hYmxlIGZvciBgbXQ3NngwdWAsIGJ1dCBvdmVyYWxsLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggcHVyc3VpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZ4MHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19NVDc2eDBVKSAmIzQzOz0gbXQ3NngwdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9NYWtlZmlsZS0zLW9iai0kKENPTkZJR19NVDc2eDBFKSAmIzQzOz0gbXQ3NngwZS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGU9Nj1tdDc2eDAtY29tbW9uLXkgOj0gaW5pdC5vIG1haW4ubyBlZXByb20ubyBwaHkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL01ha2VmaWxlOjg6bXQ3NngwdS15IDo9IHVzYi5vIHVzYl9tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtOS1tdDc2eDBlLXkgOj0gcGNpLm8gcGNpX21jdS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1Lmg9Mzk9aW50IG10NzZ4MGVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1Lmg6NDA6aW50IG10NzZ4MHVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1LmgtNDEtc3RhdGljIGlubGluZSBpbnQgbXQ3NngwX2Zpcm13YXJlX3J1bm5pbmcoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9NDY9c3RhdGljIHZvaWQgbXQ3NngwX2luaXRfdXNiX2RtYShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy03Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjczOnN0YXRpYyB2b2lkIG10NzZ4MHVfY2xlYW51cChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTc0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy03OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjgwOnN0YXRpYyB2b2lkIG10NzZ4MHVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTEwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjEwMjpzdGF0aWMgaW50IG10NzZ4MHVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTExOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjEyMDpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3NngwdV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMjEtXHQuYWRkX2NoYW5jdHggPSBpZWVlODAyMTFfZW11bGF0ZV9hZGRfY2hhbmN0eCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMjUtXHQudHggPSBtdDc2eDAyX3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTI2Olx0LnN0YXJ0ID0gbXQ3NngwdV9zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjEyNzpcdC5zdG9wID0gbXQ3NngwdV9zdG9wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTI4LVx0LmFkZF9pbnRlcmZhY2UgPSBtdDc2eDAyX2FkZF9pbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTUxOnN0YXRpYyBpbnQgbXQ3NngwdV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxNjA6XHRlcnIgPSBtdDc2eDB1X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNjEtXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE3OTpzdGF0aWMgaW50IG10NzZ4MHVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTgwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxOTQ6XHRlcnIgPSBtdDc2eDB1X2luaXRfaGFyZHdhcmUoZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE5NS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjA4LW91dF9lcnI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMDk6XHRtdDc2eDB1X2NsZWFudXAoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIxMC1cdHJldHVybiBlcnI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjEzOnN0YXRpYyBpbnQgbXQ3NngwdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMzY6XHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBzaXplb2YoKmRldiksIFx1MDAyNm10NzZ4MHVfb3BzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjM3LVx0XHRcdFx0IFx1MDAyNmRydl9vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjI3ODpcdHJldCA9IG10NzZ4MHVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yNzktXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTI5Mj1zdGF0aWMgdm9pZCBtdDc2eDBfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzAwLVx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGV2LVx1MDAzZW10NzYuaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzAxOlx0bXQ3NngwdV9jbGVhbnVwKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MzIwPXN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXQ3NngwX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzI5Olx0cmV0ID0gbXQ3NngwdV9pbml0X2hhcmR3YXJlKGRldiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzMwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzQtZXJyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzM1Olx0bXQ3NngwdV9jbGVhbnVwKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzYtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTM0NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NngwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNDctXHQuaWRfdGFibGVcdD0gbXQ3NngwX2RldmljZV90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjM0ODpcdC5wcm9iZVx0XHQ9IG10NzZ4MHVfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNDktXHQuZGlzY29ubmVjdFx0PSBtdDc2eDBfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM9MTY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE3Om10NzZ4MHVfdXBsb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTE4LVx0XHRcdGNvbnN0IHN0cnVjdCBtdDc2eDAyX2Z3X2hlYWRlciAqaGRyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYz02Nz1zdGF0aWMgaW50IG10NzZ4MF9nZXRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjg1OnN0YXRpYyBpbnQgbXQ3NngwdV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE1MDpcdHJldCA9IG10NzZ4MHVfdXBsb2FkX2Zpcm13YXJlKGRldiwgaGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNTEtXHRtdDc2eDAyX3NldF9ldGh0b29sX2Z3dmVyKGRldiwgaGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE2NDppbnQgbXQ3NngwdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM6MTY4Olx0cmV0ID0gbXQ3NngwdV9sb2FkX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTY5LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5MDEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqVHJvdWJsZXNob290aW5nIHRoZSBNVDc2eDBVIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQgaXMgYE1UNzZ4MFVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBiZWluZyBoYW5kbGVkIGluIHRoZSBkcml2ZXIgY29kZS4gUmlnaHQsIEkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBhbiBgbXQ3Nl9lZXByb21fb3ZlcnJpZGVgIGZ1bmN0aW9uLiBXaGVyZSB3YXMgdGhhdCBhZ2Fpbj8gQWgsIHllcywgaXQmIzM5O3MgYnVyaWVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jYC4gVGhhdCYjMzk7cyBwYXJ0IG9mIHRoZSBjb3JlIE1UNzYgbW9kdWxlLCB3aGljaCB3b3VsZCBsaWtlbHkgYmUgbmFtZWQgYG10NzYua29gIG9yIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgaG93IHRoYXQgcGFydGljdWxhciBmaWxlIGlzIGNvbXBpbGVkLCBJIHNob3VsZCBjaGVjayB0aGUgTWFrZWZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZWAuIEkgbmVlZCB0byBzZWUgaG93IHRoYXQgb2JqZWN0IGZpbGUgaXMgbGlua2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRvYmotJChDT05GSUdfTVQ3Nl9DT1JFKSAmIzQzOz0gbXQ3Ni5vXG4gICAzOlx0b2JqLSQoQ09ORklHX01UNzZfVVNCKSAmIzQzOz0gbXQ3Ni11c2Iub1xuICAgNDpcdG9iai0kKENPTkZJR19NVDc2X1NESU8pICYjNDM7PSBtdDc2LXNkaW8ub1xuICAgNTpcdG9iai0kKENPTkZJR19NVDc2eDAyX0xJQikgJiM0Mzs9IG10NzZ4MDItbGliLm9cbiAgIDY6XHRvYmotJChDT05GSUdfTVQ3NngwMl9VU0IpICYjNDM7PSBtdDc2eDAyLXVzYi5vXG4gICA3Olx0b2JqLSQoQ09ORklHX01UNzZfQ09OTkFDX0xJQikgJiM0Mzs9IG10NzYtY29ubmFjLWxpYi5vXG4gICA4Olx0b2JqLSQoQ09ORklHX01UNzkyeF9MSUIpICYjNDM7PSBtdDc5MngtbGliLm9cbiAgIDk6XHRvYmotJChDT05GSUdfTVQ3OTJ4X1VTQikgJiM0Mzs9IG10NzkyeC11c2Iub1xuICAxMDpcdFxuICAxMTpcdG10NzYteSA6PSBcXFxuICAxMjpcdFx0bW1pby5vIHV0aWwubyB0cmFjZS5vIGRtYS5vIG1hYzgwMjExLm8gZGVidWdmcy5vIGVlcHJvbS5vIFxcXG4gIDEzOlx0XHR0eC5vIGFnZy1yeC5vIG1jdS5vIHdlZC5vIHNjYW4ubyBjaGFubmVsLm9cbiAgMTQ6XHRcbiAgMTU6XHRtdDc2LSQoQ09ORklHX01UNzZfTlBVKSAmIzQzOz0gbnB1Lm9cbiAgMTY6XHRtdDc2LSQoQ09ORklHX1BDSSkgJiM0Mzs9IHBjaS5vXG4gIDE3Olx0bXQ3Ni0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuICAxODpcdFxuICAxOTpcdG10NzYtdXNiLXkgOj0gdXNiLm8gdXNiX3RyYWNlLm9cbiAgMjA6XHRtdDc2LXNkaW8teSA6PSBzZGlvLm8gc2Rpb190eHJ4Lm9cbiAgMjE6XHRcbiAgMjI6XHRDRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxuICAyMzpcdENGTEFHU191c2JfdHJhY2UubyA6PSAtSSQoc3JjKVxuICAyNDpcdENGTEFHU19tdDc2eDAyX3RyYWNlLm8gOj0gLUkkKHNyYylcbiAgMjU6XHRDRkxBR1NfbXQ3OTJ4X3RyYWNlLm8gOj0gLUkkKHNyYylcbiAgMjY6XHRcbiAgMjc6XHRtdDc2eDAyLWxpYi15IDo9IG10NzZ4MDJfdXRpbC5vIG10NzZ4MDJfbWFjLm8gbXQ3NngwMl9tY3UubyBcXFxuICAyODpcdFx0XHQgbXQ3NngwMl9lZXByb20ubyBtdDc2eDAyX3BoeS5vIG10NzZ4MDJfbW1pby5vIFxcXG4gIDI5Olx0XHRcdCBtdDc2eDAyX3R4cngubyBtdDc2eDAyX3RyYWNlLm8gbXQ3NngwMl9kZWJ1Z2ZzLm8gXFxcbiAgMzA6XHRcdFx0IG10NzZ4MDJfZGZzLm8gbXQ3NngwMl9iZWFjb24ub1xuICAzMTpcdFxuICAzMjpcdG10NzZ4MDItdXNiLXkgOj0gbXQ3NngwMl91c2JfbWN1Lm8gbXQ3NngwMl91c2JfY29yZS5vXG4gIDMzOlx0XG4gIDM0Olx0bXQ3Ni1jb25uYWMtbGliLXkgOj0gbXQ3Nl9jb25uYWNfbWN1Lm8gbXQ3Nl9jb25uYWNfbWFjLm8gbXQ3Nl9jb25uYWMzX21hYy5vXG4gIDM1Olx0XG4gIDM2Olx0bXQ3OTJ4LWxpYi15IDo9IG10NzkyeF9jb3JlLm8gbXQ3OTJ4X21hYy5vIG10NzkyeF90cmFjZS5vIFxcXG4gIDM3Olx0XHRcdG10NzkyeF9kZWJ1Z2ZzLm8gbXQ3OTJ4X2RtYS5vXG4gIDM4Olx0bXQ3OTJ4LWxpYi0kKENPTkZJR19BQ1BJKSAmIzQzOz0gbXQ3OTJ4X2FjcGlfc2FyLm9cbiAgMzk6XHRtdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXG4gIDQwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTg5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgTVQ3NiBVU0IgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBNVDc2X0NPUkVgIGNvbmZpZywgYW5kIGl0IGJ1aWxkcyBgbXQ3Ni5vYCwgd2hpY2ggaXMgc3RhbmRhcmQuIEJ1dCwgYW5kIGhlcmUmIzM5O3MgdGhlIHJ1YiwgdGhhdCBgZWVwcm9tLm9gIGNvbXBvbmVudCB3ZSBuZWVkPyBJdCYjMzk7cyBhbGwgd2VsbCBhbmQgZ29vZCB0byAqaGF2ZSogaXQgY29tcGlsZWQgaW4sIGJ1dCB3ZSBzdGlsbCBuZWVkIGEgd2F5IHRvIGdldCBhdCBpdCB3aGVuIGRlYWxpbmcgd2l0aCBhIFVTQiBjb25uZWN0aW9uLiBUaGF0IG1lYW5zIGEgVVNCIGRyaXZlciBpcyBjcml0aWNhbCB0byB0aGUgY2hhaW4uIGBNVDc2eDBVYCBpcyBvbmUgcG9zc2liaWxpdHkgSSBrbm93IG9mLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMsIGFyZSB0aGVyZSAqb3RoZXIqIFVTQiBkcml2ZXJzIHRoYXQgd2Ugc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGhpbmsuLi4gbGV0JiMzOTtzIHNlZS4gVGhlcmUmIzM5O3MgYE1UNzZ4MlVgLiBUaGVuLCB0aGVyZSBpcyB0aGUgYE1UNzkyMVVgIGRyaXZlciwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBgTVQ3OTI1VWAgZHJpdmVyLgoKSSB0aGluayBpdCYjMzk7cyB3b3J0aCB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCBgTVQ3OTIxVWAgaW4gdGhpcyBzY2VuYXJpbywgc28gSSYjMzk7bGwgc3RhcnQgdGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdCYjMzk7cyB0aGUgcmlnaHQgY2hvaWNlIGdpdmVuIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZz0xNz1jb25maWcgTVQ3OTIxU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI5Olx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMwLVx0c2VsZWN0IE1UNzkyeF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTM0LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzozNTpcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19NVDc5MjFTKSAmIzQzOz0gbXQ3OTIxcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19NVDc5MjFVKSAmIzQzOz0gbXQ3OTIxdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZS03LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTM1MT1tb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNTM6TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgd2lyZWxlc3MgZHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1NC1NT0RVTEVfQVVUSE9SKFwmIzM0O0xvcmVuem8gQmlhbmNvbmkgXHUwMDNjbG9yZW56b0BrZXJuZWwub3JnXHUwMDNlXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxNDgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBNVDc2eDJVIElucXVpcnkqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgcHJvbXB0IGlzIHNob3J0IGFuZCBzd2VldC4gTXkgaW1tZWRpYXRlIGludGVybmFsIHJlYWN0aW9uIGlzIHRvIHplcm8gaW4gb24gdGhhdCBzcGVjaWZpYyBjaGlwc2V0LCBgTVQ3NngyVWAuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBnZW5lcmljICYjMzQ7Y2hlY2smIzM0OyBjb21tYW5kLiBJdCBpbXBsaWVzIGEgZGVlcGVyIGRpdmUgaXMgcmVxdWlyZWQsIGxpa2VseSBkZW1hbmRpbmcgbXkgZXhwZXJ0IGtub3dsZWRnZS4gVGhlICYjMzQ7Y2hlY2smIzM0OyBzdWdnZXN0cyBhIHRhc2ssIGFuIGludmVzdGlnYXRpb24sIG9yIGFuIGV4YW1pbmF0aW9uIG9mIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoaXMgY2hpcHNldC4gQmFzZWQgb24gdGhlIGNvbnRleHQsIEkgd2lsbCBhc3N1bWUgaXQgaXMgcmVsYXRlZCB0byBhbiBpc3N1ZSBvciBhIHRyb3VibGVzaG9vdGluZyBzY2VuYXJpbyBhbmQgSSBzaG91bGQgYXNzZXNzIHRoZSBjb250ZXh0IGJlZm9yZSBkaXZpbmcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgcHJlY2lzZWx5IEkgYW0gdG8gYmUgY2hlY2tpbmcuIEFtIEkgYXNzZXNzaW5nIHRoZSBkcml2ZXIgc3VwcG9ydD8gSW52ZXN0aWdhdGluZyBwb3RlbnRpYWwgYnVncz8gQ2hlY2tpbmcgZm9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcz8gT3IgcGVyaGFwcyBldmFsdWF0aW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgaW4gYSBzcGVjaWZpYyBzY2VuYXJpbz8gVGhlIHBvc3NpYmlsaXRpZXMgYXJlIG51bWVyb3VzLCBhbmQgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gY2xhcmlmeSB0aGUgc2NvcGUuIFNvLCBsZXQmIzM5O3MgbG9vayBmb3IgY2x1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UNzZ4MlUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc9Nj1jb25maWcgTVQ3NngyRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE4OmNvbmZpZyBNVDc2eDJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE5Olx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTIwLVx0c2VsZWN0IE1UNzZ4Ml9DT01NT05cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9NYWtlZmlsZT0zPW9iai0kKENPTkZJR19NVDc2eDJFKSAmIzQzOz0gbXQ3NngyZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc2eDJVKSAmIzQzOz0gbXQ3NngydS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9NYWtlZmlsZS01LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaC01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oOjY6I2lmbmRlZiBfX01UNzZ4MlVfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oOjc6I2RlZmluZSBfX01UNzZ4MlVfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oLTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oPTQwPWludCBtdDc2eDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBlbnVtIGRtYV9tc2dfcG9ydCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaC00Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaDo0MzojZW5kaWYgLyogX19NVDc2eDJVX0ggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0xNTI9TU9EVUxFX0FVVEhPUihcJiMzNDtMb3JlbnpvIEJpYW5jb25pIFx1MDAzY2xvcmVuem8uYmlhbmNvbmk4M0BnbWFpbC5jb21cdTAwM2VcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM6MTUzOk1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtNZWRpYVRlayBNVDc2eDJVIChVU0IpIHdpcmVsZXNzIGRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNTQtTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7RHVhbCBCU0QvR1BMXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxMzYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipDb25zaWRlcmluZyB0aGUgV2lGaSBDaGlwc2V0IExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcmFuZ2Ugb2YgTWVkaWFUZWsgV2lGaSBjaGlwc2V0cyBoZXJlLiBJJiMzOTt2ZSBnb3QgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGFuZCBgTVQ3OTIxVWAgaW4gbWluZCwgYW5kIEkmIzM5O20gbWVudGFsbHkgZmlsaW5nIHRoZW0gYXdheSBieSB0aGVpciByZXNwZWN0aXZlIGZlYXR1cmUgc2V0cyBhbmQgZ2VuZXJhbCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuIE5vdywgZ2l2ZW4gdGhhdCBvdmVydmlldywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgc2NvcGUgb3V0IGBNVDc5MjVVYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQgZml0cyBpbiB0aGVpciBjdXJyZW50IHByb2R1Y3Qgb2ZmZXJpbmdzLiBQZXJoYXBzIGl0JiMzOTtzIGFuIGV2b2x1dGlvbmFyeSBzdGVwLCBhIHNwZWNpYWxpemVkIHZlcnNpb24sIG9yIGEgd2hvbGUgbmV3IGdlbmVyYXRpb24uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlc2Ugc2lsaWNvbiBvZmZlcmluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UNzkyNVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc9Nz1jb25maWcgTVQ3OTI1RVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjIwOlx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIxLVx0c2VsZWN0IE1UNzkyeF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZT00PW9iai0kKENPTkZJR19NVDc5MjVFKSAmIzQzOz0gbXQ3OTI1ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSAmIzQzOz0gbXQ3OTI1dS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTM2Mj1NT0RVTEVfQVVUSE9SKFwmIzM0O0xvcmVuem8gQmlhbmNvbmkgXHUwMDNjbG9yZW56b0BrZXJuZWwub3JnXHUwMDNlXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2MzpNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSB3aXJlbGVzcyBkcml2ZXJcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY0LU1PRFVMRV9MSUNFTlNFKFwmIzM0O0R1YWwgQlNEL0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODEzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIHRoZSBNVDc2IERyaXZlciBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gUmlnaHQsIHRoZXkgc2VlbSB0byBiZSB0aGUgcHJpbWFyeSBvbmVzIHdlIHdhbnQgdG8gZW5hYmxlLiBJIGNhbiBlYXNpbHkgbGlzdCB0aGVtIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AuIFRoZSBmb2N1cyBoZXJlIGlzIGdvaW5nIHRvIGJlIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAuIE5vdywgYSBxdWljayB0aG91Z2h0IOKAkyBpcyB0aGF0IGZ1bmN0aW9uIGxpbWl0ZWQgdG8gVVNCLCBvciBkb2VzIGl0IHJlYWNoIG90aGVyIGJ1c2VzPyBBaCwgaXQgaXMgcmVhY2hhYmxlIGZyb20gUENJIGFuZCBTRElPLCB3aGljaCBpcyBnb29kIHRvIGtub3csIGJ1dCBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZWFzaWx5IGZ1enogVVNCIGRyaXZlcnMuIFRoYXQgbWFrZXMgdGhlIFVTQiBidXMgYSBncmVhdCBwbGFjZSB0byBzdGFydC4KCklzIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgaW4gYSBob3QgcGF0aD8gTm8sIGl0IGxvb2tzIGxpa2UgaXQgaXMgb25seSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIGl0IGEgcGVyZmVjdCB0YXJnZXQuIEl0IHNob3VsZG4mIzM5O3QgaW1wYWN0IHBlcmZvcm1hbmNlIGFuZCwgdGhlcmVmb3JlLCBpcyBhIGdvb2QgZm9jdXMuCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjay4gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBjb25maWd1cmF0aW9ucz8gVGhlc2UgY29uZmlncyBzZWxlY3QgYE1UNzZfQ09SRWAuIEkmIzM5O2xsIGFsc28gbGlrZWx5IG5lZWQgYFdMQU5fVkVORE9SX01FRElBVEVLYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc6Mjpjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWctMy1cdGJvb2wgXCYjMzQ7TWVkaWFUZWsgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTE0LXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc9MTU9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZzoxNjplbmRpZiAjIFdMQU5fVkVORE9SX01FRElBVEVLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTU3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlybWluZyB0aGUgTWVkaWF0ZWsgRHJpdmVyIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgV0xBTl9WRU5ET1JfTUVESUFURUtgIGlzIGFjdHVhbGx5IHJlcXVpcmVkIGhlcmUuIE5vIHBvaW50IGluIHdhc3RpbmcgdGltZSBpZiBpdCYjMzk7cyBhbHJlYWR5IGhhbmRsZWQgZWxzZXdoZXJlLiBUaGUgb2J2aW91cyBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGRyaXZlci1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgc2hvdWxkIGJlIGRlZmluZWQsIGFuZCB3aGVyZSB0aGUgZGVwZW5kZW5jeSBsb2dpYyB3b3VsZCBsaWtlbHkgcmVzaWRlLiBJJiMzOTtsbCBuZWVkIHRvIG9wZW4gdGhhdCB1cCBhbmQgdGFrZSBhIGxvb2sgYXQgaXRzIGNvbnRlbnRzLiBIb3BlZnVsbHksIGl0JiMzOTtzIGNsZWFyIGFuZCB3ZWxsLWNvbW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3Nl9DT1JFXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBNVDc2X0xFRFNcbiAgIDc6XHRcdGJvb2xcbiAgIDg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gICA5Olx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBNVDc2X0NPUkU9TEVEU19DTEFTU1xuICAxMDpcdFx0ZGVmYXVsdCB5XG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE1UNzZfVVNCXG4gIDEzOlx0XHR0cmlzdGF0ZVxuICAxNDpcdFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgTVQ3Nl9TRElPXG4gIDE3Olx0XHR0cmlzdGF0ZVxuICAxODpcdFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgTVQ3NngwMl9MSUJcbiAgMjE6XHRcdHRyaXN0YXRlXG4gIDIyOlx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE1UNzZ4MDJfVVNCXG4gIDI1Olx0XHR0cmlzdGF0ZVxuICAyNjpcdFx0c2VsZWN0IE1UNzZfVVNCXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxuICAyOTpcdFx0dHJpc3RhdGVcbiAgMzA6XHRcdHNlbGVjdCBNVDc2X0NPUkVcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgTVQ3OTJ4X0xJQlxuICAzMzpcdFx0dHJpc3RhdGVcbiAgMzQ6XHRcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcbiAgMzU6XHRcbiAgMzY6XHRjb25maWcgTVQ3OTJ4X1VTQlxuICAzNzpcdFx0dHJpc3RhdGVcbiAgMzg6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBNVDc2X05QVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE5OQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipOYXZpZ2F0aW5nIHRoZSBMaW51eCBXaXJlbGVzcyBEcml2ZXIgTGFieXJpbnRoKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gc28gSSYjMzk7bSB0cmFja2luZyBkb3duIHRoaXMgYE1UNzZ4MFVgIGRyaXZlciwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtkIGNoZWNrIGlzIHdpdGhpbiB0aGUgTWVkaWFUZWsgd2lyZWxlc3MgZHJpdmVyIHN0cnVjdHVyZS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBJJiMzOTttIGJldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBwYXJ0aWN1bGFyIGNoaXBzZXQgd2lsbCBiZSBpbiB0aGUgc3RhbmRhcmQgcGxhY2UuIExldCBtZSByZWNhbGwgd2hlcmUgTWVkaWFUZWsgb3JnYW5pemVzIGl0cyB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgdGhlIGZpbGUgc3RydWN0dXJlIGl0c2VsZiB3aWxsIGd1aWRlIG1lLiAqQWgtaGEhKiBZZXMsIGl0IG1ha2VzIHNlbnNlOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gS25vd2luZyB0aGlzIGtlZXBzIG1lIGZyb20gd2FzdGluZyB0aW1lIGNoYXNpbmcgZG93biBmYWxzZSBsZWFkcy4gR29vZC4gTm93LCBsZXQmIzM5O3Mgc2VlIHdoYXQgb3B0aW9ucyBhcmUgd2l0aGluIHRoYXQgS2NvbmZpZyBmaWxlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNVDc2eDBfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzZ4MDJfTElCXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE1UNzZ4MFVcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cbiAgIDk6XHRcdHNlbGVjdCBNVDc2eDAyX1VTQlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMFUtYmFzZWQgVVNCIDIuMCB3aXJlbGVzcyBkb25nbGVzLFxuICAxNDpcdFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcbiAgMTU6XHRcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3NngwRVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cbiAgMjI6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjM6XHRcdGRlcGVuZHMgb24gUENJXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2MTAvTVQ3NjMwLWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcbiAgMjY6XHRcdCAgd2hpY2ggY29tcGx5IHdpdGggSUVFRSA4MDIuMTFhYyBzdGFuZGFyZHMgYW5kIHN1cHBvcnQgMXgxXG4gIDI3Olx0XHQgIDQzM01icHMgUEhZIHJhdGUuXG4gIDI4Olx0XG4gIDI5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTE2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTVQ3NngwVSBEcml2ZXIgUmVxdWlyZW1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgTVQ3NngwVWAgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgdGhhdCBpdCYjMzk7cyBidWlsdCBvbiB0aGUgYE1BQzgwMjExYCBhbmQgYFVTQmAgZm91bmRhdGlvbnMuIE1ha2VzIHNlbnNlOyBpdCYjMzk7cyBhIFdMQU4gZGV2aWNlLCBzbyBgTUFDODAyMTFgIGlzIHByZXR0eSBtdWNoIGEgZ2l2ZW4uIEFuZCBiZWluZyBhICYjMzQ7VSYjMzQ7IGRldmljZSwgYFVTQmAgaXMgYWxzbyByaWdodC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5vdGluZyB0aGUgcmVsZXZhbnQgbW9kdWxlczogYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc5MjFVYCwgYE1UNzkyNVVgLCBhbmQgdGhlIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AgdmVuZG9yIElELgoKV2FpdCBhIHNlY29uZC4gSSByZW1lbWJlciBzZWVpbmcgYE1UNzkyMVVgIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ2AgZmlsZS4gQmV0dGVyIGRvdWJsZS1jaGVjayB0aGF0IHBhcnRpY3VsYXIgbW9kdWxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIHR1Y2tlZCBhd2F5IGluIGl0cyBzcGVjaWZpYyBLY29uZmlnIGVudHJpZXMsIG9yIGlmIGl0IGhhcyBhbnkgdW5pcXVlIHJlcXVpcmVtZW50cyBiZXlvbmQgdGhlIGJhc2UgYE1BQzgwMjExYCBhbmQgYFVTQmAgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIHdoZXJlIHRoZSBkZXZpbCYjMzk7cyBpbiB0aGUgZGV0YWlscy4gVGltZSB0byBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3OTIxX0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBNVDc5MnhfTElCXG4gICA1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgIDY6XHRcbiAgIDc6XHRjb25maWcgTVQ3OTIxRVxuICAgODpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAgOTpcdFx0c2VsZWN0IE1UNzkyMV9DT01NT05cbiAgMTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFFIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgTVQ3OTIxU1xuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxUyAoU0RJTykgc3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0c2VsZWN0IE1UNzZfU0RJT1xuICAyMDpcdFx0c2VsZWN0IE1UNzkyMV9DT01NT05cbiAgMjE6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjI6XHRcdGRlcGVuZHMgb24gTU1DXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFTIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cbiAgMjU6XHRcbiAgMjY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMjc6XHRcbiAgMjg6XHRjb25maWcgTVQ3OTIxVVxuICAyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDMwOlx0XHRzZWxlY3QgTVQ3OTJ4X1VTQlxuICAzMTpcdFx0c2VsZWN0IE1UNzkyMV9DT01NT05cbiAgMzI6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMzM6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDM0Olx0XHRoZWxwXG4gIDM1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFVIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4OTMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lZGlhVGVrIFdMQU4gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBoZXJlIGlzIG9uIE1lZGlhVGVrJiMzOTtzIFdMQU4gc3VwcG9ydCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgYE1BQzgwMjExYCBmcmFtZXdvcmssIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIFVTQiBpbnRlcmZhY2UuIFNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBHb3QgaXQuIE5vdywgaXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgemVyb2luZyBpbiBvbiBzcGVjaWZpYyBNZWRpYVRlayBVU0IgV0xBTiBjaGlwcywgbGV0JiMzOTtzIHNlZSwgd2UgaGF2ZSBjb25maWd1cmF0aW9ucyBmb3IgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgdGhlbiBzcGVjaWZpYyBkZXZpY2Ugc3VwcG9ydCBmb3IgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gVGhlIHByaW1hcnkgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgYE1UNzkyNVVgIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCBvdGhlciBjb21wb25lbnRzIG9yIGNvbmZpZ3VyYXRpb25zIGFyZSB0aWVkIHRvIHRoYXQgcGFydGljdWxhciBjaGlwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3OTI1X0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBNVDc5MnhfTElCXG4gICA1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgIDY6XHRcbiAgIDc6XHRjb25maWcgTVQ3OTI1RVxuICAgODpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAgOTpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxuICAxNDpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMTU6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAxNjpcdFxuICAxNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNVDc5MjVVXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDIyOlx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAyMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAyNDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMjU6XHRcdGhlbHBcbiAgMjY6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcbiAgMjc6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDI4Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2OTQKCQkJCQkJCW91dHB1dDogMTU0CgkJCQkJCQl0aG91Z2h0czogMjE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nOiBgbXQ3Nl9lZXByb21fb3ZlcnJpZGVgKioKCkFscmlnaHQsIEkmIzM5O3ZlIGdvdCB0aGUgY29uZmlndXJhdGlvbiBpbiBmcm9udCBvZiBtZS4gVGhlIGZvY2FsIHBvaW50IGhlcmUgaXMgdGhlIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgc3ltYm9sLiBUaGUgcmVhc29uaW5nIHByb3ZpZGVkIHBvaW50cyB0byBhIGJ1ZyBmaXg7IGFwcGFyZW50bHksIHZhbGlkIE1BQyBhZGRyZXNzZXMgZnJvbSBFRVBST00gd2VyZSBnZXR0aW5nIG92ZXJ3cml0dGVuIHdpdGggZ2FyYmFnZSBNQUMgYWRkcmVzc2VzIG9uIFVTQiBkZXZpY2VzLiBUaGlzIHdhcyBkdWUgdG8gYW4gZXJyb3IgY29uZGl0aW9uIGluIGBfZ2V0X21hY19hZGRyZXNzYCB3aGVuIGEgZGV2aWNlIHRyZWUgbm9kZSB3YXMgYWJzZW50LiBUaGlzIGNvbnN0aXR1dGVzIGEgZnVuY3Rpb25hbCBhbHRlcmF0aW9uIHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gcGF0aCwgd2hpY2ggbWFrZXMgaXQgZnV6emFibGUgdmlhIFVTQi4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoaXMgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCB3YXMgdG91Y2hlZC4gT2theSwgcXVpY2sgY2hlY2sgY29uZmlybXMsIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgaXMgaW5kZWVkIHRoZSBzb2xlIG1vZGlmaWNhdGlvbi4gQW5kIHRoZSBwYXRoIGlzbiYjMzk7dCBob3QsIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgcHJvYmUvaW5pdC4gVGhhdCBtZWFucyBpdCYjMzk7cyBhbiBpZGVhbCB0YXJnZXQuCgpMZXQmIzM5O3MgcXVpY2tseSByZXZpc2l0IHRoZSBwYXRjaCBpdHNlbGY6CgpgYGBjCi0JaWYgKGVycikgewomIzQzOwlpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocGh5LSZndDttYWNhZGRyKSkgewpgYGAKClllcCwgYSBmdW5jdGlvbmFsIGNoYW5nZSwgY2xlYXJseS4gVGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIGdldCB0aGUgcmVzdWx0cyBzZXQgdXAgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfZWVwcm9tX292ZXJyaWRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIHZhbGlkIE1BQyBhZGRyZXNzZXMgZnJvbSBFRVBST00gd2VyZSBvdmVyd3JpdHRlbiB3aXRoIHJhbmRvbSBNQUMgYWRkcmVzc2VzIG9uIFVTQiBkZXZpY2VzIGJlY2F1c2Ugb2ZfZ2V0X21hY19hZGRyZXNzIHJldHVybnMgYW4gZXJyb3Igd2hlbiB0aGVyZSBpcyBubyBkZXZpY2UgdHJlZSBub2RlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGluaXRpYWxpemF0aW9uIHBhdGggb2YgTWVkaWFUZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXJzLiBJdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X2VlcHJvbV9vdmVycmlkZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTI6MjcuODQyOTI2NTcxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU2NjQwNjQ5NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIixcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X2VlcHJvbV9vdmVycmlkZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIHZhbGlkIE1BQyBhZGRyZXNzZXMgZnJvbSBFRVBST00gd2VyZSBvdmVyd3JpdHRlbiB3aXRoIHJhbmRvbSBNQUMgYWRkcmVzc2VzIG9uIFVTQiBkZXZpY2VzIGJlY2F1c2Ugb2ZfZ2V0X21hY19hZGRyZXNzIHJldHVybnMgYW4gZXJyb3Igd2hlbiB0aGVyZSBpcyBubyBkZXZpY2UgdHJlZSBub2RlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGluaXRpYWxpemF0aW9uIHBhdGggb2YgTWVkaWFUZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXJzLiBJdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEyOjI3Ljg0MjkzNzMxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAyMzUyNjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDMyM2ExNDQ5ZjA3OTAzMjk1Nzc1MDkyYTA3NDUzZmM4OTkxYmNmNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDAzOjEyOjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jXFxuaW5kZXggYjk5ZDc0NTI4MDBmZGUuLmFmZGI3MzY2MTg2NmU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jXFxuQEAgLTE4MSw3ICsxODEsNyBAQCBtdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4gXFx0aWYgKGVyciA9PSAtRVBST0JFX0RFRkVSKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0aWYgKGVycikge1xcbitcXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocGh5LVxcdTAwM2VtYWNhZGRyKSkge1xcbiBcXHRcXHRldGhfcmFuZG9tX2FkZHIocGh5LVxcdTAwM2VtYWNhZGRyKTtcXG4gXFx0XFx0ZGV2X2luZm8oZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdCBcXFwiSW52YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tIGFkZHJlc3MgJXBNXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjoyOC41NDY0MjE5NDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0OTYwNTA4NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl9lZXByb21fb3ZlcnJpZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQzMjNhMTQ0OWYwNzkwMzI5NTc3NTA5MmEwNzQ1M2ZjODk5MWJjZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDAzOjEyOjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbmluZGV4IGI5OWQ3NDUyODAwZmRlLi5hZmRiNzM2NjE4NjZlOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbkBAIC0xODEsNyArMTgxLDcgQEAgbXQ3Nl9lZXByb21fb3ZlcnJpZGUoc3RydWN0IG10NzZfcGh5ICpwaHkpXG4gXHRpZiAoZXJyID09IC1FUFJPQkVfREVGRVIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRpZiAoZXJyKSB7XG4rXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocGh5LVx1MDAzZW1hY2FkZHIpKSB7XG4gXHRcdGV0aF9yYW5kb21fYWRkcihwaHktXHUwMDNlbWFjYWRkcik7XG4gXHRcdGRldl9pbmZvKGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0IFwiSW52YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tIGFkZHJlc3MgJXBNXFxuXCIsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjoyOC41NDY0MjYxMjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjI0NzcyNTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lZGlhdGVrIFdpRmkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBoZXJlLCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jYC4gVGhlIGNvcmUgb2YgdGhlIG1vZGlmaWNhdGlvbiBpcyBpbiB0aGUgYG10NzZfZWVwcm9tX292ZXJyaWRlYCBmdW5jdGlvbi4gSW50cmlndWluZy4gSXQgYXBwZWFycyB0aGF0IGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IGhhcyBiZWVuIGFsdGVyZWQg4oCTIHNwZWNpZmljYWxseSwgdGhlIG9sZCBgaWYgKGVycilgIGNoZWNrIGhhcyBiZWVuIHN3YXBwZWQgb3V0IGZvciBgaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKHBoeS1cdTAwM2VtYWNhZGRyKSlgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGxpa2VseSBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggTUFDIGFkZHJlc3MgaGFuZGxpbmcgZHVyaW5nIHRoZSBFRVBST00gb3ZlcnJpZGUgcHJvY2Vzcywgd2hpY2ggc2VlbXMgYSBiaXQgdW51c3VhbC4gVGhpcyB3YXJyYW50cyBhIGRlZXBlciBkaXZlIGludG8gYG10NzZfZWVwcm9tX292ZXJyaWRlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkndmUgbW92ZWQgYXdheSBmcm9tIGFuIGVycm9yIGNoZWNrIHRvIGEgTUFDIGFkZHJlc3MgdmFsaWRhdGlvbiwgaXQgbWF5IGhhdmUgaW1wbGljYXRpb25zLiBMZXQncyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXTigJlzIGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIGNoYW5nZSB3YXMgbWFkZSwgd2hhdCB0aGUgcG90ZW50aWFsIGJlbmVmaXRzIGFyZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIHJpc2tzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEyOjMyLjc3MTIwMjIzOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE5NTg2NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9lZXByb21fb3ZlcnJpZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jPTE3Mz1pbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE3NDptdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE3NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE5Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzoxOTM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9lZXByb21fb3ZlcnJpZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTk0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjozMy4wMDMyMDkxMDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTI3MTgyMDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc2IEVFUFJPTSBDb2RlKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTVQ3NiBkcml2ZXIgaXMgaGFuZGxpbmcgRUVQUk9NIGRhdGEsIHNwZWNpZmljYWxseSB0aGUgbnVhbmNlcyBhcm91bmQgaG93IGl0J3MgYmVpbmcgcmVhZCBhbmQgaW50ZXJwcmV0ZWQuIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jYCBmaWxlLiBJJ20gYWltaW5nIGZvciBhcm91bmQgbGluZSAxNzMgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhleSdyZSBkb2luZyB0aGVyZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgc29tZSBjcml0aWNhbCBFRVBST00gcmVhZCBmdW5jdGlvbnMsIHBhcmFtZXRlciBsb29rdXBzLCBvciBlcnJvciBoYW5kbGluZyBpbiB0aGF0IGFyZWEuIEhvcGVmdWxseSwgdGhlIGNvZGUgaXMgd2VsbC1jb21tZW50ZWQsIGJ1dCBldmVuIGlmIGl0J3Mgbm90LCBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgZ3JvayB3aGF0J3MgZ29pbmcgb24gYnkgdHJhY2luZyB0aGUgZGF0YSBmbG93LiBJIGFudGljaXBhdGUgc29tZSBiaXRmaWVsZCBtYW5pcHVsYXRpb24gYW5kIHBvdGVudGlhbGx5IHNvbWUgdmVuZG9yLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBiZWluZyB1c2VkLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDQyLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTI6MzYuNTMwMzk0MjMyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTYwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTYwOlxcdFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiAxNjE6XFx0XFxuIDE2MjpcXHRcXHRyZXQgPSBtdDc2X2dldF9vZl9lZXByb21fZGF0YShkZXYsIGVlcCwgbGVuKTtcXG4gMTYzOlxcdFxcdGlmICghcmV0KVxcbiAxNjQ6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDE2NTpcXHRcXG4gMTY2OlxcdFxcdHJldCA9IG10NzZfZ2V0X29mX2RhdGFfZnJvbV9tdGQoZGV2LCBlZXAsIDAsIGxlbik7XFxuIDE2NzpcXHRcXHRpZiAoIXJldClcXG4gMTY4OlxcdFxcdFxcdHJldHVybiAwO1xcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHRyZXR1cm4gbXQ3Nl9nZXRfb2ZfZGF0YV9mcm9tX252bWVtKGRldiwgZWVwLCBcXFwiZWVwcm9tXFxcIiwgbGVuKTtcXG4gMTcxOlxcdH1cXG4gMTcyOlxcdFxcbiAxNzM6XFx0aW50XFxuIDE3NDpcXHRtdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4gMTc1OlxcdHtcXG4gMTc2OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuIDE3NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGU7XFxuIDE3ODpcXHRcXHRpbnQgZXJyO1xcbiAxNzk6XFx0XFxuIDE4MDpcXHRcXHRlcnIgPSBvZl9nZXRfbWFjX2FkZHJlc3MobnAsIHBoeS1cXHUwMDNlbWFjYWRkcik7XFxuIDE4MTpcXHRcXHRpZiAoZXJyID09IC1FUFJPQkVfREVGRVIpXFxuIDE4MjpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiAxODM6XFx0XFxuIDE4NDpcXHRcXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocGh5LVxcdTAwM2VtYWNhZGRyKSkge1xcbiAxODU6XFx0XFx0XFx0ZXRoX3JhbmRvbV9hZGRyKHBoeS1cXHUwMDNlbWFjYWRkcik7XFxuIDE4NjpcXHRcXHRcXHRkZXZfaW5mbyhkZXYtXFx1MDAzZWRldixcXG4gMTg3OlxcdFxcdFxcdFxcdCBcXFwiSW52YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tIGFkZHJlc3MgJXBNXFxcXG5cXFwiLFxcbiAxODg6XFx0XFx0XFx0XFx0IHBoeS1cXHUwMDNlbWFjYWRkcik7XFxuIDE4OTpcXHRcXHR9XFxuIDE5MDpcXHRcXG4gMTkxOlxcdFxcdHJldHVybiAwO1xcbiAxOTI6XFx0fVxcbiAxOTM6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9lZXByb21fb3ZlcnJpZGUpO1xcbiAxOTQ6XFx0XFxuIDE5NTpcXHRzdGF0aWMgYm9vbCBtdDc2X3N0cmluZ19wcm9wX2ZpbmQoc3RydWN0IHByb3BlcnR5ICpwcm9wLCBjb25zdCBjaGFyICpzdHIpXFxuIDE5NjpcXHR7XFxuIDE5NzpcXHRcXHRjb25zdCBjaGFyICpjcCA9IE5VTEw7XFxuIDE5ODpcXHRcXG4gMTk5OlxcdFxcdGlmICghcHJvcCB8fCAhc3RyIHx8ICFzdHJbMF0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEyOjM2LjUzMDU1Nzc3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODIzODE1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVkaWF0ZWsgTVQ3NiBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBNZWRpYXRlayBNVDc2IHdpcmVsZXNzIGRldmljZXMuIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcz8gVGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLiBUaGUgdGFyZ2V0IHNlZW1zIHRvIGJlIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYXR0YWNrIHN1cmZhY2UuIElzIHRoaXMgYSBVU0IgZHJpdmVyPyBLbm93aW5nIHRoYXQgd2lsbCBpbmZsdWVuY2UgbXkgYXBwcm9hY2ggdG8gcG90ZW50aWFsIGZ1enppbmcgc3RyYXRlZ2llcywgc28gdGhhdCdzIHRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzI1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo0MC41MTI5NDMwNDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYWdnLXJ4LmNcIixcbiAgICBcImNoYW5uZWwuY1wiLFxuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJkbWEuY1wiLFxuICAgIFwiZG1hLmhcIixcbiAgICBcImVlcHJvbS5jXCIsXG4gICAgXCJtYWM4MDIxMS5jXCIsXG4gICAgXCJtY3UuY1wiLFxuICAgIFwibW1pby5jXCIsXG4gICAgXCJtdDc2LmhcIixcbiAgICBcIm10NzZfY29ubmFjLmhcIixcbiAgICBcIm10NzZfY29ubmFjMl9tYWMuaFwiLFxuICAgIFwibXQ3Nl9jb25uYWMzX21hYy5jXCIsXG4gICAgXCJtdDc2X2Nvbm5hYzNfbWFjLmhcIixcbiAgICBcIm10NzZfY29ubmFjX21hYy5jXCIsXG4gICAgXCJtdDc2X2Nvbm5hY19tY3UuY1wiLFxuICAgIFwibXQ3Nl9jb25uYWNfbWN1LmhcIixcbiAgICBcIm10NzZ4MDIuaFwiLFxuICAgIFwibXQ3NngwMl9iZWFjb24uY1wiLFxuICAgIFwibXQ3NngwMl9kZWJ1Z2ZzLmNcIixcbiAgICBcIm10NzZ4MDJfZGZzLmNcIixcbiAgICBcIm10NzZ4MDJfZGZzLmhcIixcbiAgICBcIm10NzZ4MDJfZG1hLmhcIixcbiAgICBcIm10NzZ4MDJfZWVwcm9tLmNcIixcbiAgICBcIm10NzZ4MDJfZWVwcm9tLmhcIixcbiAgICBcIm10NzZ4MDJfbWFjLmNcIixcbiAgICBcIm10NzZ4MDJfbWFjLmhcIixcbiAgICBcIm10NzZ4MDJfbWN1LmNcIixcbiAgICBcIm10NzZ4MDJfbWN1LmhcIixcbiAgICBcIm10NzZ4MDJfbW1pby5jXCIsXG4gICAgXCJtdDc2eDAyX3BoeS5jXCIsXG4gICAgXCJtdDc2eDAyX3BoeS5oXCIsXG4gICAgXCJtdDc2eDAyX3JlZ3MuaFwiLFxuICAgIFwibXQ3NngwMl90cmFjZS5jXCIsXG4gICAgXCJtdDc2eDAyX3RyYWNlLmhcIixcbiAgICBcIm10NzZ4MDJfdHhyeC5jXCIsXG4gICAgXCJtdDc2eDAyX3VzYi5oXCIsXG4gICAgXCJtdDc2eDAyX3VzYl9jb3JlLmNcIixcbiAgICBcIm10NzZ4MDJfdXNiX21jdS5jXCIsXG4gICAgXCJtdDc2eDAyX3V0aWwuY1wiLFxuICAgIFwibXQ3OTJ4LmhcIixcbiAgICBcIm10NzkyeF9hY3BpX3Nhci5jXCIsXG4gICAgXCJtdDc5MnhfYWNwaV9zYXIuaFwiLFxuICAgIFwibXQ3OTJ4X2NvcmUuY1wiLFxuICAgIFwibXQ3OTJ4X2RlYnVnZnMuY1wiLFxuICAgIFwibXQ3OTJ4X2RtYS5jXCIsXG4gICAgXCJtdDc5MnhfbWFjLmNcIixcbiAgICBcIm10NzkyeF9yZWdzLmhcIixcbiAgICBcIm10NzkyeF90cmFjZS5jXCIsXG4gICAgXCJtdDc5MnhfdHJhY2UuaFwiLFxuICAgIFwibXQ3OTJ4X3VzYi5jXCIsXG4gICAgXCJucHUuY1wiLFxuICAgIFwicGNpLmNcIixcbiAgICBcInNjYW4uY1wiLFxuICAgIFwic2Rpby5jXCIsXG4gICAgXCJzZGlvLmhcIixcbiAgICBcInNkaW9fdHhyeC5jXCIsXG4gICAgXCJ0ZXN0bW9kZS5jXCIsXG4gICAgXCJ0ZXN0bW9kZS5oXCIsXG4gICAgXCJ0cmFjZS5jXCIsXG4gICAgXCJ0cmFjZS5oXCIsXG4gICAgXCJ0eC5jXCIsXG4gICAgXCJ1c2IuY1wiLFxuICAgIFwidXNiX3RyYWNlLmNcIixcbiAgICBcInVzYl90cmFjZS5oXCIsXG4gICAgXCJ1dGlsLmNcIixcbiAgICBcInV0aWwuaFwiLFxuICAgIFwid2VkLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwibXQ3NjAzXCIsXG4gICAgXCJtdDc2MTVcIixcbiAgICBcIm10NzZ4MFwiLFxuICAgIFwibXQ3NngyXCIsXG4gICAgXCJtdDc5MTVcIixcbiAgICBcIm10NzkyMVwiLFxuICAgIFwibXQ3OTI1XCIsXG4gICAgXCJtdDc5OTZcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo0MC41MTMyMjc4OTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQwMTYwNDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVTQiBEcml2ZXIgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBwb3RlbnRpYWwgVVNCIGRyaXZlciBsYW5kc2NhcGUgd2l0aGluIHRoaXMgY29kZWJhc2UuIFNlZW1zIGxpa2Ugd2UndmUgZ290IGEgZmV3IGtleSBwbGF5ZXJzOiBgdXNiLmNgLCBgbXQ3NngwMl91c2JfY29yZS5jYCwgYW5kIGBtdDc5MnhfdXNiLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3Mgc2VlIGhvdyB0aGUgYG10NzZfZWVwcm9tX292ZXJyaWRlYCBmdW5jdGlvbiBmaXRzIGludG8gdGhpcyBVU0IgcGljdHVyZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgcmVhY2hhYmxlIGZyb20gYW55IG9mIHRoZXNlIFVTQi1yZWxhdGVkIGZpbGVzLiBVbmRlcnN0YW5kaW5nIHRoZSBlZXByb20gb3ZlcnJpZGUgcGF0aCBpcyBjcnVjaWFsIGZvciBbKippbnNlcnQgeW91ciBzcGVjaWZpYyBleHBlcnQgcmVhc29uIGhlcmUsIGUuZy4sIGRlYnVnZ2luZyBhIHNwZWNpZmljIGlzc3VlLCBjdXN0b21pemluZyBjb25maWd1cmF0aW9uLCBleHBsb3JpbmcgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LCB1bmRlcnN0YW5kaW5nIGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjayoqXS4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM2NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo0NC4xNTMzOTMwNThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjQzMDk1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X2VlcHJvbV9vdmVycmlkZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM9MTczPWludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MTc0Om10NzZfZWVwcm9tX292ZXJyaWRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTkyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE5MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X2VlcHJvbV9vdmVycmlkZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0xOTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzQxPWludCBtdDc2X2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzQyOmludCBtdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTM0My1pbnQgbXQ3Nl9nZXRfb2ZfZGF0YV9mcm9tX210ZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdm9pZCAqZWVwLCBpbnQgb2Zmc2V0LCBpbnQgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jPTE1Nj1pbnQgbXQ3NjAzX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM6MTg2OlxcdHJldHVybiBtdDc2X2VlcHJvbV9vdmVycmlkZShcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xODctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM9MzMzPWludCBtdDc2MTVfZWVwcm9tX2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0zNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MzU0OlxcdHJldHVybiBtdDc2X2VlcHJvbV9vdmVycmlkZShcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0zNTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jPTUyNz1pbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy01NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jOjU3MzpcXHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNTc0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYz0zMTI9aW50IG10NzZ4MF9lZXByb21faW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5jLTMzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYzozMzY6XFx0ZXJyID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmMtMzM3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9lZXByb20uYz00OTI9aW50IG10NzZ4Ml9lZXByb21faW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jLTUwMS1cXHRtdDc2eDJfZWVwcm9tX2dldF9tYWNhZGRyKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvZWVwcm9tLmM6NTAyOlxcdHJldCA9IG10NzZfZWVwcm9tX292ZXJyaWRlKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jLTUwMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmM9MjY3PWludCBtdDc5MTVfZWVwcm9tX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYzoyODc6XFx0cmV0dXJuIG10NzZfZWVwcm9tX292ZXJyaWRlKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTI4OC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9NjkyPW10NzkxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNzExLVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NzEyOlxcdHJldCA9IG10NzZfZWVwcm9tX292ZXJyaWRlKG1waHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03MTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz04ND1zdGF0aWMgaW50IF9fbXQ3OTIxX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy05NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6OTY6XFx0cmV0ID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTk3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MTAwPXN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTA4OlxcdHJldCA9IG10NzZfZWVwcm9tX292ZXJyaWRlKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMDktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTMzMz1pbnQgbXQ3OTk2X2VlcHJvbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MzQ3OlxcdHJldHVybiBtdDc2X2VlcHJvbV9vdmVycmlkZShcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTY4Mj1zdGF0aWMgaW50IG10Nzk5Nl9yZWdpc3Rlcl9waHkoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgZW51bSBtdDc2X2JhbmRfaWQgYmFuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy03MjgtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3Mjk6XFx0cmV0ID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUobXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTczMC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo0NC40MjU4MzQyNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MDk0NDg3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlIHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIGBtdDc2eDBfZWVwcm9tX2luaXRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhpcyBjYWxsIGlzIGNvbWluZyBmcm9tIGBtdDc2eDBfZWVwcm9tX2luaXRgLiBUaGUgbmFtZSBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gaW5pdGlhbGl6aW5nIHRoZSBFRVBST00gZm9yIHRoZSBNVDc2eDAgY2hpcHNldC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHRoZXNlIHNvcnRzIG9mIGVtYmVkZGVkIHN5c3RlbXMsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRyaWxsIGRvd24gb24gdGhlIGBtdDc2eDBgIHBhcnQuIFRoYXQncyB0aGUgb2J2aW91cyB0YXJnZXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGxhcmdlciBgbXQ3NngwYCBjb250ZXh0IGlzLCBzcGVjaWZpY2FsbHkgd2hhdCB0aGUgYG10NzZ4MGAgbW9kdWxlIG9yIGRyaXZlciBhY3R1YWxseSAqaXMqLiBJcyBpdCBhIGdlbmVyaWMgYWJzdHJhY3Rpb24gbGF5ZXIsIGEgc3BlY2lmaWMgZGV2aWNlIGRyaXZlciwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBuYW1lIGl0c2VsZiBnaXZlcyBjbHVlcywgYnV0IEkgbmVlZCB0byBxdWlja2x5IHNvbGlkaWZ5IHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgRUVQUk9NIGluaXRpYWxpemF0aW9uIGZpdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3ODUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo0OC4zMTY3ODM3OTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNDg1MTk1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2eDBfZWVwcm9tX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYz0yOTM9c3RhdGljIGludCBtdDc2eDBfbG9hZF9lZXByb20oc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYy0zMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmM6MzEyOmludCBtdDc2eDBfZWVwcm9tX2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmMtMzEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oPTEzPXN0cnVjdCBtdDc2eDAyX2RldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oOjE4OmludCBtdDc2eDBfZWVwcm9tX2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oLTE5LXZvaWQgbXQ3NngwX3JlYWRfcnhfZ2FpbihzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmM9MTcxPWludCBtdDc2eDBfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0yMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvaW5pdC5jOjIwNTpcXHRyZXQgPSBtdDc2eDBfZWVwcm9tX2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmMtMjA2LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEyOjQ4LjU1MTY0NTMxOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDU3MjA4ODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyB0aG91Z2ggSSB3ZXJlIGFuIGV4cGVydCBhbmFseXppbmcgYG10NzZ4MF9pbml0X2hhcmR3YXJlYDpcblxuKipEaXZpbmcgaW50byB0aGUgSGVhcnQgb2YgdGhlIE1UNzZ4MCBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXZSdyZSBsb29raW5nIGF0IGBtdDc2eDBfaW5pdF9oYXJkd2FyZWAuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljICpyZWFsbHkqIGhhcHBlbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaW50aW1hdGVseS4gV2hhdCBhcmUgdGhlIGtleSBzdGFnZXM/IFdoYXQgYXJlIHRoZSBjcnVjaWFsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGJlaW5nIHNldD8gSSBuZWVkIHRvIG1hcCBpdCBvdXQuXG5cbkZpcnN0LCBJIGV4cGVjdCB0byBzZWUgdGhlIGhhcmR3YXJlIGJyb3VnaHQgdXAgZnJvbSBhIGxvdyBwb3dlciBzdGF0ZS4gVGhhdCBsaWtlbHkgaW52b2x2ZXMgcmVzZXR0aW5nIHZhcmlvdXMgcGFydHMgb2YgdGhlIGNoaXBzZXQsIGVuYWJsaW5nIGNsb2NrcywgYW5kIG1ha2luZyBzdXJlIHRoZSBiYXNpYyBzaWxpY29uIGlzIHJlc3BvbnNpdmUuIFRoZW4sIEknbGwgYmUgbG9va2luZyBmb3IgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb24uIEFyZSB0aGV5IHVzaW5nIGEgcHJlLWRlZmluZWQgdGFibGUsIG9yIGFyZSB0aGV5IGNvbXB1dGluZyB2YWx1ZXMgb24gdGhlIGZseT8gRWl0aGVyIHdheSwgdGhlIGluaXRpYWwgcmVnaXN0ZXIgd3JpdGVzIGFyZSBjcml0aWNhbCBmb3IgZGVmaW5pbmcgdGhlIGJhc2ljIG9wZXJhdGluZyBwYXJhbWV0ZXJzOiBjbG9jayBmcmVxdWVuY2llcywgaW50ZXJydXB0IHNldHRpbmdzLCBhbmQgRE1BIGNoYW5uZWwgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyByZWdpc3RlciBvZmZzZXRzIGJlaW5nIHdyaXR0ZW4gdG8gYW5kIHRoZSB2YWx1ZSB0aGUgZGV2ZWxvcGVycyBjaG9zZS5cblxuVGhlbiBjb21lcyB0aGUgZmlybXdhcmUgbG9hZGluZy4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcC4gSG93IGlzIHRoZSBmaXJtd2FyZSBsb2FkZWQ/IElzIGl0IHZpYSBhIGJvb3Rsb2FkZXIgb3IgZGlyZWN0bHkgYnkgdGhlIGRyaXZlcj8gSXMgaXQgZnJvbSBmbGFzaCBvciBhbiBleHRlcm5hbCBzb3VyY2U/IEknbGwgbmVlZCB0byBkaXNzZWN0IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciB0cmFuc2ZlcnMgdGhlIGZpcm13YXJlIGltYWdlIHRvIHRoZSBkZXZpY2UuIEFueSB2ZXJpZmljYXRpb24gc3RlcHM/IEVycm9yIGNoZWNraW5nPyBTZWN1cml0eSBjb25zaWRlcmF0aW9ucz8gVGhlc2UgYXJlIGltcG9ydGFudC5cblxuTmV4dCwgSSBhbnRpY2lwYXRlIHNlZWluZyB0aGUgY29uZmlndXJhdGlvbiBvZiB2YXJpb3VzIGhhcmR3YXJlIGJsb2NrcyBsaWtlIHRoZSBNQUMsIFBIWSwgYW5kIHJhZGlvLiBUaGlzIGlzIHdoZXJlIHRoZSBkcml2ZXIgdGFpbG9ycyB0aGUgaGFyZHdhcmUgdG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgd2lyZWxlc3Mgc3RhbmRhcmQgYmVpbmcgdXNlZCAoODAyLjExYS9iL2cvbi9hYykgYW5kIHRoZSBwYXJ0aWN1bGFyIE1UNzZ4MCB2YXJpYW50LiBBcmUgdGhleSBzZXR0aW5nIHNwZWNpZmljIHBvd2VyIGxldmVscywgY2hhbm5lbCBmcmVxdWVuY2llcywgb3IgbW9kdWxhdGlvbiBzY2hlbWVzPyBBcmUgdGhlcmUgYW55IHZlbmRvci1zcGVjaWZpYyBzZXR0aW5ncz8gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgZnVuZGFtZW50YWwgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0aGF0IGRlZmluZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGRldmljZS5cblxuRmluYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgZW5hYmxlcyBpbnRlcnJ1cHRzIGFuZCBzdGFydHMgdGhlIGRhdGEgcGF0aC4gV2hhdCBpcyB0aGUgaW50ZXJydXB0IHN0cnVjdHVyZT8gV2hhdCBhcmUgdGhlIGludGVycnVwdCBoYW5kbGVycyBkb2luZz8gQXJlIHRoZXkgRE1BLWJhc2VkIG9yIENQVS1pbnRlbnNpdmU/IEhvdyBpcyB0aGUgZHJpdmVyIHByZXBhcmluZyB0aGUgaGFyZHdhcmUgdG8gcmVjZWl2ZSBhbmQgdHJhbnNtaXQgcGFja2V0cz8gQXJlIHRoZXJlIGFueSBpbml0aWFsaXphdGlvbiBzdGVwcyB0aGF0IHByZXBhcmUgdGhlIHJhZGlvIGZvciBwcm9wZXIgb3BlcmF0aW9uPyBXaGF0IGlzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZSB0byBnZXQgdGhlIGRyaXZlciBvcGVyYXRpbmcgYWZ0ZXIgdGhlIGluaXQgZnVuY3Rpb24gaXMgY29tcGxldGVkLlxuXG5Fc3NlbnRpYWxseSwgSSBuZWVkIHRvIGRlY29uc3RydWN0IHRoaXMgZnVuY3Rpb24gcGllY2UgYnkgcGllY2UsIHRyYWNlIHRoZSByZWdpc3RlciB3cml0ZXMsIGFuZCB1bmRlcnN0YW5kIGhvdyBlYWNoIHNldHRpbmcgY29udHJpYnV0ZXMgdG8gdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIGRlZmluZWQgYW5kIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBtYWRlIG9wZXJhdGlvbmFsLiBUaGlzIGluaXRpYWwgcGhhc2UgaXMgd2hlcmUgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBkZXZpY2UgaXMgbWFkZSBvciBicm9rZW4uIExldCdzIHNlZSB3aGF0IHRoZXkndmUgZG9uZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTY1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTI6NTQuMDA4ODU4OTE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDg0MDAyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwX2luaXRfaGFyZHdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmM9MTY5PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MF9tYWNfc3RvcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvaW5pdC5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmM6MTcxOmludCBtdDc2eDBfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmMtMTcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0yMTItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYzoyMTM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwX2luaXRfaGFyZHdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0yMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaD0zOT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjMwKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtNDQtLyogSW5pdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oOjQ1OmludCBtdDc2eDBfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtNDYtaW50IG10NzZ4MF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM9OTU9c3RhdGljIGludCBtdDc2eDBlX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIGJvb2wgcmVzdW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmMtMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jOjExNDpcXHRlcnIgPSBtdDc2eDBfaW5pdF9oYXJkd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jLTExNS1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTE1MT1zdGF0aWMgaW50IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE2NC1cXHRtdDc2eDBfaW5pdF91c2JfZG1hKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTY1OlxcdGVyciA9IG10NzZ4MF9pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTY2LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo1NC4zMTcyNzUxOTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3ODkxMjk4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBVU0IgSW5pdGlhbGl6YXRpb24gUm91dGluZSoqXG5cbkFscmlnaHQsIHNvIGBtdDc2eDB1X2luaXRfaGFyZHdhcmVgIGlzIHNpdHRpbmcgcmlnaHQgdGhlcmUgaW4gYHVzYi5jYC4gVGhhdOKAmXMgZ29vZCwgdGhhdCBjb25maXJtcyBteSBpbml0aWFsIGh1bmNoIGFib3V0IGl0cyBsb2NhdGlvbi4gTm93IHRoZSBxdWVzdGlvbiBpcywgKndoZXJlKiBhbmQgKndoZW4qIGRvZXMgdGhpcyBmdW5jdGlvbiBnZXQgY2FsbGVkPyBNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgYG10NzZ4MHVfaW5pdF9oYXJkd2FyZWAgaXMgaW5kZWVkIHBhcnQgb2YgdGhlIHByb2JlIHNlcXVlbmNlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IHRvIHNlZSBpZiBpdOKAmXMgZ2V0dGluZyBpbnZva2VkIGR1cmluZyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJJ2xsIGV4cGVjdCB0byBzZWUgaXQgY2FsbGVkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZnJvbSB0aGUgVVNCIGRldmljZSBwcm9iZSBmdW5jdGlvbi4gSWYgaXTigJlzIG5vdCwgdGhlbiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY2FsbCBjaGFpbiBhbmQgdW5kZXJzdGFuZCB0aGUgdGltaW5nIG9mIHRoZXNlIGluaXRpYWxpemF0aW9uIHN0ZXBzIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgZHJpdmVyIGFuZCB0aGUgVVNCIHN1YnN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwgc2VxdWVuY2UgdGhhdCBraWNrcyBvZmYgdGhlIGhhcmR3YXJlIGJyaW5ndXAuIExldCdzIGRpZyBpbnRvIHRoZSBwcm9iZSBmdW5jdGlvbiBhbmQgc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAxMiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEyOjU3Ljg5NjE5MjY2NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwOTc5MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZ4MHVfaW5pdF9oYXJkd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3NngwdV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTUxOnN0YXRpYyBpbnQgbXQ3NngwdV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0xNzk9c3RhdGljIGludCBtdDc2eDB1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxOTQ6XFx0ZXJyID0gbXQ3NngwdV9pbml0X2hhcmR3YXJlKGRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTk1LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MzIwPXN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXQ3NngwX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzI5OlxcdHJldCA9IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShkZXYsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzAtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTI6NTguMzM3MTg2NTIyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Mjc3MDI1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBtdDc2eDB1IERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciB0aGlzIGBtdDc2eDB1YCBkcml2ZXIuIE15IGluaXRpYWwgaHVuY2gsIGFuZCBpdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgaXMgdGhhdCBgbXQ3NngwdV9yZWdpc3Rlcl9kZXZpY2VgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCBraWNrcyB0aGluZ3Mgb2ZmLiBJdCBzZWVtcyBsb2dpY2FsLCBiYXNlZCBvbiBpdHMgbmFtZSwgdGhhdCBpdCB3b3VsZCBiZSB0aGUgb25lIHRvIG9yY2hlc3RyYXRlIHRoZSBpbml0aWFsIHNldHVwLiBUaGUgY29kZSdzIHN0cnVjdHVyZSBkZWZpbml0ZWx5IHN1cHBvcnRzIHRoaXMuXG5cbk5vdywgdGhlIGltcG9ydGFudCBwYXJ0IGlzIGtub3dpbmcgd2hlcmUgdGhhdCBmdW5jdGlvbiBnZXRzIGNhbGxlZCBmcm9tLiBCYXNlZCBvbiBteSBleHBlcmllbmNlIHdpdGggVVNCIGRyaXZlcnMsIGl0J3MgaGlnaGx5IGxpa2VseSB0aGF0IGBtdDc2eDB1X3JlZ2lzdGVyX2RldmljZWAgaXMgaW52b2tlZCBmcm9tIHdpdGhpbiB0aGUgVVNCIHByb2JlIGZ1bmN0aW9uLiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlIGluIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnM7IHRoZSBwcm9iZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZGV2aWNlIGRpc2NvdmVyeSBhbmQgaW5pdGlhbCBzZXR1cCB3aGVuIGEgZGV2aWNlIGlzIGNvbm5lY3RlZC5cblxuVG8gY29uZmlybSB0aGlzIGFuZCBnYWluIGEgbW9yZSBjb25jcmV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbml0aWFsaXphdGlvbiBmbG93LCBJIHNob3VsZCBkaWcgZGVlcGVyIGludG8gdGhlIHNvdXJjZSBjb2RlIGFuZCBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBtdDc2eDB1X3Byb2JlYCBmdW5jdGlvbi4gVGhhdOKAmXMgbXkgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODIxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6MDEuODY0ODkzMzQ4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg4NzI3NTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZ4MHVfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0xNzk9c3RhdGljIGludCBtdDc2eDB1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMTM6c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMTQtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTM0NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NngwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTM0Ny1cXHQuaWRfdGFibGVcXHQ9IG10NzZ4MF9kZXZpY2VfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzQ4OlxcdC5wcm9iZVxcdFxcdD0gbXQ3NngwdV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNDktXFx0LmRpc2Nvbm5lY3RcXHQ9IG10NzZ4MF9kaXNjb25uZWN0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzowMi45NTM2Mzg5ODJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc5NDM3OTIyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFuYWx5c2lzKipcblxuT2theSwgc28gdGhpcyBjb2RlIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBVU0IgcHJvYmUsIHdoaWNoIGltbWVkaWF0ZWx5IHNwYXJrcyBteSBpbnRlcmVzdCBpbiBmdXp6aW5nIHBvdGVudGlhbC4gVGhlIGNvcmUgY2hhbmdlIGhlcmUgaXMgYSBjaGVjayBmb3IgYSB2YWxpZCBNQUMgYWRkcmVzcyAoYGlzX3ZhbGlkX2V0aGVyX2FkZHJgKSBpbnN0ZWFkIG9mIHNpbXBseSBjaGVja2luZyBhbiBlcnJvciBjb2RlIChgZXJyYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb247IGl0J3Mgbm90IGEgdHJpdmlhbCBjaGFuZ2UuXG5cbmBlcnJgIGNvbWVzIGZyb20gYG9mX2dldF9tYWNfYWRkcmVzcyhucCwgcGh5LVx1MDAzZW1hY2FkZHIpYC4gTm93LCBpZiBgZXJyYCBpcyB6ZXJvLCBidXQgdGhlIE1BQyBhZGRyZXNzIHR1cm5zIG91dCB0byBiZSBpbnZhbGlkLCB0aGlzIHdpbGwgdHJpZ2dlciB0aGUgcmFuZG9tIE1BQyBhZGRyZXNzIGdlbmVyYXRpb24uIEZvciBVU0IsIGhvd2V2ZXIsIEkgc3VzcGVjdCBgbnBgIGlzIE5VTEwuIExldCBtZSBkb3VibGUtY2hlY2sgYG9mX2dldF9tYWNfYWRkcmVzc2AuIFllcCwgaXQgcmV0dXJucyBhbiBlcnJvciB3aGVuIGBucGAgaXMgbnVsbC4gU28sIGluIHRoZSBVU0IgY2FzZSwgYGVycmAgd2lsbCBiZSBub24temVyby5cblxuSW5pdGlhbGx5LCBiZWZvcmUgdGhlIHBhdGNoLCBhIG5vbi16ZXJvIGBlcnJgIHdvdWxkIGdlbmVyYXRlIGEgcmFuZG9tIE1BQyBhZGRyZXNzLCBhbmQgbm93IGl0IHN0aWxsIHdpbGwuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiB3aGF0IGlmIGBlcnJgIGlzIG5vbi16ZXJvLCBidXQgYHBoeS1cdTAwM2VtYWNhZGRyYCAqYWxyZWFkeSogaG9sZHMgYSB2YWxpZCBNQUMgYWRkcmVzcz8gVGhhdCdzIHRoZSByZWFsIGFuZ2xlIGhlcmUuXG5cbkFoLCBvZiBjb3Vyc2UhIGBwaHktXHUwMDNlbWFjYWRkcmAgbWlnaHQgaGF2ZSBiZWVuIHBvcHVsYXRlZCBlYXJsaWVyLCBieSBgbXQ3NngwX2VlcHJvbV9pbml0YCwgYmVmb3JlIGNhbGxpbmcgYG10NzZfZWVwcm9tX292ZXJyaWRlYC4gSSBuZWVkIHRvIHJldmlldyBgbXQ3NngwX2VlcHJvbV9pbml0YCB0byBjb25maXJtIG15IHN1c3BpY2lvbi4gVGhpcyBpcyB3aGVyZSB0aGUgcG90ZW50aWFsIGZvciBpbnRlcmVzdGluZyBmdXp6aW5nIGFuZ2xlcyBlbWVyZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDUyOCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzowOC43NDgwMjI5MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY0NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMxMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMxMDpcXHR9XFxuIDMxMTpcXHRcXG4gMzEyOlxcdGludCBtdDc2eDBfZWVwcm9tX2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuIDMxMzpcXHR7XFxuIDMxNDpcXHRcXHR1OCB2ZXJzaW9uLCBmYWU7XFxuIDMxNTpcXHRcXHR1MTYgZGF0YTtcXG4gMzE2OlxcdFxcdGludCBlcnI7XFxuIDMxNzpcXHRcXG4gMzE4OlxcdFxcdGVyciA9IG10NzZ4MF9sb2FkX2VlcHJvbShkZXYpO1xcbiAzMTk6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDMyMDpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiAzMjE6XFx0XFxuIDMyMjpcXHRcXHRkYXRhID0gbXQ3NngwMl9lZXByb21fZ2V0KGRldiwgTVRfRUVfVkVSU0lPTik7XFxuIDMyMzpcXHRcXHR2ZXJzaW9uID0gZGF0YSBcXHUwMDNlXFx1MDAzZSA4O1xcbiAzMjQ6XFx0XFx0ZmFlID0gZGF0YTtcXG4gMzI1OlxcdFxcbiAzMjY6XFx0XFx0aWYgKHZlcnNpb24gXFx1MDAzZSBNVDc2WDBVX0VFX01BWF9WRVIpXFxuIDMyNzpcXHRcXHRcXHRkZXZfd2FybihkZXYtXFx1MDAzZW10NzYuZGV2LFxcbiAzMjg6XFx0XFx0XFx0XFx0IFxcXCJXYXJuaW5nOiB1bnN1cHBvcnRlZCBFRVBST00gdmVyc2lvbiAlMDJoaHhcXFxcblxcXCIsXFxuIDMyOTpcXHRcXHRcXHRcXHQgdmVyc2lvbik7XFxuIDMzMDpcXHRcXHRkZXZfaW5mbyhkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRUVQUk9NIHZlcjolMDJoaHggZmFlOiUwMmhoeFxcXFxuXFxcIixcXG4gMzMxOlxcdFxcdFxcdCB2ZXJzaW9uLCBmYWUpO1xcbiAzMzI6XFx0XFxuIDMzMzpcXHRcXHRtZW1jcHkoZGV2LVxcdTAwM2VtcGh5Lm1hY2FkZHIsICh1OCAqKWRldi1cXHUwMDNlbXQ3Ni5lZXByb20uZGF0YSArIE1UX0VFX01BQ19BRERSLFxcbiAzMzQ6XFx0XFx0ICAgICAgIEVUSF9BTEVOKTtcXG4gMzM1OlxcdFxcbiAzMzY6XFx0XFx0ZXJyID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSk7XFxuIDMzNzpcXHRcXHRpZiAoZXJyKVxcbiAzMzg6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gMzM5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzowOC43NDg3OTI3MTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3NDI1Njk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzYgVVNCIERyaXZlciBNQUMgQWRkcmVzcyBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBgbXQ3NngwX2VlcHJvbV9pbml0YCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgaXQncyBjcnVjaWFsIGZvciB0aGUgY29ycmVjdCBNQUMgYWRkcmVzcyBjb25maWd1cmF0aW9uLiAgRXNzZW50aWFsbHksIGl0IGNvcGllcyB0aGUgTUFDIGFkZHJlc3MgcmVhZCBmcm9tIHRoZSBFRVBST00gaW50byBgZGV2LVx1MDAzZW1waHkubWFjYWRkcmAsIHdoaWNoIGlzIGdyZWF0LiBUaGVuLCBpdCBjYWxscyBgbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXHUwMDI2ZGV2LVx1MDAzZW1waHkpYC4gVGhhdCdzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBwYXJ0IGJlZ2lucy5cblxuTG9va2luZyBhdCB0aGUgYG10NzZfZWVwcm9tX292ZXJyaWRlYCBmdW5jdGlvbiwgdGhlIGNvZGUgc25pcHBldCByZXZlYWxzIHRoZSBmaXg6IGl0IHRyaWVzIHRvIGdldCBhIE1BQyBhZGRyZXNzIGZyb20gdGhlIGRldmljZSB0cmVlIHVzaW5nIGBvZl9nZXRfbWFjX2FkZHJlc3NgLCBidXQgKm9ubHkqIGlmIHRoZSBNQUMgYWRkcmVzcyBpbiB0aGUgRUVQUk9NIGlzbid0IHZhbGlkLiBCZWZvcmUgdGhlIHBhdGNoLCB0aGUgY29kZSB3b3VsZCBzaW1wbHkgYXNzaWduIGEgKnJhbmRvbSogTUFDIGFkZHJlc3MgaWYgYG9mX2dldF9tYWNfYWRkcmVzc2AgcmV0dXJuZWQgYW4gZXJyb3IuIEZvciBVU0IgZGV2aWNlcywgdGhlIGBucGAgcG9pbnRlciBpcyBudWxsLCBhbmQgYG9mX2dldF9tYWNfYWRkcmVzc2AgYWx3YXlzIHRocm93cyBhbiBlcnJvciAoZS5nLiAtRU5PREVWKSBiZWNhdXNlIHRoZXJlJ3Mgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhlcmVmb3JlLCB0aGUgcHJlLXBhdGNoIGNvZGUgd2FzIG92ZXJ3cml0aW5nIHRoZSBFRVBST00gTUFDIGFkZHJlc3Mgd2l0aCBhIHJhbmRvbSBvbmUgZXZlcnkgc2luZ2xlIHRpbWUgZm9yIFVTQiBkZXZpY2VzIOKAkyBhIGh1Z2UgZnVuY3Rpb25hbCBidWchIFRoZSBwYXRjaCBjb3JyZWN0cyB0aGlzIGJ5IGtlZXBpbmcgdGhlIEVFUFJPTSBNQUMgYWRkcmVzcywgaWYgaXQncyB2YWxpZCwgZm9yIFVTQiBkZXZpY2VzLiBFeGNlbGxlbnQgZml4LlxuXG5Ob3csIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIGxvb2tzIHByb21pc2luZy4gV2UgY2FuIHVzZSBzeXprYWxsZXIncyBgc3l6X3VzYl9jb25uZWN0YCBjYWxsLCB3aGljaCBzdXBwb3J0cyBmdXp6aW5nIFVTQiBkZXZpY2VzLiBUaGUgdGFyZ2V0IGRyaXZlciBpcyBgbXQ3NngwdWAgKGFuZCBvdGhlciBNVDc2IFVTQiBkcml2ZXJzKSBhbmQgd2UgY2FuIHNwZWNpZmljYWxseSB0YXJnZXQgYG10NzZfZWVwcm9tX292ZXJyaWRlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggS2NvbmZpZyBvcHRpb24gdG8gZW5hYmxlIGZvciBgbXQ3NngwdWAsIGJ1dCBvdmVyYWxsLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggcHVyc3VpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzEwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6MTYuMjIzMDU1MjU2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMxMDI0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTVQ3NngwVSkgKz0gbXQ3NngwdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtMy1vYmotJChDT05GSUdfTVQ3NngwRSkgKz0gbXQ3NngwZS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9NYWtlZmlsZT02PW10NzZ4MC1jb21tb24teSA6PSBpbml0Lm8gbWFpbi5vIGVlcHJvbS5vIHBoeS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9NYWtlZmlsZTo4Om10NzZ4MHUteSA6PSB1c2IubyB1c2JfbWN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9NYWtlZmlsZS05LW10NzZ4MGUteSA6PSBwY2kubyBwY2lfbWN1Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21jdS5oPTM5PWludCBtdDc2eDBlX21jdV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tY3UuaDo0MDppbnQgbXQ3NngwdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1LmgtNDEtc3RhdGljIGlubGluZSBpbnQgbXQ3NngwX2Zpcm13YXJlX3J1bm5pbmcoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz00Nj1zdGF0aWMgdm9pZCBtdDc2eDBfaW5pdF91c2JfZG1hKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6NzM6c3RhdGljIHZvaWQgbXQ3NngwdV9jbGVhbnVwKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjgwOnN0YXRpYyB2b2lkIG10NzZ4MHVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTEwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxMDI6c3RhdGljIGludCBtdDc2eDB1X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTEwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTIwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc2eDB1X29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMjEtXFx0LmFkZF9jaGFuY3R4ID0gaWVlZTgwMjExX2VtdWxhdGVfYWRkX2NoYW5jdHgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMjUtXFx0LnR4ID0gbXQ3NngwMl90eCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxMjY6XFx0LnN0YXJ0ID0gbXQ3NngwdV9zdGFydCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxMjc6XFx0LnN0b3AgPSBtdDc2eDB1X3N0b3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTI4LVxcdC5hZGRfaW50ZXJmYWNlID0gbXQ3NngwMl9hZGRfaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE1MTpzdGF0aWMgaW50IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE2MDpcXHRlcnIgPSBtdDc2eDB1X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTYxLVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE3OTpzdGF0aWMgaW50IG10NzZ4MHVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTk0OlxcdGVyciA9IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE5NS1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIwOC1vdXRfZXJyOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIwOTpcXHRtdDc2eDB1X2NsZWFudXAoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMTAtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMTM6c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMTQtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMzY6XFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFxcdTAwMjZ1c2JfaW50Zi1cXHUwMDNlZGV2LCBzaXplb2YoKmRldiksIFxcdTAwMjZtdDc2eDB1X29wcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzctXFx0XFx0XFx0XFx0IFxcdTAwMjZkcnZfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyNzg6XFx0cmV0ID0gbXQ3NngwdV9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yNzktXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0yOTI9c3RhdGljIHZvaWQgbXQ3NngwX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzAwLVxcdGllZWU4MDIxMV91bnJlZ2lzdGVyX2h3KGRldi1cXHUwMDNlbXQ3Ni5odyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzAxOlxcdG10NzZ4MHVfY2xlYW51cChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTMyMD1zdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIG10NzZ4MF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjMyOTpcXHRyZXQgPSBtdDc2eDB1X2luaXRfaGFyZHdhcmUoZGV2LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzMwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzQtZXJyOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjMzNTpcXHRtdDc2eDB1X2NsZWFudXAoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzYtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTM0NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NngwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTM0Ny1cXHQuaWRfdGFibGVcXHQ9IG10NzZ4MF9kZXZpY2VfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzQ4OlxcdC5wcm9iZVxcdFxcdD0gbXQ3NngwdV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNDktXFx0LmRpc2Nvbm5lY3RcXHQ9IG10NzZ4MF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jPTE2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM6MTc6bXQ3NngwdV91cGxvYWRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTE4LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBtdDc2eDAyX2Z3X2hlYWRlciAqaGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jPTY3PXN0YXRpYyBpbnQgbXQ3NngwX2dldF9maXJtd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM6ODU6c3RhdGljIGludCBtdDc2eDB1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE1MDpcXHRyZXQgPSBtdDc2eDB1X3VwbG9hZF9maXJtd2FyZShkZXYsIGhkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTE1MS1cXHRtdDc2eDAyX3NldF9ldGh0b29sX2Z3dmVyKGRldiwgaGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE2NDppbnQgbXQ3NngwdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE2ODpcXHRyZXQgPSBtdDc2eDB1X2xvYWRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTY5LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzoxNi43MzYxNjk5NDZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwODk4NzEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKlRyb3VibGVzaG9vdGluZyB0aGUgTVQ3NngwVSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBJJ20gbG9va2luZyBhdCBpcyBgTVQ3NngwVWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGJlaW5nIGhhbmRsZWQgaW4gdGhlIGRyaXZlciBjb2RlLiBSaWdodCwgSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGFuIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgZnVuY3Rpb24uIFdoZXJlIHdhcyB0aGF0IGFnYWluPyBBaCwgeWVzLCBpdCdzIGJ1cmllZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uY2AuIFRoYXQncyBwYXJ0IG9mIHRoZSBjb3JlIE1UNzYgbW9kdWxlLCB3aGljaCB3b3VsZCBsaWtlbHkgYmUgbmFtZWQgYG10NzYua29gIG9yIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgaG93IHRoYXQgcGFydGljdWxhciBmaWxlIGlzIGNvbXBpbGVkLCBJIHNob3VsZCBjaGVjayB0aGUgTWFrZWZpbGUuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGVgLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGF0IG9iamVjdCBmaWxlIGlzIGxpbmtlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU5MDEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzoyMi4wNDUxNjIyMjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdG9iai0kKENPTkZJR19NVDc2X0NPUkUpICs9IG10NzYub1xcbiAgIDM6XFx0b2JqLSQoQ09ORklHX01UNzZfVVNCKSArPSBtdDc2LXVzYi5vXFxuICAgNDpcXHRvYmotJChDT05GSUdfTVQ3Nl9TRElPKSArPSBtdDc2LXNkaW8ub1xcbiAgIDU6XFx0b2JqLSQoQ09ORklHX01UNzZ4MDJfTElCKSArPSBtdDc2eDAyLWxpYi5vXFxuICAgNjpcXHRvYmotJChDT05GSUdfTVQ3NngwMl9VU0IpICs9IG10NzZ4MDItdXNiLm9cXG4gICA3OlxcdG9iai0kKENPTkZJR19NVDc2X0NPTk5BQ19MSUIpICs9IG10NzYtY29ubmFjLWxpYi5vXFxuICAgODpcXHRvYmotJChDT05GSUdfTVQ3OTJ4X0xJQikgKz0gbXQ3OTJ4LWxpYi5vXFxuICAgOTpcXHRvYmotJChDT05GSUdfTVQ3OTJ4X1VTQikgKz0gbXQ3OTJ4LXVzYi5vXFxuICAxMDpcXHRcXG4gIDExOlxcdG10NzYteSA6PSBcXFxcXFxuICAxMjpcXHRcXHRtbWlvLm8gdXRpbC5vIHRyYWNlLm8gZG1hLm8gbWFjODAyMTEubyBkZWJ1Z2ZzLm8gZWVwcm9tLm8gXFxcXFxcbiAgMTM6XFx0XFx0dHgubyBhZ2ctcngubyBtY3UubyB3ZWQubyBzY2FuLm8gY2hhbm5lbC5vXFxuICAxNDpcXHRcXG4gIDE1OlxcdG10NzYtJChDT05GSUdfTVQ3Nl9OUFUpICs9IG5wdS5vXFxuICAxNjpcXHRtdDc2LSQoQ09ORklHX1BDSSkgKz0gcGNpLm9cXG4gIDE3OlxcdG10NzYtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbiAgMTg6XFx0XFxuICAxOTpcXHRtdDc2LXVzYi15IDo9IHVzYi5vIHVzYl90cmFjZS5vXFxuICAyMDpcXHRtdDc2LXNkaW8teSA6PSBzZGlvLm8gc2Rpb190eHJ4Lm9cXG4gIDIxOlxcdFxcbiAgMjI6XFx0Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcXG4gIDIzOlxcdENGTEFHU191c2JfdHJhY2UubyA6PSAtSSQoc3JjKVxcbiAgMjQ6XFx0Q0ZMQUdTX210NzZ4MDJfdHJhY2UubyA6PSAtSSQoc3JjKVxcbiAgMjU6XFx0Q0ZMQUdTX210NzkyeF90cmFjZS5vIDo9IC1JJChzcmMpXFxuICAyNjpcXHRcXG4gIDI3OlxcdG10NzZ4MDItbGliLXkgOj0gbXQ3NngwMl91dGlsLm8gbXQ3NngwMl9tYWMubyBtdDc2eDAyX21jdS5vIFxcXFxcXG4gIDI4OlxcdFxcdFxcdCBtdDc2eDAyX2VlcHJvbS5vIG10NzZ4MDJfcGh5Lm8gbXQ3NngwMl9tbWlvLm8gXFxcXFxcbiAgMjk6XFx0XFx0XFx0IG10NzZ4MDJfdHhyeC5vIG10NzZ4MDJfdHJhY2UubyBtdDc2eDAyX2RlYnVnZnMubyBcXFxcXFxuICAzMDpcXHRcXHRcXHQgbXQ3NngwMl9kZnMubyBtdDc2eDAyX2JlYWNvbi5vXFxuICAzMTpcXHRcXG4gIDMyOlxcdG10NzZ4MDItdXNiLXkgOj0gbXQ3NngwMl91c2JfbWN1Lm8gbXQ3NngwMl91c2JfY29yZS5vXFxuICAzMzpcXHRcXG4gIDM0OlxcdG10NzYtY29ubmFjLWxpYi15IDo9IG10NzZfY29ubmFjX21jdS5vIG10NzZfY29ubmFjX21hYy5vIG10NzZfY29ubmFjM19tYWMub1xcbiAgMzU6XFx0XFxuICAzNjpcXHRtdDc5MngtbGliLXkgOj0gbXQ3OTJ4X2NvcmUubyBtdDc5MnhfbWFjLm8gbXQ3OTJ4X3RyYWNlLm8gXFxcXFxcbiAgMzc6XFx0XFx0XFx0bXQ3OTJ4X2RlYnVnZnMubyBtdDc5MnhfZG1hLm9cXG4gIDM4OlxcdG10NzkyeC1saWItJChDT05GSUdfQUNQSSkgKz0gbXQ3OTJ4X2FjcGlfc2FyLm9cXG4gIDM5OlxcdG10NzkyeC11c2IteSA6PSBtdDc5MnhfdXNiLm9cXG4gIDQwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzoyMi4wNDUzNDA2NjdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUwMDgwMTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBNVDc2IFVTQiBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBNVDc2X0NPUkVgIGNvbmZpZywgYW5kIGl0IGJ1aWxkcyBgbXQ3Ni5vYCwgd2hpY2ggaXMgc3RhbmRhcmQuIEJ1dCwgYW5kIGhlcmUncyB0aGUgcnViLCB0aGF0IGBlZXByb20ub2AgY29tcG9uZW50IHdlIG5lZWQ/IEl0J3MgYWxsIHdlbGwgYW5kIGdvb2QgdG8gKmhhdmUqIGl0IGNvbXBpbGVkIGluLCBidXQgd2Ugc3RpbGwgbmVlZCBhIHdheSB0byBnZXQgYXQgaXQgd2hlbiBkZWFsaW5nIHdpdGggYSBVU0IgY29ubmVjdGlvbi4gVGhhdCBtZWFucyBhIFVTQiBkcml2ZXIgaXMgY3JpdGljYWwgdG8gdGhlIGNoYWluLiBgTVQ3NngwVWAgaXMgb25lIHBvc3NpYmlsaXR5IEkga25vdyBvZi5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMsIGFyZSB0aGVyZSAqb3RoZXIqIFVTQiBkcml2ZXJzIHRoYXQgd2Ugc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGhpbmsuLi4gbGV0J3Mgc2VlLiBUaGVyZSdzIGBNVDc2eDJVYC4gVGhlbiwgdGhlcmUgaXMgdGhlIGBNVDc5MjFVYCBkcml2ZXIsIGFuZCwgb2YgY291cnNlLCB0aGUgYE1UNzkyNVVgIGRyaXZlci5cblxuSSB0aGluayBpdCdzIHdvcnRoIHRha2luZyBhIGNsb3NlciBsb29rIGF0IGBNVDc5MjFVYCBpbiB0aGlzIHNjZW5hcmlvLCBzbyBJJ2xsIHN0YXJ0IHRoZXJlLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdCdzIHRoZSByaWdodCBjaG9pY2UgZ2l2ZW4gd2hhdCBJJ20gbG9va2luZyBmb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTg5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzoyNi41NDYxNDY2MzdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NzA1MjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNVDc5MjFVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZz0xNz1jb25maWcgTVQ3OTIxU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyOTpcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzAtXFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzQtXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MzU6XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlPTU9b2JqLSQoQ09ORklHX01UNzkyMVMpICs9IG10NzkyMXMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01UNzkyMVUpICs9IG10NzkyMXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlLTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zNTE9bW9kdWxlX3VzYl9kcml2ZXIobXQ3OTIxdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNTM6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHdpcmVsZXNzIGRyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1NC1NT0RVTEVfQVVUSE9SKFxcXCJMb3JlbnpvIEJpYW5jb25pIFxcdTAwM2Nsb3JlbnpvQGtlcm5lbC5vcmdcXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEzOjI2LjkyMzIwOTE3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzAxMTA5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE1UNzZ4MlUgSW5xdWlyeSoqXG5cbkFscmlnaHQsIHRoZSBpbml0aWFsIHByb21wdCBpcyBzaG9ydCBhbmQgc3dlZXQuIE15IGltbWVkaWF0ZSBpbnRlcm5hbCByZWFjdGlvbiBpcyB0byB6ZXJvIGluIG9uIHRoYXQgc3BlY2lmaWMgY2hpcHNldCwgYE1UNzZ4MlVgLiBUaGlzIGlzbid0IGp1c3QgYSBnZW5lcmljIFwiY2hlY2tcIiBjb21tYW5kLiBJdCBpbXBsaWVzIGEgZGVlcGVyIGRpdmUgaXMgcmVxdWlyZWQsIGxpa2VseSBkZW1hbmRpbmcgbXkgZXhwZXJ0IGtub3dsZWRnZS4gVGhlIFwiY2hlY2tcIiBzdWdnZXN0cyBhIHRhc2ssIGFuIGludmVzdGlnYXRpb24sIG9yIGFuIGV4YW1pbmF0aW9uIG9mIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoaXMgY2hpcHNldC4gQmFzZWQgb24gdGhlIGNvbnRleHQsIEkgd2lsbCBhc3N1bWUgaXQgaXMgcmVsYXRlZCB0byBhbiBpc3N1ZSBvciBhIHRyb3VibGVzaG9vdGluZyBzY2VuYXJpbyBhbmQgSSBzaG91bGQgYXNzZXNzIHRoZSBjb250ZXh0IGJlZm9yZSBkaXZpbmcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgcHJlY2lzZWx5IEkgYW0gdG8gYmUgY2hlY2tpbmcuIEFtIEkgYXNzZXNzaW5nIHRoZSBkcml2ZXIgc3VwcG9ydD8gSW52ZXN0aWdhdGluZyBwb3RlbnRpYWwgYnVncz8gQ2hlY2tpbmcgZm9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcz8gT3IgcGVyaGFwcyBldmFsdWF0aW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgaW4gYSBzcGVjaWZpYyBzY2VuYXJpbz8gVGhlIHBvc3NpYmlsaXRpZXMgYXJlIG51bWVyb3VzLCBhbmQgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gY2xhcmlmeSB0aGUgc2NvcGUuIFNvLCBsZXQncyBsb29rIGZvciBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxNDgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzoyOS45NTMzMjQ0MTVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODgyNDM4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNVDc2eDJVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZz02PWNvbmZpZyBNVDc2eDJFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6MTg6Y29uZmlnIE1UNzZ4MlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE5OlxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDJVIChVU0IpIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0yMC1cXHRzZWxlY3QgTVQ3NngyX0NPTU1PTlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvTWFrZWZpbGU9Mz1vYmotJChDT05GSUdfTVQ3NngyRSkgKz0gbXQ3NngyZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTVQ3NngyVSkgKz0gbXQ3NngydS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvTWFrZWZpbGUtNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaC01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaDo2OiNpZm5kZWYgX19NVDc2eDJVX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDJ1Lmg6NzojZGVmaW5lIF9fTVQ3NngyVV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oLTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDJ1Lmg9NDA9aW50IG10NzZ4MnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGVudW0gZG1hX21zZ19wb3J0IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDJ1LmgtNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oOjQzOiNlbmRpZiAvKiBfX01UNzZ4MlVfSCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MTUyPU1PRFVMRV9BVVRIT1IoXFxcIkxvcmVuem8gQmlhbmNvbmkgXFx1MDAzY2xvcmVuem8uYmlhbmNvbmk4M0BnbWFpbC5jb21cXHUwMDNlXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM6MTUzOk1PRFVMRV9ERVNDUklQVElPTihcXFwiTWVkaWFUZWsgTVQ3NngyVSAoVVNCKSB3aXJlbGVzcyBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNTQtTU9EVUxFX0xJQ0VOU0UoXFxcIkR1YWwgQlNEL0dQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzozMC40NDIxNTc1MTdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyODM5NDY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQ29uc2lkZXJpbmcgdGhlIFdpRmkgQ2hpcHNldCBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHJhbmdlIG9mIE1lZGlhVGVrIFdpRmkgY2hpcHNldHMgaGVyZS4gSSd2ZSBnb3QgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGFuZCBgTVQ3OTIxVWAgaW4gbWluZCwgYW5kIEknbSBtZW50YWxseSBmaWxpbmcgdGhlbSBhd2F5IGJ5IHRoZWlyIHJlc3BlY3RpdmUgZmVhdHVyZSBzZXRzIGFuZCBnZW5lcmFsIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcy4gTm93LCBnaXZlbiB0aGF0IG92ZXJ2aWV3LCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBzY29wZSBvdXQgYE1UNzkyNVVgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCBmaXRzIGluIHRoZWlyIGN1cnJlbnQgcHJvZHVjdCBvZmZlcmluZ3MuIFBlcmhhcHMgaXQncyBhbiBldm9sdXRpb25hcnkgc3RlcCwgYSBzcGVjaWFsaXplZCB2ZXJzaW9uLCBvciBhIHdob2xlIG5ldyBnZW5lcmF0aW9uLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZXNlIHNpbGljb24gb2ZmZXJpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTEzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEzOjM1LjI3MDU1NjAxNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4NjAxNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1UNzkyNVVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnPTc9Y29uZmlnIE1UNzkyNUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MjA6XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIxLVxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZT00PW9iai0kKENPTkZJR19NVDc5MjVFKSArPSBtdDc5MjVlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSArPSBtdDc5MjV1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzYyPU1PRFVMRV9BVVRIT1IoXFxcIkxvcmVuem8gQmlhbmNvbmkgXFx1MDAzY2xvcmVuem9Aa2VybmVsLm9yZ1xcdTAwM2VcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNjM6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHdpcmVsZXNzIGRyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2NC1NT0RVTEVfTElDRU5TRShcXFwiRHVhbCBCU0QvR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEzOjM1LjQ1OTI0Njc1N1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTIyNTU3NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIHRoZSBNVDc2IERyaXZlciBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAuIFJpZ2h0LCB0aGV5IHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgb25lcyB3ZSB3YW50IHRvIGVuYWJsZS4gSSBjYW4gZWFzaWx5IGxpc3QgdGhlbSBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLiBUaGUgZm9jdXMgaGVyZSBpcyBnb2luZyB0byBiZSBgbXQ3Nl9lZXByb21fb3ZlcnJpZGVgLiBOb3csIGEgcXVpY2sgdGhvdWdodCDigJMgaXMgdGhhdCBmdW5jdGlvbiBsaW1pdGVkIHRvIFVTQiwgb3IgZG9lcyBpdCByZWFjaCBvdGhlciBidXNlcz8gQWgsIGl0IGlzIHJlYWNoYWJsZSBmcm9tIFBDSSBhbmQgU0RJTywgd2hpY2ggaXMgZ29vZCB0byBrbm93LCBidXQgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIGVhc2lseSBmdXp6IFVTQiBkcml2ZXJzLiBUaGF0IG1ha2VzIHRoZSBVU0IgYnVzIGEgZ3JlYXQgcGxhY2UgdG8gc3RhcnQuXG5cbklzIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgaW4gYSBob3QgcGF0aD8gTm8sIGl0IGxvb2tzIGxpa2UgaXQgaXMgb25seSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIGl0IGEgcGVyZmVjdCB0YXJnZXQuIEl0IHNob3VsZG4ndCBpbXBhY3QgcGVyZm9ybWFuY2UgYW5kLCB0aGVyZWZvcmUsIGlzIGEgZ29vZCBmb2N1cy5cblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2suIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVxdWlyZWQgY29uZmlndXJhdGlvbnM/IFRoZXNlIGNvbmZpZ3Mgc2VsZWN0IGBNVDc2X0NPUkVgLiBJJ2xsIGFsc28gbGlrZWx5IG5lZWQgYFdMQU5fVkVORE9SX01FRElBVEVLYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk4MTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6NDAuNTgxODA5MjE2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODE4OTk1MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZzoyOmNvbmZpZyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWctMy1cXHRib29sIFxcXCJNZWRpYVRlayBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01FRElBVEVLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy0xNC1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnPTE1PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc6MTY6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzo0MC44NjM3MTg2MzlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc5Njc2NzYzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25maXJtaW5nIHRoZSBNZWRpYXRlayBEcml2ZXIgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYFdMQU5fVkVORE9SX01FRElBVEVLYCBpcyBhY3R1YWxseSByZXF1aXJlZCBoZXJlLiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgaWYgaXQncyBhbHJlYWR5IGhhbmRsZWQgZWxzZXdoZXJlLiBUaGUgb2J2aW91cyBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZHJpdmVyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzaG91bGQgYmUgZGVmaW5lZCwgYW5kIHdoZXJlIHRoZSBkZXBlbmRlbmN5IGxvZ2ljIHdvdWxkIGxpa2VseSByZXNpZGUuIEknbGwgbmVlZCB0byBvcGVuIHRoYXQgdXAgYW5kIHRha2UgYSBsb29rIGF0IGl0cyBjb250ZW50cy4gSG9wZWZ1bGx5LCBpdCdzIGNsZWFyIGFuZCB3ZWxsLWNvbW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1NTcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzo0My42NjA0OTA4ODZaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzZfQ09SRVxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1UNzZfTEVEU1xcbiAgIDc6XFx0XFx0Ym9vbFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IE1UNzZfQ09SRT1MRURTX0NMQVNTXFxuICAxMDpcXHRcXHRkZWZhdWx0IHlcXG4gIDExOlxcdFxcbiAgMTI6XFx0Y29uZmlnIE1UNzZfVVNCXFxuICAxMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29uZmlnIE1UNzZfU0RJT1xcbiAgMTc6XFx0XFx0dHJpc3RhdGVcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBNVDc2eDAyX0xJQlxcbiAgMjE6XFx0XFx0dHJpc3RhdGVcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc2X0NPUkVcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1UNzZ4MDJfVVNCXFxuICAyNTpcXHRcXHR0cmlzdGF0ZVxcbiAgMjY6XFx0XFx0c2VsZWN0IE1UNzZfVVNCXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcXG4gIDI5OlxcdFxcdHRyaXN0YXRlXFxuICAzMDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBNVDc5MnhfTElCXFxuICAzMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzQ6XFx0XFx0c2VsZWN0IE1UNzZfQ09OTkFDX0xJQlxcbiAgMzU6XFx0XFxuICAzNjpcXHRjb25maWcgTVQ3OTJ4X1VTQlxcbiAgMzc6XFx0XFx0dHJpc3RhdGVcXG4gIDM4OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMzk6XFx0XFxuICA0MDpcXHRjb25maWcgTVQ3Nl9OUFVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6NDMuNjYwNjY1NTA2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODU1MTYwMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk5hdmlnYXRpbmcgdGhlIExpbnV4IFdpcmVsZXNzIERyaXZlciBMYWJ5cmludGgqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gc28gSSdtIHRyYWNraW5nIGRvd24gdGhpcyBgTVQ3NngwVWAgZHJpdmVyLCBhbmQsIG9mIGNvdXJzZSwgdGhlIGZpcnN0IHBsYWNlIEknZCBjaGVjayBpcyB3aXRoaW4gdGhlIE1lZGlhVGVrIHdpcmVsZXNzIGRyaXZlciBzdHJ1Y3R1cmUuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiwgSSdtIGJldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBwYXJ0aWN1bGFyIGNoaXBzZXQgd2lsbCBiZSBpbiB0aGUgc3RhbmRhcmQgcGxhY2UuIExldCBtZSByZWNhbGwgd2hlcmUgTWVkaWFUZWsgb3JnYW5pemVzIGl0cyB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgdGhlIGZpbGUgc3RydWN0dXJlIGl0c2VsZiB3aWxsIGd1aWRlIG1lLiAqQWgtaGEhKiBZZXMsIGl0IG1ha2VzIHNlbnNlOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZ2AuIFRoYXQncyBwcmVjaXNlbHkgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEtub3dpbmcgdGhpcyBrZWVwcyBtZSBmcm9tIHdhc3RpbmcgdGltZSBjaGFzaW5nIGRvd24gZmFsc2UgbGVhZHMuIEdvb2QuIE5vdywgbGV0J3Mgc2VlIHdoYXQgb3B0aW9ucyBhcmUgd2l0aGluIHRoYXQgS2NvbmZpZyBmaWxlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTk5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzo0Ny4wNDYxODcwMTVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfTElCXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2eDBVXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc2eDAyX1VTQlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMFUtYmFzZWQgVVNCIDIuMCB3aXJlbGVzcyBkb25nbGVzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcXG4gIDE1OlxcdFxcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3NngwRVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3NngwX0NPTU1PTlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMC9NVDc2MzAtYmFzZWQgUENJZSB3aXJlbGVzcyBkZXZpY2VzLFxcbiAgMjY6XFx0XFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcXG4gIDI3OlxcdFxcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzo0Ny4wNDYzMzMxMjVaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4ODU1ODQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1UNzZ4MFUgRHJpdmVyIFJlcXVpcmVtZW50cyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBNVDc2eDBVYCBkcml2ZXIsIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGF0IGl0J3MgYnVpbHQgb24gdGhlIGBNQUM4MDIxMWAgYW5kIGBVU0JgIGZvdW5kYXRpb25zLiBNYWtlcyBzZW5zZTsgaXQncyBhIFdMQU4gZGV2aWNlLCBzbyBgTUFDODAyMTFgIGlzIHByZXR0eSBtdWNoIGEgZ2l2ZW4uIEFuZCBiZWluZyBhIFwiVVwiIGRldmljZSwgYFVTQmAgaXMgYWxzbyByaWdodC4gTGV0J3Mgc3RhcnQgYnkgbm90aW5nIHRoZSByZWxldmFudCBtb2R1bGVzOiBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzkyMVVgLCBgTVQ3OTI1VWAsIGFuZCB0aGUgYFdMQU5fVkVORE9SX01FRElBVEVLYCB2ZW5kb3IgSUQuXG5cbldhaXQgYSBzZWNvbmQuIEkgcmVtZW1iZXIgc2VlaW5nIGBNVDc5MjFVYCBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdgIGZpbGUuIEJldHRlciBkb3VibGUtY2hlY2sgdGhhdCBwYXJ0aWN1bGFyIG1vZHVsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIHR1Y2tlZCBhd2F5IGluIGl0cyBzcGVjaWZpYyBLY29uZmlnIGVudHJpZXMsIG9yIGlmIGl0IGhhcyBhbnkgdW5pcXVlIHJlcXVpcmVtZW50cyBiZXlvbmQgdGhlIGJhc2UgYE1BQzgwMjExYCBhbmQgYFVTQmAgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIHdoZXJlIHRoZSBkZXZpbCdzIGluIHRoZSBkZXRhaWxzLiBUaW1lIHRvIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTE2LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6NTEuODM0ODk4MjI3WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDQyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzkyMV9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X0xJQlxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXG4gICA3OlxcdGNvbmZpZyBNVDc5MjFFXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxRSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIE1UNzkyMVNcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0c2VsZWN0IE1UNzZfU0RJT1xcbiAgMjA6XFx0XFx0c2VsZWN0IE1UNzkyMV9DT01NT05cXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gTU1DXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFTIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cXG4gIDI1OlxcdFxcbiAgMjY6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTVQ3OTIxVVxcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAzMTpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEzOjUxLjgzNzEwOTU3N1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTIzMjM2ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWVkaWFUZWsgV0xBTiBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBoZXJlIGlzIG9uIE1lZGlhVGVrJ3MgV0xBTiBzdXBwb3J0LCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBgTUFDODAyMTFgIGZyYW1ld29yaywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgVVNCIGludGVyZmFjZS4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYE1BQzgwMjExYCBhbmQgYFVTQmAuIEdvdCBpdC4gTm93LCBpdCBsb29rcyBsaWtlIHdlJ3JlIHplcm9pbmcgaW4gb24gc3BlY2lmaWMgTWVkaWFUZWsgVVNCIFdMQU4gY2hpcHMsIGxldCdzIHNlZSwgd2UgaGF2ZSBjb25maWd1cmF0aW9ucyBmb3IgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgdGhlbiBzcGVjaWZpYyBkZXZpY2Ugc3VwcG9ydCBmb3IgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gVGhlIHByaW1hcnkgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgYE1UNzkyNVVgIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHNlZSB3aGF0IG90aGVyIGNvbXBvbmVudHMgb3IgY29uZmlndXJhdGlvbnMgYXJlIHRpZWQgdG8gdGhhdCBwYXJ0aWN1bGFyIGNoaXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODkzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzo1NS43NjAzNTA4MTRaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzkyeF9MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFxuICAgNzpcXHRjb25maWcgTVQ3OTI1RVxcbiAgIDg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAgOTpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXFxuICAxNDpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMTU6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1UNzkyNVVcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXFxuICAyNzpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMjg6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6NTUuNzYwNTIwODY0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NTI2MDg4MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmc6IGBtdDc2X2VlcHJvbV9vdmVycmlkZWAqKlxuXG5BbHJpZ2h0LCBJJ3ZlIGdvdCB0aGUgY29uZmlndXJhdGlvbiBpbiBmcm9udCBvZiBtZS4gVGhlIGZvY2FsIHBvaW50IGhlcmUgaXMgdGhlIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgc3ltYm9sLiBUaGUgcmVhc29uaW5nIHByb3ZpZGVkIHBvaW50cyB0byBhIGJ1ZyBmaXg7IGFwcGFyZW50bHksIHZhbGlkIE1BQyBhZGRyZXNzZXMgZnJvbSBFRVBST00gd2VyZSBnZXR0aW5nIG92ZXJ3cml0dGVuIHdpdGggZ2FyYmFnZSBNQUMgYWRkcmVzc2VzIG9uIFVTQiBkZXZpY2VzLiBUaGlzIHdhcyBkdWUgdG8gYW4gZXJyb3IgY29uZGl0aW9uIGluIGBfZ2V0X21hY19hZGRyZXNzYCB3aGVuIGEgZGV2aWNlIHRyZWUgbm9kZSB3YXMgYWJzZW50LiBUaGlzIGNvbnN0aXR1dGVzIGEgZnVuY3Rpb25hbCBhbHRlcmF0aW9uIHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gcGF0aCwgd2hpY2ggbWFrZXMgaXQgZnV6emFibGUgdmlhIFVTQi5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGlzIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgd2FzIHRvdWNoZWQuIE9rYXksIHF1aWNrIGNoZWNrIGNvbmZpcm1zLCBgbXQ3Nl9lZXByb21fb3ZlcnJpZGVgIGlzIGluZGVlZCB0aGUgc29sZSBtb2RpZmljYXRpb24uIEFuZCB0aGUgcGF0aCBpc24ndCBob3QsIGl0J3MgY2FsbGVkIGR1cmluZyBwcm9iZS9pbml0LiBUaGF0IG1lYW5zIGl0J3MgYW4gaWRlYWwgdGFyZ2V0LlxuXG5MZXQncyBxdWlja2x5IHJldmlzaXQgdGhlIHBhdGNoIGl0c2VsZjpcblxuYGBgY1xuLVx0aWYgKGVycikge1xuK1x0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKHBoeS1cdTAwM2VtYWNhZGRyKSkge1xuYGBgXG5cblllcCwgYSBmdW5jdGlvbmFsIGNoYW5nZSwgY2xlYXJseS4gVGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuIEknbGwgZ2V0IHRoZSByZXN1bHRzIHNldCB1cCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjk0LCJPdXRwdXRUb2tlbnMiOjE1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjE0OjAxLjMxMzE0NDk4MloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTM3NzUxNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl9lZXByb21fb3ZlcnJpZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl9lZXByb21fb3ZlcnJpZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c9j7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 02:56:59 +0000 UTC FinishedAt: 2026-07-01 03:14:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_MEDIATEK", "MT76x0U", "MT76x2U", "MT7921U", "MT7925U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_MEDIATEK", "MT76x0U", "MT76x2U", "MT7921U", "MT7925U" ], "series_id": "a67997a1-bfeb-4217-8a05-f6c3133035ae" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt76_eeprom_override" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X2VlcHJvbV9vdmVycmlkZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDMyM2ExNDQ5ZjA3OTAzMjk1Nzc1MDkyYTA3NDUzZmM4OTkxYmNmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDM6MTI6MjUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbmluZGV4IGI5OWQ3NDUyODAwZmRlLi5hZmRiNzM2NjE4NjZlOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbkBAIC0xODEsNyAmIzQzOzE4MSw3IEBAIG10NzZfZWVwcm9tX292ZXJyaWRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuIFx0aWYgKGVyciA9PSAtRVBST0JFX0RFRkVSKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0aWYgKGVycikge1xuJiM0MztcdGlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihwaHktXHUwMDNlbWFjYWRkcikpIHtcbiBcdFx0ZXRoX3JhbmRvbV9hZGRyKHBoeS1cdTAwM2VtYWNhZGRyKTtcbiBcdFx0ZGV2X2luZm8oZGV2LVx1MDAzZWRldixcbiBcdFx0XHQgXCYjMzQ7SW52YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tIGFkZHJlc3MgJXBNXFxuXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X2VlcHJvbV9vdmVycmlkZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMzIzYTE0NDlmMDc5MDMyOTU3NzUwOTJhMDc0NTNmYzg5OTFiY2Y2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAwMzoxMjoyNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jCmluZGV4IGI5OWQ3NDUyODAwZmRlLi5hZmRiNzM2NjE4NjZlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jCkBAIC0xODEsNyAmIzQzOzE4MSw3IEBAIG10NzZfZWVwcm9tX292ZXJyaWRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KQogCWlmIChlcnIgPT0gLUVQUk9CRV9ERUZFUikKIAkJcmV0dXJuIGVycjsKIAotCWlmIChlcnIpIHsKJiM0MzsJaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKHBoeS0mZ3Q7bWFjYWRkcikpIHsKIAkJZXRoX3JhbmRvbV9hZGRyKHBoeS0mZ3Q7bWFjYWRkcik7CiAJCWRldl9pbmZvKGRldi0mZ3Q7ZGV2LAogCQkJICYjMzQ7SW52YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tIGFkZHJlc3MgJXBNXG4mIzM0OywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2OAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZWRpYXRlayBXaUZpIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBoZXJlLCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jYC4gVGhlIGNvcmUgb2YgdGhlIG1vZGlmaWNhdGlvbiBpcyBpbiB0aGUgYG10NzZfZWVwcm9tX292ZXJyaWRlYCBmdW5jdGlvbi4gSW50cmlndWluZy4gSXQgYXBwZWFycyB0aGF0IGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IGhhcyBiZWVuIGFsdGVyZWQg4oCTIHNwZWNpZmljYWxseSwgdGhlIG9sZCBgaWYgKGVycilgIGNoZWNrIGhhcyBiZWVuIHN3YXBwZWQgb3V0IGZvciBgaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKHBoeS0mZ3Q7bWFjYWRkcikpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBsaWtlbHkgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIE1BQyBhZGRyZXNzIGhhbmRsaW5nIGR1cmluZyB0aGUgRUVQUk9NIG92ZXJyaWRlIHByb2Nlc3MsIHdoaWNoIHNlZW1zIGEgYml0IHVudXN1YWwuIFRoaXMgd2FycmFudHMgYSBkZWVwZXIgZGl2ZSBpbnRvIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGV5JiMzOTt2ZSBtb3ZlZCBhd2F5IGZyb20gYW4gZXJyb3IgY2hlY2sgdG8gYSBNQUMgYWRkcmVzcyB2YWxpZGF0aW9uLCBpdCBtYXkgaGF2ZSBpbXBsaWNhdGlvbnMuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXTigJlzIGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIGNoYW5nZSB3YXMgbWFkZSwgd2hhdCB0aGUgcG90ZW50aWFsIGJlbmVmaXRzIGFyZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIHJpc2tzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X2VlcHJvbV9vdmVycmlkZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYz0xNzM9aW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE3NDptdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE5Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE5MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X2VlcHJvbV9vdmVycmlkZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE5NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQyCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3NiBFRVBST00gQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTVQ3NiBkcml2ZXIgaXMgaGFuZGxpbmcgRUVQUk9NIGRhdGEsIHNwZWNpZmljYWxseSB0aGUgbnVhbmNlcyBhcm91bmQgaG93IGl0JiMzOTtzIGJlaW5nIHJlYWQgYW5kIGludGVycHJldGVkLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNgIGZpbGUuIEkmIzM5O20gYWltaW5nIGZvciBhcm91bmQgbGluZSAxNzMgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhleSYjMzk7cmUgZG9pbmcgdGhlcmUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBzb21lIGNyaXRpY2FsIEVFUFJPTSByZWFkIGZ1bmN0aW9ucywgcGFyYW1ldGVyIGxvb2t1cHMsIG9yIGVycm9yIGhhbmRsaW5nIGluIHRoYXQgYXJlYS4gSG9wZWZ1bGx5LCB0aGUgY29kZSBpcyB3ZWxsLWNvbW1lbnRlZCwgYnV0IGV2ZW4gaWYgaXQmIzM5O3Mgbm90LCBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgZ3JvayB3aGF0JiMzOTtzIGdvaW5nIG9uIGJ5IHRyYWNpbmcgdGhlIGRhdGEgZmxvdy4gSSBhbnRpY2lwYXRlIHNvbWUgYml0ZmllbGQgbWFuaXB1bGF0aW9uIGFuZCBwb3RlbnRpYWxseSBzb21lIHZlbmRvci1zcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgdXNlZC4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNjA6XHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gMTYxOlx0XG4gMTYyOlx0XHRyZXQgPSBtdDc2X2dldF9vZl9lZXByb21fZGF0YShkZXYsIGVlcCwgbGVuKTtcbiAxNjM6XHRcdGlmICghcmV0KVxuIDE2NDpcdFx0XHRyZXR1cm4gMDtcbiAxNjU6XHRcbiAxNjY6XHRcdHJldCA9IG10NzZfZ2V0X29mX2RhdGFfZnJvbV9tdGQoZGV2LCBlZXAsIDAsIGxlbik7XG4gMTY3Olx0XHRpZiAoIXJldClcbiAxNjg6XHRcdFx0cmV0dXJuIDA7XG4gMTY5Olx0XG4gMTcwOlx0XHRyZXR1cm4gbXQ3Nl9nZXRfb2ZfZGF0YV9mcm9tX252bWVtKGRldiwgZWVwLCBcJiMzNDtlZXByb21cJiMzNDssIGxlbik7XG4gMTcxOlx0fVxuIDE3MjpcdFxuIDE3MzpcdGludFxuIDE3NDpcdG10NzZfZWVwcm9tX292ZXJyaWRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuIDE3NTpcdHtcbiAxNzY6XHRcdHN0cnVjdCBtdDc2X2RldiAqZGV2ID0gcGh5LVx1MDAzZWRldjtcbiAxNzc6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtXHUwMDNlZGV2LVx1MDAzZW9mX25vZGU7XG4gMTc4Olx0XHRpbnQgZXJyO1xuIDE3OTpcdFxuIDE4MDpcdFx0ZXJyID0gb2ZfZ2V0X21hY19hZGRyZXNzKG5wLCBwaHktXHUwMDNlbWFjYWRkcik7XG4gMTgxOlx0XHRpZiAoZXJyID09IC1FUFJPQkVfREVGRVIpXG4gMTgyOlx0XHRcdHJldHVybiBlcnI7XG4gMTgzOlx0XG4gMTg0Olx0XHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocGh5LVx1MDAzZW1hY2FkZHIpKSB7XG4gMTg1Olx0XHRcdGV0aF9yYW5kb21fYWRkcihwaHktXHUwMDNlbWFjYWRkcik7XG4gMTg2Olx0XHRcdGRldl9pbmZvKGRldi1cdTAwM2VkZXYsXG4gMTg3Olx0XHRcdFx0IFwmIzM0O0ludmFsaWQgTUFDIGFkZHJlc3MsIHVzaW5nIHJhbmRvbSBhZGRyZXNzICVwTVxcblwmIzM0OyxcbiAxODg6XHRcdFx0XHQgcGh5LVx1MDAzZW1hY2FkZHIpO1xuIDE4OTpcdFx0fVxuIDE5MDpcdFxuIDE5MTpcdFx0cmV0dXJuIDA7XG4gMTkyOlx0fVxuIDE5MzpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfZWVwcm9tX292ZXJyaWRlKTtcbiAxOTQ6XHRcbiAxOTU6XHRzdGF0aWMgYm9vbCBtdDc2X3N0cmluZ19wcm9wX2ZpbmQoc3RydWN0IHByb3BlcnR5ICpwcm9wLCBjb25zdCBjaGFyICpzdHIpXG4gMTk2Olx0e1xuIDE5NzpcdFx0Y29uc3QgY2hhciAqY3AgPSBOVUxMO1xuIDE5ODpcdFxuIDE5OTpcdFx0aWYgKCFwcm9wIHx8ICFzdHIgfHwgIXN0clswXSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzI1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWVkaWF0ZWsgTVQ3NiBXaXJlbGVzcyBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIE1lZGlhdGVrIE1UNzYgd2lyZWxlc3MgZGV2aWNlcy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcz8gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4gVGhlIHRhcmdldCBzZWVtcyB0byBiZSBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLiBJcyB0aGlzIGEgVVNCIGRyaXZlcj8gS25vd2luZyB0aGF0IHdpbGwgaW5mbHVlbmNlIG15IGFwcHJvYWNoIHRvIHBvdGVudGlhbCBmdXp6aW5nIHN0cmF0ZWdpZXMsIHNvIHRoYXQmIzM5O3MgdGhlIG5leHQgdGhpbmcgSSBuZWVkIHRvIGNvbmZpcm0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2FnZy1yeC5jJiMzNDssCiAgICAmIzM0O2NoYW5uZWwuYyYjMzQ7LAogICAgJiMzNDtkZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7ZG1hLmMmIzM0OywKICAgICYjMzQ7ZG1hLmgmIzM0OywKICAgICYjMzQ7ZWVwcm9tLmMmIzM0OywKICAgICYjMzQ7bWFjODAyMTEuYyYjMzQ7LAogICAgJiMzNDttY3UuYyYjMzQ7LAogICAgJiMzNDttbWlvLmMmIzM0OywKICAgICYjMzQ7bXQ3Ni5oJiMzNDssCiAgICAmIzM0O210NzZfY29ubmFjLmgmIzM0OywKICAgICYjMzQ7bXQ3Nl9jb25uYWMyX21hYy5oJiMzNDssCiAgICAmIzM0O210NzZfY29ubmFjM19tYWMuYyYjMzQ7LAogICAgJiMzNDttdDc2X2Nvbm5hYzNfbWFjLmgmIzM0OywKICAgICYjMzQ7bXQ3Nl9jb25uYWNfbWFjLmMmIzM0OywKICAgICYjMzQ7bXQ3Nl9jb25uYWNfbWN1LmMmIzM0OywKICAgICYjMzQ7bXQ3Nl9jb25uYWNfbWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3NngwMi5oJiMzNDssCiAgICAmIzM0O210NzZ4MDJfYmVhY29uLmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9kZWJ1Z2ZzLmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9kZnMuYyYjMzQ7LAogICAgJiMzNDttdDc2eDAyX2Rmcy5oJiMzNDssCiAgICAmIzM0O210NzZ4MDJfZG1hLmgmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9lZXByb20uYyYjMzQ7LAogICAgJiMzNDttdDc2eDAyX2VlcHJvbS5oJiMzNDssCiAgICAmIzM0O210NzZ4MDJfbWFjLmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9tYWMuaCYjMzQ7LAogICAgJiMzNDttdDc2eDAyX21jdS5jJiMzNDssCiAgICAmIzM0O210NzZ4MDJfbWN1LmgmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9tbWlvLmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl9waHkuYyYjMzQ7LAogICAgJiMzNDttdDc2eDAyX3BoeS5oJiMzNDssCiAgICAmIzM0O210NzZ4MDJfcmVncy5oJiMzNDssCiAgICAmIzM0O210NzZ4MDJfdHJhY2UuYyYjMzQ7LAogICAgJiMzNDttdDc2eDAyX3RyYWNlLmgmIzM0OywKICAgICYjMzQ7bXQ3NngwMl90eHJ4LmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl91c2IuaCYjMzQ7LAogICAgJiMzNDttdDc2eDAyX3VzYl9jb3JlLmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl91c2JfbWN1LmMmIzM0OywKICAgICYjMzQ7bXQ3NngwMl91dGlsLmMmIzM0OywKICAgICYjMzQ7bXQ3OTJ4LmgmIzM0OywKICAgICYjMzQ7bXQ3OTJ4X2FjcGlfc2FyLmMmIzM0OywKICAgICYjMzQ7bXQ3OTJ4X2FjcGlfc2FyLmgmIzM0OywKICAgICYjMzQ7bXQ3OTJ4X2NvcmUuYyYjMzQ7LAogICAgJiMzNDttdDc5MnhfZGVidWdmcy5jJiMzNDssCiAgICAmIzM0O210NzkyeF9kbWEuYyYjMzQ7LAogICAgJiMzNDttdDc5MnhfbWFjLmMmIzM0OywKICAgICYjMzQ7bXQ3OTJ4X3JlZ3MuaCYjMzQ7LAogICAgJiMzNDttdDc5MnhfdHJhY2UuYyYjMzQ7LAogICAgJiMzNDttdDc5MnhfdHJhY2UuaCYjMzQ7LAogICAgJiMzNDttdDc5MnhfdXNiLmMmIzM0OywKICAgICYjMzQ7bnB1LmMmIzM0OywKICAgICYjMzQ7cGNpLmMmIzM0OywKICAgICYjMzQ7c2Nhbi5jJiMzNDssCiAgICAmIzM0O3NkaW8uYyYjMzQ7LAogICAgJiMzNDtzZGlvLmgmIzM0OywKICAgICYjMzQ7c2Rpb190eHJ4LmMmIzM0OywKICAgICYjMzQ7dGVzdG1vZGUuYyYjMzQ7LAogICAgJiMzNDt0ZXN0bW9kZS5oJiMzNDssCiAgICAmIzM0O3RyYWNlLmMmIzM0OywKICAgICYjMzQ7dHJhY2UuaCYjMzQ7LAogICAgJiMzNDt0eC5jJiMzNDssCiAgICAmIzM0O3VzYi5jJiMzNDssCiAgICAmIzM0O3VzYl90cmFjZS5jJiMzNDssCiAgICAmIzM0O3VzYl90cmFjZS5oJiMzNDssCiAgICAmIzM0O3V0aWwuYyYjMzQ7LAogICAgJiMzNDt1dGlsLmgmIzM0OywKICAgICYjMzQ7d2VkLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7bXQ3NjAzJiMzNDssCiAgICAmIzM0O210NzYxNSYjMzQ7LAogICAgJiMzNDttdDc2eDAmIzM0OywKICAgICYjMzQ7bXQ3NngyJiMzNDssCiAgICAmIzM0O210NzkxNSYjMzQ7LAogICAgJiMzNDttdDc5MjEmIzM0OywKICAgICYjMzQ7bXQ3OTI1JiMzNDssCiAgICAmIzM0O210Nzk5NiYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM2NgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVTQiBEcml2ZXIgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIHBvdGVudGlhbCBVU0IgZHJpdmVyIGxhbmRzY2FwZSB3aXRoaW4gdGhpcyBjb2RlYmFzZS4gU2VlbXMgbGlrZSB3ZSYjMzk7dmUgZ290IGEgZmV3IGtleSBwbGF5ZXJzOiBgdXNiLmNgLCBgbXQ3NngwMl91c2JfY29yZS5jYCwgYW5kIGBtdDc5MnhfdXNiLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0JiMzOTtzIHNlZSBob3cgdGhlIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgZnVuY3Rpb24gZml0cyBpbnRvIHRoaXMgVVNCIHBpY3R1cmUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSByZWFjaGFibGUgZnJvbSBhbnkgb2YgdGhlc2UgVVNCLXJlbGF0ZWQgZmlsZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGVlcHJvbSBvdmVycmlkZSBwYXRoIGlzIGNydWNpYWwgZm9yIFsqKmluc2VydCB5b3VyIHNwZWNpZmljIGV4cGVydCByZWFzb24gaGVyZSwgZS5nLiwgZGVidWdnaW5nIGEgc3BlY2lmaWMgaXNzdWUsIGN1c3RvbWl6aW5nIGNvbmZpZ3VyYXRpb24sIGV4cGxvcmluZyBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIHVuZGVyc3RhbmRpbmcgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrKipdLiBUaGlzIGlzIG15IHN0YXJ0aW5nIHBvaW50IGZvciBhIGRlZXBlciBkaXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2X2VlcHJvbV9vdmVycmlkZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYz0xNzM9aW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE3NDptdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE5Mi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE5MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X2VlcHJvbV9vdmVycmlkZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzQxPWludCBtdDc2X2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oOjEzNDI6aW50IG10NzZfZWVwcm9tX292ZXJyaWRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTEzNDMtaW50IG10NzZfZ2V0X29mX2RhdGFfZnJvbV9tdGQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHZvaWQgKmVlcCwgaW50IG9mZnNldCwgaW50IGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM9MTU2PWludCBtdDc2MDNfZWVwcm9tX2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYzoxODY6XHRyZXR1cm4gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXHUwMDI2ZGV2LVx1MDAzZW1waHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmMtMTg3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYz0zMzM9aW50IG10NzYxNV9lZXByb21faW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2LCB1MzIgYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0zNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYzozNTQ6XHRyZXR1cm4gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXHUwMDI2ZGV2LVx1MDAzZW1waHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmMtMzU1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM9NTI3PWludCBtdDc2MTVfcmVnaXN0ZXJfZXh0X3BoeShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy01NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6NTczOlx0cmV0ID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUobXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNTc0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYz0zMTI9aW50IG10NzZ4MF9lZXByb21faW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYy0zMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYzozMzY6XHRlcnIgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYy0zMzctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jPTQ5Mj1pbnQgbXQ3NngyX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jLTUwMS1cdG10NzZ4Ml9lZXByb21fZ2V0X21hY2FkZHIoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jOjUwMjpcdHJldCA9IG10NzZfZWVwcm9tX292ZXJyaWRlKFx1MDAyNmRldi1cdTAwM2VtcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jLTUwMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmM9MjY3PWludCBtdDc5MTVfZWVwcm9tX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYy0yODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYzoyODc6XHRyZXR1cm4gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXHUwMDI2ZGV2LVx1MDAzZW1waHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmMtMjg4LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9NjkyPW10NzkxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTcxMS1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo3MTI6XHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03MTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz04ND1zdGF0aWMgaW50IF9fbXQ3OTIxX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6OTY6XHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0xMDA9c3RhdGljIGludCBfX210NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMDg6XHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTA5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYz0zMzM9aW50IG10Nzk5Nl9lZXByb21faW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jLTM0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jOjM0NzpcdHJldHVybiBtdDc2X2VlcHJvbV9vdmVycmlkZShcdTAwMjZkZXYtXHUwMDNlbXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz02ODI9c3RhdGljIGludCBtdDc5OTZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIGVudW0gbXQ3Nl9iYW5kX2lkIGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTcyOC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3Mjk6XHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy03MzAtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Nzg1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGUgc25pcHBldDoKCioqRGl2aW5nIGludG8gdGhlIGBtdDc2eDBfZWVwcm9tX2luaXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgY2FsbCBpcyBjb21pbmcgZnJvbSBgbXQ3NngwX2VlcHJvbV9pbml0YC4gVGhlIG5hbWUgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhhdCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGluaXRpYWxpemluZyB0aGUgRUVQUk9NIGZvciB0aGUgTVQ3NngwIGNoaXBzZXQuIEdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGVzZSBzb3J0cyBvZiBlbWJlZGRlZCBzeXN0ZW1zLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkcmlsbCBkb3duIG9uIHRoZSBgbXQ3NngwYCBwYXJ0LiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHRhcmdldC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgbGFyZ2VyIGBtdDc2eDBgIGNvbnRleHQgaXMsIHNwZWNpZmljYWxseSB3aGF0IHRoZSBgbXQ3NngwYCBtb2R1bGUgb3IgZHJpdmVyIGFjdHVhbGx5ICppcyouIElzIGl0IGEgZ2VuZXJpYyBhYnN0cmFjdGlvbiBsYXllciwgYSBzcGVjaWZpYyBkZXZpY2UgZHJpdmVyLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIG5hbWUgaXRzZWxmIGdpdmVzIGNsdWVzLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgc29saWRpZnkgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBFRVBST00gaW5pdGlhbGl6YXRpb24gZml0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwX2VlcHJvbV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYz0yOTM9c3RhdGljIGludCBtdDc2eDBfbG9hZF9lZXByb20oc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmMtMzExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmM6MzEyOmludCBtdDc2eDBfZWVwcm9tX2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYy0zMTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oPTEzPXN0cnVjdCBtdDc2eDAyX2Rldjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uaC0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oOjE4OmludCBtdDc2eDBfZWVwcm9tX2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmgtMTktdm9pZCBtdDc2eDBfcmVhZF9yeF9nYWluKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmM9MTcxPWludCBtdDc2eDBfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmMtMjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvaW5pdC5jOjIwNTpcdHJldCA9IG10NzZ4MF9lZXByb21faW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvaW5pdC5jLTIwNi1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1NjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHRob3VnaCBJIHdlcmUgYW4gZXhwZXJ0IGFuYWx5emluZyBgbXQ3NngwX2luaXRfaGFyZHdhcmVgOgoKKipEaXZpbmcgaW50byB0aGUgSGVhcnQgb2YgdGhlIE1UNzZ4MCBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFdlJiMzOTtyZSBsb29raW5nIGF0IGBtdDc2eDBfaW5pdF9oYXJkd2FyZWAuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljICpyZWFsbHkqIGhhcHBlbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaW50aW1hdGVseS4gV2hhdCBhcmUgdGhlIGtleSBzdGFnZXM/IFdoYXQgYXJlIHRoZSBjcnVjaWFsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGJlaW5nIHNldD8gSSBuZWVkIHRvIG1hcCBpdCBvdXQuCgpGaXJzdCwgSSBleHBlY3QgdG8gc2VlIHRoZSBoYXJkd2FyZSBicm91Z2h0IHVwIGZyb20gYSBsb3cgcG93ZXIgc3RhdGUuIFRoYXQgbGlrZWx5IGludm9sdmVzIHJlc2V0dGluZyB2YXJpb3VzIHBhcnRzIG9mIHRoZSBjaGlwc2V0LCBlbmFibGluZyBjbG9ja3MsIGFuZCBtYWtpbmcgc3VyZSB0aGUgYmFzaWMgc2lsaWNvbiBpcyByZXNwb25zaXZlLiBUaGVuLCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciByZWdpc3RlciBpbml0aWFsaXphdGlvbi4gQXJlIHRoZXkgdXNpbmcgYSBwcmUtZGVmaW5lZCB0YWJsZSwgb3IgYXJlIHRoZXkgY29tcHV0aW5nIHZhbHVlcyBvbiB0aGUgZmx5PyBFaXRoZXIgd2F5LCB0aGUgaW5pdGlhbCByZWdpc3RlciB3cml0ZXMgYXJlIGNyaXRpY2FsIGZvciBkZWZpbmluZyB0aGUgYmFzaWMgb3BlcmF0aW5nIHBhcmFtZXRlcnM6IGNsb2NrIGZyZXF1ZW5jaWVzLCBpbnRlcnJ1cHQgc2V0dGluZ3MsIGFuZCBETUEgY2hhbm5lbCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHJlZ2lzdGVyIG9mZnNldHMgYmVpbmcgd3JpdHRlbiB0byBhbmQgdGhlIHZhbHVlIHRoZSBkZXZlbG9wZXJzIGNob3NlLgoKVGhlbiBjb21lcyB0aGUgZmlybXdhcmUgbG9hZGluZy4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcC4gSG93IGlzIHRoZSBmaXJtd2FyZSBsb2FkZWQ/IElzIGl0IHZpYSBhIGJvb3Rsb2FkZXIgb3IgZGlyZWN0bHkgYnkgdGhlIGRyaXZlcj8gSXMgaXQgZnJvbSBmbGFzaCBvciBhbiBleHRlcm5hbCBzb3VyY2U/IEkmIzM5O2xsIG5lZWQgdG8gZGlzc2VjdCB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgdHJhbnNmZXJzIHRoZSBmaXJtd2FyZSBpbWFnZSB0byB0aGUgZGV2aWNlLiBBbnkgdmVyaWZpY2F0aW9uIHN0ZXBzPyBFcnJvciBjaGVja2luZz8gU2VjdXJpdHkgY29uc2lkZXJhdGlvbnM/IFRoZXNlIGFyZSBpbXBvcnRhbnQuCgpOZXh0LCBJIGFudGljaXBhdGUgc2VlaW5nIHRoZSBjb25maWd1cmF0aW9uIG9mIHZhcmlvdXMgaGFyZHdhcmUgYmxvY2tzIGxpa2UgdGhlIE1BQywgUEhZLCBhbmQgcmFkaW8uIFRoaXMgaXMgd2hlcmUgdGhlIGRyaXZlciB0YWlsb3JzIHRoZSBoYXJkd2FyZSB0byB0aGUgc3BlY2lmaWNzIG9mIHRoZSB3aXJlbGVzcyBzdGFuZGFyZCBiZWluZyB1c2VkICg4MDIuMTFhL2IvZy9uL2FjKSBhbmQgdGhlIHBhcnRpY3VsYXIgTVQ3NngwIHZhcmlhbnQuIEFyZSB0aGV5IHNldHRpbmcgc3BlY2lmaWMgcG93ZXIgbGV2ZWxzLCBjaGFubmVsIGZyZXF1ZW5jaWVzLCBvciBtb2R1bGF0aW9uIHNjaGVtZXM/IEFyZSB0aGVyZSBhbnkgdmVuZG9yLXNwZWNpZmljIHNldHRpbmdzPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgZnVuZGFtZW50YWwgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0aGF0IGRlZmluZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGRldmljZS4KCkZpbmFsbHksIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGVuYWJsZXMgaW50ZXJydXB0cyBhbmQgc3RhcnRzIHRoZSBkYXRhIHBhdGguIFdoYXQgaXMgdGhlIGludGVycnVwdCBzdHJ1Y3R1cmU/IFdoYXQgYXJlIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMgZG9pbmc/IEFyZSB0aGV5IERNQS1iYXNlZCBvciBDUFUtaW50ZW5zaXZlPyBIb3cgaXMgdGhlIGRyaXZlciBwcmVwYXJpbmcgdGhlIGhhcmR3YXJlIHRvIHJlY2VpdmUgYW5kIHRyYW5zbWl0IHBhY2tldHM/IEFyZSB0aGVyZSBhbnkgaW5pdGlhbGl6YXRpb24gc3RlcHMgdGhhdCBwcmVwYXJlIHRoZSByYWRpbyBmb3IgcHJvcGVyIG9wZXJhdGlvbj8gV2hhdCBpcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UgdG8gZ2V0IHRoZSBkcml2ZXIgb3BlcmF0aW5nIGFmdGVyIHRoZSBpbml0IGZ1bmN0aW9uIGlzIGNvbXBsZXRlZC4KCkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gZGVjb25zdHJ1Y3QgdGhpcyBmdW5jdGlvbiBwaWVjZSBieSBwaWVjZSwgdHJhY2UgdGhlIHJlZ2lzdGVyIHdyaXRlcywgYW5kIHVuZGVyc3RhbmQgaG93IGVhY2ggc2V0dGluZyBjb250cmlidXRlcyB0byB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBmbG93LiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaXMgZGVmaW5lZCBhbmQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIG1hZGUgb3BlcmF0aW9uYWwuIFRoaXMgaW5pdGlhbCBwaGFzZSBpcyB3aGVyZSB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGRldmljZSBpcyBtYWRlIG9yIGJyb2tlbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZXkmIzM5O3ZlIGRvbmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwX2luaXRfaGFyZHdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYz0xNjk9RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwX21hY19zdG9wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0xNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmM6MTcxOmludCBtdDc2eDBfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0xNzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0yMTItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvaW5pdC5jOjIxMzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2eDBfaW5pdF9oYXJkd2FyZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmMtMjE0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oPTM5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc2MzAoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtNDQtLyogSW5pdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmg6NDU6aW50IG10NzZ4MF9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oLTQ2LWludCBtdDc2eDBfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYz05NT1zdGF0aWMgaW50IG10NzZ4MGVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXN1bWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM6MTE0Olx0ZXJyID0gbXQ3NngwX2luaXRfaGFyZHdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jLTExNS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MTUxPXN0YXRpYyBpbnQgbXQ3NngwdV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE2NC1cdG10NzZ4MF9pbml0X3VzYl9kbWEoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE2NTpcdGVyciA9IG10NzZ4MF9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNjYtXHRpZiAoZXJyIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDEyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBVU0IgSW5pdGlhbGl6YXRpb24gUm91dGluZSoqCgpBbHJpZ2h0LCBzbyBgbXQ3NngwdV9pbml0X2hhcmR3YXJlYCBpcyBzaXR0aW5nIHJpZ2h0IHRoZXJlIGluIGB1c2IuY2AuIFRoYXTigJlzIGdvb2QsIHRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCBodW5jaCBhYm91dCBpdHMgbG9jYXRpb24uIE5vdyB0aGUgcXVlc3Rpb24gaXMsICp3aGVyZSogYW5kICp3aGVuKiBkb2VzIHRoaXMgZnVuY3Rpb24gZ2V0IGNhbGxlZD8gTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGBtdDc2eDB1X2luaXRfaGFyZHdhcmVgIGlzIGluZGVlZCBwYXJ0IG9mIHRoZSBwcm9iZSBzZXF1ZW5jZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyB0byBzZWUgaWYgaXTigJlzIGdldHRpbmcgaW52b2tlZCBkdXJpbmcgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbi4gSSYjMzk7bGwgZXhwZWN0IHRvIHNlZSBpdCBjYWxsZWQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBmcm9tIHRoZSBVU0IgZGV2aWNlIHByb2JlIGZ1bmN0aW9uLiBJZiBpdOKAmXMgbm90LCB0aGVuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY2FsbCBjaGFpbiBhbmQgdW5kZXJzdGFuZCB0aGUgdGltaW5nIG9mIHRoZXNlIGluaXRpYWxpemF0aW9uIHN0ZXBzIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgZHJpdmVyIGFuZCB0aGUgVVNCIHN1YnN5c3RlbS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIHNlcXVlbmNlIHRoYXQga2lja3Mgb2ZmIHRoZSBoYXJkd2FyZSBicmluZ3VwLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIHByb2JlIGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc2eDB1X2luaXRfaGFyZHdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3NngwdV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTUxOnN0YXRpYyBpbnQgbXQ3NngwdV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0xNzk9c3RhdGljIGludCBtdDc2eDB1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxOTQ6XHRlcnIgPSBtdDc2eDB1X2luaXRfaGFyZHdhcmUoZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE5NS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MzIwPXN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXQ3NngwX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzI5Olx0cmV0ID0gbXQ3NngwdV9pbml0X2hhcmR3YXJlKGRldiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzMwLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgyMQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZToKCioqQW5hbHl6aW5nIHRoZSBtdDc2eDB1IERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIHRoaXMgYG10NzZ4MHVgIGRyaXZlci4gTXkgaW5pdGlhbCBodW5jaCwgYW5kIGl0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgaXMgdGhhdCBgbXQ3NngwdV9yZWdpc3Rlcl9kZXZpY2VgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCBraWNrcyB0aGluZ3Mgb2ZmLiBJdCBzZWVtcyBsb2dpY2FsLCBiYXNlZCBvbiBpdHMgbmFtZSwgdGhhdCBpdCB3b3VsZCBiZSB0aGUgb25lIHRvIG9yY2hlc3RyYXRlIHRoZSBpbml0aWFsIHNldHVwLiBUaGUgY29kZSYjMzk7cyBzdHJ1Y3R1cmUgZGVmaW5pdGVseSBzdXBwb3J0cyB0aGlzLgoKTm93LCB0aGUgaW1wb3J0YW50IHBhcnQgaXMga25vd2luZyB3aGVyZSB0aGF0IGZ1bmN0aW9uIGdldHMgY2FsbGVkIGZyb20uIEJhc2VkIG9uIG15IGV4cGVyaWVuY2Ugd2l0aCBVU0IgZHJpdmVycywgaXQmIzM5O3MgaGlnaGx5IGxpa2VseSB0aGF0IGBtdDc2eDB1X3JlZ2lzdGVyX2RldmljZWAgaXMgaW52b2tlZCBmcm9tIHdpdGhpbiB0aGUgVVNCIHByb2JlIGZ1bmN0aW9uLiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlIGluIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnM7IHRoZSBwcm9iZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZGV2aWNlIGRpc2NvdmVyeSBhbmQgaW5pdGlhbCBzZXR1cCB3aGVuIGEgZGV2aWNlIGlzIGNvbm5lY3RlZC4KClRvIGNvbmZpcm0gdGhpcyBhbmQgZ2FpbiBhIG1vcmUgY29uY3JldGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdywgSSBzaG91bGQgZGlnIGRlZXBlciBpbnRvIHRoZSBzb3VyY2UgY29kZSBhbmQgc3RhcnQgYnkgZXhhbWluaW5nIHRoZSBgbXQ3NngwdV9wcm9iZWAgZnVuY3Rpb24uIFRoYXTigJlzIG15IG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3NngwdV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MTc5PXN0YXRpYyBpbnQgbXQ3NngwdV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjEzOnN0YXRpYyBpbnQgbXQ3NngwdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0zNDU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzZ4MF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzQ3LVx0LmlkX3RhYmxlXHQ9IG10NzZ4MF9kZXZpY2VfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzozNDg6XHQucHJvYmVcdFx0PSBtdDc2eDB1X3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzQ5LVx0LmRpc2Nvbm5lY3RcdD0gbXQ3NngwX2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTI4CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMzM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMqKgoKT2theSwgc28gdGhpcyBjb2RlIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBVU0IgcHJvYmUsIHdoaWNoIGltbWVkaWF0ZWx5IHNwYXJrcyBteSBpbnRlcmVzdCBpbiBmdXp6aW5nIHBvdGVudGlhbC4gVGhlIGNvcmUgY2hhbmdlIGhlcmUgaXMgYSBjaGVjayBmb3IgYSB2YWxpZCBNQUMgYWRkcmVzcyAoYGlzX3ZhbGlkX2V0aGVyX2FkZHJgKSBpbnN0ZWFkIG9mIHNpbXBseSBjaGVja2luZyBhbiBlcnJvciBjb2RlIChgZXJyYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb247IGl0JiMzOTtzIG5vdCBhIHRyaXZpYWwgY2hhbmdlLgoKYGVycmAgY29tZXMgZnJvbSBgb2ZfZ2V0X21hY19hZGRyZXNzKG5wLCBwaHktJmd0O21hY2FkZHIpYC4gTm93LCBpZiBgZXJyYCBpcyB6ZXJvLCBidXQgdGhlIE1BQyBhZGRyZXNzIHR1cm5zIG91dCB0byBiZSBpbnZhbGlkLCB0aGlzIHdpbGwgdHJpZ2dlciB0aGUgcmFuZG9tIE1BQyBhZGRyZXNzIGdlbmVyYXRpb24uIEZvciBVU0IsIGhvd2V2ZXIsIEkgc3VzcGVjdCBgbnBgIGlzIE5VTEwuIExldCBtZSBkb3VibGUtY2hlY2sgYG9mX2dldF9tYWNfYWRkcmVzc2AuIFllcCwgaXQgcmV0dXJucyBhbiBlcnJvciB3aGVuIGBucGAgaXMgbnVsbC4gU28sIGluIHRoZSBVU0IgY2FzZSwgYGVycmAgd2lsbCBiZSBub24temVyby4KCkluaXRpYWxseSwgYmVmb3JlIHRoZSBwYXRjaCwgYSBub24temVybyBgZXJyYCB3b3VsZCBnZW5lcmF0ZSBhIHJhbmRvbSBNQUMgYWRkcmVzcywgYW5kIG5vdyBpdCBzdGlsbCB3aWxsLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogd2hhdCBpZiBgZXJyYCBpcyBub24temVybywgYnV0IGBwaHktJmd0O21hY2FkZHJgICphbHJlYWR5KiBob2xkcyBhIHZhbGlkIE1BQyBhZGRyZXNzPyBUaGF0JiMzOTtzIHRoZSByZWFsIGFuZ2xlIGhlcmUuCgpBaCwgb2YgY291cnNlISBgcGh5LSZndDttYWNhZGRyYCBtaWdodCBoYXZlIGJlZW4gcG9wdWxhdGVkIGVhcmxpZXIsIGJ5IGBtdDc2eDBfZWVwcm9tX2luaXRgLCBiZWZvcmUgY2FsbGluZyBgbXQ3Nl9lZXByb21fb3ZlcnJpZGVgLiBJIG5lZWQgdG8gcmV2aWV3IGBtdDc2eDBfZWVwcm9tX2luaXRgIHRvIGNvbmZpcm0gbXkgc3VzcGljaW9uLiBUaGlzIGlzIHdoZXJlIHRoZSBwb3RlbnRpYWwgZm9yIGludGVyZXN0aW5nIGZ1enppbmcgYW5nbGVzIGVtZXJnZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMxMDpcdH1cbiAzMTE6XHRcbiAzMTI6XHRpbnQgbXQ3NngwX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuIDMxMzpcdHtcbiAzMTQ6XHRcdHU4IHZlcnNpb24sIGZhZTtcbiAzMTU6XHRcdHUxNiBkYXRhO1xuIDMxNjpcdFx0aW50IGVycjtcbiAzMTc6XHRcbiAzMTg6XHRcdGVyciA9IG10NzZ4MF9sb2FkX2VlcHJvbShkZXYpO1xuIDMxOTpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiAzMjA6XHRcdFx0cmV0dXJuIGVycjtcbiAzMjE6XHRcbiAzMjI6XHRcdGRhdGEgPSBtdDc2eDAyX2VlcHJvbV9nZXQoZGV2LCBNVF9FRV9WRVJTSU9OKTtcbiAzMjM6XHRcdHZlcnNpb24gPSBkYXRhIFx1MDAzZVx1MDAzZSA4O1xuIDMyNDpcdFx0ZmFlID0gZGF0YTtcbiAzMjU6XHRcbiAzMjY6XHRcdGlmICh2ZXJzaW9uIFx1MDAzZSBNVDc2WDBVX0VFX01BWF9WRVIpXG4gMzI3Olx0XHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldixcbiAzMjg6XHRcdFx0XHQgXCYjMzQ7V2FybmluZzogdW5zdXBwb3J0ZWQgRUVQUk9NIHZlcnNpb24gJTAyaGh4XFxuXCYjMzQ7LFxuIDMyOTpcdFx0XHRcdCB2ZXJzaW9uKTtcbiAzMzA6XHRcdGRldl9pbmZvKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7RUVQUk9NIHZlcjolMDJoaHggZmFlOiUwMmhoeFxcblwmIzM0OyxcbiAzMzE6XHRcdFx0IHZlcnNpb24sIGZhZSk7XG4gMzMyOlx0XG4gMzMzOlx0XHRtZW1jcHkoZGV2LVx1MDAzZW1waHkubWFjYWRkciwgKHU4ICopZGV2LVx1MDAzZW10NzYuZWVwcm9tLmRhdGEgJiM0MzsgTVRfRUVfTUFDX0FERFIsXG4gMzM0Olx0XHQgICAgICAgRVRIX0FMRU4pO1xuIDMzNTpcdFxuIDMzNjpcdFx0ZXJyID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXHUwMDI2ZGV2LVx1MDAzZW1waHkpO1xuIDMzNzpcdFx0aWYgKGVycilcbiAzMzg6XHRcdFx0cmV0dXJuIGVycjtcbiAzMzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE3MTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNVDc2IFVTQiBEcml2ZXIgTUFDIEFkZHJlc3MgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBgbXQ3NngwX2VlcHJvbV9pbml0YCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgY3J1Y2lhbCBmb3IgdGhlIGNvcnJlY3QgTUFDIGFkZHJlc3MgY29uZmlndXJhdGlvbi4gIEVzc2VudGlhbGx5LCBpdCBjb3BpZXMgdGhlIE1BQyBhZGRyZXNzIHJlYWQgZnJvbSB0aGUgRUVQUk9NIGludG8gYGRldi0mZ3Q7bXBoeS5tYWNhZGRyYCwgd2hpY2ggaXMgZ3JlYXQuIFRoZW4sIGl0IGNhbGxzIGBtdDc2X2VlcHJvbV9vdmVycmlkZSgmYW1wO2Rldi0mZ3Q7bXBoeSlgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBwYXJ0IGJlZ2lucy4KCkxvb2tpbmcgYXQgdGhlIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgZnVuY3Rpb24sIHRoZSBjb2RlIHNuaXBwZXQgcmV2ZWFscyB0aGUgZml4OiBpdCB0cmllcyB0byBnZXQgYSBNQUMgYWRkcmVzcyBmcm9tIHRoZSBkZXZpY2UgdHJlZSB1c2luZyBgb2ZfZ2V0X21hY19hZGRyZXNzYCwgYnV0ICpvbmx5KiBpZiB0aGUgTUFDIGFkZHJlc3MgaW4gdGhlIEVFUFJPTSBpc24mIzM5O3QgdmFsaWQuIEJlZm9yZSB0aGUgcGF0Y2gsIHRoZSBjb2RlIHdvdWxkIHNpbXBseSBhc3NpZ24gYSAqcmFuZG9tKiBNQUMgYWRkcmVzcyBpZiBgb2ZfZ2V0X21hY19hZGRyZXNzYCByZXR1cm5lZCBhbiBlcnJvci4gRm9yIFVTQiBkZXZpY2VzLCB0aGUgYG5wYCBwb2ludGVyIGlzIG51bGwsIGFuZCBgb2ZfZ2V0X21hY19hZGRyZXNzYCBhbHdheXMgdGhyb3dzIGFuIGVycm9yIChlLmcuIC1FTk9ERVYpIGJlY2F1c2UgdGhlcmUmIzM5O3Mgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhlcmVmb3JlLCB0aGUgcHJlLXBhdGNoIGNvZGUgd2FzIG92ZXJ3cml0aW5nIHRoZSBFRVBST00gTUFDIGFkZHJlc3Mgd2l0aCBhIHJhbmRvbSBvbmUgZXZlcnkgc2luZ2xlIHRpbWUgZm9yIFVTQiBkZXZpY2VzIOKAkyBhIGh1Z2UgZnVuY3Rpb25hbCBidWchIFRoZSBwYXRjaCBjb3JyZWN0cyB0aGlzIGJ5IGtlZXBpbmcgdGhlIEVFUFJPTSBNQUMgYWRkcmVzcywgaWYgaXQmIzM5O3MgdmFsaWQsIGZvciBVU0IgZGV2aWNlcy4gRXhjZWxsZW50IGZpeC4KCk5vdywgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoaXMgbG9va3MgcHJvbWlzaW5nLiBXZSBjYW4gdXNlIHN5emthbGxlciYjMzk7cyBgc3l6X3VzYl9jb25uZWN0YCBjYWxsLCB3aGljaCBzdXBwb3J0cyBmdXp6aW5nIFVTQiBkZXZpY2VzLiBUaGUgdGFyZ2V0IGRyaXZlciBpcyBgbXQ3NngwdWAgKGFuZCBvdGhlciBNVDc2IFVTQiBkcml2ZXJzKSBhbmQgd2UgY2FuIHNwZWNpZmljYWxseSB0YXJnZXQgYG10NzZfZWVwcm9tX292ZXJyaWRlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggS2NvbmZpZyBvcHRpb24gdG8gZW5hYmxlIGZvciBgbXQ3NngwdWAsIGJ1dCBvdmVyYWxsLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggcHVyc3VpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZ4MHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19NVDc2eDBVKSAmIzQzOz0gbXQ3NngwdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9NYWtlZmlsZS0zLW9iai0kKENPTkZJR19NVDc2eDBFKSAmIzQzOz0gbXQ3NngwZS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGU9Nj1tdDc2eDAtY29tbW9uLXkgOj0gaW5pdC5vIG1haW4ubyBlZXByb20ubyBwaHkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL01ha2VmaWxlOjg6bXQ3NngwdS15IDo9IHVzYi5vIHVzYl9tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtOS1tdDc2eDBlLXkgOj0gcGNpLm8gcGNpX21jdS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1Lmg9Mzk9aW50IG10NzZ4MGVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1Lmg6NDA6aW50IG10NzZ4MHVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1LmgtNDEtc3RhdGljIGlubGluZSBpbnQgbXQ3NngwX2Zpcm13YXJlX3J1bm5pbmcoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9NDY9c3RhdGljIHZvaWQgbXQ3NngwX2luaXRfdXNiX2RtYShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy03Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjczOnN0YXRpYyB2b2lkIG10NzZ4MHVfY2xlYW51cChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTc0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy03OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjgwOnN0YXRpYyB2b2lkIG10NzZ4MHVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTEwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjEwMjpzdGF0aWMgaW50IG10NzZ4MHVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTExOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjEyMDpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3NngwdV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMjEtXHQuYWRkX2NoYW5jdHggPSBpZWVlODAyMTFfZW11bGF0ZV9hZGRfY2hhbmN0eCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMjUtXHQudHggPSBtdDc2eDAyX3R4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTI2Olx0LnN0YXJ0ID0gbXQ3NngwdV9zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjEyNzpcdC5zdG9wID0gbXQ3NngwdV9zdG9wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTI4LVx0LmFkZF9pbnRlcmZhY2UgPSBtdDc2eDAyX2FkZF9pbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTUxOnN0YXRpYyBpbnQgbXQ3NngwdV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxNjA6XHRlcnIgPSBtdDc2eDB1X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNjEtXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE3OTpzdGF0aWMgaW50IG10NzZ4MHVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTgwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxOTQ6XHRlcnIgPSBtdDc2eDB1X2luaXRfaGFyZHdhcmUoZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE5NS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjA4LW91dF9lcnI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMDk6XHRtdDc2eDB1X2NsZWFudXAoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIxMC1cdHJldHVybiBlcnI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MjEzOnN0YXRpYyBpbnQgbXQ3NngwdV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMzY6XHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBzaXplb2YoKmRldiksIFx1MDAyNm10NzZ4MHVfb3BzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMjM3LVx0XHRcdFx0IFx1MDAyNmRydl9vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjI3ODpcdHJldCA9IG10NzZ4MHVfcmVnaXN0ZXJfZGV2aWNlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yNzktXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTI5Mj1zdGF0aWMgdm9pZCBtdDc2eDBfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzAwLVx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGV2LVx1MDAzZW10NzYuaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzAxOlx0bXQ3NngwdV9jbGVhbnVwKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MzIwPXN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXQ3NngwX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzI5Olx0cmV0ID0gbXQ3NngwdV9pbml0X2hhcmR3YXJlKGRldiwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzMwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzQtZXJyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzM1Olx0bXQ3NngwdV9jbGVhbnVwKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzYtXHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTM0NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NngwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNDctXHQuaWRfdGFibGVcdD0gbXQ3NngwX2RldmljZV90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjM0ODpcdC5wcm9iZVx0XHQ9IG10NzZ4MHVfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNDktXHQuZGlzY29ubmVjdFx0PSBtdDc2eDBfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM9MTY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE3Om10NzZ4MHVfdXBsb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTE4LVx0XHRcdGNvbnN0IHN0cnVjdCBtdDc2eDAyX2Z3X2hlYWRlciAqaGRyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYz02Nz1zdGF0aWMgaW50IG10NzZ4MF9nZXRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjg1OnN0YXRpYyBpbnQgbXQ3NngwdV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE1MDpcdHJldCA9IG10NzZ4MHVfdXBsb2FkX2Zpcm13YXJlKGRldiwgaGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNTEtXHRtdDc2eDAyX3NldF9ldGh0b29sX2Z3dmVyKGRldiwgaGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE2NDppbnQgbXQ3NngwdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM6MTY4Olx0cmV0ID0gbXQ3NngwdV9sb2FkX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTY5LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU5MDEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqVHJvdWJsZXNob290aW5nIHRoZSBNVDc2eDBVIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQgaXMgYE1UNzZ4MFVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBiZWluZyBoYW5kbGVkIGluIHRoZSBkcml2ZXIgY29kZS4gUmlnaHQsIEkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBhbiBgbXQ3Nl9lZXByb21fb3ZlcnJpZGVgIGZ1bmN0aW9uLiBXaGVyZSB3YXMgdGhhdCBhZ2Fpbj8gQWgsIHllcywgaXQmIzM5O3MgYnVyaWVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jYC4gVGhhdCYjMzk7cyBwYXJ0IG9mIHRoZSBjb3JlIE1UNzYgbW9kdWxlLCB3aGljaCB3b3VsZCBsaWtlbHkgYmUgbmFtZWQgYG10NzYua29gIG9yIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgaG93IHRoYXQgcGFydGljdWxhciBmaWxlIGlzIGNvbXBpbGVkLCBJIHNob3VsZCBjaGVjayB0aGUgTWFrZWZpbGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZWAuIEkgbmVlZCB0byBzZWUgaG93IHRoYXQgb2JqZWN0IGZpbGUgaXMgbGlua2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRvYmotJChDT05GSUdfTVQ3Nl9DT1JFKSAmIzQzOz0gbXQ3Ni5vXG4gICAzOlx0b2JqLSQoQ09ORklHX01UNzZfVVNCKSAmIzQzOz0gbXQ3Ni11c2Iub1xuICAgNDpcdG9iai0kKENPTkZJR19NVDc2X1NESU8pICYjNDM7PSBtdDc2LXNkaW8ub1xuICAgNTpcdG9iai0kKENPTkZJR19NVDc2eDAyX0xJQikgJiM0Mzs9IG10NzZ4MDItbGliLm9cbiAgIDY6XHRvYmotJChDT05GSUdfTVQ3NngwMl9VU0IpICYjNDM7PSBtdDc2eDAyLXVzYi5vXG4gICA3Olx0b2JqLSQoQ09ORklHX01UNzZfQ09OTkFDX0xJQikgJiM0Mzs9IG10NzYtY29ubmFjLWxpYi5vXG4gICA4Olx0b2JqLSQoQ09ORklHX01UNzkyeF9MSUIpICYjNDM7PSBtdDc5MngtbGliLm9cbiAgIDk6XHRvYmotJChDT05GSUdfTVQ3OTJ4X1VTQikgJiM0Mzs9IG10NzkyeC11c2Iub1xuICAxMDpcdFxuICAxMTpcdG10NzYteSA6PSBcXFxuICAxMjpcdFx0bW1pby5vIHV0aWwubyB0cmFjZS5vIGRtYS5vIG1hYzgwMjExLm8gZGVidWdmcy5vIGVlcHJvbS5vIFxcXG4gIDEzOlx0XHR0eC5vIGFnZy1yeC5vIG1jdS5vIHdlZC5vIHNjYW4ubyBjaGFubmVsLm9cbiAgMTQ6XHRcbiAgMTU6XHRtdDc2LSQoQ09ORklHX01UNzZfTlBVKSAmIzQzOz0gbnB1Lm9cbiAgMTY6XHRtdDc2LSQoQ09ORklHX1BDSSkgJiM0Mzs9IHBjaS5vXG4gIDE3Olx0bXQ3Ni0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuICAxODpcdFxuICAxOTpcdG10NzYtdXNiLXkgOj0gdXNiLm8gdXNiX3RyYWNlLm9cbiAgMjA6XHRtdDc2LXNkaW8teSA6PSBzZGlvLm8gc2Rpb190eHJ4Lm9cbiAgMjE6XHRcbiAgMjI6XHRDRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxuICAyMzpcdENGTEFHU191c2JfdHJhY2UubyA6PSAtSSQoc3JjKVxuICAyNDpcdENGTEFHU19tdDc2eDAyX3RyYWNlLm8gOj0gLUkkKHNyYylcbiAgMjU6XHRDRkxBR1NfbXQ3OTJ4X3RyYWNlLm8gOj0gLUkkKHNyYylcbiAgMjY6XHRcbiAgMjc6XHRtdDc2eDAyLWxpYi15IDo9IG10NzZ4MDJfdXRpbC5vIG10NzZ4MDJfbWFjLm8gbXQ3NngwMl9tY3UubyBcXFxuICAyODpcdFx0XHQgbXQ3NngwMl9lZXByb20ubyBtdDc2eDAyX3BoeS5vIG10NzZ4MDJfbW1pby5vIFxcXG4gIDI5Olx0XHRcdCBtdDc2eDAyX3R4cngubyBtdDc2eDAyX3RyYWNlLm8gbXQ3NngwMl9kZWJ1Z2ZzLm8gXFxcbiAgMzA6XHRcdFx0IG10NzZ4MDJfZGZzLm8gbXQ3NngwMl9iZWFjb24ub1xuICAzMTpcdFxuICAzMjpcdG10NzZ4MDItdXNiLXkgOj0gbXQ3NngwMl91c2JfbWN1Lm8gbXQ3NngwMl91c2JfY29yZS5vXG4gIDMzOlx0XG4gIDM0Olx0bXQ3Ni1jb25uYWMtbGliLXkgOj0gbXQ3Nl9jb25uYWNfbWN1Lm8gbXQ3Nl9jb25uYWNfbWFjLm8gbXQ3Nl9jb25uYWMzX21hYy5vXG4gIDM1Olx0XG4gIDM2Olx0bXQ3OTJ4LWxpYi15IDo9IG10NzkyeF9jb3JlLm8gbXQ3OTJ4X21hYy5vIG10NzkyeF90cmFjZS5vIFxcXG4gIDM3Olx0XHRcdG10NzkyeF9kZWJ1Z2ZzLm8gbXQ3OTJ4X2RtYS5vXG4gIDM4Olx0bXQ3OTJ4LWxpYi0kKENPTkZJR19BQ1BJKSAmIzQzOz0gbXQ3OTJ4X2FjcGlfc2FyLm9cbiAgMzk6XHRtdDc5MngtdXNiLXkgOj0gbXQ3OTJ4X3VzYi5vXG4gIDQwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTg5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgTVQ3NiBVU0IgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBNVDc2X0NPUkVgIGNvbmZpZywgYW5kIGl0IGJ1aWxkcyBgbXQ3Ni5vYCwgd2hpY2ggaXMgc3RhbmRhcmQuIEJ1dCwgYW5kIGhlcmUmIzM5O3MgdGhlIHJ1YiwgdGhhdCBgZWVwcm9tLm9gIGNvbXBvbmVudCB3ZSBuZWVkPyBJdCYjMzk7cyBhbGwgd2VsbCBhbmQgZ29vZCB0byAqaGF2ZSogaXQgY29tcGlsZWQgaW4sIGJ1dCB3ZSBzdGlsbCBuZWVkIGEgd2F5IHRvIGdldCBhdCBpdCB3aGVuIGRlYWxpbmcgd2l0aCBhIFVTQiBjb25uZWN0aW9uLiBUaGF0IG1lYW5zIGEgVVNCIGRyaXZlciBpcyBjcml0aWNhbCB0byB0aGUgY2hhaW4uIGBNVDc2eDBVYCBpcyBvbmUgcG9zc2liaWxpdHkgSSBrbm93IG9mLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMsIGFyZSB0aGVyZSAqb3RoZXIqIFVTQiBkcml2ZXJzIHRoYXQgd2Ugc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGhpbmsuLi4gbGV0JiMzOTtzIHNlZS4gVGhlcmUmIzM5O3MgYE1UNzZ4MlVgLiBUaGVuLCB0aGVyZSBpcyB0aGUgYE1UNzkyMVVgIGRyaXZlciwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBgTVQ3OTI1VWAgZHJpdmVyLgoKSSB0aGluayBpdCYjMzk7cyB3b3J0aCB0YWtpbmcgYSBjbG9zZXIgbG9vayBhdCBgTVQ3OTIxVWAgaW4gdGhpcyBzY2VuYXJpbywgc28gSSYjMzk7bGwgc3RhcnQgdGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdCYjMzk7cyB0aGUgcmlnaHQgY2hvaWNlIGdpdmVuIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZz0xNz1jb25maWcgTVQ3OTIxU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI5Olx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMwLVx0c2VsZWN0IE1UNzkyeF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTM0LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzozNTpcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19NVDc5MjFTKSAmIzQzOz0gbXQ3OTIxcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19NVDc5MjFVKSAmIzQzOz0gbXQ3OTIxdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZS03LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTM1MT1tb2R1bGVfdXNiX2RyaXZlcihtdDc5MjF1X2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNTM6TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgd2lyZWxlc3MgZHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1NC1NT0RVTEVfQVVUSE9SKFwmIzM0O0xvcmVuem8gQmlhbmNvbmkgXHUwMDNjbG9yZW56b0BrZXJuZWwub3JnXHUwMDNlXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxNDgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBNVDc2eDJVIElucXVpcnkqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgcHJvbXB0IGlzIHNob3J0IGFuZCBzd2VldC4gTXkgaW1tZWRpYXRlIGludGVybmFsIHJlYWN0aW9uIGlzIHRvIHplcm8gaW4gb24gdGhhdCBzcGVjaWZpYyBjaGlwc2V0LCBgTVQ3NngyVWAuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBnZW5lcmljICYjMzQ7Y2hlY2smIzM0OyBjb21tYW5kLiBJdCBpbXBsaWVzIGEgZGVlcGVyIGRpdmUgaXMgcmVxdWlyZWQsIGxpa2VseSBkZW1hbmRpbmcgbXkgZXhwZXJ0IGtub3dsZWRnZS4gVGhlICYjMzQ7Y2hlY2smIzM0OyBzdWdnZXN0cyBhIHRhc2ssIGFuIGludmVzdGlnYXRpb24sIG9yIGFuIGV4YW1pbmF0aW9uIG9mIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoaXMgY2hpcHNldC4gQmFzZWQgb24gdGhlIGNvbnRleHQsIEkgd2lsbCBhc3N1bWUgaXQgaXMgcmVsYXRlZCB0byBhbiBpc3N1ZSBvciBhIHRyb3VibGVzaG9vdGluZyBzY2VuYXJpbyBhbmQgSSBzaG91bGQgYXNzZXNzIHRoZSBjb250ZXh0IGJlZm9yZSBkaXZpbmcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgcHJlY2lzZWx5IEkgYW0gdG8gYmUgY2hlY2tpbmcuIEFtIEkgYXNzZXNzaW5nIHRoZSBkcml2ZXIgc3VwcG9ydD8gSW52ZXN0aWdhdGluZyBwb3RlbnRpYWwgYnVncz8gQ2hlY2tpbmcgZm9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcz8gT3IgcGVyaGFwcyBldmFsdWF0aW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgaW4gYSBzcGVjaWZpYyBzY2VuYXJpbz8gVGhlIHBvc3NpYmlsaXRpZXMgYXJlIG51bWVyb3VzLCBhbmQgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gY2xhcmlmeSB0aGUgc2NvcGUuIFNvLCBsZXQmIzM5O3MgbG9vayBmb3IgY2x1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UNzZ4MlUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc9Nj1jb25maWcgTVQ3NngyRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWctMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE4OmNvbmZpZyBNVDc2eDJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE5Olx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngyVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTIwLVx0c2VsZWN0IE1UNzZ4Ml9DT01NT05cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9NYWtlZmlsZT0zPW9iai0kKENPTkZJR19NVDc2eDJFKSAmIzQzOz0gbXQ3NngyZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc2eDJVKSAmIzQzOz0gbXQ3NngydS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9NYWtlZmlsZS01LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaC01LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oOjY6I2lmbmRlZiBfX01UNzZ4MlVfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oOjc6I2RlZmluZSBfX01UNzZ4MlVfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oLTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oPTQwPWludCBtdDc2eDJ1X3NrYl9kbWFfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBlbnVtIGRtYV9tc2dfcG9ydCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaC00Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaDo0MzojZW5kaWYgLyogX19NVDc2eDJVX0ggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYz0xNTI9TU9EVUxFX0FVVEhPUihcJiMzNDtMb3JlbnpvIEJpYW5jb25pIFx1MDAzY2xvcmVuem8uYmlhbmNvbmk4M0BnbWFpbC5jb21cdTAwM2VcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM6MTUzOk1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtNZWRpYVRlayBNVDc2eDJVIChVU0IpIHdpcmVsZXNzIGRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNTQtTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7RHVhbCBCU0QvR1BMXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxMzYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipDb25zaWRlcmluZyB0aGUgV2lGaSBDaGlwc2V0IExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcmFuZ2Ugb2YgTWVkaWFUZWsgV2lGaSBjaGlwc2V0cyBoZXJlLiBJJiMzOTt2ZSBnb3QgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGFuZCBgTVQ3OTIxVWAgaW4gbWluZCwgYW5kIEkmIzM5O20gbWVudGFsbHkgZmlsaW5nIHRoZW0gYXdheSBieSB0aGVpciByZXNwZWN0aXZlIGZlYXR1cmUgc2V0cyBhbmQgZ2VuZXJhbCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuIE5vdywgZ2l2ZW4gdGhhdCBvdmVydmlldywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgc2NvcGUgb3V0IGBNVDc5MjVVYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQgZml0cyBpbiB0aGVpciBjdXJyZW50IHByb2R1Y3Qgb2ZmZXJpbmdzLiBQZXJoYXBzIGl0JiMzOTtzIGFuIGV2b2x1dGlvbmFyeSBzdGVwLCBhIHNwZWNpYWxpemVkIHZlcnNpb24sIG9yIGEgd2hvbGUgbmV3IGdlbmVyYXRpb24uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlc2Ugc2lsaWNvbiBvZmZlcmluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UNzkyNVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc9Nz1jb25maWcgTVQ3OTI1RVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjIwOlx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIxLVx0c2VsZWN0IE1UNzkyeF9VU0Jcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZT00PW9iai0kKENPTkZJR19NVDc5MjVFKSAmIzQzOz0gbXQ3OTI1ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSAmIzQzOz0gbXQ3OTI1dS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTM2Mj1NT0RVTEVfQVVUSE9SKFwmIzM0O0xvcmVuem8gQmlhbmNvbmkgXHUwMDNjbG9yZW56b0BrZXJuZWwub3JnXHUwMDNlXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2MzpNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSB3aXJlbGVzcyBkcml2ZXJcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY0LU1PRFVMRV9MSUNFTlNFKFwmIzM0O0R1YWwgQlNEL0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODEzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIHRoZSBNVDc2IERyaXZlciBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gUmlnaHQsIHRoZXkgc2VlbSB0byBiZSB0aGUgcHJpbWFyeSBvbmVzIHdlIHdhbnQgdG8gZW5hYmxlLiBJIGNhbiBlYXNpbHkgbGlzdCB0aGVtIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AuIFRoZSBmb2N1cyBoZXJlIGlzIGdvaW5nIHRvIGJlIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAuIE5vdywgYSBxdWljayB0aG91Z2h0IOKAkyBpcyB0aGF0IGZ1bmN0aW9uIGxpbWl0ZWQgdG8gVVNCLCBvciBkb2VzIGl0IHJlYWNoIG90aGVyIGJ1c2VzPyBBaCwgaXQgaXMgcmVhY2hhYmxlIGZyb20gUENJIGFuZCBTRElPLCB3aGljaCBpcyBnb29kIHRvIGtub3csIGJ1dCBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZWFzaWx5IGZ1enogVVNCIGRyaXZlcnMuIFRoYXQgbWFrZXMgdGhlIFVTQiBidXMgYSBncmVhdCBwbGFjZSB0byBzdGFydC4KCklzIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgaW4gYSBob3QgcGF0aD8gTm8sIGl0IGxvb2tzIGxpa2UgaXQgaXMgb25seSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIGl0IGEgcGVyZmVjdCB0YXJnZXQuIEl0IHNob3VsZG4mIzM5O3QgaW1wYWN0IHBlcmZvcm1hbmNlIGFuZCwgdGhlcmVmb3JlLCBpcyBhIGdvb2QgZm9jdXMuCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjay4gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBjb25maWd1cmF0aW9ucz8gVGhlc2UgY29uZmlncyBzZWxlY3QgYE1UNzZfQ09SRWAuIEkmIzM5O2xsIGFsc28gbGlrZWx5IG5lZWQgYFdMQU5fVkVORE9SX01FRElBVEVLYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc6Mjpjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWctMy1cdGJvb2wgXCYjMzQ7TWVkaWFUZWsgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTE0LXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc9MTU9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZzoxNjplbmRpZiAjIFdMQU5fVkVORE9SX01FRElBVEVLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTU3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlybWluZyB0aGUgTWVkaWF0ZWsgRHJpdmVyIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgV0xBTl9WRU5ET1JfTUVESUFURUtgIGlzIGFjdHVhbGx5IHJlcXVpcmVkIGhlcmUuIE5vIHBvaW50IGluIHdhc3RpbmcgdGltZSBpZiBpdCYjMzk7cyBhbHJlYWR5IGhhbmRsZWQgZWxzZXdoZXJlLiBUaGUgb2J2aW91cyBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIGRyaXZlci1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgc2hvdWxkIGJlIGRlZmluZWQsIGFuZCB3aGVyZSB0aGUgZGVwZW5kZW5jeSBsb2dpYyB3b3VsZCBsaWtlbHkgcmVzaWRlLiBJJiMzOTtsbCBuZWVkIHRvIG9wZW4gdGhhdCB1cCBhbmQgdGFrZSBhIGxvb2sgYXQgaXRzIGNvbnRlbnRzLiBIb3BlZnVsbHksIGl0JiMzOTtzIGNsZWFyIGFuZCB3ZWxsLWNvbW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3Nl9DT1JFXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBNVDc2X0xFRFNcbiAgIDc6XHRcdGJvb2xcbiAgIDg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gICA5Olx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBNVDc2X0NPUkU9TEVEU19DTEFTU1xuICAxMDpcdFx0ZGVmYXVsdCB5XG4gIDExOlx0XG4gIDEyOlx0Y29uZmlnIE1UNzZfVVNCXG4gIDEzOlx0XHR0cmlzdGF0ZVxuICAxNDpcdFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgTVQ3Nl9TRElPXG4gIDE3Olx0XHR0cmlzdGF0ZVxuICAxODpcdFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgTVQ3NngwMl9MSUJcbiAgMjE6XHRcdHRyaXN0YXRlXG4gIDIyOlx0XHRzZWxlY3QgTVQ3Nl9DT1JFXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE1UNzZ4MDJfVVNCXG4gIDI1Olx0XHR0cmlzdGF0ZVxuICAyNjpcdFx0c2VsZWN0IE1UNzZfVVNCXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxuICAyOTpcdFx0dHJpc3RhdGVcbiAgMzA6XHRcdHNlbGVjdCBNVDc2X0NPUkVcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgTVQ3OTJ4X0xJQlxuICAzMzpcdFx0dHJpc3RhdGVcbiAgMzQ6XHRcdHNlbGVjdCBNVDc2X0NPTk5BQ19MSUJcbiAgMzU6XHRcbiAgMzY6XHRjb25maWcgTVQ3OTJ4X1VTQlxuICAzNzpcdFx0dHJpc3RhdGVcbiAgMzg6XHRcdHNlbGVjdCBNVDc2X1VTQlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBNVDc2X05QVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE5OQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipOYXZpZ2F0aW5nIHRoZSBMaW51eCBXaXJlbGVzcyBEcml2ZXIgTGFieXJpbnRoKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gc28gSSYjMzk7bSB0cmFja2luZyBkb3duIHRoaXMgYE1UNzZ4MFVgIGRyaXZlciwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtkIGNoZWNrIGlzIHdpdGhpbiB0aGUgTWVkaWFUZWsgd2lyZWxlc3MgZHJpdmVyIHN0cnVjdHVyZS4gR2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLCBJJiMzOTttIGJldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBwYXJ0aWN1bGFyIGNoaXBzZXQgd2lsbCBiZSBpbiB0aGUgc3RhbmRhcmQgcGxhY2UuIExldCBtZSByZWNhbGwgd2hlcmUgTWVkaWFUZWsgb3JnYW5pemVzIGl0cyB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgdGhlIGZpbGUgc3RydWN0dXJlIGl0c2VsZiB3aWxsIGd1aWRlIG1lLiAqQWgtaGEhKiBZZXMsIGl0IG1ha2VzIHNlbnNlOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZ2AuIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gS25vd2luZyB0aGlzIGtlZXBzIG1lIGZyb20gd2FzdGluZyB0aW1lIGNoYXNpbmcgZG93biBmYWxzZSBsZWFkcy4gR29vZC4gTm93LCBsZXQmIzM5O3Mgc2VlIHdoYXQgb3B0aW9ucyBhcmUgd2l0aGluIHRoYXQgS2NvbmZpZyBmaWxlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBNVDc2eDBfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzZ4MDJfTElCXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE1UNzZ4MFVcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzZ4MFUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cbiAgIDk6XHRcdHNlbGVjdCBNVDc2eDAyX1VTQlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMFUtYmFzZWQgVVNCIDIuMCB3aXJlbGVzcyBkb25nbGVzLFxuICAxNDpcdFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcbiAgMTU6XHRcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3NngwRVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NngwRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cbiAgMjI6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjM6XHRcdGRlcGVuZHMgb24gUENJXG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc2MTAvTVQ3NjMwLWJhc2VkIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyxcbiAgMjY6XHRcdCAgd2hpY2ggY29tcGx5IHdpdGggSUVFRSA4MDIuMTFhYyBzdGFuZGFyZHMgYW5kIHN1cHBvcnQgMXgxXG4gIDI3Olx0XHQgIDQzM01icHMgUEhZIHJhdGUuXG4gIDI4Olx0XG4gIDI5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTE2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgTVQ3NngwVSBEcml2ZXIgUmVxdWlyZW1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgTVQ3NngwVWAgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgdGhhdCBpdCYjMzk7cyBidWlsdCBvbiB0aGUgYE1BQzgwMjExYCBhbmQgYFVTQmAgZm91bmRhdGlvbnMuIE1ha2VzIHNlbnNlOyBpdCYjMzk7cyBhIFdMQU4gZGV2aWNlLCBzbyBgTUFDODAyMTFgIGlzIHByZXR0eSBtdWNoIGEgZ2l2ZW4uIEFuZCBiZWluZyBhICYjMzQ7VSYjMzQ7IGRldmljZSwgYFVTQmAgaXMgYWxzbyByaWdodC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IG5vdGluZyB0aGUgcmVsZXZhbnQgbW9kdWxlczogYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc5MjFVYCwgYE1UNzkyNVVgLCBhbmQgdGhlIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AgdmVuZG9yIElELgoKV2FpdCBhIHNlY29uZC4gSSByZW1lbWJlciBzZWVpbmcgYE1UNzkyMVVgIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ2AgZmlsZS4gQmV0dGVyIGRvdWJsZS1jaGVjayB0aGF0IHBhcnRpY3VsYXIgbW9kdWxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIHR1Y2tlZCBhd2F5IGluIGl0cyBzcGVjaWZpYyBLY29uZmlnIGVudHJpZXMsIG9yIGlmIGl0IGhhcyBhbnkgdW5pcXVlIHJlcXVpcmVtZW50cyBiZXlvbmQgdGhlIGJhc2UgYE1BQzgwMjExYCBhbmQgYFVTQmAgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIHdoZXJlIHRoZSBkZXZpbCYjMzk7cyBpbiB0aGUgZGV0YWlscy4gVGltZSB0byBkaWcgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3OTIxX0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBNVDc5MnhfTElCXG4gICA1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgIDY6XHRcbiAgIDc6XHRjb25maWcgTVQ3OTIxRVxuICAgODpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAgOTpcdFx0c2VsZWN0IE1UNzkyMV9DT01NT05cbiAgMTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFFIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgTVQ3OTIxU1xuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxUyAoU0RJTykgc3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0c2VsZWN0IE1UNzZfU0RJT1xuICAyMDpcdFx0c2VsZWN0IE1UNzkyMV9DT01NT05cbiAgMjE6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjI6XHRcdGRlcGVuZHMgb24gTU1DXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFTIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cbiAgMjU6XHRcbiAgMjY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMjc6XHRcbiAgMjg6XHRjb25maWcgTVQ3OTIxVVxuICAyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDMwOlx0XHRzZWxlY3QgTVQ3OTJ4X1VTQlxuICAzMTpcdFx0c2VsZWN0IE1UNzkyMV9DT01NT05cbiAgMzI6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMzM6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDM0Olx0XHRoZWxwXG4gIDM1Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFVIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4OTMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1lZGlhVGVrIFdMQU4gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBoZXJlIGlzIG9uIE1lZGlhVGVrJiMzOTtzIFdMQU4gc3VwcG9ydCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgYE1BQzgwMjExYCBmcmFtZXdvcmssIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIFVTQiBpbnRlcmZhY2UuIFNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGBNQUM4MDIxMWAgYW5kIGBVU0JgLiBHb3QgaXQuIE5vdywgaXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgemVyb2luZyBpbiBvbiBzcGVjaWZpYyBNZWRpYVRlayBVU0IgV0xBTiBjaGlwcywgbGV0JiMzOTtzIHNlZSwgd2UgaGF2ZSBjb25maWd1cmF0aW9ucyBmb3IgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgdGhlbiBzcGVjaWZpYyBkZXZpY2Ugc3VwcG9ydCBmb3IgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gVGhlIHByaW1hcnkgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgYE1UNzkyNVVgIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byBkcmlsbCBkb3duIGFuZCBzZWUgd2hhdCBvdGhlciBjb21wb25lbnRzIG9yIGNvbmZpZ3VyYXRpb25zIGFyZSB0aWVkIHRvIHRoYXQgcGFydGljdWxhciBjaGlwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3OTI1X0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBNVDc5MnhfTElCXG4gICA1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgIDY6XHRcbiAgIDc6XHRjb25maWcgTVQ3OTI1RVxuICAgODpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAgOTpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxuICAxNDpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMTU6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAxNjpcdFxuICAxNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNVDc5MjVVXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDIyOlx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAyMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAyNDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMjU6XHRcdGhlbHBcbiAgMjY6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcbiAgMjc6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDI4Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2OTQKCQkJCQkJCW91dHB1dDogMTU0CgkJCQkJCQl0aG91Z2h0czogMjE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nOiBgbXQ3Nl9lZXByb21fb3ZlcnJpZGVgKioKCkFscmlnaHQsIEkmIzM5O3ZlIGdvdCB0aGUgY29uZmlndXJhdGlvbiBpbiBmcm9udCBvZiBtZS4gVGhlIGZvY2FsIHBvaW50IGhlcmUgaXMgdGhlIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgc3ltYm9sLiBUaGUgcmVhc29uaW5nIHByb3ZpZGVkIHBvaW50cyB0byBhIGJ1ZyBmaXg7IGFwcGFyZW50bHksIHZhbGlkIE1BQyBhZGRyZXNzZXMgZnJvbSBFRVBST00gd2VyZSBnZXR0aW5nIG92ZXJ3cml0dGVuIHdpdGggZ2FyYmFnZSBNQUMgYWRkcmVzc2VzIG9uIFVTQiBkZXZpY2VzLiBUaGlzIHdhcyBkdWUgdG8gYW4gZXJyb3IgY29uZGl0aW9uIGluIGBfZ2V0X21hY19hZGRyZXNzYCB3aGVuIGEgZGV2aWNlIHRyZWUgbm9kZSB3YXMgYWJzZW50LiBUaGlzIGNvbnN0aXR1dGVzIGEgZnVuY3Rpb25hbCBhbHRlcmF0aW9uIHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gcGF0aCwgd2hpY2ggbWFrZXMgaXQgZnV6emFibGUgdmlhIFVTQi4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoaXMgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCB3YXMgdG91Y2hlZC4gT2theSwgcXVpY2sgY2hlY2sgY29uZmlybXMsIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgaXMgaW5kZWVkIHRoZSBzb2xlIG1vZGlmaWNhdGlvbi4gQW5kIHRoZSBwYXRoIGlzbiYjMzk7dCBob3QsIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgcHJvYmUvaW5pdC4gVGhhdCBtZWFucyBpdCYjMzk7cyBhbiBpZGVhbCB0YXJnZXQuCgpMZXQmIzM5O3MgcXVpY2tseSByZXZpc2l0IHRoZSBwYXRjaCBpdHNlbGY6CgpgYGBjCi0JaWYgKGVycikgewomIzQzOwlpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocGh5LSZndDttYWNhZGRyKSkgewpgYGAKClllcCwgYSBmdW5jdGlvbmFsIGNoYW5nZSwgY2xlYXJseS4gVGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuIEkmIzM5O2xsIGdldCB0aGUgcmVzdWx0cyBzZXQgdXAgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAgICYjMzQ7TVQ3NngwVSYjMzQ7LAogICAgJiMzNDtNVDc2eDJVJiMzNDssCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzZfZWVwcm9tX292ZXJyaWRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIHZhbGlkIE1BQyBhZGRyZXNzZXMgZnJvbSBFRVBST00gd2VyZSBvdmVyd3JpdHRlbiB3aXRoIHJhbmRvbSBNQUMgYWRkcmVzc2VzIG9uIFVTQiBkZXZpY2VzIGJlY2F1c2Ugb2ZfZ2V0X21hY19hZGRyZXNzIHJldHVybnMgYW4gZXJyb3Igd2hlbiB0aGVyZSBpcyBubyBkZXZpY2UgdHJlZSBub2RlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGluaXRpYWxpemF0aW9uIHBhdGggb2YgTWVkaWFUZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXJzLiBJdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgICAmIzM0O01UNzZ4MFUmIzM0OywKICAgICYjMzQ7TVQ3NngyVSYjMzQ7LAogICAgJiMzNDtNVDc5MjFVJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc2X2VlcHJvbV9vdmVycmlkZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTI6MjcuODQyOTI2NTcxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU2NjQwNjQ5NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIixcbiAgICBcIk1UNzZ4MFVcIixcbiAgICBcIk1UNzZ4MlVcIixcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc2X2VlcHJvbV9vdmVycmlkZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIHZhbGlkIE1BQyBhZGRyZXNzZXMgZnJvbSBFRVBST00gd2VyZSBvdmVyd3JpdHRlbiB3aXRoIHJhbmRvbSBNQUMgYWRkcmVzc2VzIG9uIFVTQiBkZXZpY2VzIGJlY2F1c2Ugb2ZfZ2V0X21hY19hZGRyZXNzIHJldHVybnMgYW4gZXJyb3Igd2hlbiB0aGVyZSBpcyBubyBkZXZpY2UgdHJlZSBub2RlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGluaXRpYWxpemF0aW9uIHBhdGggb2YgTWVkaWFUZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXJzLiBJdCBjYW4gYmUgZnV6emVkIHZpYSBVU0IuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEyOjI3Ljg0MjkzNzMxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAyMzUyNjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDMyM2ExNDQ5ZjA3OTAzMjk1Nzc1MDkyYTA3NDUzZmM4OTkxYmNmNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDAzOjEyOjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jXFxuaW5kZXggYjk5ZDc0NTI4MDBmZGUuLmFmZGI3MzY2MTg2NmU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jXFxuQEAgLTE4MSw3ICsxODEsNyBAQCBtdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4gXFx0aWYgKGVyciA9PSAtRVBST0JFX0RFRkVSKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0aWYgKGVycikge1xcbitcXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocGh5LVxcdTAwM2VtYWNhZGRyKSkge1xcbiBcXHRcXHRldGhfcmFuZG9tX2FkZHIocGh5LVxcdTAwM2VtYWNhZGRyKTtcXG4gXFx0XFx0ZGV2X2luZm8oZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdCBcXFwiSW52YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tIGFkZHJlc3MgJXBNXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjoyOC41NDY0MjE5NDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0OTYwNTA4NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl9lZXByb21fb3ZlcnJpZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQzMjNhMTQ0OWYwNzkwMzI5NTc3NTA5MmEwNzQ1M2ZjODk5MWJjZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDAzOjEyOjI1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbmluZGV4IGI5OWQ3NDUyODAwZmRlLi5hZmRiNzM2NjE4NjZlOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcbkBAIC0xODEsNyArMTgxLDcgQEAgbXQ3Nl9lZXByb21fb3ZlcnJpZGUoc3RydWN0IG10NzZfcGh5ICpwaHkpXG4gXHRpZiAoZXJyID09IC1FUFJPQkVfREVGRVIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRpZiAoZXJyKSB7XG4rXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocGh5LVx1MDAzZW1hY2FkZHIpKSB7XG4gXHRcdGV0aF9yYW5kb21fYWRkcihwaHktXHUwMDNlbWFjYWRkcik7XG4gXHRcdGRldl9pbmZvKGRldi1cdTAwM2VkZXYsXG4gXHRcdFx0IFwiSW52YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tIGFkZHJlc3MgJXBNXFxuXCIsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjoyOC41NDY0MjYxMjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjI0NzcyNTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lZGlhdGVrIFdpRmkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBoZXJlLCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jYC4gVGhlIGNvcmUgb2YgdGhlIG1vZGlmaWNhdGlvbiBpcyBpbiB0aGUgYG10NzZfZWVwcm9tX292ZXJyaWRlYCBmdW5jdGlvbi4gSW50cmlndWluZy4gSXQgYXBwZWFycyB0aGF0IGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IGhhcyBiZWVuIGFsdGVyZWQg4oCTIHNwZWNpZmljYWxseSwgdGhlIG9sZCBgaWYgKGVycilgIGNoZWNrIGhhcyBiZWVuIHN3YXBwZWQgb3V0IGZvciBgaWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKHBoeS1cdTAwM2VtYWNhZGRyKSlgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGxpa2VseSBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggTUFDIGFkZHJlc3MgaGFuZGxpbmcgZHVyaW5nIHRoZSBFRVBST00gb3ZlcnJpZGUgcHJvY2Vzcywgd2hpY2ggc2VlbXMgYSBiaXQgdW51c3VhbC4gVGhpcyB3YXJyYW50cyBhIGRlZXBlciBkaXZlIGludG8gYG10NzZfZWVwcm9tX292ZXJyaWRlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkndmUgbW92ZWQgYXdheSBmcm9tIGFuIGVycm9yIGNoZWNrIHRvIGEgTUFDIGFkZHJlc3MgdmFsaWRhdGlvbiwgaXQgbWF5IGhhdmUgaW1wbGljYXRpb25zLiBMZXQncyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIHdoYXTigJlzIGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIGNoYW5nZSB3YXMgbWFkZSwgd2hhdCB0aGUgcG90ZW50aWFsIGJlbmVmaXRzIGFyZSwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIHJpc2tzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEyOjMyLjc3MTIwMjIzOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE5NTg2NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3Nl9lZXByb21fb3ZlcnJpZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jPTE3Mz1pbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE3NDptdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE3NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jLTE5Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYzoxOTM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9lZXByb21fb3ZlcnJpZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTk0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjozMy4wMDMyMDkxMDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTI3MTgyMDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNVDc2IEVFUFJPTSBDb2RlKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTVQ3NiBkcml2ZXIgaXMgaGFuZGxpbmcgRUVQUk9NIGRhdGEsIHNwZWNpZmljYWxseSB0aGUgbnVhbmNlcyBhcm91bmQgaG93IGl0J3MgYmVpbmcgcmVhZCBhbmQgaW50ZXJwcmV0ZWQuIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jYCBmaWxlLiBJJ20gYWltaW5nIGZvciBhcm91bmQgbGluZSAxNzMgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhleSdyZSBkb2luZyB0aGVyZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgc29tZSBjcml0aWNhbCBFRVBST00gcmVhZCBmdW5jdGlvbnMsIHBhcmFtZXRlciBsb29rdXBzLCBvciBlcnJvciBoYW5kbGluZyBpbiB0aGF0IGFyZWEuIEhvcGVmdWxseSwgdGhlIGNvZGUgaXMgd2VsbC1jb21tZW50ZWQsIGJ1dCBldmVuIGlmIGl0J3Mgbm90LCBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgZ3JvayB3aGF0J3MgZ29pbmcgb24gYnkgdHJhY2luZyB0aGUgZGF0YSBmbG93LiBJIGFudGljaXBhdGUgc29tZSBiaXRmaWVsZCBtYW5pcHVsYXRpb24gYW5kIHBvdGVudGlhbGx5IHNvbWUgdmVuZG9yLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBiZWluZyB1c2VkLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDQyLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTI6MzYuNTMwMzk0MjMyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTYwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTYwOlxcdFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiAxNjE6XFx0XFxuIDE2MjpcXHRcXHRyZXQgPSBtdDc2X2dldF9vZl9lZXByb21fZGF0YShkZXYsIGVlcCwgbGVuKTtcXG4gMTYzOlxcdFxcdGlmICghcmV0KVxcbiAxNjQ6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDE2NTpcXHRcXG4gMTY2OlxcdFxcdHJldCA9IG10NzZfZ2V0X29mX2RhdGFfZnJvbV9tdGQoZGV2LCBlZXAsIDAsIGxlbik7XFxuIDE2NzpcXHRcXHRpZiAoIXJldClcXG4gMTY4OlxcdFxcdFxcdHJldHVybiAwO1xcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHRyZXR1cm4gbXQ3Nl9nZXRfb2ZfZGF0YV9mcm9tX252bWVtKGRldiwgZWVwLCBcXFwiZWVwcm9tXFxcIiwgbGVuKTtcXG4gMTcxOlxcdH1cXG4gMTcyOlxcdFxcbiAxNzM6XFx0aW50XFxuIDE3NDpcXHRtdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4gMTc1OlxcdHtcXG4gMTc2OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqZGV2ID0gcGh5LVxcdTAwM2VkZXY7XFxuIDE3NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGU7XFxuIDE3ODpcXHRcXHRpbnQgZXJyO1xcbiAxNzk6XFx0XFxuIDE4MDpcXHRcXHRlcnIgPSBvZl9nZXRfbWFjX2FkZHJlc3MobnAsIHBoeS1cXHUwMDNlbWFjYWRkcik7XFxuIDE4MTpcXHRcXHRpZiAoZXJyID09IC1FUFJPQkVfREVGRVIpXFxuIDE4MjpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiAxODM6XFx0XFxuIDE4NDpcXHRcXHRpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocGh5LVxcdTAwM2VtYWNhZGRyKSkge1xcbiAxODU6XFx0XFx0XFx0ZXRoX3JhbmRvbV9hZGRyKHBoeS1cXHUwMDNlbWFjYWRkcik7XFxuIDE4NjpcXHRcXHRcXHRkZXZfaW5mbyhkZXYtXFx1MDAzZWRldixcXG4gMTg3OlxcdFxcdFxcdFxcdCBcXFwiSW52YWxpZCBNQUMgYWRkcmVzcywgdXNpbmcgcmFuZG9tIGFkZHJlc3MgJXBNXFxcXG5cXFwiLFxcbiAxODg6XFx0XFx0XFx0XFx0IHBoeS1cXHUwMDNlbWFjYWRkcik7XFxuIDE4OTpcXHRcXHR9XFxuIDE5MDpcXHRcXG4gMTkxOlxcdFxcdHJldHVybiAwO1xcbiAxOTI6XFx0fVxcbiAxOTM6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9lZXByb21fb3ZlcnJpZGUpO1xcbiAxOTQ6XFx0XFxuIDE5NTpcXHRzdGF0aWMgYm9vbCBtdDc2X3N0cmluZ19wcm9wX2ZpbmQoc3RydWN0IHByb3BlcnR5ICpwcm9wLCBjb25zdCBjaGFyICpzdHIpXFxuIDE5NjpcXHR7XFxuIDE5NzpcXHRcXHRjb25zdCBjaGFyICpjcCA9IE5VTEw7XFxuIDE5ODpcXHRcXG4gMTk5OlxcdFxcdGlmICghcHJvcCB8fCAhc3RyIHx8ICFzdHJbMF0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEyOjM2LjUzMDU1Nzc3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODIzODE1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVkaWF0ZWsgTVQ3NiBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBNZWRpYXRlayBNVDc2IHdpcmVsZXNzIGRldmljZXMuIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcz8gVGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLiBUaGUgdGFyZ2V0IHNlZW1zIHRvIGJlIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYXR0YWNrIHN1cmZhY2UuIElzIHRoaXMgYSBVU0IgZHJpdmVyPyBLbm93aW5nIHRoYXQgd2lsbCBpbmZsdWVuY2UgbXkgYXBwcm9hY2ggdG8gcG90ZW50aWFsIGZ1enppbmcgc3RyYXRlZ2llcywgc28gdGhhdCdzIHRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBjb25maXJtLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzI1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo0MC41MTI5NDMwNDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYWdnLXJ4LmNcIixcbiAgICBcImNoYW5uZWwuY1wiLFxuICAgIFwiZGVidWdmcy5jXCIsXG4gICAgXCJkbWEuY1wiLFxuICAgIFwiZG1hLmhcIixcbiAgICBcImVlcHJvbS5jXCIsXG4gICAgXCJtYWM4MDIxMS5jXCIsXG4gICAgXCJtY3UuY1wiLFxuICAgIFwibW1pby5jXCIsXG4gICAgXCJtdDc2LmhcIixcbiAgICBcIm10NzZfY29ubmFjLmhcIixcbiAgICBcIm10NzZfY29ubmFjMl9tYWMuaFwiLFxuICAgIFwibXQ3Nl9jb25uYWMzX21hYy5jXCIsXG4gICAgXCJtdDc2X2Nvbm5hYzNfbWFjLmhcIixcbiAgICBcIm10NzZfY29ubmFjX21hYy5jXCIsXG4gICAgXCJtdDc2X2Nvbm5hY19tY3UuY1wiLFxuICAgIFwibXQ3Nl9jb25uYWNfbWN1LmhcIixcbiAgICBcIm10NzZ4MDIuaFwiLFxuICAgIFwibXQ3NngwMl9iZWFjb24uY1wiLFxuICAgIFwibXQ3NngwMl9kZWJ1Z2ZzLmNcIixcbiAgICBcIm10NzZ4MDJfZGZzLmNcIixcbiAgICBcIm10NzZ4MDJfZGZzLmhcIixcbiAgICBcIm10NzZ4MDJfZG1hLmhcIixcbiAgICBcIm10NzZ4MDJfZWVwcm9tLmNcIixcbiAgICBcIm10NzZ4MDJfZWVwcm9tLmhcIixcbiAgICBcIm10NzZ4MDJfbWFjLmNcIixcbiAgICBcIm10NzZ4MDJfbWFjLmhcIixcbiAgICBcIm10NzZ4MDJfbWN1LmNcIixcbiAgICBcIm10NzZ4MDJfbWN1LmhcIixcbiAgICBcIm10NzZ4MDJfbW1pby5jXCIsXG4gICAgXCJtdDc2eDAyX3BoeS5jXCIsXG4gICAgXCJtdDc2eDAyX3BoeS5oXCIsXG4gICAgXCJtdDc2eDAyX3JlZ3MuaFwiLFxuICAgIFwibXQ3NngwMl90cmFjZS5jXCIsXG4gICAgXCJtdDc2eDAyX3RyYWNlLmhcIixcbiAgICBcIm10NzZ4MDJfdHhyeC5jXCIsXG4gICAgXCJtdDc2eDAyX3VzYi5oXCIsXG4gICAgXCJtdDc2eDAyX3VzYl9jb3JlLmNcIixcbiAgICBcIm10NzZ4MDJfdXNiX21jdS5jXCIsXG4gICAgXCJtdDc2eDAyX3V0aWwuY1wiLFxuICAgIFwibXQ3OTJ4LmhcIixcbiAgICBcIm10NzkyeF9hY3BpX3Nhci5jXCIsXG4gICAgXCJtdDc5MnhfYWNwaV9zYXIuaFwiLFxuICAgIFwibXQ3OTJ4X2NvcmUuY1wiLFxuICAgIFwibXQ3OTJ4X2RlYnVnZnMuY1wiLFxuICAgIFwibXQ3OTJ4X2RtYS5jXCIsXG4gICAgXCJtdDc5MnhfbWFjLmNcIixcbiAgICBcIm10NzkyeF9yZWdzLmhcIixcbiAgICBcIm10NzkyeF90cmFjZS5jXCIsXG4gICAgXCJtdDc5MnhfdHJhY2UuaFwiLFxuICAgIFwibXQ3OTJ4X3VzYi5jXCIsXG4gICAgXCJucHUuY1wiLFxuICAgIFwicGNpLmNcIixcbiAgICBcInNjYW4uY1wiLFxuICAgIFwic2Rpby5jXCIsXG4gICAgXCJzZGlvLmhcIixcbiAgICBcInNkaW9fdHhyeC5jXCIsXG4gICAgXCJ0ZXN0bW9kZS5jXCIsXG4gICAgXCJ0ZXN0bW9kZS5oXCIsXG4gICAgXCJ0cmFjZS5jXCIsXG4gICAgXCJ0cmFjZS5oXCIsXG4gICAgXCJ0eC5jXCIsXG4gICAgXCJ1c2IuY1wiLFxuICAgIFwidXNiX3RyYWNlLmNcIixcbiAgICBcInVzYl90cmFjZS5oXCIsXG4gICAgXCJ1dGlsLmNcIixcbiAgICBcInV0aWwuaFwiLFxuICAgIFwid2VkLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwibXQ3NjAzXCIsXG4gICAgXCJtdDc2MTVcIixcbiAgICBcIm10NzZ4MFwiLFxuICAgIFwibXQ3NngyXCIsXG4gICAgXCJtdDc5MTVcIixcbiAgICBcIm10NzkyMVwiLFxuICAgIFwibXQ3OTI1XCIsXG4gICAgXCJtdDc5OTZcIlxuICBdXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo0MC41MTMyMjc4OTNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQwMTYwNDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVTQiBEcml2ZXIgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBwb3RlbnRpYWwgVVNCIGRyaXZlciBsYW5kc2NhcGUgd2l0aGluIHRoaXMgY29kZWJhc2UuIFNlZW1zIGxpa2Ugd2UndmUgZ290IGEgZmV3IGtleSBwbGF5ZXJzOiBgdXNiLmNgLCBgbXQ3NngwMl91c2JfY29yZS5jYCwgYW5kIGBtdDc5MnhfdXNiLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgbGV0J3Mgc2VlIGhvdyB0aGUgYG10NzZfZWVwcm9tX292ZXJyaWRlYCBmdW5jdGlvbiBmaXRzIGludG8gdGhpcyBVU0IgcGljdHVyZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgcmVhY2hhYmxlIGZyb20gYW55IG9mIHRoZXNlIFVTQi1yZWxhdGVkIGZpbGVzLiBVbmRlcnN0YW5kaW5nIHRoZSBlZXByb20gb3ZlcnJpZGUgcGF0aCBpcyBjcnVjaWFsIGZvciBbKippbnNlcnQgeW91ciBzcGVjaWZpYyBleHBlcnQgcmVhc29uIGhlcmUsIGUuZy4sIGRlYnVnZ2luZyBhIHNwZWNpZmljIGlzc3VlLCBjdXN0b21pemluZyBjb25maWd1cmF0aW9uLCBleHBsb3JpbmcgYSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LCB1bmRlcnN0YW5kaW5nIGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjayoqXS4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwZXIgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM2NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo0NC4xNTMzOTMwNThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjQzMDk1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2X2VlcHJvbV9vdmVycmlkZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM9MTczPWludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmM6MTc0Om10NzZfZWVwcm9tX292ZXJyaWRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvZWVwcm9tLmMtMTkyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2VlcHJvbS5jOjE5MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X2VlcHJvbV9vdmVycmlkZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uYy0xOTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xMzQxPWludCBtdDc2X2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxMzQyOmludCBtdDc2X2VlcHJvbV9vdmVycmlkZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTM0My1pbnQgbXQ3Nl9nZXRfb2ZfZGF0YV9mcm9tX210ZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdm9pZCAqZWVwLCBpbnQgb2Zmc2V0LCBpbnQgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2VlcHJvbS5jPTE1Nj1pbnQgbXQ3NjAzX2VlcHJvbV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvZWVwcm9tLmM6MTg2OlxcdHJldHVybiBtdDc2X2VlcHJvbV9vdmVycmlkZShcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9lZXByb20uYy0xODctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM9MzMzPWludCBtdDc2MTVfZWVwcm9tX2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldiwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0zNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZWVwcm9tLmM6MzU0OlxcdHJldHVybiBtdDc2X2VlcHJvbV9vdmVycmlkZShcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9lZXByb20uYy0zNTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jPTUyNz1pbnQgbXQ3NjE1X3JlZ2lzdGVyX2V4dF9waHkoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy01NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jOjU3MzpcXHRyZXQgPSBtdDc2X2VlcHJvbV9vdmVycmlkZShtcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtNTc0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYz0zMTI9aW50IG10NzZ4MF9lZXByb21faW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5jLTMzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYzozMzY6XFx0ZXJyID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmMtMzM3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9lZXByb20uYz00OTI9aW50IG10NzZ4Ml9lZXByb21faW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jLTUwMS1cXHRtdDc2eDJfZWVwcm9tX2dldF9tYWNhZGRyKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvZWVwcm9tLmM6NTAyOlxcdHJldCA9IG10NzZfZWVwcm9tX292ZXJyaWRlKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL2VlcHJvbS5jLTUwMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmM9MjY3PWludCBtdDc5MTVfZWVwcm9tX2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9lZXByb20uYzoyODc6XFx0cmV0dXJuIG10NzZfZWVwcm9tX292ZXJyaWRlKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jLTI4OC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM9NjkyPW10NzkxNV9yZWdpc3Rlcl9leHRfcGh5KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtNzExLVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmM6NzEyOlxcdHJldCA9IG10NzZfZWVwcm9tX292ZXJyaWRlKG1waHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy03MTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz04ND1zdGF0aWMgaW50IF9fbXQ3OTIxX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy05NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6OTY6XFx0cmV0ID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTk3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MTAwPXN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTA4OlxcdHJldCA9IG10NzZfZWVwcm9tX292ZXJyaWRlKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMDktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2VlcHJvbS5jPTMzMz1pbnQgbXQ3OTk2X2VlcHJvbV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZWVwcm9tLmM6MzQ3OlxcdHJldHVybiBtdDc2X2VlcHJvbV9vdmVycmlkZShcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9lZXByb20uYy0zNDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTY4Mj1zdGF0aWMgaW50IG10Nzk5Nl9yZWdpc3Rlcl9waHkoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgZW51bSBtdDc2X2JhbmRfaWQgYmFuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy03MjgtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzo3Mjk6XFx0cmV0ID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUobXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jLTczMC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo0NC40MjU4MzQyNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MDk0NDg3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlIHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIGBtdDc2eDBfZWVwcm9tX2luaXRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhpcyBjYWxsIGlzIGNvbWluZyBmcm9tIGBtdDc2eDBfZWVwcm9tX2luaXRgLiBUaGUgbmFtZSBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgbGlrZWx5IHJlbGF0ZWQgdG8gaW5pdGlhbGl6aW5nIHRoZSBFRVBST00gZm9yIHRoZSBNVDc2eDAgY2hpcHNldC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHRoZXNlIHNvcnRzIG9mIGVtYmVkZGVkIHN5c3RlbXMsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRyaWxsIGRvd24gb24gdGhlIGBtdDc2eDBgIHBhcnQuIFRoYXQncyB0aGUgb2J2aW91cyB0YXJnZXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGxhcmdlciBgbXQ3NngwYCBjb250ZXh0IGlzLCBzcGVjaWZpY2FsbHkgd2hhdCB0aGUgYG10NzZ4MGAgbW9kdWxlIG9yIGRyaXZlciBhY3R1YWxseSAqaXMqLiBJcyBpdCBhIGdlbmVyaWMgYWJzdHJhY3Rpb24gbGF5ZXIsIGEgc3BlY2lmaWMgZGV2aWNlIGRyaXZlciwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBuYW1lIGl0c2VsZiBnaXZlcyBjbHVlcywgYnV0IEkgbmVlZCB0byBxdWlja2x5IHNvbGlkaWZ5IHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgRUVQUk9NIGluaXRpYWxpemF0aW9uIGZpdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3ODUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo0OC4zMTY3ODM3OTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNDg1MTk1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc2eDBfZWVwcm9tX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYz0yOTM9c3RhdGljIGludCBtdDc2eDBfbG9hZF9lZXByb20oc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9lZXByb20uYy0zMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmM6MzEyOmludCBtdDc2eDBfZWVwcm9tX2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvZWVwcm9tLmMtMzEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oPTEzPXN0cnVjdCBtdDc2eDAyX2RldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oOjE4OmludCBtdDc2eDBfZWVwcm9tX2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5oLTE5LXZvaWQgbXQ3NngwX3JlYWRfcnhfZ2FpbihzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmM9MTcxPWludCBtdDc2eDBfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0yMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvaW5pdC5jOjIwNTpcXHRyZXQgPSBtdDc2eDBfZWVwcm9tX2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmMtMjA2LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEyOjQ4LjU1MTY0NTMxOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDU3MjA4ODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyB0aG91Z2ggSSB3ZXJlIGFuIGV4cGVydCBhbmFseXppbmcgYG10NzZ4MF9pbml0X2hhcmR3YXJlYDpcblxuKipEaXZpbmcgaW50byB0aGUgSGVhcnQgb2YgdGhlIE1UNzZ4MCBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXZSdyZSBsb29raW5nIGF0IGBtdDc2eDBfaW5pdF9oYXJkd2FyZWAuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljICpyZWFsbHkqIGhhcHBlbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgaW50aW1hdGVseS4gV2hhdCBhcmUgdGhlIGtleSBzdGFnZXM/IFdoYXQgYXJlIHRoZSBjcnVjaWFsIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGJlaW5nIHNldD8gSSBuZWVkIHRvIG1hcCBpdCBvdXQuXG5cbkZpcnN0LCBJIGV4cGVjdCB0byBzZWUgdGhlIGhhcmR3YXJlIGJyb3VnaHQgdXAgZnJvbSBhIGxvdyBwb3dlciBzdGF0ZS4gVGhhdCBsaWtlbHkgaW52b2x2ZXMgcmVzZXR0aW5nIHZhcmlvdXMgcGFydHMgb2YgdGhlIGNoaXBzZXQsIGVuYWJsaW5nIGNsb2NrcywgYW5kIG1ha2luZyBzdXJlIHRoZSBiYXNpYyBzaWxpY29uIGlzIHJlc3BvbnNpdmUuIFRoZW4sIEknbGwgYmUgbG9va2luZyBmb3IgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb24uIEFyZSB0aGV5IHVzaW5nIGEgcHJlLWRlZmluZWQgdGFibGUsIG9yIGFyZSB0aGV5IGNvbXB1dGluZyB2YWx1ZXMgb24gdGhlIGZseT8gRWl0aGVyIHdheSwgdGhlIGluaXRpYWwgcmVnaXN0ZXIgd3JpdGVzIGFyZSBjcml0aWNhbCBmb3IgZGVmaW5pbmcgdGhlIGJhc2ljIG9wZXJhdGluZyBwYXJhbWV0ZXJzOiBjbG9jayBmcmVxdWVuY2llcywgaW50ZXJydXB0IHNldHRpbmdzLCBhbmQgRE1BIGNoYW5uZWwgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyByZWdpc3RlciBvZmZzZXRzIGJlaW5nIHdyaXR0ZW4gdG8gYW5kIHRoZSB2YWx1ZSB0aGUgZGV2ZWxvcGVycyBjaG9zZS5cblxuVGhlbiBjb21lcyB0aGUgZmlybXdhcmUgbG9hZGluZy4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcC4gSG93IGlzIHRoZSBmaXJtd2FyZSBsb2FkZWQ/IElzIGl0IHZpYSBhIGJvb3Rsb2FkZXIgb3IgZGlyZWN0bHkgYnkgdGhlIGRyaXZlcj8gSXMgaXQgZnJvbSBmbGFzaCBvciBhbiBleHRlcm5hbCBzb3VyY2U/IEknbGwgbmVlZCB0byBkaXNzZWN0IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciB0cmFuc2ZlcnMgdGhlIGZpcm13YXJlIGltYWdlIHRvIHRoZSBkZXZpY2UuIEFueSB2ZXJpZmljYXRpb24gc3RlcHM/IEVycm9yIGNoZWNraW5nPyBTZWN1cml0eSBjb25zaWRlcmF0aW9ucz8gVGhlc2UgYXJlIGltcG9ydGFudC5cblxuTmV4dCwgSSBhbnRpY2lwYXRlIHNlZWluZyB0aGUgY29uZmlndXJhdGlvbiBvZiB2YXJpb3VzIGhhcmR3YXJlIGJsb2NrcyBsaWtlIHRoZSBNQUMsIFBIWSwgYW5kIHJhZGlvLiBUaGlzIGlzIHdoZXJlIHRoZSBkcml2ZXIgdGFpbG9ycyB0aGUgaGFyZHdhcmUgdG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgd2lyZWxlc3Mgc3RhbmRhcmQgYmVpbmcgdXNlZCAoODAyLjExYS9iL2cvbi9hYykgYW5kIHRoZSBwYXJ0aWN1bGFyIE1UNzZ4MCB2YXJpYW50LiBBcmUgdGhleSBzZXR0aW5nIHNwZWNpZmljIHBvd2VyIGxldmVscywgY2hhbm5lbCBmcmVxdWVuY2llcywgb3IgbW9kdWxhdGlvbiBzY2hlbWVzPyBBcmUgdGhlcmUgYW55IHZlbmRvci1zcGVjaWZpYyBzZXR0aW5ncz8gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgZnVuZGFtZW50YWwgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0aGF0IGRlZmluZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGRldmljZS5cblxuRmluYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgZW5hYmxlcyBpbnRlcnJ1cHRzIGFuZCBzdGFydHMgdGhlIGRhdGEgcGF0aC4gV2hhdCBpcyB0aGUgaW50ZXJydXB0IHN0cnVjdHVyZT8gV2hhdCBhcmUgdGhlIGludGVycnVwdCBoYW5kbGVycyBkb2luZz8gQXJlIHRoZXkgRE1BLWJhc2VkIG9yIENQVS1pbnRlbnNpdmU/IEhvdyBpcyB0aGUgZHJpdmVyIHByZXBhcmluZyB0aGUgaGFyZHdhcmUgdG8gcmVjZWl2ZSBhbmQgdHJhbnNtaXQgcGFja2V0cz8gQXJlIHRoZXJlIGFueSBpbml0aWFsaXphdGlvbiBzdGVwcyB0aGF0IHByZXBhcmUgdGhlIHJhZGlvIGZvciBwcm9wZXIgb3BlcmF0aW9uPyBXaGF0IGlzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZSB0byBnZXQgdGhlIGRyaXZlciBvcGVyYXRpbmcgYWZ0ZXIgdGhlIGluaXQgZnVuY3Rpb24gaXMgY29tcGxldGVkLlxuXG5Fc3NlbnRpYWxseSwgSSBuZWVkIHRvIGRlY29uc3RydWN0IHRoaXMgZnVuY3Rpb24gcGllY2UgYnkgcGllY2UsIHRyYWNlIHRoZSByZWdpc3RlciB3cml0ZXMsIGFuZCB1bmRlcnN0YW5kIGhvdyBlYWNoIHNldHRpbmcgY29udHJpYnV0ZXMgdG8gdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIGRlZmluZWQgYW5kIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBtYWRlIG9wZXJhdGlvbmFsLiBUaGlzIGluaXRpYWwgcGhhc2UgaXMgd2hlcmUgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBkZXZpY2UgaXMgbWFkZSBvciBicm9rZW4uIExldCdzIHNlZSB3aGF0IHRoZXkndmUgZG9uZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTY1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTI6NTQuMDA4ODU4OTE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDg0MDAyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwX2luaXRfaGFyZHdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmM9MTY5PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZ4MF9tYWNfc3RvcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvaW5pdC5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmM6MTcxOmludCBtdDc2eDBfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9pbml0LmMtMTcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0yMTItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYzoyMTM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3NngwX2luaXRfaGFyZHdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2luaXQuYy0yMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tdDc2eDAuaD0zOT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3NjMwKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtNDQtLyogSW5pdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL210NzZ4MC5oOjQ1OmludCBtdDc2eDBfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbXQ3NngwLmgtNDYtaW50IG10NzZ4MF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM9OTU9c3RhdGljIGludCBtdDc2eDBlX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIGJvb2wgcmVzdW1lKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmMtMTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jOjExNDpcXHRlcnIgPSBtdDc2eDBfaW5pdF9oYXJkd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jLTExNS1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTE1MT1zdGF0aWMgaW50IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE2NC1cXHRtdDc2eDBfaW5pdF91c2JfZG1hKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTY1OlxcdGVyciA9IG10NzZ4MF9pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTY2LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMjo1NC4zMTcyNzUxOTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3ODkxMjk4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBVU0IgSW5pdGlhbGl6YXRpb24gUm91dGluZSoqXG5cbkFscmlnaHQsIHNvIGBtdDc2eDB1X2luaXRfaGFyZHdhcmVgIGlzIHNpdHRpbmcgcmlnaHQgdGhlcmUgaW4gYHVzYi5jYC4gVGhhdOKAmXMgZ29vZCwgdGhhdCBjb25maXJtcyBteSBpbml0aWFsIGh1bmNoIGFib3V0IGl0cyBsb2NhdGlvbi4gTm93IHRoZSBxdWVzdGlvbiBpcywgKndoZXJlKiBhbmQgKndoZW4qIGRvZXMgdGhpcyBmdW5jdGlvbiBnZXQgY2FsbGVkPyBNeSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgYG10NzZ4MHVfaW5pdF9oYXJkd2FyZWAgaXMgaW5kZWVkIHBhcnQgb2YgdGhlIHByb2JlIHNlcXVlbmNlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IHRvIHNlZSBpZiBpdOKAmXMgZ2V0dGluZyBpbnZva2VkIGR1cmluZyB0aGUgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBJJ2xsIGV4cGVjdCB0byBzZWUgaXQgY2FsbGVkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZnJvbSB0aGUgVVNCIGRldmljZSBwcm9iZSBmdW5jdGlvbi4gSWYgaXTigJlzIG5vdCwgdGhlbiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY2FsbCBjaGFpbiBhbmQgdW5kZXJzdGFuZCB0aGUgdGltaW5nIG9mIHRoZXNlIGluaXRpYWxpemF0aW9uIHN0ZXBzIHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgZHJpdmVyIGFuZCB0aGUgVVNCIHN1YnN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwgc2VxdWVuY2UgdGhhdCBraWNrcyBvZmYgdGhlIGhhcmR3YXJlIGJyaW5ndXAuIExldCdzIGRpZyBpbnRvIHRoZSBwcm9iZSBmdW5jdGlvbiBhbmQgc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAxMiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEyOjU3Ljg5NjE5MjY2NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQwOTc5MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZ4MHVfaW5pdF9oYXJkd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTEyMD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3NngwdV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTUxOnN0YXRpYyBpbnQgbXQ3NngwdV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0xNzk9c3RhdGljIGludCBtdDc2eDB1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxOTQ6XFx0ZXJyID0gbXQ3NngwdV9pbml0X2hhcmR3YXJlKGRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTk1LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MzIwPXN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbXQ3NngwX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzI5OlxcdHJldCA9IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShkZXYsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzAtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTI6NTguMzM3MTg2NTIyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Mjc3MDI1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBtdDc2eDB1IERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciB0aGlzIGBtdDc2eDB1YCBkcml2ZXIuIE15IGluaXRpYWwgaHVuY2gsIGFuZCBpdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgaXMgdGhhdCBgbXQ3NngwdV9yZWdpc3Rlcl9kZXZpY2VgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCBraWNrcyB0aGluZ3Mgb2ZmLiBJdCBzZWVtcyBsb2dpY2FsLCBiYXNlZCBvbiBpdHMgbmFtZSwgdGhhdCBpdCB3b3VsZCBiZSB0aGUgb25lIHRvIG9yY2hlc3RyYXRlIHRoZSBpbml0aWFsIHNldHVwLiBUaGUgY29kZSdzIHN0cnVjdHVyZSBkZWZpbml0ZWx5IHN1cHBvcnRzIHRoaXMuXG5cbk5vdywgdGhlIGltcG9ydGFudCBwYXJ0IGlzIGtub3dpbmcgd2hlcmUgdGhhdCBmdW5jdGlvbiBnZXRzIGNhbGxlZCBmcm9tLiBCYXNlZCBvbiBteSBleHBlcmllbmNlIHdpdGggVVNCIGRyaXZlcnMsIGl0J3MgaGlnaGx5IGxpa2VseSB0aGF0IGBtdDc2eDB1X3JlZ2lzdGVyX2RldmljZWAgaXMgaW52b2tlZCBmcm9tIHdpdGhpbiB0aGUgVVNCIHByb2JlIGZ1bmN0aW9uLiBUaGlzIGlzIHN0YW5kYXJkIHByYWN0aWNlIGluIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnM7IHRoZSBwcm9iZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZGV2aWNlIGRpc2NvdmVyeSBhbmQgaW5pdGlhbCBzZXR1cCB3aGVuIGEgZGV2aWNlIGlzIGNvbm5lY3RlZC5cblxuVG8gY29uZmlybSB0aGlzIGFuZCBnYWluIGEgbW9yZSBjb25jcmV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbml0aWFsaXphdGlvbiBmbG93LCBJIHNob3VsZCBkaWcgZGVlcGVyIGludG8gdGhlIHNvdXJjZSBjb2RlIGFuZCBzdGFydCBieSBleGFtaW5pbmcgdGhlIGBtdDc2eDB1X3Byb2JlYCBmdW5jdGlvbi4gVGhhdOKAmXMgbXkgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODIxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6MDEuODY0ODkzMzQ4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg4NzI3NTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZ4MHVfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0xNzk9c3RhdGljIGludCBtdDc2eDB1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMTM6c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMTQtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTM0NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NngwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTM0Ny1cXHQuaWRfdGFibGVcXHQ9IG10NzZ4MF9kZXZpY2VfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzQ4OlxcdC5wcm9iZVxcdFxcdD0gbXQ3NngwdV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNDktXFx0LmRpc2Nvbm5lY3RcXHQ9IG10NzZ4MF9kaXNjb25uZWN0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzowMi45NTM2Mzg5ODJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc5NDM3OTIyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFuYWx5c2lzKipcblxuT2theSwgc28gdGhpcyBjb2RlIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBVU0IgcHJvYmUsIHdoaWNoIGltbWVkaWF0ZWx5IHNwYXJrcyBteSBpbnRlcmVzdCBpbiBmdXp6aW5nIHBvdGVudGlhbC4gVGhlIGNvcmUgY2hhbmdlIGhlcmUgaXMgYSBjaGVjayBmb3IgYSB2YWxpZCBNQUMgYWRkcmVzcyAoYGlzX3ZhbGlkX2V0aGVyX2FkZHJgKSBpbnN0ZWFkIG9mIHNpbXBseSBjaGVja2luZyBhbiBlcnJvciBjb2RlIChgZXJyYCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb247IGl0J3Mgbm90IGEgdHJpdmlhbCBjaGFuZ2UuXG5cbmBlcnJgIGNvbWVzIGZyb20gYG9mX2dldF9tYWNfYWRkcmVzcyhucCwgcGh5LVx1MDAzZW1hY2FkZHIpYC4gTm93LCBpZiBgZXJyYCBpcyB6ZXJvLCBidXQgdGhlIE1BQyBhZGRyZXNzIHR1cm5zIG91dCB0byBiZSBpbnZhbGlkLCB0aGlzIHdpbGwgdHJpZ2dlciB0aGUgcmFuZG9tIE1BQyBhZGRyZXNzIGdlbmVyYXRpb24uIEZvciBVU0IsIGhvd2V2ZXIsIEkgc3VzcGVjdCBgbnBgIGlzIE5VTEwuIExldCBtZSBkb3VibGUtY2hlY2sgYG9mX2dldF9tYWNfYWRkcmVzc2AuIFllcCwgaXQgcmV0dXJucyBhbiBlcnJvciB3aGVuIGBucGAgaXMgbnVsbC4gU28sIGluIHRoZSBVU0IgY2FzZSwgYGVycmAgd2lsbCBiZSBub24temVyby5cblxuSW5pdGlhbGx5LCBiZWZvcmUgdGhlIHBhdGNoLCBhIG5vbi16ZXJvIGBlcnJgIHdvdWxkIGdlbmVyYXRlIGEgcmFuZG9tIE1BQyBhZGRyZXNzLCBhbmQgbm93IGl0IHN0aWxsIHdpbGwuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiB3aGF0IGlmIGBlcnJgIGlzIG5vbi16ZXJvLCBidXQgYHBoeS1cdTAwM2VtYWNhZGRyYCAqYWxyZWFkeSogaG9sZHMgYSB2YWxpZCBNQUMgYWRkcmVzcz8gVGhhdCdzIHRoZSByZWFsIGFuZ2xlIGhlcmUuXG5cbkFoLCBvZiBjb3Vyc2UhIGBwaHktXHUwMDNlbWFjYWRkcmAgbWlnaHQgaGF2ZSBiZWVuIHBvcHVsYXRlZCBlYXJsaWVyLCBieSBgbXQ3NngwX2VlcHJvbV9pbml0YCwgYmVmb3JlIGNhbGxpbmcgYG10NzZfZWVwcm9tX292ZXJyaWRlYC4gSSBuZWVkIHRvIHJldmlldyBgbXQ3NngwX2VlcHJvbV9pbml0YCB0byBjb25maXJtIG15IHN1c3BpY2lvbi4gVGhpcyBpcyB3aGVyZSB0aGUgcG90ZW50aWFsIGZvciBpbnRlcmVzdGluZyBmdXp6aW5nIGFuZ2xlcyBlbWVyZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDUyOCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzowOC43NDgwMjI5MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY0NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL2VlcHJvbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMxMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMxMDpcXHR9XFxuIDMxMTpcXHRcXG4gMzEyOlxcdGludCBtdDc2eDBfZWVwcm9tX2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuIDMxMzpcXHR7XFxuIDMxNDpcXHRcXHR1OCB2ZXJzaW9uLCBmYWU7XFxuIDMxNTpcXHRcXHR1MTYgZGF0YTtcXG4gMzE2OlxcdFxcdGludCBlcnI7XFxuIDMxNzpcXHRcXG4gMzE4OlxcdFxcdGVyciA9IG10NzZ4MF9sb2FkX2VlcHJvbShkZXYpO1xcbiAzMTk6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDMyMDpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiAzMjE6XFx0XFxuIDMyMjpcXHRcXHRkYXRhID0gbXQ3NngwMl9lZXByb21fZ2V0KGRldiwgTVRfRUVfVkVSU0lPTik7XFxuIDMyMzpcXHRcXHR2ZXJzaW9uID0gZGF0YSBcXHUwMDNlXFx1MDAzZSA4O1xcbiAzMjQ6XFx0XFx0ZmFlID0gZGF0YTtcXG4gMzI1OlxcdFxcbiAzMjY6XFx0XFx0aWYgKHZlcnNpb24gXFx1MDAzZSBNVDc2WDBVX0VFX01BWF9WRVIpXFxuIDMyNzpcXHRcXHRcXHRkZXZfd2FybihkZXYtXFx1MDAzZW10NzYuZGV2LFxcbiAzMjg6XFx0XFx0XFx0XFx0IFxcXCJXYXJuaW5nOiB1bnN1cHBvcnRlZCBFRVBST00gdmVyc2lvbiAlMDJoaHhcXFxcblxcXCIsXFxuIDMyOTpcXHRcXHRcXHRcXHQgdmVyc2lvbik7XFxuIDMzMDpcXHRcXHRkZXZfaW5mbyhkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwiRUVQUk9NIHZlcjolMDJoaHggZmFlOiUwMmhoeFxcXFxuXFxcIixcXG4gMzMxOlxcdFxcdFxcdCB2ZXJzaW9uLCBmYWUpO1xcbiAzMzI6XFx0XFxuIDMzMzpcXHRcXHRtZW1jcHkoZGV2LVxcdTAwM2VtcGh5Lm1hY2FkZHIsICh1OCAqKWRldi1cXHUwMDNlbXQ3Ni5lZXByb20uZGF0YSArIE1UX0VFX01BQ19BRERSLFxcbiAzMzQ6XFx0XFx0ICAgICAgIEVUSF9BTEVOKTtcXG4gMzM1OlxcdFxcbiAzMzY6XFx0XFx0ZXJyID0gbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSk7XFxuIDMzNzpcXHRcXHRpZiAoZXJyKVxcbiAzMzg6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gMzM5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzowOC43NDg3OTI3MTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ3NDI1Njk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzYgVVNCIERyaXZlciBNQUMgQWRkcmVzcyBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBgbXQ3NngwX2VlcHJvbV9pbml0YCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgaXQncyBjcnVjaWFsIGZvciB0aGUgY29ycmVjdCBNQUMgYWRkcmVzcyBjb25maWd1cmF0aW9uLiAgRXNzZW50aWFsbHksIGl0IGNvcGllcyB0aGUgTUFDIGFkZHJlc3MgcmVhZCBmcm9tIHRoZSBFRVBST00gaW50byBgZGV2LVx1MDAzZW1waHkubWFjYWRkcmAsIHdoaWNoIGlzIGdyZWF0LiBUaGVuLCBpdCBjYWxscyBgbXQ3Nl9lZXByb21fb3ZlcnJpZGUoXHUwMDI2ZGV2LVx1MDAzZW1waHkpYC4gVGhhdCdzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBwYXJ0IGJlZ2lucy5cblxuTG9va2luZyBhdCB0aGUgYG10NzZfZWVwcm9tX292ZXJyaWRlYCBmdW5jdGlvbiwgdGhlIGNvZGUgc25pcHBldCByZXZlYWxzIHRoZSBmaXg6IGl0IHRyaWVzIHRvIGdldCBhIE1BQyBhZGRyZXNzIGZyb20gdGhlIGRldmljZSB0cmVlIHVzaW5nIGBvZl9nZXRfbWFjX2FkZHJlc3NgLCBidXQgKm9ubHkqIGlmIHRoZSBNQUMgYWRkcmVzcyBpbiB0aGUgRUVQUk9NIGlzbid0IHZhbGlkLiBCZWZvcmUgdGhlIHBhdGNoLCB0aGUgY29kZSB3b3VsZCBzaW1wbHkgYXNzaWduIGEgKnJhbmRvbSogTUFDIGFkZHJlc3MgaWYgYG9mX2dldF9tYWNfYWRkcmVzc2AgcmV0dXJuZWQgYW4gZXJyb3IuIEZvciBVU0IgZGV2aWNlcywgdGhlIGBucGAgcG9pbnRlciBpcyBudWxsLCBhbmQgYG9mX2dldF9tYWNfYWRkcmVzc2AgYWx3YXlzIHRocm93cyBhbiBlcnJvciAoZS5nLiAtRU5PREVWKSBiZWNhdXNlIHRoZXJlJ3Mgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhlcmVmb3JlLCB0aGUgcHJlLXBhdGNoIGNvZGUgd2FzIG92ZXJ3cml0aW5nIHRoZSBFRVBST00gTUFDIGFkZHJlc3Mgd2l0aCBhIHJhbmRvbSBvbmUgZXZlcnkgc2luZ2xlIHRpbWUgZm9yIFVTQiBkZXZpY2VzIOKAkyBhIGh1Z2UgZnVuY3Rpb25hbCBidWchIFRoZSBwYXRjaCBjb3JyZWN0cyB0aGlzIGJ5IGtlZXBpbmcgdGhlIEVFUFJPTSBNQUMgYWRkcmVzcywgaWYgaXQncyB2YWxpZCwgZm9yIFVTQiBkZXZpY2VzLiBFeGNlbGxlbnQgZml4LlxuXG5Ob3csIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIGxvb2tzIHByb21pc2luZy4gV2UgY2FuIHVzZSBzeXprYWxsZXIncyBgc3l6X3VzYl9jb25uZWN0YCBjYWxsLCB3aGljaCBzdXBwb3J0cyBmdXp6aW5nIFVTQiBkZXZpY2VzLiBUaGUgdGFyZ2V0IGRyaXZlciBpcyBgbXQ3NngwdWAgKGFuZCBvdGhlciBNVDc2IFVTQiBkcml2ZXJzKSBhbmQgd2UgY2FuIHNwZWNpZmljYWxseSB0YXJnZXQgYG10NzZfZWVwcm9tX292ZXJyaWRlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggS2NvbmZpZyBvcHRpb24gdG8gZW5hYmxlIGZvciBgbXQ3NngwdWAsIGJ1dCBvdmVyYWxsLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggcHVyc3VpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNzEwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6MTYuMjIzMDU1MjU2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMxMDI0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NngwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTVQ3NngwVSkgKz0gbXQ3NngwdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtMy1vYmotJChDT05GSUdfTVQ3NngwRSkgKz0gbXQ3NngwZS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9NYWtlZmlsZT02PW10NzZ4MC1jb21tb24teSA6PSBpbml0Lm8gbWFpbi5vIGVlcHJvbS5vIHBoeS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9NYWtlZmlsZTo4Om10NzZ4MHUteSA6PSB1c2IubyB1c2JfbWN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9NYWtlZmlsZS05LW10NzZ4MGUteSA6PSBwY2kubyBwY2lfbWN1Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21jdS5oPTM5PWludCBtdDc2eDBlX21jdV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tY3UuaDo0MDppbnQgbXQ3NngwdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1LmgtNDEtc3RhdGljIGlubGluZSBpbnQgbXQ3NngwX2Zpcm13YXJlX3J1bm5pbmcoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz00Nj1zdGF0aWMgdm9pZCBtdDc2eDBfaW5pdF91c2JfZG1hKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6NzM6c3RhdGljIHZvaWQgbXQ3NngwdV9jbGVhbnVwKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjgwOnN0YXRpYyB2b2lkIG10NzZ4MHVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTEwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxMDI6c3RhdGljIGludCBtdDc2eDB1X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTEwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTIwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc2eDB1X29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMjEtXFx0LmFkZF9jaGFuY3R4ID0gaWVlZTgwMjExX2VtdWxhdGVfYWRkX2NoYW5jdHgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xMjUtXFx0LnR4ID0gbXQ3NngwMl90eCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxMjY6XFx0LnN0YXJ0ID0gbXQ3NngwdV9zdGFydCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoxMjc6XFx0LnN0b3AgPSBtdDc2eDB1X3N0b3AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTI4LVxcdC5hZGRfaW50ZXJmYWNlID0gbXQ3NngwMl9hZGRfaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE1MTpzdGF0aWMgaW50IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgYm9vbCByZXNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE2MDpcXHRlcnIgPSBtdDc2eDB1X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTYxLVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE3OTpzdGF0aWMgaW50IG10NzZ4MHVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE4MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTk0OlxcdGVyciA9IG10NzZ4MHVfaW5pdF9oYXJkd2FyZShkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE5NS1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIwOC1vdXRfZXJyOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjIwOTpcXHRtdDc2eDB1X2NsZWFudXAoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMTAtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMTM6c3RhdGljIGludCBtdDc2eDB1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMTQtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTIzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyMzY6XFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFxcdTAwMjZ1c2JfaW50Zi1cXHUwMDNlZGV2LCBzaXplb2YoKmRldiksIFxcdTAwMjZtdDc2eDB1X29wcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yMzctXFx0XFx0XFx0XFx0IFxcdTAwMjZkcnZfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTI3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYzoyNzg6XFx0cmV0ID0gbXQ3NngwdV9yZWdpc3Rlcl9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0yNzktXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0yOTI9c3RhdGljIHZvaWQgbXQ3NngwX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzAwLVxcdGllZWU4MDIxMV91bnJlZ2lzdGVyX2h3KGRldi1cXHUwMDNlbXQ3Ni5odyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzAxOlxcdG10NzZ4MHVfY2xlYW51cChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTMwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTMyMD1zdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIG10NzZ4MF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjMyOTpcXHRyZXQgPSBtdDc2eDB1X2luaXRfaGFyZHdhcmUoZGV2LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmMtMzMwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzQtZXJyOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjMzNTpcXHRtdDc2eDB1X2NsZWFudXAoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zMzYtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jPTM0NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3NngwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTM0Ny1cXHQuaWRfdGFibGVcXHQ9IG10NzZ4MF9kZXZpY2VfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MzQ4OlxcdC5wcm9iZVxcdFxcdD0gbXQ3NngwdV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0zNDktXFx0LmRpc2Nvbm5lY3RcXHQ9IG10NzZ4MF9kaXNjb25uZWN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jPTE2PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM6MTc6bXQ3NngwdV91cGxvYWRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTE4LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBtdDc2eDAyX2Z3X2hlYWRlciAqaGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jPTY3PXN0YXRpYyBpbnQgbXQ3NngwX2dldF9maXJtd2FyZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM6ODU6c3RhdGljIGludCBtdDc2eDB1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE1MDpcXHRyZXQgPSBtdDc2eDB1X3VwbG9hZF9maXJtd2FyZShkZXYsIGhkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTE1MS1cXHRtdDc2eDAyX3NldF9ldGh0b29sX2Z3dmVyKGRldiwgaGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE2NDppbnQgbXQ3NngwdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jOjE2ODpcXHRyZXQgPSBtdDc2eDB1X2xvYWRfZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTY5LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzoxNi43MzYxNjk5NDZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwODk4NzEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKlRyb3VibGVzaG9vdGluZyB0aGUgTVQ3NngwVSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBJJ20gbG9va2luZyBhdCBpcyBgTVQ3NngwVWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGJlaW5nIGhhbmRsZWQgaW4gdGhlIGRyaXZlciBjb2RlLiBSaWdodCwgSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGFuIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgZnVuY3Rpb24uIFdoZXJlIHdhcyB0aGF0IGFnYWluPyBBaCwgeWVzLCBpdCdzIGJ1cmllZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9lZXByb20uY2AuIFRoYXQncyBwYXJ0IG9mIHRoZSBjb3JlIE1UNzYgbW9kdWxlLCB3aGljaCB3b3VsZCBsaWtlbHkgYmUgbmFtZWQgYG10NzYua29gIG9yIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgaG93IHRoYXQgcGFydGljdWxhciBmaWxlIGlzIGNvbXBpbGVkLCBJIHNob3VsZCBjaGVjayB0aGUgTWFrZWZpbGUuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGVgLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGF0IG9iamVjdCBmaWxlIGlzIGxpbmtlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU5MDEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzoyMi4wNDUxNjIyMjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdG9iai0kKENPTkZJR19NVDc2X0NPUkUpICs9IG10NzYub1xcbiAgIDM6XFx0b2JqLSQoQ09ORklHX01UNzZfVVNCKSArPSBtdDc2LXVzYi5vXFxuICAgNDpcXHRvYmotJChDT05GSUdfTVQ3Nl9TRElPKSArPSBtdDc2LXNkaW8ub1xcbiAgIDU6XFx0b2JqLSQoQ09ORklHX01UNzZ4MDJfTElCKSArPSBtdDc2eDAyLWxpYi5vXFxuICAgNjpcXHRvYmotJChDT05GSUdfTVQ3NngwMl9VU0IpICs9IG10NzZ4MDItdXNiLm9cXG4gICA3OlxcdG9iai0kKENPTkZJR19NVDc2X0NPTk5BQ19MSUIpICs9IG10NzYtY29ubmFjLWxpYi5vXFxuICAgODpcXHRvYmotJChDT05GSUdfTVQ3OTJ4X0xJQikgKz0gbXQ3OTJ4LWxpYi5vXFxuICAgOTpcXHRvYmotJChDT05GSUdfTVQ3OTJ4X1VTQikgKz0gbXQ3OTJ4LXVzYi5vXFxuICAxMDpcXHRcXG4gIDExOlxcdG10NzYteSA6PSBcXFxcXFxuICAxMjpcXHRcXHRtbWlvLm8gdXRpbC5vIHRyYWNlLm8gZG1hLm8gbWFjODAyMTEubyBkZWJ1Z2ZzLm8gZWVwcm9tLm8gXFxcXFxcbiAgMTM6XFx0XFx0dHgubyBhZ2ctcngubyBtY3UubyB3ZWQubyBzY2FuLm8gY2hhbm5lbC5vXFxuICAxNDpcXHRcXG4gIDE1OlxcdG10NzYtJChDT05GSUdfTVQ3Nl9OUFUpICs9IG5wdS5vXFxuICAxNjpcXHRtdDc2LSQoQ09ORklHX1BDSSkgKz0gcGNpLm9cXG4gIDE3OlxcdG10NzYtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbiAgMTg6XFx0XFxuICAxOTpcXHRtdDc2LXVzYi15IDo9IHVzYi5vIHVzYl90cmFjZS5vXFxuICAyMDpcXHRtdDc2LXNkaW8teSA6PSBzZGlvLm8gc2Rpb190eHJ4Lm9cXG4gIDIxOlxcdFxcbiAgMjI6XFx0Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcXG4gIDIzOlxcdENGTEFHU191c2JfdHJhY2UubyA6PSAtSSQoc3JjKVxcbiAgMjQ6XFx0Q0ZMQUdTX210NzZ4MDJfdHJhY2UubyA6PSAtSSQoc3JjKVxcbiAgMjU6XFx0Q0ZMQUdTX210NzkyeF90cmFjZS5vIDo9IC1JJChzcmMpXFxuICAyNjpcXHRcXG4gIDI3OlxcdG10NzZ4MDItbGliLXkgOj0gbXQ3NngwMl91dGlsLm8gbXQ3NngwMl9tYWMubyBtdDc2eDAyX21jdS5vIFxcXFxcXG4gIDI4OlxcdFxcdFxcdCBtdDc2eDAyX2VlcHJvbS5vIG10NzZ4MDJfcGh5Lm8gbXQ3NngwMl9tbWlvLm8gXFxcXFxcbiAgMjk6XFx0XFx0XFx0IG10NzZ4MDJfdHhyeC5vIG10NzZ4MDJfdHJhY2UubyBtdDc2eDAyX2RlYnVnZnMubyBcXFxcXFxuICAzMDpcXHRcXHRcXHQgbXQ3NngwMl9kZnMubyBtdDc2eDAyX2JlYWNvbi5vXFxuICAzMTpcXHRcXG4gIDMyOlxcdG10NzZ4MDItdXNiLXkgOj0gbXQ3NngwMl91c2JfbWN1Lm8gbXQ3NngwMl91c2JfY29yZS5vXFxuICAzMzpcXHRcXG4gIDM0OlxcdG10NzYtY29ubmFjLWxpYi15IDo9IG10NzZfY29ubmFjX21jdS5vIG10NzZfY29ubmFjX21hYy5vIG10NzZfY29ubmFjM19tYWMub1xcbiAgMzU6XFx0XFxuICAzNjpcXHRtdDc5MngtbGliLXkgOj0gbXQ3OTJ4X2NvcmUubyBtdDc5MnhfbWFjLm8gbXQ3OTJ4X3RyYWNlLm8gXFxcXFxcbiAgMzc6XFx0XFx0XFx0bXQ3OTJ4X2RlYnVnZnMubyBtdDc5MnhfZG1hLm9cXG4gIDM4OlxcdG10NzkyeC1saWItJChDT05GSUdfQUNQSSkgKz0gbXQ3OTJ4X2FjcGlfc2FyLm9cXG4gIDM5OlxcdG10NzkyeC11c2IteSA6PSBtdDc5MnhfdXNiLm9cXG4gIDQwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzoyMi4wNDUzNDA2NjdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUwMDgwMTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25zaWRlcmluZyBNVDc2IFVTQiBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBNVDc2X0NPUkVgIGNvbmZpZywgYW5kIGl0IGJ1aWxkcyBgbXQ3Ni5vYCwgd2hpY2ggaXMgc3RhbmRhcmQuIEJ1dCwgYW5kIGhlcmUncyB0aGUgcnViLCB0aGF0IGBlZXByb20ub2AgY29tcG9uZW50IHdlIG5lZWQ/IEl0J3MgYWxsIHdlbGwgYW5kIGdvb2QgdG8gKmhhdmUqIGl0IGNvbXBpbGVkIGluLCBidXQgd2Ugc3RpbGwgbmVlZCBhIHdheSB0byBnZXQgYXQgaXQgd2hlbiBkZWFsaW5nIHdpdGggYSBVU0IgY29ubmVjdGlvbi4gVGhhdCBtZWFucyBhIFVTQiBkcml2ZXIgaXMgY3JpdGljYWwgdG8gdGhlIGNoYWluLiBgTVQ3NngwVWAgaXMgb25lIHBvc3NpYmlsaXR5IEkga25vdyBvZi5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMsIGFyZSB0aGVyZSAqb3RoZXIqIFVTQiBkcml2ZXJzIHRoYXQgd2Ugc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGhpbmsuLi4gbGV0J3Mgc2VlLiBUaGVyZSdzIGBNVDc2eDJVYC4gVGhlbiwgdGhlcmUgaXMgdGhlIGBNVDc5MjFVYCBkcml2ZXIsIGFuZCwgb2YgY291cnNlLCB0aGUgYE1UNzkyNVVgIGRyaXZlci5cblxuSSB0aGluayBpdCdzIHdvcnRoIHRha2luZyBhIGNsb3NlciBsb29rIGF0IGBNVDc5MjFVYCBpbiB0aGlzIHNjZW5hcmlvLCBzbyBJJ2xsIHN0YXJ0IHRoZXJlLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBpdCdzIHRoZSByaWdodCBjaG9pY2UgZ2l2ZW4gd2hhdCBJJ20gbG9va2luZyBmb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTg5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzoyNi41NDYxNDY2MzdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NzA1MjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNVDc5MjFVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZz0xNz1jb25maWcgTVQ3OTIxU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzoyOTpcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzAtXFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMzQtXFx0aGVscFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MzU6XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0zNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlPTU9b2JqLSQoQ09ORklHX01UNzkyMVMpICs9IG10NzkyMXMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01UNzkyMVUpICs9IG10NzkyMXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlLTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zNTE9bW9kdWxlX3VzYl9kcml2ZXIobXQ3OTIxdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNTM6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJNZWRpYVRlayBNVDc5MjFVIChVU0IpIHdpcmVsZXNzIGRyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM1NC1NT0RVTEVfQVVUSE9SKFxcXCJMb3JlbnpvIEJpYW5jb25pIFxcdTAwM2Nsb3JlbnpvQGtlcm5lbC5vcmdcXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEzOjI2LjkyMzIwOTE3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzAxMTA5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE1UNzZ4MlUgSW5xdWlyeSoqXG5cbkFscmlnaHQsIHRoZSBpbml0aWFsIHByb21wdCBpcyBzaG9ydCBhbmQgc3dlZXQuIE15IGltbWVkaWF0ZSBpbnRlcm5hbCByZWFjdGlvbiBpcyB0byB6ZXJvIGluIG9uIHRoYXQgc3BlY2lmaWMgY2hpcHNldCwgYE1UNzZ4MlVgLiBUaGlzIGlzbid0IGp1c3QgYSBnZW5lcmljIFwiY2hlY2tcIiBjb21tYW5kLiBJdCBpbXBsaWVzIGEgZGVlcGVyIGRpdmUgaXMgcmVxdWlyZWQsIGxpa2VseSBkZW1hbmRpbmcgbXkgZXhwZXJ0IGtub3dsZWRnZS4gVGhlIFwiY2hlY2tcIiBzdWdnZXN0cyBhIHRhc2ssIGFuIGludmVzdGlnYXRpb24sIG9yIGFuIGV4YW1pbmF0aW9uIG9mIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoaXMgY2hpcHNldC4gQmFzZWQgb24gdGhlIGNvbnRleHQsIEkgd2lsbCBhc3N1bWUgaXQgaXMgcmVsYXRlZCB0byBhbiBpc3N1ZSBvciBhIHRyb3VibGVzaG9vdGluZyBzY2VuYXJpbyBhbmQgSSBzaG91bGQgYXNzZXNzIHRoZSBjb250ZXh0IGJlZm9yZSBkaXZpbmcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgcHJlY2lzZWx5IEkgYW0gdG8gYmUgY2hlY2tpbmcuIEFtIEkgYXNzZXNzaW5nIHRoZSBkcml2ZXIgc3VwcG9ydD8gSW52ZXN0aWdhdGluZyBwb3RlbnRpYWwgYnVncz8gQ2hlY2tpbmcgZm9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcz8gT3IgcGVyaGFwcyBldmFsdWF0aW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgaW4gYSBzcGVjaWZpYyBzY2VuYXJpbz8gVGhlIHBvc3NpYmlsaXRpZXMgYXJlIG51bWVyb3VzLCBhbmQgdGhlIGZpcnN0IHN0ZXAgaXMgdG8gY2xhcmlmeSB0aGUgc2NvcGUuIFNvLCBsZXQncyBsb29rIGZvciBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxNDgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzoyOS45NTMzMjQ0MTVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4ODgyNDM4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNVDc2eDJVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZz02PWNvbmZpZyBNVDc2eDJFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWc6MTg6Y29uZmlnIE1UNzZ4MlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnOjE5OlxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc2eDJVIChVU0IpIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvS2NvbmZpZy0yMC1cXHRzZWxlY3QgTVQ3NngyX0NPTU1PTlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvTWFrZWZpbGU9Mz1vYmotJChDT05GSUdfTVQ3NngyRSkgKz0gbXQ3NngyZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTVQ3NngyVSkgKz0gbXQ3NngydS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvTWFrZWZpbGUtNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaC01LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaDo2OiNpZm5kZWYgX19NVDc2eDJVX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDJ1Lmg6NzojZGVmaW5lIF9fTVQ3NngyVV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oLTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDJ1Lmg9NDA9aW50IG10NzZ4MnVfc2tiX2RtYV9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGVudW0gZG1hX21zZ19wb3J0IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDJ1LmgtNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oOjQzOiNlbmRpZiAvKiBfX01UNzZ4MlVfSCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM9MTUyPU1PRFVMRV9BVVRIT1IoXFxcIkxvcmVuem8gQmlhbmNvbmkgXFx1MDAzY2xvcmVuem8uYmlhbmNvbmk4M0BnbWFpbC5jb21cXHUwMDNlXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiLmM6MTUzOk1PRFVMRV9ERVNDUklQVElPTihcXFwiTWVkaWFUZWsgTVQ3NngyVSAoVVNCKSB3aXJlbGVzcyBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2IuYy0xNTQtTU9EVUxFX0xJQ0VOU0UoXFxcIkR1YWwgQlNEL0dQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzozMC40NDIxNTc1MTdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyODM5NDY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQ29uc2lkZXJpbmcgdGhlIFdpRmkgQ2hpcHNldCBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHJhbmdlIG9mIE1lZGlhVGVrIFdpRmkgY2hpcHNldHMgaGVyZS4gSSd2ZSBnb3QgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGFuZCBgTVQ3OTIxVWAgaW4gbWluZCwgYW5kIEknbSBtZW50YWxseSBmaWxpbmcgdGhlbSBhd2F5IGJ5IHRoZWlyIHJlc3BlY3RpdmUgZmVhdHVyZSBzZXRzIGFuZCBnZW5lcmFsIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcy4gTm93LCBnaXZlbiB0aGF0IG92ZXJ2aWV3LCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBzY29wZSBvdXQgYE1UNzkyNVVgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGVyZSBpdCBmaXRzIGluIHRoZWlyIGN1cnJlbnQgcHJvZHVjdCBvZmZlcmluZ3MuIFBlcmhhcHMgaXQncyBhbiBldm9sdXRpb25hcnkgc3RlcCwgYSBzcGVjaWFsaXplZCB2ZXJzaW9uLCBvciBhIHdob2xlIG5ldyBnZW5lcmF0aW9uLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZXNlIHNpbGljb24gb2ZmZXJpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTEzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEzOjM1LjI3MDU1NjAxNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4NjAxNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1UNzkyNVVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnPTc9Y29uZmlnIE1UNzkyNUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxOTpjb25maWcgTVQ3OTI1VVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MjA6XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIxLVxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZT00PW9iai0kKENPTkZJR19NVDc5MjVFKSArPSBtdDc5MjVlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSArPSBtdDc5MjV1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzYyPU1PRFVMRV9BVVRIT1IoXFxcIkxvcmVuem8gQmlhbmNvbmkgXFx1MDAzY2xvcmVuem9Aa2VybmVsLm9yZ1xcdTAwM2VcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNjM6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHdpcmVsZXNzIGRyaXZlclxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2NC1NT0RVTEVfTElDRU5TRShcXFwiRHVhbCBCU0QvR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEzOjM1LjQ1OTI0Njc1N1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTIyNTU3NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIHRoZSBNVDc2IERyaXZlciBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBNVDc2eDBVYCwgYE1UNzZ4MlVgLCBgTVQ3OTIxVWAsIGFuZCBgTVQ3OTI1VWAuIFJpZ2h0LCB0aGV5IHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgb25lcyB3ZSB3YW50IHRvIGVuYWJsZS4gSSBjYW4gZWFzaWx5IGxpc3QgdGhlbSBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLiBUaGUgZm9jdXMgaGVyZSBpcyBnb2luZyB0byBiZSBgbXQ3Nl9lZXByb21fb3ZlcnJpZGVgLiBOb3csIGEgcXVpY2sgdGhvdWdodCDigJMgaXMgdGhhdCBmdW5jdGlvbiBsaW1pdGVkIHRvIFVTQiwgb3IgZG9lcyBpdCByZWFjaCBvdGhlciBidXNlcz8gQWgsIGl0IGlzIHJlYWNoYWJsZSBmcm9tIFBDSSBhbmQgU0RJTywgd2hpY2ggaXMgZ29vZCB0byBrbm93LCBidXQgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIGVhc2lseSBmdXp6IFVTQiBkcml2ZXJzLiBUaGF0IG1ha2VzIHRoZSBVU0IgYnVzIGEgZ3JlYXQgcGxhY2UgdG8gc3RhcnQuXG5cbklzIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgaW4gYSBob3QgcGF0aD8gTm8sIGl0IGxvb2tzIGxpa2UgaXQgaXMgb25seSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIGl0IGEgcGVyZmVjdCB0YXJnZXQuIEl0IHNob3VsZG4ndCBpbXBhY3QgcGVyZm9ybWFuY2UgYW5kLCB0aGVyZWZvcmUsIGlzIGEgZ29vZCBmb2N1cy5cblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2suIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVxdWlyZWQgY29uZmlndXJhdGlvbnM/IFRoZXNlIGNvbmZpZ3Mgc2VsZWN0IGBNVDc2X0NPUkVgLiBJJ2xsIGFsc28gbGlrZWx5IG5lZWQgYFdMQU5fVkVORE9SX01FRElBVEVLYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnYCBmaWxlIHRvIGNvbmZpcm0gdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk4MTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6NDAuNTgxODA5MjE2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODE4OTk1MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZzoyOmNvbmZpZyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWctMy1cXHRib29sIFxcXCJNZWRpYVRlayBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnOjEzOmlmIFdMQU5fVkVORE9SX01FRElBVEVLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy0xNC1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnPTE1PXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc6MTY6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzo0MC44NjM3MTg2MzlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc5Njc2NzYzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25maXJtaW5nIHRoZSBNZWRpYXRlayBEcml2ZXIgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYFdMQU5fVkVORE9SX01FRElBVEVLYCBpcyBhY3R1YWxseSByZXF1aXJlZCBoZXJlLiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgaWYgaXQncyBhbHJlYWR5IGhhbmRsZWQgZWxzZXdoZXJlLiBUaGUgb2J2aW91cyBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZHJpdmVyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzaG91bGQgYmUgZGVmaW5lZCwgYW5kIHdoZXJlIHRoZSBkZXBlbmRlbmN5IGxvZ2ljIHdvdWxkIGxpa2VseSByZXNpZGUuIEknbGwgbmVlZCB0byBvcGVuIHRoYXQgdXAgYW5kIHRha2UgYSBsb29rIGF0IGl0cyBjb250ZW50cy4gSG9wZWZ1bGx5LCBpdCdzIGNsZWFyIGFuZCB3ZWxsLWNvbW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1NTcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzo0My42NjA0OTA4ODZaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzZfQ09SRVxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE1UNzZfTEVEU1xcbiAgIDc6XFx0XFx0Ym9vbFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IE1UNzZfQ09SRT1MRURTX0NMQVNTXFxuICAxMDpcXHRcXHRkZWZhdWx0IHlcXG4gIDExOlxcdFxcbiAgMTI6XFx0Y29uZmlnIE1UNzZfVVNCXFxuICAxMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gIDE1OlxcdFxcbiAgMTY6XFx0Y29uZmlnIE1UNzZfU0RJT1xcbiAgMTc6XFx0XFx0dHJpc3RhdGVcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBNVDc2eDAyX0xJQlxcbiAgMjE6XFx0XFx0dHJpc3RhdGVcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc2X0NPUkVcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1UNzZ4MDJfVVNCXFxuICAyNTpcXHRcXHR0cmlzdGF0ZVxcbiAgMjY6XFx0XFx0c2VsZWN0IE1UNzZfVVNCXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBNVDc2X0NPTk5BQ19MSUJcXG4gIDI5OlxcdFxcdHRyaXN0YXRlXFxuICAzMDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT1JFXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBNVDc5MnhfTElCXFxuICAzMzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzQ6XFx0XFx0c2VsZWN0IE1UNzZfQ09OTkFDX0xJQlxcbiAgMzU6XFx0XFxuICAzNjpcXHRjb25maWcgTVQ3OTJ4X1VTQlxcbiAgMzc6XFx0XFx0dHJpc3RhdGVcXG4gIDM4OlxcdFxcdHNlbGVjdCBNVDc2X1VTQlxcbiAgMzk6XFx0XFxuICA0MDpcXHRjb25maWcgTVQ3Nl9OUFVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6NDMuNjYwNjY1NTA2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODU1MTYwMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk5hdmlnYXRpbmcgdGhlIExpbnV4IFdpcmVsZXNzIERyaXZlciBMYWJ5cmludGgqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gc28gSSdtIHRyYWNraW5nIGRvd24gdGhpcyBgTVQ3NngwVWAgZHJpdmVyLCBhbmQsIG9mIGNvdXJzZSwgdGhlIGZpcnN0IHBsYWNlIEknZCBjaGVjayBpcyB3aXRoaW4gdGhlIE1lZGlhVGVrIHdpcmVsZXNzIGRyaXZlciBzdHJ1Y3R1cmUuIEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiwgSSdtIGJldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhhdCBwYXJ0aWN1bGFyIGNoaXBzZXQgd2lsbCBiZSBpbiB0aGUgc3RhbmRhcmQgcGxhY2UuIExldCBtZSByZWNhbGwgd2hlcmUgTWVkaWFUZWsgb3JnYW5pemVzIGl0cyB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgdGhlIGZpbGUgc3RydWN0dXJlIGl0c2VsZiB3aWxsIGd1aWRlIG1lLiAqQWgtaGEhKiBZZXMsIGl0IG1ha2VzIHNlbnNlOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvS2NvbmZpZ2AuIFRoYXQncyBwcmVjaXNlbHkgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEtub3dpbmcgdGhpcyBrZWVwcyBtZSBmcm9tIHdhc3RpbmcgdGltZSBjaGFzaW5nIGRvd24gZmFsc2UgbGVhZHMuIEdvb2QuIE5vdywgbGV0J3Mgc2VlIHdoYXQgb3B0aW9ucyBhcmUgd2l0aGluIHRoYXQgS2NvbmZpZyBmaWxlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTk5LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzo0Ny4wNDYxODcwMTVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBNVDc2eDBfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzZ4MDJfTElCXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2eDBVXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NngwVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE1UNzZ4MF9DT01NT05cXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc2eDAyX1VTQlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMFUtYmFzZWQgVVNCIDIuMCB3aXJlbGVzcyBkb25nbGVzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcXG4gIDE1OlxcdFxcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3NngwRVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzZ4MEUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3NngwX0NPTU1PTlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzYxMC9NVDc2MzAtYmFzZWQgUENJZSB3aXJlbGVzcyBkZXZpY2VzLFxcbiAgMjY6XFx0XFx0ICB3aGljaCBjb21wbHkgd2l0aCBJRUVFIDgwMi4xMWFjIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCAxeDFcXG4gIDI3OlxcdFxcdCAgNDMzTWJwcyBQSFkgcmF0ZS5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzo0Ny4wNDYzMzMxMjVaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc4ODU1ODQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE1UNzZ4MFUgRHJpdmVyIFJlcXVpcmVtZW50cyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBNVDc2eDBVYCBkcml2ZXIsIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGF0IGl0J3MgYnVpbHQgb24gdGhlIGBNQUM4MDIxMWAgYW5kIGBVU0JgIGZvdW5kYXRpb25zLiBNYWtlcyBzZW5zZTsgaXQncyBhIFdMQU4gZGV2aWNlLCBzbyBgTUFDODAyMTFgIGlzIHByZXR0eSBtdWNoIGEgZ2l2ZW4uIEFuZCBiZWluZyBhIFwiVVwiIGRldmljZSwgYFVTQmAgaXMgYWxzbyByaWdodC4gTGV0J3Mgc3RhcnQgYnkgbm90aW5nIHRoZSByZWxldmFudCBtb2R1bGVzOiBgTVQ3NngwVWAsIGBNVDc2eDJVYCwgYE1UNzkyMVVgLCBgTVQ3OTI1VWAsIGFuZCB0aGUgYFdMQU5fVkVORE9SX01FRElBVEVLYCB2ZW5kb3IgSUQuXG5cbldhaXQgYSBzZWNvbmQuIEkgcmVtZW1iZXIgc2VlaW5nIGBNVDc5MjFVYCBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdgIGZpbGUuIEJldHRlciBkb3VibGUtY2hlY2sgdGhhdCBwYXJ0aWN1bGFyIG1vZHVsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIHR1Y2tlZCBhd2F5IGluIGl0cyBzcGVjaWZpYyBLY29uZmlnIGVudHJpZXMsIG9yIGlmIGl0IGhhcyBhbnkgdW5pcXVlIHJlcXVpcmVtZW50cyBiZXlvbmQgdGhlIGJhc2UgYE1BQzgwMjExYCBhbmQgYFVTQmAgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIHdoZXJlIHRoZSBkZXZpbCdzIGluIHRoZSBkZXRhaWxzLiBUaW1lIHRvIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTE2LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6NTEuODM0ODk4MjI3WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDQyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzkyMV9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X0xJQlxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXG4gICA3OlxcdGNvbmZpZyBNVDc5MjFFXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxRSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxRSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIE1UNzkyMVNcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0c2VsZWN0IE1UNzZfU0RJT1xcbiAgMjA6XFx0XFx0c2VsZWN0IE1UNzkyMV9DT01NT05cXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gTU1DXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjFTIDgwMi4xMWF4IDJ4MjoyU1Mgd2lyZWxlc3MgZGV2aWNlcy5cXG4gIDI1OlxcdFxcbiAgMjY6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMjc6XFx0XFxuICAyODpcXHRjb25maWcgTVQ3OTIxVVxcbiAgMjk6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAzMTpcXHRcXHRzZWxlY3QgTVQ3OTIxX0NPTU1PTlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyMVUgODAyLjExYXggMngyOjJTUyB3aXJlbGVzcyBkZXZpY2VzLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjEzOjUxLjgzNzEwOTU3N1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTIzMjM2ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWVkaWFUZWsgV0xBTiBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBoZXJlIGlzIG9uIE1lZGlhVGVrJ3MgV0xBTiBzdXBwb3J0LCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBgTUFDODAyMTFgIGZyYW1ld29yaywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgVVNCIGludGVyZmFjZS4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogYE1BQzgwMjExYCBhbmQgYFVTQmAuIEdvdCBpdC4gTm93LCBpdCBsb29rcyBsaWtlIHdlJ3JlIHplcm9pbmcgaW4gb24gc3BlY2lmaWMgTWVkaWFUZWsgVVNCIFdMQU4gY2hpcHMsIGxldCdzIHNlZSwgd2UgaGF2ZSBjb25maWd1cmF0aW9ucyBmb3IgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgdGhlbiBzcGVjaWZpYyBkZXZpY2Ugc3VwcG9ydCBmb3IgYE1UNzZ4MFVgLCBgTVQ3NngyVWAsIGBNVDc5MjFVYCwgYW5kIGBNVDc5MjVVYC4gVGhlIHByaW1hcnkgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgYE1UNzkyNVVgIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHNlZSB3aGF0IG90aGVyIGNvbXBvbmVudHMgb3IgY29uZmlndXJhdGlvbnMgYXJlIHRpZWQgdG8gdGhhdCBwYXJ0aWN1bGFyIGNoaXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODkzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMzoxMzo1NS43NjAzNTA4MTRaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IE1UNzkyeF9MSUJcXG4gICA1OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDY6XFx0XFxuICAgNzpcXHRjb25maWcgTVQ3OTI1RVxcbiAgIDg6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuICAgOTpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMTE6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXFxuICAxNDpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMTU6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG4gIDE4OlxcdFxcbiAgMTk6XFx0Y29uZmlnIE1UNzkyNVVcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuICAyMTpcXHRcXHRzZWxlY3QgTVQ3OTJ4X1VTQlxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICAyNTpcXHRcXHRoZWxwXFxuICAyNjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXFxuICAyNzpcXHRcXHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxcbiAgMjg6XFx0XFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXFxuICAyOTpcXHRcXG4gIDMwOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDM6MTM6NTUuNzYwNTIwODY0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NTI2MDg4MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmc6IGBtdDc2X2VlcHJvbV9vdmVycmlkZWAqKlxuXG5BbHJpZ2h0LCBJJ3ZlIGdvdCB0aGUgY29uZmlndXJhdGlvbiBpbiBmcm9udCBvZiBtZS4gVGhlIGZvY2FsIHBvaW50IGhlcmUgaXMgdGhlIGBtdDc2X2VlcHJvbV9vdmVycmlkZWAgc3ltYm9sLiBUaGUgcmVhc29uaW5nIHByb3ZpZGVkIHBvaW50cyB0byBhIGJ1ZyBmaXg7IGFwcGFyZW50bHksIHZhbGlkIE1BQyBhZGRyZXNzZXMgZnJvbSBFRVBST00gd2VyZSBnZXR0aW5nIG92ZXJ3cml0dGVuIHdpdGggZ2FyYmFnZSBNQUMgYWRkcmVzc2VzIG9uIFVTQiBkZXZpY2VzLiBUaGlzIHdhcyBkdWUgdG8gYW4gZXJyb3IgY29uZGl0aW9uIGluIGBfZ2V0X21hY19hZGRyZXNzYCB3aGVuIGEgZGV2aWNlIHRyZWUgbm9kZSB3YXMgYWJzZW50LiBUaGlzIGNvbnN0aXR1dGVzIGEgZnVuY3Rpb25hbCBhbHRlcmF0aW9uIHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gcGF0aCwgd2hpY2ggbWFrZXMgaXQgZnV6emFibGUgdmlhIFVTQi5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGlzIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgd2FzIHRvdWNoZWQuIE9rYXksIHF1aWNrIGNoZWNrIGNvbmZpcm1zLCBgbXQ3Nl9lZXByb21fb3ZlcnJpZGVgIGlzIGluZGVlZCB0aGUgc29sZSBtb2RpZmljYXRpb24uIEFuZCB0aGUgcGF0aCBpc24ndCBob3QsIGl0J3MgY2FsbGVkIGR1cmluZyBwcm9iZS9pbml0LiBUaGF0IG1lYW5zIGl0J3MgYW4gaWRlYWwgdGFyZ2V0LlxuXG5MZXQncyBxdWlja2x5IHJldmlzaXQgdGhlIHBhdGNoIGl0c2VsZjpcblxuYGBgY1xuLVx0aWYgKGVycikge1xuK1x0aWYgKCFpc192YWxpZF9ldGhlcl9hZGRyKHBoeS1cdTAwM2VtYWNhZGRyKSkge1xuYGBgXG5cblllcCwgYSBmdW5jdGlvbmFsIGNoYW5nZSwgY2xlYXJseS4gVGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIGZ1enppbmcuIEknbGwgZ2V0IHRoZSByZXN1bHRzIHNldCB1cCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjk0LCJPdXRwdXRUb2tlbnMiOjE1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAzOjE0OjAxLjMxMzE0NDk4MloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxOTM3NzUxNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl9lZXByb21fb3ZlcnJpZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJNVDc2eDBVXCIsXG4gICAgXCJNVDc2eDJVXCIsXG4gICAgXCJNVDc5MjFVXCIsXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3Nl9lZXByb21fb3ZlcnJpZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSB2YWxpZCBNQUMgYWRkcmVzc2VzIGZyb20gRUVQUk9NIHdlcmUgb3ZlcndyaXR0ZW4gd2l0aCByYW5kb20gTUFDIGFkZHJlc3NlcyBvbiBVU0IgZGV2aWNlcyBiZWNhdXNlIG9mX2dldF9tYWNfYWRkcmVzcyByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIG9mIE1lZGlhVGVrIE1UNzYgd2lyZWxlc3MgZHJpdmVycy4gSXQgY2FuIGJlIGZ1enplZCB2aWEgVVNCLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c9j7[1] Phase: Succeeded StartedAt: 2026-07-01 03:14:50 +0000 UTC FinishedAt: 2026-07-01 03:14:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 03:14:50 +0000 UTC FinishedAt: 2026-07-01 03:14:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2] Phase: Succeeded StartedAt: 2026-07-01 03:14:50 +0000 UTC FinishedAt: 2026-07-01 05:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 03:14:51 +0000 UTC FinishedAt: 2026-07-01 05:19:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 03:14:51 +0000 UTC FinishedAt: 2026-07-01 03:15:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 03:14:51 +0000 UTC FinishedAt: 2026-07-01 03:14:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4c9j7/series-workflow4c9j7-convert-artifact-2370042695/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 03:15:02 +0000 UTC FinishedAt: 2026-07-01 03:56:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 03:15:02 +0000 UTC FinishedAt: 2026-07-01 03:56:10 +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:*c2f17d4a-9a71-45b3-a005-9c1bf4f56267,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-workflow4c9j7/series-workflow4c9j7-convert-artifact-2370042695/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": "771f41ce-ddbe-4865-b53b-31e1d439c5e9", "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-workflow4c9j7/series-workflow4c9j7-build-action-1559167965/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 03:15:02 +0000 UTC FinishedAt: 2026-07-01 03:56:00 +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:*c2f17d4a-9a71-45b3-a005-9c1bf4f56267,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-workflow4c9j7/series-workflow4c9j7-convert-artifact-2370042695/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": "771f41ce-ddbe-4865-b53b-31e1d439c5e9", "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-workflow4c9j7/series-workflow4c9j7-build-action-1559167965/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 03:56:10 +0000 UTC FinishedAt: 2026-07-01 03:56:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 03:56:10 +0000 UTC FinishedAt: 2026-07-01 03:56:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 03:56:10 +0000 UTC FinishedAt: 2026-07-01 03:56:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 03:56:10 +0000 UTC FinishedAt: 2026-07-01 03:56:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4c9j7/series-workflow4c9j7-convert-artifact-442932086/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 03:56:42 +0000 UTC FinishedAt: 2026-07-01 03:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 03:56:42 +0000 UTC FinishedAt: 2026-07-01 03:58:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*771f41ce-ddbe-4865-b53b-31e1d439c5e9,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-workflow4c9j7/series-workflow4c9j7-build-action-1559167965/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-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 03:58:46 +0000 UTC FinishedAt: 2026-07-01 03:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 03:58:46 +0000 UTC FinishedAt: 2026-07-01 03:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 03:58:46 +0000 UTC FinishedAt: 2026-07-01 04:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 03:58:46 +0000 UTC FinishedAt: 2026-07-01 04:26:36 +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:*c2f17d4a-9a71-45b3-a005-9c1bf4f56267,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-workflow4c9j7/series-workflow4c9j7-convert-artifact-442932086/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": "5801c86d-7ae8-49c0-9d6c-f0111d26991d", "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-workflow4c9j7/series-workflow4c9j7-build-action-1928839802/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 03:58:46 +0000 UTC FinishedAt: 2026-07-01 04:26:26 +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:*c2f17d4a-9a71-45b3-a005-9c1bf4f56267,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-workflow4c9j7/series-workflow4c9j7-convert-artifact-442932086/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": "5801c86d-7ae8-49c0-9d6c-f0111d26991d", "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-workflow4c9j7/series-workflow4c9j7-build-action-1928839802/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 04:26:36 +0000 UTC FinishedAt: 2026-07-01 04:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 04:26:36 +0000 UTC FinishedAt: 2026-07-01 04:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 04:26:36 +0000 UTC FinishedAt: 2026-07-01 04:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 04:26:36 +0000 UTC FinishedAt: 2026-07-01 04:28:33 +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:*5801c86d-7ae8-49c0-9d6c-f0111d26991d,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-workflow4c9j7/series-workflow4c9j7-build-action-1928839802/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-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 04:28:43 +0000 UTC FinishedAt: 2026-07-01 05:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 04:28:43 +0000 UTC FinishedAt: 2026-07-01 05:19:15 +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":["mt76_eeprom_override"],"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:*771f41ce-ddbe-4865-b53b-31e1d439c5e9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5801c86d-7ae8-49c0-9d6c-f0111d26991d,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-workflow4c9j7/series-workflow4c9j7-build-action-1559167965/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-workflow4c9j7/series-workflow4c9j7-build-action-1928839802/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 04:28:43 +0000 UTC FinishedAt: 2026-07-01 04:29:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 04:28:43 +0000 UTC FinishedAt: 2026-07-01 04:29:06 +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":["mt76_eeprom_override"],"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-workflow4c9j7/series-workflow4c9j7-convert-artifact-3043881371/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 04:28:43 +0000 UTC FinishedAt: 2026-07-01 04:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 04:28:43 +0000 UTC FinishedAt: 2026-07-01 04:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 04:28:43 +0000 UTC FinishedAt: 2026-07-01 04:28:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 04:29:13 +0000 UTC FinishedAt: 2026-07-01 05:19:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4c9j7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt76_eeprom_override"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_MEDIATEK","MT76x0U","MT76x2U","MT7921U","MT7925U"],"series_id":"a67997a1-bfeb-4217-8a05-f6c3133035ae","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 04:29:13 +0000 UTC FinishedAt: 2026-07-01 05:19:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*771f41ce-ddbe-4865-b53b-31e1d439c5e9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5801c86d-7ae8-49c0-9d6c-f0111d26991d,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-workflow4c9j7/series-workflow4c9j7-build-action-1559167965/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-workflow4c9j7/series-workflow4c9j7-build-action-1928839802/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-workflow4c9j7/series-workflow4c9j7-convert-artifact-3043881371/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,}