Name: series-workflow76hxf Phase: Succeeded StartedAt: 2026-07-14 10:20:35 +0000 UTC FinishedAt: 2026-07-14 12:02:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[0] Phase: Succeeded StartedAt: 2026-07-14 10:20:35 +0000 UTC FinishedAt: 2026-07-14 10:35:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 10:20:35 +0000 UTC FinishedAt: 2026-07-14 10:35:46 +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": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89_8851BU", "RTW89_8852AU", "RTW89_8852BU", "RTW89_8852CU", "RTW89_8922AU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89_8851BU", "RTW89_8852AU", "RTW89_8852BU", "RTW89_8852CU", "RTW89_8922AU" ], "series_id": "4803a5ee-cb4c-4c16-bc11-79e18b894d87" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw89_fw_cmd_ofld_udelay", "rtw89_fw_cmd_ofld_mdelay" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkmIzM0OywKICAgICYjMzQ7cnR3ODlfZndfY21kX29mbGRfbWRlbGF5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzb3VyY2UgZmllbGQgb2YgdGhlIGRlbGF5IGNvbW1hbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDg5MDkwNmQ2MmI1YTIzYTNhZmQzYmJmZTkyOWIzMzJlY2FlYzMyYTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAxMDozNDowMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4xYzM3MDM0MTI1MzMyNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG5AQCAtMTE3ODAsNyAmIzQzOzExNzgwLDcgQEAgc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfd3JpdGVfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfYXJnIGNtZCA9IHtcbi1cdFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcbiYjNDM7XHRcdC5zcmMgPSBSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDLFxuIFx0XHQudHlwZSA9IFJUVzg5X0ZXX0NNRF9PRkxEX0RFTEFZLFxuIFx0XHQudmFsdWUgPSB1cyxcbiBcdH07XG5AQCAtMTE3OTQsNyAmIzQzOzExNzk0LDcgQEAgc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxuIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfYXJnIGNtZCA9IHtcbi1cdFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcbiYjNDM7XHRcdC5zcmMgPSBSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDLFxuIFx0XHQudHlwZSA9IFJUVzg5X0ZXX0NNRF9PRkxEX0RFTEFZLFxuIFx0XHQudmFsdWUgPSBtcyAqIDEwMDAsXG4gXHR9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxuaW5kZXggMjA3MjFkNTIwOWFhM2EuLjNmY2IzYWM4YzcxMTUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcbkBAIC0zMTQyLDcgJiM0MzszMTQyLDYgQEAgZW51bSBydHc4OV9md19jbWRfb2ZsZF9hcmdfc3JjIHtcbiBcdFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19SRixcbiBcdFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsXG4gXHRSVFc4OV9GV19DTURfT0ZMRF9TUkNfUkZfRERJRSxcbi1cdFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcbiB9O1xuIFxuIGVudW0gcnR3ODlfZndfY21kX29mbGRfYXJnX3R5cGUge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkmIzM0OywKICAgICYjMzQ7cnR3ODlfZndfY21kX29mbGRfbWRlbGF5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzb3VyY2UgZmllbGQgb2YgdGhlIGRlbGF5IGNvbW1hbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODkwOTA2ZDYyYjVhMjNhM2FmZDNiYmZlOTI5YjMzMmVjYWVjMzJhMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDEwOjM0OjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4xYzM3MDM0MTI1MzMyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYwpAQCAtMTE3ODAsNyAmIzQzOzExNzgwLDcgQEAgc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfd3JpdGVfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKQogewogCXN0cnVjdCBydHc4OV9md19jbWRfb2ZsZF9hcmcgY21kID0gewotCQkuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX09USEVSLAomIzQzOwkJLnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsCiAJCS50eXBlID0gUlRXODlfRldfQ01EX09GTERfREVMQVksCiAJCS52YWx1ZSA9IHVzLAogCX07CkBAIC0xMTc5NCw3ICYjNDM7MTE3OTQsNyBAQCBzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpCiBzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbXMpCiB7CiAJc3RydWN0IHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZyBjbWQgPSB7Ci0JCS5zcmMgPSBSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVIsCiYjNDM7CQkuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX01BQywKIAkJLnR5cGUgPSBSVFc4OV9GV19DTURfT0ZMRF9ERUxBWSwKIAkJLnZhbHVlID0gbXMgKiAxMDAwLAogCX07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgKaW5kZXggMjA3MjFkNTIwOWFhM2EuLjNmY2IzYWM4YzcxMTUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oCkBAIC0zMTQyLDcgJiM0MzszMTQyLDYgQEAgZW51bSBydHc4OV9md19jbWRfb2ZsZF9hcmdfc3JjIHsKIAlSVFc4OV9GV19DTURfT0ZMRF9TUkNfUkYsCiAJUlRXODlfRldfQ01EX09GTERfU1JDX01BQywKIAlSVFc4OV9GV19DTURfT0ZMRF9TUkNfUkZfRERJRSwKLQlSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVIsCiB9OwogCiBlbnVtIHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZ190eXBlIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYHJ0dzg5L2Z3LmNgIGFuZCBgcnR3ODkvZncuaGAuIFNlZW1zIGxpa2UgdGhleSYjMzk7cmUgcmVuYW1pbmcgYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUmAgdG8gYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUNgIGluIGEgY291cGxlIG9mIGZ1bmN0aW9ucyDigJMgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBUaGV5JiMzOTtyZSBhbHNvIHJlbW92aW5nIGl0IGZyb20gdGhlIGBlbnVtIHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZ19zcmNgLiBJbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSBpdCBjb3VsZCBiZSBzb21lIHNvcnQgb2Ygb2ZmbG9hZCBjb21tYW5kIHNvdXJjZSByZWxhdGVkIHRvIE1BQyBhZGRyZXNzZXMuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UsIEkmIzM5O20gbm93IHRoaW5raW5nIGFib3V0IHdoZXJlIHRoaXMgY29kZSB3b3VsZCBldmVuIGJlIGV4ZXJjaXNlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGN1cmlvdXMgaWYgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGRyaXZlciwgYHJ0dzg5YCwgcmluZ3MgYSBiZWxsLCBidXQgSSB3YW50IHRvIGJlIGNlcnRhaW4gYWJvdXQgaXRzIGFyY2hpdGVjdHVyZS4gSSBiZWxpZXZlIGl0JiMzOTtzIGZvciBSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNhcmRzLCBzbyBJIGtub3cgaXQmIzM5O3MgcmVsYXRlZCB0byBtb2Rlcm4gV2ktRmkuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgYSBQQ0kgb3IgVVNCIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBkcml2ZXIuIExldCBtZSBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCB0byBjb25maXJtIGl0cyBuYXR1cmUgYW5kLCBjb25zZXF1ZW50bHksIGl0cyBwb3RlbnRpYWwgZm9yIHVzZSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBsb3ltZW50IHByb2ZpbGUgdG8gcHJvcGVybHkgZ2F1Z2UgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTExPWlmIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM6Y29uZmlnIFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMzpjb25maWcgUlRXODlfODg1MUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI5OmNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzI6Y29uZmlnIFJUVzg5Xzg4NTJCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mzg6Y29uZmlnIFJUVzg5Xzg4NTJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzktXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQxOmNvbmZpZyBSVFc4OV84OTIyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1NTpjb25maWcgUlRXODlfODg1MUJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2Njpjb25maWcgUlRXODlfODg1MkFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4ODpjb25maWcgUlRXODlfODg1MkJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDA6Y29uZmlnIFJUVzg5Xzg4NTJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTI0OmNvbmZpZyBSVFc4OV84ODUyQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzNTpjb25maWcgUlRXODlfODg1MkNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYwOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTcyOmNvbmZpZyBSVFc4OV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4NDpjb25maWcgUlRXODlfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4NS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk4CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQXR0YWNrIFN1cmZhY2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpdCYjMzk7cyBnb3QgYSBmZXcgVVNCIGRyaXZlciBjb21wb25lbnRzIGxpc3RlZDogYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yIHRocm91Z2ggVVNCIGVtdWxhdGlvbiwgc29tZXRoaW5nIGxpa2UgdXNpbmcgYGR1bW15X2hjZGAuIFRoYXQmIzM5O3MgYWx3YXlzIGFuIGludGVyZXN0aW5nIGFyZWEgdG8gcHJvYmUuCgpOb3csIHRoZSBwYXRjaCBub3RlcyBzcGVjaWZpY2FsbHkgbWVudGlvbiBtb2RpZmljYXRpb25zIHRvIGBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlgIGFuZCBgcnR3ODlfZndfY21kX29mbGRfbWRlbGF5YC4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRob3NlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgdG91Y2hlZC4gSSBuZWVkIHRvIG1hcCBvdXQgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHRoZSBtb2RpZmljYXRpb25zIGRvLCBhbmQgdG8gY2hlY2sgZm9yIGludHJvZHVjZWQgYnVncy4gVGltZSB0byB0cmFjZSB0aGVpciBjYWxsIHNpdGVzIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTE3NTY9c3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfd3JpdGVfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTc3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMTc4MDpzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE3ODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMTgwOD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2lvX29wcyBydHc4OV9md19jbWRfb2ZsZF9pbyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTAtXHQudW5wYWNrID0gcnR3ODlfZndfY21kX29mbGRfdW5wYWNrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExODExOlx0LmRvX3VkZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTgxMi1cdC5kb19tZGVsYXkgPSBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA4NwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZTogVHJhY2luZyBgcnR3ODlfZndfY21kX29mbGRfaW9gKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIHRoZSBgcnR3ODlfZndfY21kX29mbGRfaW9gIGZ1bmN0aW9uLiBSaWdodCBub3csIG15IGZvY3VzIGlzIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nIGVtcGxveWVkIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLiBJdCYjMzk7cyBjbGVhciB0aGF0IGl0JiMzOTtzIGluIHVzZSwgYW5kIEkgbmVlZCB0byBlc3RhYmxpc2ggaXRzIGNvbnRleHQgd2l0aGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBUaGVyZWZvcmUsIG15IG5leHQgc3RlcCBpcyBvYnZpb3VzOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHByZWNpc2VseSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gV2hlcmUgYXJlIHRoZSByZWZlcmVuY2VzPyBXaGF0IG90aGVyIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIGl0PyBLbm93aW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGhlbHAgbWUgY29tcHJlaGVuZCBpdHMgcHVycG9zZSBhbmQgc2lnbmlmaWNhbmNlIHdpdGhpbiB0aGUgYHJ0dzg5YCBtb2R1bGUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBncmFwaCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2Z3X2NtZF9vZmxkX2lvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExNzk0PXN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MDg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9pb19vcHMgcnR3ODlfZndfY21kX29mbGRfaW8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MDktXHQucGFjayA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3BhY2ssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExODIzPXJ0dzg5X2Z3X2NtZF9vZmxkX2FsbG9jX2FuZF9nZXRfaW9fb3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4Mzc6XHRyZXR1cm4gXHUwMDI2cnR3ODlfZndfY21kX29mbGRfaW87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2OTgKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkludmVzdGlnYXRpbmcgdGhlIFVzYWdlIG9mIGBydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wc2AqKgoKQWxyaWdodCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHV0aWxpemF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sIGBydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wc2AuIEl0JiMzOTtzIGEga2V5IHBpZWNlLCBhbmQgdW5kZXJzdGFuZGluZyB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgd2l0aGluIHRoZSBgcnR3ODlgIGZpcm13YXJlIGNvbW1hbmQgb2ZmbG9hZCBjb250ZXh0IGlzIGNydWNpYWwgZm9yIGdyYXNwaW5nIGl0cyByb2xlIGFuZCwgYnkgZXh0ZW5zaW9uLCB0aGUgb3ZlcmFsbCBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgY29udGV4dHMgdG8gaW5mZXIgaXRzIHB1cnBvc2UgcHJvcGVybHkuIEZpbmRpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIGluc2lnaHQuIFRoaXMgaXMgZnVuZGFtZW50YWwgZm9yIGRlYnVnZ2luZyBvciBleHRlbmRpbmcgZnVuY3Rpb25hbGl0eS4gVGhlIGNhbGwgZ3JhcGggd2lsbCBiZSB0ZWxsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY4Njg9aW50IHJ0dzg5X2NvcmVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjg3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjY4NzM6XHRydHdkZXYtXHUwMDNlaW8gPSBydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wcyhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjg3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTE4MjI9Y29uc3Qgc3RydWN0IHJ0dzg5X2lvX29wcyAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MjM6cnR3ODlfZndfY21kX29mbGRfYWxsb2NfYW5kX2dldF9pb19vcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTgzNT1jb25zdCBzdHJ1Y3QgcnR3ODlfaW9fb3BzICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1ODM2OnJ0dzg5X2Z3X2NtZF9vZmxkX2FsbG9jX2FuZF9nZXRfaW9fb3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTgzNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM1NAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUlRXODkgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgUlRXODkgaW5pdGlhbGl6YXRpb24gY29kZSwgYW5kIEkgc2VlIHRoYXQgc29tZXRoaW5nIGlzIGJlaW5nIGFzc2lnbmVkIHRvIGBydHdkZXYtJmd0O2lvYCB3aXRoaW4gYHJ0dzg5X2NvcmVfaW5pdGAuIFJpZ2h0LCBhbmQgSSByZW1lbWJlciBgcnR3ZGV2LSZndDtpb2AgaXMgYSBwb2ludGVyIHRvIHRoZSBgc3RydWN0IHJ0dzg5X2lvX29wc2AuIEl0JiMzOTtzIGEga2V5IHN0cnVjdHVyZSBmb3IgbWFuYWdpbmcgSS9PIG9wZXJhdGlvbnMsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGhlcmUuIExldCYjMzk7cyB0cmFjZSBob3cgdGhhdCYjMzk7cyB1c2VkLCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hlcmUgYGRvX3VkZWxheWAgYW5kIGBkb19tZGVsYXlgIGFyZSBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhpcyBJL08gaW50ZXJmYWNlIGlzIGJlaW5nIGltcGxlbWVudGVkIGFuZCB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb191ZGVsYXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD02NDA3PXN0cnVjdCBydHc4OV9pb19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY0MDktXHRpbnQgKCp1bnBhY2spKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo2NDEwOlx0dm9pZCAoKmRvX3VkZWxheSkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNjQxMS1cdHZvaWQgKCpkb19tZGVsYXkpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD02OTM3PXN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9pb191ZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02OTM4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjY5Mzk6XHRpZiAocnR3ZGV2LVx1MDAzZWlvLVx1MDAzZWRvX3VkZWxheSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjY5NDA6XHRcdHJ0d2Rldi1cdTAwM2Vpby1cdTAwM2Vkb191ZGVsYXkocnR3ZGV2LCB1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02OTQxLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMTgwOD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2lvX29wcyBydHc4OV9md19jbWRfb2ZsZF9pbyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTAtXHQudW5wYWNrID0gcnR3ODlfZndfY21kX29mbGRfdW5wYWNrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExODExOlx0LmRvX3VkZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTgxMi1cdC5kb19tZGVsYXkgPSBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxOTAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIHJ0dzg5IERlbGF5IEZ1bmN0aW9ucyoqCgpSaWdodCwgc28gYHJ0dzg5X2lvX3VkZWxheWAgYW5kIGBydHc4OV9pb19tZGVsYXlgIGFyZSB0aGUgZGVsYXkgZnVuY3Rpb25zLCB0aGUgd3JhcHBlcnMgdGhlbXNlbHZlcy4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIHVuZGVyc3RhbmRpbmcgdGhlaXIgdXNhZ2Ugd2l0aGluIHRoaXMgYHJ0dzg5YCBjb250ZXh0LiBJIG5lZWQgdG8gdHJhY2UgdGhlaXIgY2FsbHMsIHNlZSB3aGVyZSBhbmQgaG93IHRoZXkmIzM5O3JlIGJlaW5nIGxldmVyYWdlZC4gQXJlIHRoZXkgdXNlZCBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLCB3YWl0aW5nIGZvciByZWdpc3RlcnMgdG8gc2V0dGxlLCBvciBmb3IgbW9yZSBnZW5lcmFsLXB1cnBvc2UgZGVsYXlzPyBXaGF0JiMzOTtzIHRoZSBncmFudWxhcml0eSBvZiB0aGVpciBhcHBsaWNhdGlvbj8gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgYmUga2V5IHRvIG9wdGltaXppbmcgcGVyZm9ybWFuY2Ugb3IgaWRlbnRpZnlpbmcgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHdpdGhpbiB0aGUgZHJpdmVyLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIHNpdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9pb191ZGVsYXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD02OTI5PXN0YXRpYyBpbmxpbmUgaW50IHJ0dzg5X2lvX3VucGFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNjkzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjY5Mzc6c3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2lvX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5Mzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM9MTM0Nz1zdGF0aWMgdm9pZCBydHc4OV9waHlfY29uZmlnX2JiX3JlZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xMzYwLVx0fSBlbHNlIGlmIChyZWctXHUwMDNlYWRkciA9PSAweGZiKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jOjEzNjE6XHRcdHJ0dzg5X2lvX3VkZWxheShydHdkZXYsIDUwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2Mi1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmYSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzYzOlx0XHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCA1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2NC1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmOSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzY1Olx0XHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2Ni1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWRhdGEgPT0gQllQQVNTX0NSX0RBVEEpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jPTE2ODk9dm9pZCBydHc4OV9waHlfY29uZmlnX3JmX3JlZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xNzAwLVx0fSBlbHNlIGlmIChyZWctXHUwMDNlYWRkciA9PSAweGZiKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jOjE3MDE6XHRcdHJ0dzg5X2lvX3VkZWxheShydHdkZXYsIDUwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTcwMi1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmYSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxNzAzOlx0XHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCA1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTcwNC1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmOSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxNzA1Olx0XHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTcwNi1cdH0gZWxzZSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyNTgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHNwZWFraW5nIGZyb20gdGhlIGZpcnN0IHBlcnNvbiBhcyB0aG91Z2ggaXQmIzM5O3MgbXkgb3duIGludGVybmFsIGRpYWxvZ3VlLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBgcnR3ODlfaW9fbWRlbGF5YCoqCgpIbW0sIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBydHc4OV9pb19tZGVsYXlgIG5vdywgYXJlIHdlPyBSaWdodCwgSSYjMzk7dmUgc2VlbiB0aGF0IGZ1bmN0aW9uIGEgaHVuZHJlZCB0aW1lcy4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGNvbnRleHQgYXJlIHdlIGNvbnNpZGVyaW5nIGl0IGluPyBJcyB0aGlzIGFib3V0IHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24/IE9yIG1heWJlIGluIGhhbmRsaW5nIHNvbWUga2luZCBvZiBkYXRhIHRyYW5zZmVyIG9yIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmU/IEtub3dpbmcgdGhhdCBpcyBrZXkuICpydHc4OV9pb19tZGVsYXkqIGl0c2VsZiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIC0gaXQmIzM5O3MgYSBkZWxheSBmdW5jdGlvbiBtZWFzdXJlZCBpbiBtaWxsaXNlY29uZHMuIFN0YW5kYXJkIHN0dWZmLiBXaGF0JiMzOTtzIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBwYXJ0aWN1bGFyIGNhbGw/IElzIGl0IGZvciBhIGNyaXRpY2FsIHRpbWluZyBsb29wIG9yIGlzIGl0IGp1c3Qgd2FpdGluZyBmb3IgYSBkZXZpY2UgcmVhZHkgc2lnbmFsLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8KCkkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBzaG91bGQgYmUgd29ycmllZCBhYm91dD8gRG9lcyB0aGlzIGRlbGF5IGludGVyYWN0IHdpdGggYW55IG90aGVyIHRpbWVycywgb3IgaW50ZXJydXB0cz8gSXMgdGhlIGRlbGF5IHZhbHVlIGZpeGVkIG9yIGNhbGN1bGF0ZWQgZHluYW1pY2FsbHk/IElmIGl0JiMzOTtzIHZhcmlhYmxlLCBob3cgaXMgdGhhdCB2YWx1ZSBkZXJpdmVkPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBvdmVyZmxvdyBpc3N1ZXM/CgpMZXQmIzM5O3MgbG9vayBhdCBob3cgdGhlIGRlbGF5IGlzIGltcGxlbWVudGVkIGluIHRoZSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgd2UgYXJlIHdvcmtpbmcgd2l0aC4uLiBpcyBpdCBidXN5IHdhaXRpbmcgb3IgZG9lcyBpdCB5aWVsZCB0aGUgQ1BVPyBIb3cgYWNjdXJhdGUgaXMgdGhpcyAqbWRlbGF5KiBpbXBsZW1lbnRhdGlvbj8gQXJlIHRoZXJlIGFueSBiZXR0ZXIsIG1vcmUgcHJlY2lzZSB0aW1pbmcgbWV0aG9kcyB3ZSBjb3VsZCB1c2UgaGVyZT8gUGVyaGFwcyBhIGhhcmR3YXJlIHRpbWVyLCBvciBhIG1vcmUgZ3JhbnVsYXIga2VybmVsLWxldmVsIGRlbGF5IGZ1bmN0aW9uIG1pZ2h0IGJlIG1vcmUgYXBwcm9wcmlhdGUsIGRlcGVuZGluZyBvbiB0aGUgcmVxdWlyZW1lbnRzLgoKT2theSwgbGV0JiMzOTtzIHRyYWNlIHRoaXMgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBUaW1lIHRvIGdldCB0byB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfaW9fbWRlbGF5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9NjkzNz1zdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfaW9fdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo2OTQ1OnN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9pb19tZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02OTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jPTEzNDc9c3RhdGljIHZvaWQgcnR3ODlfcGh5X2NvbmZpZ19iYl9yZWcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1NC1cdGlmIChyZWctXHUwMDNlYWRkciA9PSAweGZlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jOjEzNTU6XHRcdHJ0dzg5X2lvX21kZWxheShydHdkZXYsIDUwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1Ni1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzU3Olx0XHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCA1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1OC1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmYykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzU5Olx0XHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2MC1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmYikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM9MTY4OT12b2lkIHJ0dzg5X3BoeV9jb25maWdfcmZfcmVnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTQtXHRpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxNjk1Olx0XHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCA1MCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTYtXHR9IGVsc2UgaWYgKHJlZy1cdTAwM2VhZGRyID09IDB4ZmQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTY5NzpcdFx0cnR3ODlfaW9fbWRlbGF5KHJ0d2RldiwgNSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTgtXHR9IGVsc2UgaWYgKHJlZy1cdTAwM2VhZGRyID09IDB4ZmMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTY5OTpcdFx0cnR3ODlfaW9fbWRlbGF5KHJ0d2RldiwgMSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE3MDAtXHR9IGVsc2UgaWYgKHJlZy1cdTAwM2VhZGRyID09IDB4ZmIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jPTE3MTM9dm9pZCBydHc4OV9waHlfY29uZmlnX3JmX3JlZ192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xNzE4LVx0aWYgKHJlZy1cdTAwM2VhZGRyID09IDB4ZmUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTcxOTpcdFx0cnR3ODlfaW9fbWRlbGF5KHJ0d2RldiwgNTApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xNzIwLVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjkxCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoOiBGaXJtd2FyZSBDb21tdW5pY2F0aW9uIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyB0aGUgYHNyY2AgZmllbGQgd2l0aGluIHRoZSBgcnR3ODlfZndfY21kX29mbGRfYXJnYCBzdHJ1Y3QgdG8gYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUNgIHdoZW4gaXNzdWluZyBhIGRlbGF5IGNvbW1hbmQgdG8gdGhlIGZpcm13YXJlLiBUaGF0JiMzOTtzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgd2UmIzM5O3JlIGFsdGVyaW5nIHRoZSBkYXRhIHRoZSBkcml2ZXIgc2VuZHMgZG93biB0aGUgbGluZS4gVGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZnV6emluZz8KCkl0JiMzOTtzIGEgbW9kaWZpY2F0aW9uIGluIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgZmlybXdhcmUsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gRGVsYXkgY29tbWFuZHMgYXJlbiYjMzk7dCB0eXBpY2FsbHkgdGhlIGp1aWNpZXN0IHRhcmdldHMsIGJ1dCBhbnkgZnVuY3Rpb25hbCBjaGFuZ2Ugd2FycmFudHMgYSBjbG9zZXIgbG9vay4KCkFoLCBidXQgaXMgdGhpcyBhY3R1YWxseSBmdXp6YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJZiB3ZSB1c2UgYSBkdW1teSBVU0IgSENELCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCwgYW5kIGVtdWxhdGUgdGhlIFVTQiBkZXZpY2UsIHRoZW4gdGhlIGRyaXZlciAqd2lsbCogcHJvYmUgYW5kIHNlbmQgdGhlc2UgY29tbWFuZHMgdG8gdGhlIGVtdWxhdGVkIGZpcm13YXJlLiBUaGUgZnV6emVyIGNvdWxkIHRoZW4gaW50ZXJjZXB0IHRoZXNlIGNvbW1hbmRzIGFuZCBjcmFmdCByZXNwb25zZXMuIEV4Y2VsbGVudC4KClJpZ2h0LCBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci4gU3l6a2FsbGVyLCB3aGljaCBpcyBvdXIgZnV6emVyIG9mIGNob2ljZSwgdXNlcyBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpIGZ1enppbmcuIEhvd2V2ZXIsIGl0ICphbHNvKiBzdXBwb3J0cyBmdXp6aW5nIFVTQiBkZXZpY2VzIHVzaW5nIGBkdW1teV9oY2RgLgoKSWYgd2UmIzM5O3JlIGdvaW5nIHRvIHB1cnN1ZSB0aGlzLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGUgYXBwcm9wcmlhdGUgUlRXODkgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuIExldCBtZSBtYWtlIGEgbWVudGFsIG5vdGUgdG8gY2hlY2sgdGhhdCBgQ09ORklHX1JUVzg5Xzg4NTFCVWAsIGBDT05GSUdfUlRXODlfODg1MkFVYCwgYENPTkZJR19SVFc4OV84ODUyQlVgLCBgQ09ORklHX1JUVzg5Xzg4NTJDVWAsIGFuZCBgQ09ORklHX1JUVzg5Xzg5MjJBVWAgYXJlIGFsbCBhY3RpdmF0ZWQuCgpIb2xkIG9uLCBJIHNob3VsZCBhbHNvIGNoZWNrIGlmIGBSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVJgIGlzIHVzZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZS4gR290dGEgZ2V0IHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTQwCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBSZW1vdmVkIEZpcm13YXJlIEVudW0qKgoKUmlnaHQsIHNvIHNvbWV0aGluZyB3YXMgcHVsbGVkIG91dCBvZiB0aGUgZW51bSBpbiBgZncuaGAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0ICp3aHkqIGFuZCB3aGF0IGltcGFjdCB0aGF0IHJlbW92YWwgbWlnaHQgaGF2ZS4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIGNvZGUgdG8gdHJhY2UgdGhlIGltcGxpY2F0aW9ucy4KCkZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHVzYWdlcyBvZiBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBhbmQgYHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheWAuIFRoZXNlIHNlZW0gbGlrZSByZWxhdGVkIGNvbW1hbmRzLiBXZXJlIHRoZXNlIHRoZSBzcGVjaWZpYyBlbGVtZW50cyBhZmZlY3RlZCBieSB0aGUgcmVtb3ZhbD8gQXJlIHRoZXkgc3RpbGwgYmVpbmcgdXNlZCBhbnl3aGVyZT8gQXJlIHRoZXJlIGFueSBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGNvbnNpZGVyPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhleSB3ZXJlIGJlaW5nIHVzZWQgYmVmb3JlIHRoZSBjaGFuZ2UgYW5kIHdoYXQgbW9kaWZpY2F0aW9ucywgaWYgYW55LCB3ZXJlIG1hZGUgdG8gc3Vic3RpdHV0ZSB0aGVpciByZW1vdmFsLiBUaGlzIGlzIGdvaW5nIHRvIGludm9sdmUgc29tZSBjYXJlZnVsIGdyZXBwaW5nIGFuZCBjb2RlIGRpdmluZywgYnV0IGl0JiMzOTtzIGEgY3JpdGljYWwgc3RlcCB0byB1bmRlcnN0YW5kaW5nIHRoZSByYW1pZmljYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYm90aCB0aGUga2VybmVsIGRyaXZlcnMgYW5kIHBvdGVudGlhbGx5IGFueSBhc3NvY2lhdGVkIHVzZXJzcGFjZSB0b29scyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmlybXdhcmUgbm93IGhhbmRsZXMgdGhlIG9wZXJhdGlvbnMgcHJldmlvdXNseSBoYW5kbGVkIGJ5IHdoYXRldmVyIHdhcyByZW1vdmVkIGZyb20gdGhlIGVudW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMTc1Nj1zdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF93cml0ZV9yZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExNzc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExNzgwOnN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTc4MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExODA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaW9fb3BzIHJ0dzg5X2Z3X2NtZF9vZmxkX2lvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTgxMC1cdC51bnBhY2sgPSBydHc4OV9md19jbWRfb2ZsZF91bnBhY2ssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MTE6XHQuZG9fdWRlbGF5ID0gcnR3ODlfZndfY21kX29mbGRfdWRlbGF5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODEyLVx0LmRvX21kZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyNjIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IHJlbGV2YW50IGFyZSBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBhbmQgYHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheWAuIEFsc28sIGBydHc4OV9waHlfY29uZmlnX2JiX3JlZ2AgYW5kIGBydHc4OV9waHlfY29uZmlnX3JmX3JlZ2Agd2hpY2ggY2FsbCB0aG9zZSBkZWxheSBmdW5jdGlvbnMuCgpXYWl0IGEgc2Vjb25k4oCmdGhpcyBpcyBqdXN0IGNoYW5naW5nIHRoZSBgc3JjYCBmaWVsZCB3aXRoaW4gYSBkZWxheSBjb21tYW5kIHRvIHRoZSBmaXJtd2FyZS4gSG9uZXN0bHksIGlzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyBJdCBzZWVtcyBsaWtlIGEgcHJldHR5IHRhcmdldGVkIG1vZGlmaWNhdGlvbiB0byBqdXN0IG9uZSB2ZXJ5IHNwZWNpZmljIGNvbW1hbmQuIElmIHRoZSBmdXp6ZXIgaGl0cyB0aGlzLCBpdCYjMzk7bGwgcHJvYmFibHkganVzdCB0cmlnZ2VyIGEgZGVsYXksIHdoaWNoIGlzIG5vdCBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCAqaXMqIHRlY2huaWNhbGx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0IGRlc2VydmVzIHNvbWUgdGhvdWdodC4gTGV0IG1lIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE3ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE3ODA6XHRzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpXG4xMTc4MTpcdHtcbjExNzgyOlx0XHRzdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfYXJnIGNtZCA9IHtcbjExNzgzOlx0XHRcdC5zcmMgPSBSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDLFxuMTE3ODQ6XHRcdFx0LnR5cGUgPSBSVFc4OV9GV19DTURfT0ZMRF9ERUxBWSxcbjExNzg1Olx0XHRcdC52YWx1ZSA9IHVzLFxuMTE3ODY6XHRcdH07XG4xMTc4NzpcdFx0aW50IHJldDtcbjExNzg4Olx0XG4xMTc4OTpcdFx0cmV0ID0gcnR3ODlfZndfY21kX29mbGRfZW5xdWV1ZShydHdkZXYsIFx1MDAyNmNtZCk7XG4xMTc5MDpcdFx0aWYgKHJldClcbjExNzkxOlx0XHRcdHVkZWxheSh1cyk7XG4xMTc5MjpcdH1cbjExNzkzOlx0XG4xMTc5NDpcdHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcbjExNzk1Olx0e1xuMTE3OTY6XHRcdHN0cnVjdCBydHc4OV9md19jbWRfb2ZsZF9hcmcgY21kID0ge1xuMTE3OTc6XHRcdFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsXG4xMTc5ODpcdFx0XHQudHlwZSA9IFJUVzg5X0ZXX0NNRF9PRkxEX0RFTEFZLFxuMTE3OTk6XHRcdFx0LnZhbHVlID0gbXMgKiAxMDAwLFxuMTE4MDA6XHRcdH07XG4xMTgwMTpcdFx0aW50IHJldDtcbjExODAyOlx0XG4xMTgwMzpcdFx0cmV0ID0gcnR3ODlfZndfY21kX29mbGRfZW5xdWV1ZShydHdkZXYsIFx1MDAyNmNtZCk7XG4xMTgwNDpcdFx0aWYgKHJldClcbjExODA1Olx0XHRcdG1kZWxheShtcyk7XG4xMTgwNjpcdH1cbjExODA3Olx0XG4xMTgwODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaW9fb3BzIHJ0dzg5X2Z3X2NtZF9vZmxkX2lvID0ge1xuMTE4MDk6XHRcdC5wYWNrID0gcnR3ODlfZndfY21kX29mbGRfcGFjayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNjgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEZpcm13YXJlIENvbW1hbmQgRW5xdWV1ZWluZyoqCgpPa2F5LCBzbyB3aGF0IHdlIGhhdmUgaGVyZSBpcyBhIHByb2Nlc3MgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbGx5IGFib3V0IGdldHRpbmcgYSBjb21tYW5kIHRvIHRoZSBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIHRha2Vhd2F5IGlzIHRoYXQgdGhpcyBtZWNoYW5pc20gdXRpbGl6ZXMgYW4gZW5xdWV1ZSBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGBydHc4OV9md19jbWRfb2ZsZF9lbnF1ZXVlYC4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBwYXRoLiBJdCBzZWVtcyBwcmV0dHkgcm9idXN0LCBiZWNhdXNlIGlmIHRoYXQgZmFpbHMsIHRoZXJlJiMzOTtzIGEgZmFsbGJhY2sgc3RyYXRlZ3kgaW52b2x2aW5nIGB1ZGVsYXlgIGFuZCBgbWRlbGF5YCwgaW5kaWNhdGluZyB0aGV5IGFyZSB1c2luZyBhIGJhc2ljIGRlbGF5IGZhbGxiYWNrLCBwZXJoYXBzIGZvciBzdGFiaWxpdHkgaWYgZW5xdWV1ZSBmYWlscy4KCkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBJIGFtIGNvbmZpZGVudCB0aGF0IHRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIHRocm91Z2ggVVNCIGZ1enppbmcgLSB0aGF0JiMzOTtzIHZlcnkgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCwgYW5kIGluZm9ybXMgbXkgbGF0ZXIgcHJpb3JpdGllcy4gVGhpcyBpcyBhIHNvbGlkIHRhcmdldCBmb3IgaW52ZXN0aWdhdGlvbi4gVGhlIGNyaXRpY2FsIHN5bWJvbHMgdG8gc2NydXRpbml6ZSBhcmUsIG9idmlvdXNseSwgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBUaGV5IHJlcHJlc2VudCB0aGUgYmFja3VwIGRlbGF5cywgYW5kIGlmIHRoZSBtYWluIGVucXVldWUgZnVuY3Rpb24gZmFpbHMsIHNvbWV0aGluZyBjb3VsZCBnbyB2ZXJ5IHdyb25nLgoKUmVnYXJkaW5nIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLCBpdCBzZWVtcyB0aGlzIGNvZGUgaXMgZW5hYmxlZCBieSB0aGUgYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYCBjb25maWd1cmF0aW9ucy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBhZmZlY3QgdGhpcyBjb2RlIHBhdGguIEkgd2lsbCBuZWVkIHRvIHNlYXJjaCB0aGUgY29uZmlnIHRvIGRldGVybWluZSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTExPWlmIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM6Y29uZmlnIFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMzpjb25maWcgUlRXODlfODg1MUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI5OmNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzI6Y29uZmlnIFJUVzg5Xzg4NTJCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mzg6Y29uZmlnIFJUVzg5Xzg4NTJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzktXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQxOmNvbmZpZyBSVFc4OV84OTIyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1NTpjb25maWcgUlRXODlfODg1MUJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2Njpjb25maWcgUlRXODlfODg1MkFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4ODpjb25maWcgUlRXODlfODg1MkJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDA6Y29uZmlnIFJUVzg5Xzg4NTJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTI0OmNvbmZpZyBSVFc4OV84ODUyQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzNTpjb25maWcgUlRXODlfODg1MkNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYwOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTcyOmNvbmZpZyBSVFc4OV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4NDpjb25maWcgUlRXODlfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4NS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxMzkKCQkJCQkJCW91dHB1dDogMTY0CgkJCQkJCQl0aG91Z2h0czogNDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBSVFc4OSBGaXJtd2FyZSBDb21tYW5kIE9mZmxvYWQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBnZXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQ7IGl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgUlRXODlfODg1MUJVYCwgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYW5kIGBSVFc4OV84OTIyQVVgIGFyZSBhbGwgc2V0LiBOb3csIHRoZSBtZWF0IG9mIGl0OiB0aGlzIHBhdGNoIGFsdGVycyB0aGUgYHNyY2AgZmllbGQgd2l0aGluIHRoZSBmaXJtd2FyZSBjb21tYW5kLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaXQgZnJvbSBgUlRXODlfRldfQ01EX09GTERfU1JDX09USEVSYCB0byBgUlRXODlfRldfQ01EX09GTERfU1JDX01BQ2AuIFRoaXMgaXMgYSBjbGVhciBkYXRhIGNoYW5nZSBzZW50IHRvIHRoZSBmaXJtd2FyZSBhbmQgaW1tZWRpYXRlbHkgc3BhcmtzIG15IGludGVyZXN0IGFzIGEgZnV6emluZyBjYW5kaWRhdGUuCgpJcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQ/IEFic29sdXRlbHkuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjb3NtZXRpYyBjaGFuZ2U7IGl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc2hpZnQgaW4gaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGZpcm13YXJlLiBBIGZ1enplciBjYW4gZGVmaW5pdGVseSBpbnRlcmNlcHQgdGhlc2UgY29tbWFuZHMgYW5kIGluamVjdCBtb2RpZmllZCByZXNwb25zZXMuIFRoaXMgaXMgYSBwcmltZSBleGFtcGxlIG9mIHdoZXJlIGZ1enppbmcgc2hpbmVzLgoKU28sIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enplciBvbiBhcmUgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBJIG5lZWQgdG8gY29uZmlybSBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBpcyByZWFjaGFibGUsIGhvd2V2ZXIuIExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgY2FsbGVkIGZyb20gYHJ0dzg5X2lvX3VkZWxheWAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYHJ0dzg5X3BoeV9jb25maWdfYmJfcmVnYCBhbmQgYHJ0dzg5X3BoeV9jb25maWdfcmZfcmVnYC4gUGVyZmVjdC4gVGhlc2Ugcm91dGluZXMgYXJlIGNsZWFybHkgcGFydCBvZiB0aGUgUEhZIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCB3aGljaCBoYXBwZW5zIGR1cmluZyBkZXZpY2UgcHJvYmUgb3IgaW50ZXJmYWNlIGJyaW5nLXVwLiBTbyB0aGUgdGFyZ2V0IGlzIGNsZWFybHkgcmVhY2hhYmxlLgoKVGhlcmVmb3JlLCB0byBzb2xpZGlmeSBteSB0aGlua2luZzoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gYmVjYXVzZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IHRoZSBkcml2ZXIgYW5kIGZpcm13YXJlIGNvbW11bmljYXRlLgoqICAgKipGb2N1c1N5bWJvbHM6KiogYFsmIzM0O3J0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSYjMzQ7LCAmIzM0O3J0dzg5X2Z3X2NtZF9vZmxkX21kZWxheSYjMzQ7XWAgLSBhcyB0aGV5IHJlbGF0ZSB0byB0aGUgdGFyZ2V0IGNvbW1hbmQuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYFsmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LCAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LCAmIzM0O1JUVzg5Xzg4NTJCVSYjMzQ7LCAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LCAmIzM0O1JUVzg5Xzg5MjJBVSYjMzQ7XWAgLSB0byBlbmFibGUgdGhlIHRhcmdldC4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc291cmNlIGZpZWxkIG9mIHRoZSBkZWxheSBjb21tYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLCBhbmQgaXQgaXMgZWFzaWx5IHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4gVGltZSB0byBmaXJlIHVwIHRoZSBmdXp6ZXIhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OV84ODUxQlUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQ1UmIzM0OywKICAgICYjMzQ7UlRXODlfODkyMkFVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfZndfY21kX29mbGRfdWRlbGF5JiMzNDssCiAgICAmIzM0O3J0dzg5X2Z3X2NtZF9vZmxkX21kZWxheSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc291cmNlIGZpZWxkIG9mIHRoZSBkZWxheSBjb21tYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLCByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkmIzM0OywKICAgICYjMzQ7cnR3ODlfZndfY21kX29mbGRfbWRlbGF5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzb3VyY2UgZmllbGQgb2YgdGhlIGRlbGF5IGNvbW1hbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM0OjAxLjk0OTQ4Mzg3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxODk1ODE3MTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84ODUyQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJDVVwiLFxuICAgIFwiUlRXODlfODkyMkFVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODlfZndfY21kX29mbGRfdWRlbGF5XCIsXG4gICAgXCJydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc291cmNlIGZpZWxkIG9mIHRoZSBkZWxheSBjb21tYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MDEuOTQ5NDkyMTE0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzY4MTczNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4OTA5MDZkNjJiNWEyM2EzYWZkM2JiZmU5MjliMzMyZWNhZWMzMmEzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDE0IDEwOjM0OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4xYzM3MDM0MTI1MzMyNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcXG5AQCAtMTE3ODAsNyArMTE3ODAsNyBAQCBzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF93cml0ZV9yZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfYXJnIGNtZCA9IHtcXG4tXFx0XFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcXG4rXFx0XFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsXFxuIFxcdFxcdC50eXBlID0gUlRXODlfRldfQ01EX09GTERfREVMQVksXFxuIFxcdFxcdC52YWx1ZSA9IHVzLFxcbiBcXHR9O1xcbkBAIC0xMTc5NCw3ICsxMTc5NCw3IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcXG4gc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfbWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKVxcbiB7XFxuIFxcdHN0cnVjdCBydHc4OV9md19jbWRfb2ZsZF9hcmcgY21kID0ge1xcbi1cXHRcXHQuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX09USEVSLFxcbitcXHRcXHQuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX01BQyxcXG4gXFx0XFx0LnR5cGUgPSBSVFc4OV9GV19DTURfT0ZMRF9ERUxBWSxcXG4gXFx0XFx0LnZhbHVlID0gbXMgKiAxMDAwLFxcbiBcXHR9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcXG5pbmRleCAyMDcyMWQ1MjA5YWEzYS4uM2ZjYjNhYzhjNzExNTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXFxuQEAgLTMxNDIsNyArMzE0Miw2IEBAIGVudW0gcnR3ODlfZndfY21kX29mbGRfYXJnX3NyYyB7XFxuIFxcdFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19SRixcXG4gXFx0UlRXODlfRldfQ01EX09GTERfU1JDX01BQyxcXG4gXFx0UlRXODlfRldfQ01EX09GTERfU1JDX1JGX0RESUUsXFxuLVxcdFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcXG4gfTtcXG4gXFxuIGVudW0gcnR3ODlfZndfY21kX29mbGRfYXJnX3R5cGUge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDozNDowMi40ODcyMjQyNzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMzU4MDYzMDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84ODUyQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJDVVwiLFxuICAgIFwiUlRXODlfODkyMkFVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODlfZndfY21kX29mbGRfdWRlbGF5XCIsXG4gICAgXCJydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc291cmNlIGZpZWxkIG9mIHRoZSBkZWxheSBjb21tYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4OTA5MDZkNjJiNWEyM2EzYWZkM2JiZmU5MjliMzMyZWNhZWMzMmEzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTA6MzQ6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4xYzM3MDM0MTI1MzMyNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG5AQCAtMTE3ODAsNyArMTE3ODAsNyBAQCBzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF93cml0ZV9yZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxuIHtcbiBcdHN0cnVjdCBydHc4OV9md19jbWRfb2ZsZF9hcmcgY21kID0ge1xuLVx0XHQuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX09USEVSLFxuK1x0XHQuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX01BQyxcbiBcdFx0LnR5cGUgPSBSVFc4OV9GV19DTURfT0ZMRF9ERUxBWSxcbiBcdFx0LnZhbHVlID0gdXMsXG4gXHR9O1xuQEAgLTExNzk0LDcgKzExNzk0LDcgQEAgc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxuIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfYXJnIGNtZCA9IHtcbi1cdFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcbitcdFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsXG4gXHRcdC50eXBlID0gUlRXODlfRldfQ01EX09GTERfREVMQVksXG4gXHRcdC52YWx1ZSA9IG1zICogMTAwMCxcbiBcdH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXG5pbmRleCAyMDcyMWQ1MjA5YWEzYS4uM2ZjYjNhYzhjNzExNTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxuQEAgLTMxNDIsNyArMzE0Miw2IEBAIGVudW0gcnR3ODlfZndfY21kX29mbGRfYXJnX3NyYyB7XG4gXHRSVFc4OV9GV19DTURfT0ZMRF9TUkNfUkYsXG4gXHRSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDLFxuIFx0UlRXODlfRldfQ01EX09GTERfU1JDX1JGX0RESUUsXG4tXHRSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVIsXG4gfTtcbiBcbiBlbnVtIHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZ190eXBlIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM0OjAyLjQ4NzIyNjIwM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NjM4MjM1NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBydHc4OS9mdy5jYCBhbmQgYHJ0dzg5L2Z3LmhgLiBTZWVtcyBsaWtlIHRoZXkncmUgcmVuYW1pbmcgYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUmAgdG8gYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUNgIGluIGEgY291cGxlIG9mIGZ1bmN0aW9ucyDigJMgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBUaGV5J3JlIGFsc28gcmVtb3ZpbmcgaXQgZnJvbSB0aGUgYGVudW0gcnR3ODlfZndfY21kX29mbGRfYXJnX3NyY2AuIEludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIGl0IGNvdWxkIGJlIHNvbWUgc29ydCBvZiBvZmZsb2FkIGNvbW1hbmQgc291cmNlIHJlbGF0ZWQgdG8gTUFDIGFkZHJlc3Nlcy5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBJJ20gbm93IHRoaW5raW5nIGFib3V0IHdoZXJlIHRoaXMgY29kZSB3b3VsZCBldmVuIGJlIGV4ZXJjaXNlZC4gU3BlY2lmaWNhbGx5LCBJJ20gY3VyaW91cyBpZiB0aGlzIGNvZGUgcGF0aCBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgZHJpdmVyLCBgcnR3ODlgLCByaW5ncyBhIGJlbGwsIGJ1dCBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCBpdHMgYXJjaGl0ZWN0dXJlLiBJIGJlbGlldmUgaXQncyBmb3IgUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjYXJkcywgc28gSSBrbm93IGl0J3MgcmVsYXRlZCB0byBtb2Rlcm4gV2ktRmkuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgYSBQQ0kgb3IgVVNCIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBkcml2ZXIuIExldCBtZSBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCB0byBjb25maXJtIGl0cyBuYXR1cmUgYW5kLCBjb25zZXF1ZW50bHksIGl0cyBwb3RlbnRpYWwgZm9yIHVzZSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBsb3ltZW50IHByb2ZpbGUgdG8gcHJvcGVybHkgZ2F1Z2UgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM0OjA4LjI1MTA1MTgyNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODI4NjE1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlRXODlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTE9aWYgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NTU6Y29uZmlnIFJUVzg5Xzg4NTFCVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY2OmNvbmZpZyBSVFc4OV84ODUyQUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc4LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6ODg6Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04OS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMDpjb25maWcgUlRXODlfODg1MkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNDpjb25maWcgUlRXODlfODg1MkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyNS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM1OmNvbmZpZyBSVFc4OV84ODUyQ1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2MDpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2MS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzI6Y29uZmlnIFJUVzg5X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxODQ6Y29uZmlnIFJUVzg5X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg1LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDozNDowOC4zNDkzNDcyNzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDE0NzI4NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQXR0YWNrIFN1cmZhY2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgaXQncyBnb3QgYSBmZXcgVVNCIGRyaXZlciBjb21wb25lbnRzIGxpc3RlZDogYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGVyZSdzIGEgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3IgdGhyb3VnaCBVU0IgZW11bGF0aW9uLCBzb21ldGhpbmcgbGlrZSB1c2luZyBgZHVtbXlfaGNkYC4gVGhhdCdzIGFsd2F5cyBhbiBpbnRlcmVzdGluZyBhcmVhIHRvIHByb2JlLlxuXG5Ob3csIHRoZSBwYXRjaCBub3RlcyBzcGVjaWZpY2FsbHkgbWVudGlvbiBtb2RpZmljYXRpb25zIHRvIGBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlgIGFuZCBgcnR3ODlfZndfY21kX29mbGRfbWRlbGF5YC4gVGhhdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhvc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB0b3VjaGVkLiBJIG5lZWQgdG8gbWFwIG91dCB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhlIG1vZGlmaWNhdGlvbnMgZG8sIGFuZCB0byBjaGVjayBmb3IgaW50cm9kdWNlZCBidWdzLiBUaW1lIHRvIHRyYWNlIHRoZWlyIGNhbGwgc2l0ZXMgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyOTgsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MTYuNzY0MDc4MTg3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTMyNDg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExNzU2PXN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3dyaXRlX3JmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTc3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE3ODA6c3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTc4MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTE4MDg9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9pb19vcHMgcnR3ODlfZndfY21kX29mbGRfaW8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTAtXFx0LnVucGFjayA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VucGFjayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MTE6XFx0LmRvX3VkZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTItXFx0LmRvX21kZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MTYuODkzNDMxNTI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTcwMTE3NTg5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlOiBUcmFjaW5nIGBydHc4OV9md19jbWRfb2ZsZF9pb2AqKlxuXG5Pa2F5LCBzbyBJJ20gZGVhbGluZyB3aXRoIHRoZSBgcnR3ODlfZndfY21kX29mbGRfaW9gIGZ1bmN0aW9uLiBSaWdodCBub3csIG15IGZvY3VzIGlzIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHdoZXJlIGl0J3MgYmVpbmcgZW1wbG95ZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBkcml2ZXIuIEl0J3MgY2xlYXIgdGhhdCBpdCdzIGluIHVzZSwgYW5kIEkgbmVlZCB0byBlc3RhYmxpc2ggaXRzIGNvbnRleHQgd2l0aGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBUaGVyZWZvcmUsIG15IG5leHQgc3RlcCBpcyBvYnZpb3VzOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHByZWNpc2VseSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gV2hlcmUgYXJlIHRoZSByZWZlcmVuY2VzPyBXaGF0IG90aGVyIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIGl0PyBLbm93aW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGhlbHAgbWUgY29tcHJlaGVuZCBpdHMgcHVycG9zZSBhbmQgc2lnbmlmaWNhbmNlIHdpdGhpbiB0aGUgYHJ0dzg5YCBtb2R1bGUuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwODcsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDozNDoyNi41OTQ2MTAyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTkxMzA4NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfZndfY21kX29mbGRfaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExNzk0PXN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTgwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MDg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9pb19vcHMgcnR3ODlfZndfY21kX29mbGRfaW8gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODA5LVxcdC5wYWNrID0gcnR3ODlfZndfY21kX29mbGRfcGFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMTgyMz1ydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExODM3OlxcdHJldHVybiBcXHUwMDI2cnR3ODlfZndfY21kX29mbGRfaW87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODM4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MjYuNzEzNzQ2MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA4NzU1OTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFVzYWdlIG9mIGBydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wc2AqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgdXRpbGl6YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwgYHJ0dzg5X2Z3X2NtZF9vZmxkX2FsbG9jX2FuZF9nZXRfaW9fb3BzYC4gSXQncyBhIGtleSBwaWVjZSwgYW5kIHVuZGVyc3RhbmRpbmcgd2hlcmUgaXQncyBjYWxsZWQgd2l0aGluIHRoZSBgcnR3ODlgIGZpcm13YXJlIGNvbW1hbmQgb2ZmbG9hZCBjb250ZXh0IGlzIGNydWNpYWwgZm9yIGdyYXNwaW5nIGl0cyByb2xlIGFuZCwgYnkgZXh0ZW5zaW9uLCB0aGUgb3ZlcmFsbCBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0cyB0byBpbmZlciBpdHMgcHVycG9zZSBwcm9wZXJseS4gRmluZGluZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgaW5zaWdodC4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3IgZGVidWdnaW5nIG9yIGV4dGVuZGluZyBmdW5jdGlvbmFsaXR5LiBUaGUgY2FsbCBncmFwaCB3aWxsIGJlIHRlbGxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2OTgsIk91dHB1dFRva2VucyI6NTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDozNDozMC4zMjI1MDM4MjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjU0MjgxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz02ODY4PWludCBydHc4OV9jb3JlX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjg3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo2ODczOlxcdHJ0d2Rldi1cXHUwMDNlaW8gPSBydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wcyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY4NzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTE4MjI9Y29uc3Qgc3RydWN0IHJ0dzg5X2lvX29wcyAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExODIzOnJ0dzg5X2Z3X2NtZF9vZmxkX2FsbG9jX2FuZF9nZXRfaW9fb3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTU4MzU9Y29uc3Qgc3RydWN0IHJ0dzg5X2lvX29wcyAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU4MzY6cnR3ODlfZndfY21kX29mbGRfYWxsb2NfYW5kX2dldF9pb19vcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTgzNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MzAuNDI5MDUxNzI4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzY0NTc5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSVFc4OSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUlRXODkgaW5pdGlhbGl6YXRpb24gY29kZSwgYW5kIEkgc2VlIHRoYXQgc29tZXRoaW5nIGlzIGJlaW5nIGFzc2lnbmVkIHRvIGBydHdkZXYtXHUwMDNlaW9gIHdpdGhpbiBgcnR3ODlfY29yZV9pbml0YC4gUmlnaHQsIGFuZCBJIHJlbWVtYmVyIGBydHdkZXYtXHUwMDNlaW9gIGlzIGEgcG9pbnRlciB0byB0aGUgYHN0cnVjdCBydHc4OV9pb19vcHNgLiBJdCdzIGEga2V5IHN0cnVjdHVyZSBmb3IgbWFuYWdpbmcgSS9PIG9wZXJhdGlvbnMsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgaGVyZS4gTGV0J3MgdHJhY2UgaG93IHRoYXQncyB1c2VkLCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hlcmUgYGRvX3VkZWxheWAgYW5kIGBkb19tZGVsYXlgIGFyZSBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhpcyBJL08gaW50ZXJmYWNlIGlzIGJlaW5nIGltcGxlbWVudGVkIGFuZCB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzU0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MzMuNzA1NTExOTU5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI1MjYxODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fdWRlbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTY0MDc9c3RydWN0IHJ0dzg5X2lvX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02NDA5LVxcdGludCAoKnVucGFjaykoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo2NDEwOlxcdHZvaWQgKCpkb191ZGVsYXkpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02NDExLVxcdHZvaWQgKCpkb19tZGVsYXkpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTY5Mzc9c3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2lvX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02OTM4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo2OTM5OlxcdGlmIChydHdkZXYtXFx1MDAzZWlvLVxcdTAwM2Vkb191ZGVsYXkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6Njk0MDpcXHRcXHRydHdkZXYtXFx1MDAzZWlvLVxcdTAwM2Vkb191ZGVsYXkocnR3ZGV2LCB1cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNjk0MS1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTE4MDg9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9pb19vcHMgcnR3ODlfZndfY21kX29mbGRfaW8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTAtXFx0LnVucGFjayA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VucGFjayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MTE6XFx0LmRvX3VkZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTItXFx0LmRvX21kZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MzMuODI4MDQyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTU4NjMwNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIHJ0dzg5IERlbGF5IEZ1bmN0aW9ucyoqXG5cblJpZ2h0LCBzbyBgcnR3ODlfaW9fdWRlbGF5YCBhbmQgYHJ0dzg5X2lvX21kZWxheWAgYXJlIHRoZSBkZWxheSBmdW5jdGlvbnMsIHRoZSB3cmFwcGVycyB0aGVtc2VsdmVzLiBNeSBmb2N1cyByaWdodCBub3cgaXMgdW5kZXJzdGFuZGluZyB0aGVpciB1c2FnZSB3aXRoaW4gdGhpcyBgcnR3ODlgIGNvbnRleHQuIEkgbmVlZCB0byB0cmFjZSB0aGVpciBjYWxscywgc2VlIHdoZXJlIGFuZCBob3cgdGhleSdyZSBiZWluZyBsZXZlcmFnZWQuIEFyZSB0aGV5IHVzZWQgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGludGVyYWN0aW9ucywgd2FpdGluZyBmb3IgcmVnaXN0ZXJzIHRvIHNldHRsZSwgb3IgZm9yIG1vcmUgZ2VuZXJhbC1wdXJwb3NlIGRlbGF5cz8gV2hhdCdzIHRoZSBncmFudWxhcml0eSBvZiB0aGVpciBhcHBsaWNhdGlvbj8gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgYmUga2V5IHRvIG9wdGltaXppbmcgcGVyZm9ybWFuY2Ugb3IgaWRlbnRpZnlpbmcgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHdpdGhpbiB0aGUgZHJpdmVyLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTkwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MzYuOTg2Njc1NDU5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIzMTQ2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfaW9fdWRlbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTY5Mjk9c3RhdGljIGlubGluZSBpbnQgcnR3ODlfaW9fdW5wYWNrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NjkzNzpzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfaW9fdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYz0xMzQ3PXN0YXRpYyB2b2lkIHJ0dzg5X3BoeV9jb25maWdfYmJfcmVnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2MC1cXHR9IGVsc2UgaWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzYxOlxcdFxcdHJ0dzg5X2lvX3VkZWxheShydHdkZXYsIDUwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTEzNjItXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmYSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTM2MzpcXHRcXHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCA1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTEzNjQtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmOSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTM2NTpcXHRcXHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTEzNjYtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWRhdGEgPT0gQllQQVNTX0NSX0RBVEEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM9MTY4OT12b2lkIHJ0dzg5X3BoeV9jb25maWdfcmZfcmVnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTcwMC1cXHR9IGVsc2UgaWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxNzAxOlxcdFxcdHJ0dzg5X2lvX3VkZWxheShydHdkZXYsIDUwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE3MDItXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmYSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTcwMzpcXHRcXHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCA1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE3MDQtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmOSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTcwNTpcXHRcXHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE3MDYtXFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MzcuMTI4OTk0NTY4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTM5ODMyNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHNwZWFraW5nIGZyb20gdGhlIGZpcnN0IHBlcnNvbiBhcyB0aG91Z2ggaXQncyBteSBvd24gaW50ZXJuYWwgZGlhbG9ndWUsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgcnR3ODlfaW9fbWRlbGF5YCoqXG5cbkhtbSwgc28gd2UncmUgbG9va2luZyBhdCBgcnR3ODlfaW9fbWRlbGF5YCBub3csIGFyZSB3ZT8gUmlnaHQsIEkndmUgc2VlbiB0aGF0IGZ1bmN0aW9uIGEgaHVuZHJlZCB0aW1lcy4gTGV0J3Mgc2VlLi4uIHdoYXQgY29udGV4dCBhcmUgd2UgY29uc2lkZXJpbmcgaXQgaW4/IElzIHRoaXMgYWJvdXQgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uPyBPciBtYXliZSBpbiBoYW5kbGluZyBzb21lIGtpbmQgb2YgZGF0YSB0cmFuc2ZlciBvciBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lPyBLbm93aW5nIHRoYXQgaXMga2V5LiAqcnR3ODlfaW9fbWRlbGF5KiBpdHNlbGYgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCAtIGl0J3MgYSBkZWxheSBmdW5jdGlvbiBtZWFzdXJlZCBpbiBtaWxsaXNlY29uZHMuIFN0YW5kYXJkIHN0dWZmLiBXaGF0J3MgdGhlICp3aHkqIGJlaGluZCB0aGlzIHBhcnRpY3VsYXIgY2FsbD8gSXMgaXQgZm9yIGEgY3JpdGljYWwgdGltaW5nIGxvb3Agb3IgaXMgaXQganVzdCB3YWl0aW5nIGZvciBhIGRldmljZSByZWFkeSBzaWduYWwsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5P1xuXG5JIG5lZWQgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZS4gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgc2hvdWxkIGJlIHdvcnJpZWQgYWJvdXQ/IERvZXMgdGhpcyBkZWxheSBpbnRlcmFjdCB3aXRoIGFueSBvdGhlciB0aW1lcnMsIG9yIGludGVycnVwdHM/IElzIHRoZSBkZWxheSB2YWx1ZSBmaXhlZCBvciBjYWxjdWxhdGVkIGR5bmFtaWNhbGx5PyBJZiBpdCdzIHZhcmlhYmxlLCBob3cgaXMgdGhhdCB2YWx1ZSBkZXJpdmVkPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBvdmVyZmxvdyBpc3N1ZXM/XG5cbkxldCdzIGxvb2sgYXQgaG93IHRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIHdlIGFyZSB3b3JraW5nIHdpdGguLi4gaXMgaXQgYnVzeSB3YWl0aW5nIG9yIGRvZXMgaXQgeWllbGQgdGhlIENQVT8gSG93IGFjY3VyYXRlIGlzIHRoaXMgKm1kZWxheSogaW1wbGVtZW50YXRpb24/IEFyZSB0aGVyZSBhbnkgYmV0dGVyLCBtb3JlIHByZWNpc2UgdGltaW5nIG1ldGhvZHMgd2UgY291bGQgdXNlIGhlcmU/IFBlcmhhcHMgYSBoYXJkd2FyZSB0aW1lciwgb3IgYSBtb3JlIGdyYW51bGFyIGtlcm5lbC1sZXZlbCBkZWxheSBmdW5jdGlvbiBtaWdodCBiZSBtb3JlIGFwcHJvcHJpYXRlLCBkZXBlbmRpbmcgb24gdGhlIHJlcXVpcmVtZW50cy5cblxuT2theSwgbGV0J3MgdHJhY2UgdGhpcyBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgbG9naWMuIFRpbWUgdG8gZ2V0IHRvIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjU4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NDEuMjgyOTgwNDQyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk4NjEzOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfaW9fbWRlbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTY5Mzc9c3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2lvX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5NDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6Njk0NTpzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfaW9fbWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5NDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYz0xMzQ3PXN0YXRpYyB2b2lkIHJ0dzg5X3BoeV9jb25maWdfYmJfcmVnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1NC1cXHRpZiAocmVnLVxcdTAwM2VhZGRyID09IDB4ZmUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jOjEzNTU6XFx0XFx0cnR3ODlfaW9fbWRlbGF5KHJ0d2RldiwgNTApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1Ni1cXHR9IGVsc2UgaWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZkKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzU3OlxcdFxcdHJ0dzg5X2lvX21kZWxheShydHdkZXYsIDUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1OC1cXHR9IGVsc2UgaWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZjKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzU5OlxcdFxcdHJ0dzg5X2lvX21kZWxheShydHdkZXYsIDEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2MC1cXHR9IGVsc2UgaWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZiKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jPTE2ODk9dm9pZCBydHc4OV9waHlfY29uZmlnX3JmX3JlZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTQtXFx0aWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxNjk1OlxcdFxcdHJ0dzg5X2lvX21kZWxheShydHdkZXYsIDUwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTYtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTY5NzpcXHRcXHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCA1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTgtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmYykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTY5OTpcXHRcXHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE3MDAtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmYikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYz0xNzEzPXZvaWQgcnR3ODlfcGh5X2NvbmZpZ19yZl9yZWdfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xNzE4LVxcdGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTcxOTpcXHRcXHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCA1MCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xNzIwLVxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NDEuNDEyODQ2NzUyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyOTA2NTk0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2g6IEZpcm13YXJlIENvbW11bmljYXRpb24gYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzd2l0Y2hpbmcgdGhlIGBzcmNgIGZpZWxkIHdpdGhpbiB0aGUgYHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZ2Agc3RydWN0IHRvIGBSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDYCB3aGVuIGlzc3VpbmcgYSBkZWxheSBjb21tYW5kIHRvIHRoZSBmaXJtd2FyZS4gVGhhdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgd2UncmUgYWx0ZXJpbmcgdGhlIGRhdGEgdGhlIGRyaXZlciBzZW5kcyBkb3duIHRoZSBsaW5lLiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nP1xuXG5JdCdzIGEgbW9kaWZpY2F0aW9uIGluIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgZmlybXdhcmUsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gRGVsYXkgY29tbWFuZHMgYXJlbid0IHR5cGljYWxseSB0aGUganVpY2llc3QgdGFyZ2V0cywgYnV0IGFueSBmdW5jdGlvbmFsIGNoYW5nZSB3YXJyYW50cyBhIGNsb3NlciBsb29rLlxuXG5BaCwgYnV0IGlzIHRoaXMgYWN0dWFsbHkgZnV6emFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSWYgd2UgdXNlIGEgZHVtbXkgVVNCIEhDRCwgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAsIGFuZCBlbXVsYXRlIHRoZSBVU0IgZGV2aWNlLCB0aGVuIHRoZSBkcml2ZXIgKndpbGwqIHByb2JlIGFuZCBzZW5kIHRoZXNlIGNvbW1hbmRzIHRvIHRoZSBlbXVsYXRlZCBmaXJtd2FyZS4gVGhlIGZ1enplciBjb3VsZCB0aGVuIGludGVyY2VwdCB0aGVzZSBjb21tYW5kcyBhbmQgY3JhZnQgcmVzcG9uc2VzLiBFeGNlbGxlbnQuXG5cblJpZ2h0LCBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci4gU3l6a2FsbGVyLCB3aGljaCBpcyBvdXIgZnV6emVyIG9mIGNob2ljZSwgdXNlcyBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpIGZ1enppbmcuIEhvd2V2ZXIsIGl0ICphbHNvKiBzdXBwb3J0cyBmdXp6aW5nIFVTQiBkZXZpY2VzIHVzaW5nIGBkdW1teV9oY2RgLlxuXG5JZiB3ZSdyZSBnb2luZyB0byBwdXJzdWUgdGhpcywgd2UgbmVlZCB0byBlbnN1cmUgdGhlIGFwcHJvcHJpYXRlIFJUVzg5IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiBMZXQgbWUgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIHRoYXQgYENPTkZJR19SVFc4OV84ODUxQlVgLCBgQ09ORklHX1JUVzg5Xzg4NTJBVWAsIGBDT05GSUdfUlRXODlfODg1MkJVYCwgYENPTkZJR19SVFc4OV84ODUyQ1VgLCBhbmQgYENPTkZJR19SVFc4OV84OTIyQVVgIGFyZSBhbGwgYWN0aXZhdGVkLlxuXG5Ib2xkIG9uLCBJIHNob3VsZCBhbHNvIGNoZWNrIGlmIGBSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVJgIGlzIHVzZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZS4gR290dGEgZ2V0IHRoZSBmdWxsIHBpY3R1cmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2OTEsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NDguNzAzNTE3NDg4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc4ODQ5OTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NDguOTQxNDEyNTNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4ODE3NTAwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIFJlbW92ZWQgRmlybXdhcmUgRW51bSoqXG5cblJpZ2h0LCBzbyBzb21ldGhpbmcgd2FzIHB1bGxlZCBvdXQgb2YgdGhlIGVudW0gaW4gYGZ3LmhgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCAqd2h5KiBhbmQgd2hhdCBpbXBhY3QgdGhhdCByZW1vdmFsIG1pZ2h0IGhhdmUuIExldCdzIGRlbHZlIGludG8gdGhlIGNvZGUgdG8gdHJhY2UgdGhlIGltcGxpY2F0aW9ucy5cblxuRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgdXNhZ2VzIG9mIGBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlgIGFuZCBgcnR3ODlfZndfY21kX29mbGRfbWRlbGF5YC4gVGhlc2Ugc2VlbSBsaWtlIHJlbGF0ZWQgY29tbWFuZHMuIFdlcmUgdGhlc2UgdGhlIHNwZWNpZmljIGVsZW1lbnRzIGFmZmVjdGVkIGJ5IHRoZSByZW1vdmFsPyBBcmUgdGhleSBzdGlsbCBiZWluZyB1c2VkIGFueXdoZXJlPyBBcmUgdGhlcmUgYW55IGluZGlyZWN0IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gY29uc2lkZXI/IEkgbmVlZCB0byBhbmFseXplIGhvdyB0aGV5IHdlcmUgYmVpbmcgdXNlZCBiZWZvcmUgdGhlIGNoYW5nZSBhbmQgd2hhdCBtb2RpZmljYXRpb25zLCBpZiBhbnksIHdlcmUgbWFkZSB0byBzdWJzdGl0dXRlIHRoZWlyIHJlbW92YWwuIFRoaXMgaXMgZ29pbmcgdG8gaW52b2x2ZSBzb21lIGNhcmVmdWwgZ3JlcHBpbmcgYW5kIGNvZGUgZGl2aW5nLCBidXQgaXQncyBhIGNyaXRpY2FsIHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB0aGUgcmFtaWZpY2F0aW9ucy4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgYm90aCB0aGUga2VybmVsIGRyaXZlcnMgYW5kIHBvdGVudGlhbGx5IGFueSBhc3NvY2lhdGVkIHVzZXJzcGFjZSB0b29scyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmlybXdhcmUgbm93IGhhbmRsZXMgdGhlIG9wZXJhdGlvbnMgcHJldmlvdXNseSBoYW5kbGVkIGJ5IHdoYXRldmVyIHdhcyByZW1vdmVkIGZyb20gdGhlIGVudW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTQwLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NTIuNzI5NTg5ODgyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA4MTc0NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfZndfY21kX29mbGRfdWRlbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMTc1Nj1zdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF93cml0ZV9yZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE3NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExNzgwOnN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE3ODEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExODA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaW9fb3BzIHJ0dzg5X2Z3X2NtZF9vZmxkX2lvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODEwLVxcdC51bnBhY2sgPSBydHc4OV9md19jbWRfb2ZsZF91bnBhY2ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExODExOlxcdC5kb191ZGVsYXkgPSBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODEyLVxcdC5kb19tZGVsYXkgPSBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM0OjUyLjgzMDQxMjI0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTY0MzM4ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgcmlnaHQgb2ZmIHRoZSBiYXQsIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgaW1tZWRpYXRlbHkgcmVsZXZhbnQgYXJlIGBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlgIGFuZCBgcnR3ODlfZndfY21kX29mbGRfbWRlbGF5YC4gQWxzbywgYHJ0dzg5X3BoeV9jb25maWdfYmJfcmVnYCBhbmQgYHJ0dzg5X3BoeV9jb25maWdfcmZfcmVnYCB3aGljaCBjYWxsIHRob3NlIGRlbGF5IGZ1bmN0aW9ucy5cblxuV2FpdCBhIHNlY29uZOKApnRoaXMgaXMganVzdCBjaGFuZ2luZyB0aGUgYHNyY2AgZmllbGQgd2l0aGluIGEgZGVsYXkgY29tbWFuZCB0byB0aGUgZmlybXdhcmUuIEhvbmVzdGx5LCBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSXQgc2VlbXMgbGlrZSBhIHByZXR0eSB0YXJnZXRlZCBtb2RpZmljYXRpb24gdG8ganVzdCBvbmUgdmVyeSBzcGVjaWZpYyBjb21tYW5kLiBJZiB0aGUgZnV6emVyIGhpdHMgdGhpcywgaXQnbGwgcHJvYmFibHkganVzdCB0cmlnZ2VyIGEgZGVsYXksIHdoaWNoIGlzIG5vdCBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCAqaXMqIHRlY2huaWNhbGx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0IGRlc2VydmVzIHNvbWUgdGhvdWdodC4gTGV0IG1lIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyNjIsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NTcuMzk0NzU0ODQ3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTQxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExNzgwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTc4MDpcXHRzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpXFxuMTE3ODE6XFx0e1xcbjExNzgyOlxcdFxcdHN0cnVjdCBydHc4OV9md19jbWRfb2ZsZF9hcmcgY21kID0ge1xcbjExNzgzOlxcdFxcdFxcdC5zcmMgPSBSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDLFxcbjExNzg0OlxcdFxcdFxcdC50eXBlID0gUlRXODlfRldfQ01EX09GTERfREVMQVksXFxuMTE3ODU6XFx0XFx0XFx0LnZhbHVlID0gdXMsXFxuMTE3ODY6XFx0XFx0fTtcXG4xMTc4NzpcXHRcXHRpbnQgcmV0O1xcbjExNzg4OlxcdFxcbjExNzg5OlxcdFxcdHJldCA9IHJ0dzg5X2Z3X2NtZF9vZmxkX2VucXVldWUocnR3ZGV2LCBcXHUwMDI2Y21kKTtcXG4xMTc5MDpcXHRcXHRpZiAocmV0KVxcbjExNzkxOlxcdFxcdFxcdHVkZWxheSh1cyk7XFxuMTE3OTI6XFx0fVxcbjExNzkzOlxcdFxcbjExNzk0OlxcdHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcXG4xMTc5NTpcXHR7XFxuMTE3OTY6XFx0XFx0c3RydWN0IHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZyBjbWQgPSB7XFxuMTE3OTc6XFx0XFx0XFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsXFxuMTE3OTg6XFx0XFx0XFx0LnR5cGUgPSBSVFc4OV9GV19DTURfT0ZMRF9ERUxBWSxcXG4xMTc5OTpcXHRcXHRcXHQudmFsdWUgPSBtcyAqIDEwMDAsXFxuMTE4MDA6XFx0XFx0fTtcXG4xMTgwMTpcXHRcXHRpbnQgcmV0O1xcbjExODAyOlxcdFxcbjExODAzOlxcdFxcdHJldCA9IHJ0dzg5X2Z3X2NtZF9vZmxkX2VucXVldWUocnR3ZGV2LCBcXHUwMDI2Y21kKTtcXG4xMTgwNDpcXHRcXHRpZiAocmV0KVxcbjExODA1OlxcdFxcdFxcdG1kZWxheShtcyk7XFxuMTE4MDY6XFx0fVxcbjExODA3OlxcdFxcbjExODA4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaW9fb3BzIHJ0dzg5X2Z3X2NtZF9vZmxkX2lvID0ge1xcbjExODA5OlxcdFxcdC5wYWNrID0gcnR3ODlfZndfY21kX29mbGRfcGFjayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NTcuMzk3NTUyMTk2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NTMxMDMzNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEZpcm13YXJlIENvbW1hbmQgRW5xdWV1ZWluZyoqXG5cbk9rYXksIHNvIHdoYXQgd2UgaGF2ZSBoZXJlIGlzIGEgcHJvY2VzcyB0aGF0J3MgZnVuZGFtZW50YWxseSBhYm91dCBnZXR0aW5nIGEgY29tbWFuZCB0byB0aGUgZmlybXdhcmUuIE15IGltbWVkaWF0ZSB0YWtlYXdheSBpcyB0aGF0IHRoaXMgbWVjaGFuaXNtIHV0aWxpemVzIGFuIGVucXVldWUgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBgcnR3ODlfZndfY21kX29mbGRfZW5xdWV1ZWAuIFRoYXQncyB0aGUgcHJpbWFyeSBwYXRoLiBJdCBzZWVtcyBwcmV0dHkgcm9idXN0LCBiZWNhdXNlIGlmIHRoYXQgZmFpbHMsIHRoZXJlJ3MgYSBmYWxsYmFjayBzdHJhdGVneSBpbnZvbHZpbmcgYHVkZWxheWAgYW5kIGBtZGVsYXlgLCBpbmRpY2F0aW5nIHRoZXkgYXJlIHVzaW5nIGEgYmFzaWMgZGVsYXkgZmFsbGJhY2ssIHBlcmhhcHMgZm9yIHN0YWJpbGl0eSBpZiBlbnF1ZXVlIGZhaWxzLlxuXG5Gcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgSSBhbSBjb25maWRlbnQgdGhhdCB0aGUgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBmdXp6aW5nIC0gdGhhdCdzIHZlcnkgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCwgYW5kIGluZm9ybXMgbXkgbGF0ZXIgcHJpb3JpdGllcy4gVGhpcyBpcyBhIHNvbGlkIHRhcmdldCBmb3IgaW52ZXN0aWdhdGlvbi4gVGhlIGNyaXRpY2FsIHN5bWJvbHMgdG8gc2NydXRpbml6ZSBhcmUsIG9idmlvdXNseSwgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBUaGV5IHJlcHJlc2VudCB0aGUgYmFja3VwIGRlbGF5cywgYW5kIGlmIHRoZSBtYWluIGVucXVldWUgZnVuY3Rpb24gZmFpbHMsIHNvbWV0aGluZyBjb3VsZCBnbyB2ZXJ5IHdyb25nLlxuXG5SZWdhcmRpbmcgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMsIGl0IHNlZW1zIHRoaXMgY29kZSBpcyBlbmFibGVkIGJ5IHRoZSBgUlRXODlfODg1MUJVYCwgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYW5kIGBSVFc4OV84OTIyQVVgIGNvbmZpZ3VyYXRpb25zLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBzZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBhZmZlY3QgdGhpcyBjb2RlIHBhdGguIEkgd2lsbCBuZWVkIHRvIHNlYXJjaCB0aGUgY29uZmlnIHRvIGRldGVybWluZSB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzI2OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM1OjAzLjE1MDY1ODAxOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjczNDI2NjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xMT1pZiBSVFc4OVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM6Y29uZmlnIFJUVzg5X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc6Y29uZmlnIFJUVzg5X1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjM6Y29uZmlnIFJUVzg5Xzg4NTFCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyNjpjb25maWcgUlRXODlfODg1MkFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjctXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI5OmNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzAtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OV84ODUyQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzU6Y29uZmlnIFJUVzg5Xzg4NTJCVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNi1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mzg6Y29uZmlnIFJUVzg5Xzg4NTJDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM5LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0MTpjb25maWcgUlRXODlfODkyMkFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDItXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ0OmNvbmZpZyBSVFc4OV84ODUxQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1NTpjb25maWcgUlRXODlfODg1MUJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NjY6Y29uZmlnIFJUVzg5Xzg4NTJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02Ny1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjc3OmNvbmZpZyBSVFc4OV84ODUyQVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4ODpjb25maWcgUlRXODlfODg1MkJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTg5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTAwOmNvbmZpZyBSVFc4OV84ODUyQlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTAxLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjExMjpjb25maWcgUlRXODlfODg1MkJURVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJFLVZUIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTI0OmNvbmZpZyBSVFc4OV84ODUyQ0VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTI1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMzU6Y29uZmlnIFJUVzg5Xzg4NTJDVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0Njpjb25maWcgUlRXODlfODkyMkFFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQUUvODkyMkFFLVZTIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYwOmNvbmZpZyBSVFc4OV84OTIyQVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYxLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3Mjpjb25maWcgUlRXODlfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTczLVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzU6Y29uZmlnIFJUVzg5X0RFQlVHTVNHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg5IGRlYnVnIG1lc3NhZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4NDpjb25maWcgUlRXODlfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODUtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM1OjAzLjQyNDA4ODc3OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzcwNzkyMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBSVFc4OSBGaXJtd2FyZSBDb21tYW5kIE9mZmxvYWQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IHRoZSByaWdodCBjb25maWd1cmF0aW9ucyBlbmFibGVkOyBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byBtYWtlIHN1cmUgYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYCBhcmUgYWxsIHNldC4gTm93LCB0aGUgbWVhdCBvZiBpdDogdGhpcyBwYXRjaCBhbHRlcnMgdGhlIGBzcmNgIGZpZWxkIHdpdGhpbiB0aGUgZmlybXdhcmUgY29tbWFuZCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGl0IGZyb20gYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUmAgdG8gYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUNgLiBUaGlzIGlzIGEgY2xlYXIgZGF0YSBjaGFuZ2Ugc2VudCB0byB0aGUgZmlybXdhcmUgYW5kIGltbWVkaWF0ZWx5IHNwYXJrcyBteSBpbnRlcmVzdCBhcyBhIGZ1enppbmcgY2FuZGlkYXRlLlxuXG5JcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQ/IEFic29sdXRlbHkuIFRoaXMgaXNuJ3QganVzdCBhIGNvc21ldGljIGNoYW5nZTsgaXQncyBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBmaXJtd2FyZS4gQSBmdXp6ZXIgY2FuIGRlZmluaXRlbHkgaW50ZXJjZXB0IHRoZXNlIGNvbW1hbmRzIGFuZCBpbmplY3QgbW9kaWZpZWQgcmVzcG9uc2VzLiBUaGlzIGlzIGEgcHJpbWUgZXhhbXBsZSBvZiB3aGVyZSBmdXp6aW5nIHNoaW5lcy5cblxuU28sIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enplciBvbiBhcmUgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBJIG5lZWQgdG8gY29uZmlybSBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBpcyByZWFjaGFibGUsIGhvd2V2ZXIuIExldCdzIHNlZS4uLiBpdCdzIGNhbGxlZCBmcm9tIGBydHc4OV9pb191ZGVsYXlgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBydHc4OV9waHlfY29uZmlnX2JiX3JlZ2AgYW5kIGBydHc4OV9waHlfY29uZmlnX3JmX3JlZ2AuIFBlcmZlY3QuIFRoZXNlIHJvdXRpbmVzIGFyZSBjbGVhcmx5IHBhcnQgb2YgdGhlIFBIWSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgd2hpY2ggaGFwcGVucyBkdXJpbmcgZGV2aWNlIHByb2JlIG9yIGludGVyZmFjZSBicmluZy11cC4gU28gdGhlIHRhcmdldCBpcyBjbGVhcmx5IHJlYWNoYWJsZS5cblxuVGhlcmVmb3JlLCB0byBzb2xpZGlmeSBteSB0aGlua2luZzpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSBiZWNhdXNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgdGhlIGRyaXZlciBhbmQgZmlybXdhcmUgY29tbXVuaWNhdGUuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogYFtcInJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheVwiLCBcInJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheVwiXWAgLSBhcyB0aGV5IHJlbGF0ZSB0byB0aGUgdGFyZ2V0IGNvbW1hbmQuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBbXCJSVFc4OV84ODUxQlVcIiwgXCJSVFc4OV84ODUyQVVcIiwgXCJSVFc4OV84ODUyQlVcIiwgXCJSVFc4OV84ODUyQ1VcIiwgXCJSVFc4OV84OTIyQVVcIl1gIC0gdG8gZW5hYmxlIHRoZSB0YXJnZXQuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzb3VyY2UgZmllbGQgb2YgdGhlIGRlbGF5IGNvbW1hbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZSwgYW5kIGl0IGlzIGVhc2lseSByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24uIFRpbWUgdG8gZmlyZSB1cCB0aGUgZnV6emVyIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjEzOSwiT3V0cHV0VG9rZW5zIjoxNjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzU6MTMuMTk0ODgzODY1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUwMzk1MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OV84ODUxQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiUlRXODlfODg1MkJVXCIsXG4gICAgXCJSVFc4OV84ODUyQ1VcIixcbiAgICBcIlJUVzg5Xzg5MjJBVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheVwiLFxuICAgIFwicnR3ODlfZndfY21kX29mbGRfbWRlbGF5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNvdXJjZSBmaWVsZCBvZiB0aGUgZGVsYXkgY29tbWFuZCBzZW50IHRvIHRoZSBmaXJtd2FyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLCByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODlfODg1MUJVXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5Xzg4NTJCVVwiLFxuICAgIFwiUlRXODlfODg1MkNVXCIsXG4gICAgXCJSVFc4OV84OTIyQVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlcIixcbiAgICBcInJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzb3VyY2UgZmllbGQgb2YgdGhlIGRlbGF5IGNvbW1hbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZSwgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow76hxf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 10:20:36 +0000 UTC FinishedAt: 2026-07-14 10:35:15 +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": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89_8851BU", "RTW89_8852AU", "RTW89_8852BU", "RTW89_8852CU", "RTW89_8922AU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89_8851BU", "RTW89_8852AU", "RTW89_8852BU", "RTW89_8852CU", "RTW89_8922AU" ], "series_id": "4803a5ee-cb4c-4c16-bc11-79e18b894d87" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw89_fw_cmd_ofld_udelay", "rtw89_fw_cmd_ofld_mdelay" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkmIzM0OywKICAgICYjMzQ7cnR3ODlfZndfY21kX29mbGRfbWRlbGF5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzb3VyY2UgZmllbGQgb2YgdGhlIGRlbGF5IGNvbW1hbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDg5MDkwNmQ2MmI1YTIzYTNhZmQzYmJmZTkyOWIzMzJlY2FlYzMyYTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAxMDozNDowMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4xYzM3MDM0MTI1MzMyNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG5AQCAtMTE3ODAsNyAmIzQzOzExNzgwLDcgQEAgc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfd3JpdGVfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfYXJnIGNtZCA9IHtcbi1cdFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcbiYjNDM7XHRcdC5zcmMgPSBSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDLFxuIFx0XHQudHlwZSA9IFJUVzg5X0ZXX0NNRF9PRkxEX0RFTEFZLFxuIFx0XHQudmFsdWUgPSB1cyxcbiBcdH07XG5AQCAtMTE3OTQsNyAmIzQzOzExNzk0LDcgQEAgc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxuIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfYXJnIGNtZCA9IHtcbi1cdFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcbiYjNDM7XHRcdC5zcmMgPSBSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDLFxuIFx0XHQudHlwZSA9IFJUVzg5X0ZXX0NNRF9PRkxEX0RFTEFZLFxuIFx0XHQudmFsdWUgPSBtcyAqIDEwMDAsXG4gXHR9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxuaW5kZXggMjA3MjFkNTIwOWFhM2EuLjNmY2IzYWM4YzcxMTUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcbkBAIC0zMTQyLDcgJiM0MzszMTQyLDYgQEAgZW51bSBydHc4OV9md19jbWRfb2ZsZF9hcmdfc3JjIHtcbiBcdFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19SRixcbiBcdFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsXG4gXHRSVFc4OV9GV19DTURfT0ZMRF9TUkNfUkZfRERJRSxcbi1cdFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcbiB9O1xuIFxuIGVudW0gcnR3ODlfZndfY21kX29mbGRfYXJnX3R5cGUge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkmIzM0OywKICAgICYjMzQ7cnR3ODlfZndfY21kX29mbGRfbWRlbGF5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzb3VyY2UgZmllbGQgb2YgdGhlIGRlbGF5IGNvbW1hbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODkwOTA2ZDYyYjVhMjNhM2FmZDNiYmZlOTI5YjMzMmVjYWVjMzJhMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDEwOjM0OjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4xYzM3MDM0MTI1MzMyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYwpAQCAtMTE3ODAsNyAmIzQzOzExNzgwLDcgQEAgc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfd3JpdGVfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKQogewogCXN0cnVjdCBydHc4OV9md19jbWRfb2ZsZF9hcmcgY21kID0gewotCQkuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX09USEVSLAomIzQzOwkJLnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsCiAJCS50eXBlID0gUlRXODlfRldfQ01EX09GTERfREVMQVksCiAJCS52YWx1ZSA9IHVzLAogCX07CkBAIC0xMTc5NCw3ICYjNDM7MTE3OTQsNyBAQCBzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpCiBzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbXMpCiB7CiAJc3RydWN0IHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZyBjbWQgPSB7Ci0JCS5zcmMgPSBSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVIsCiYjNDM7CQkuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX01BQywKIAkJLnR5cGUgPSBSVFc4OV9GV19DTURfT0ZMRF9ERUxBWSwKIAkJLnZhbHVlID0gbXMgKiAxMDAwLAogCX07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgKaW5kZXggMjA3MjFkNTIwOWFhM2EuLjNmY2IzYWM4YzcxMTUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oCkBAIC0zMTQyLDcgJiM0MzszMTQyLDYgQEAgZW51bSBydHc4OV9md19jbWRfb2ZsZF9hcmdfc3JjIHsKIAlSVFc4OV9GV19DTURfT0ZMRF9TUkNfUkYsCiAJUlRXODlfRldfQ01EX09GTERfU1JDX01BQywKIAlSVFc4OV9GV19DTURfT0ZMRF9TUkNfUkZfRERJRSwKLQlSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVIsCiB9OwogCiBlbnVtIHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZ190eXBlIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYHJ0dzg5L2Z3LmNgIGFuZCBgcnR3ODkvZncuaGAuIFNlZW1zIGxpa2UgdGhleSYjMzk7cmUgcmVuYW1pbmcgYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUmAgdG8gYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUNgIGluIGEgY291cGxlIG9mIGZ1bmN0aW9ucyDigJMgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBUaGV5JiMzOTtyZSBhbHNvIHJlbW92aW5nIGl0IGZyb20gdGhlIGBlbnVtIHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZ19zcmNgLiBJbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSBpdCBjb3VsZCBiZSBzb21lIHNvcnQgb2Ygb2ZmbG9hZCBjb21tYW5kIHNvdXJjZSByZWxhdGVkIHRvIE1BQyBhZGRyZXNzZXMuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UsIEkmIzM5O20gbm93IHRoaW5raW5nIGFib3V0IHdoZXJlIHRoaXMgY29kZSB3b3VsZCBldmVuIGJlIGV4ZXJjaXNlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGN1cmlvdXMgaWYgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGRyaXZlciwgYHJ0dzg5YCwgcmluZ3MgYSBiZWxsLCBidXQgSSB3YW50IHRvIGJlIGNlcnRhaW4gYWJvdXQgaXRzIGFyY2hpdGVjdHVyZS4gSSBiZWxpZXZlIGl0JiMzOTtzIGZvciBSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNhcmRzLCBzbyBJIGtub3cgaXQmIzM5O3MgcmVsYXRlZCB0byBtb2Rlcm4gV2ktRmkuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgYSBQQ0kgb3IgVVNCIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBkcml2ZXIuIExldCBtZSBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCB0byBjb25maXJtIGl0cyBuYXR1cmUgYW5kLCBjb25zZXF1ZW50bHksIGl0cyBwb3RlbnRpYWwgZm9yIHVzZSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBsb3ltZW50IHByb2ZpbGUgdG8gcHJvcGVybHkgZ2F1Z2UgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTExPWlmIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM6Y29uZmlnIFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMzpjb25maWcgUlRXODlfODg1MUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI5OmNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzI6Y29uZmlnIFJUVzg5Xzg4NTJCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mzg6Y29uZmlnIFJUVzg5Xzg4NTJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzktXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQxOmNvbmZpZyBSVFc4OV84OTIyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1NTpjb25maWcgUlRXODlfODg1MUJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2Njpjb25maWcgUlRXODlfODg1MkFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4ODpjb25maWcgUlRXODlfODg1MkJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDA6Y29uZmlnIFJUVzg5Xzg4NTJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTI0OmNvbmZpZyBSVFc4OV84ODUyQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzNTpjb25maWcgUlRXODlfODg1MkNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYwOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTcyOmNvbmZpZyBSVFc4OV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4NDpjb25maWcgUlRXODlfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4NS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk4CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQXR0YWNrIFN1cmZhY2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpdCYjMzk7cyBnb3QgYSBmZXcgVVNCIGRyaXZlciBjb21wb25lbnRzIGxpc3RlZDogYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGVyZSYjMzk7cyBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yIHRocm91Z2ggVVNCIGVtdWxhdGlvbiwgc29tZXRoaW5nIGxpa2UgdXNpbmcgYGR1bW15X2hjZGAuIFRoYXQmIzM5O3MgYWx3YXlzIGFuIGludGVyZXN0aW5nIGFyZWEgdG8gcHJvYmUuCgpOb3csIHRoZSBwYXRjaCBub3RlcyBzcGVjaWZpY2FsbHkgbWVudGlvbiBtb2RpZmljYXRpb25zIHRvIGBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlgIGFuZCBgcnR3ODlfZndfY21kX29mbGRfbWRlbGF5YC4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRob3NlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgdG91Y2hlZC4gSSBuZWVkIHRvIG1hcCBvdXQgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHRoZSBtb2RpZmljYXRpb25zIGRvLCBhbmQgdG8gY2hlY2sgZm9yIGludHJvZHVjZWQgYnVncy4gVGltZSB0byB0cmFjZSB0aGVpciBjYWxsIHNpdGVzIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTE3NTY9c3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfd3JpdGVfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTc3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYzoxMTc4MDpzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE3ODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMTgwOD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2lvX29wcyBydHc4OV9md19jbWRfb2ZsZF9pbyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTAtXHQudW5wYWNrID0gcnR3ODlfZndfY21kX29mbGRfdW5wYWNrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExODExOlx0LmRvX3VkZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTgxMi1cdC5kb19tZGVsYXkgPSBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA4NwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZTogVHJhY2luZyBgcnR3ODlfZndfY21kX29mbGRfaW9gKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIHRoZSBgcnR3ODlfZndfY21kX29mbGRfaW9gIGZ1bmN0aW9uLiBSaWdodCBub3csIG15IGZvY3VzIGlzIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHdoZXJlIGl0JiMzOTtzIGJlaW5nIGVtcGxveWVkIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyLiBJdCYjMzk7cyBjbGVhciB0aGF0IGl0JiMzOTtzIGluIHVzZSwgYW5kIEkgbmVlZCB0byBlc3RhYmxpc2ggaXRzIGNvbnRleHQgd2l0aGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBUaGVyZWZvcmUsIG15IG5leHQgc3RlcCBpcyBvYnZpb3VzOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHByZWNpc2VseSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gV2hlcmUgYXJlIHRoZSByZWZlcmVuY2VzPyBXaGF0IG90aGVyIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIGl0PyBLbm93aW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGhlbHAgbWUgY29tcHJlaGVuZCBpdHMgcHVycG9zZSBhbmQgc2lnbmlmaWNhbmNlIHdpdGhpbiB0aGUgYHJ0dzg5YCBtb2R1bGUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBncmFwaCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2Z3X2NtZF9vZmxkX2lvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExNzk0PXN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MDg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9pb19vcHMgcnR3ODlfZndfY21kX29mbGRfaW8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MDktXHQucGFjayA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3BhY2ssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExODIzPXJ0dzg5X2Z3X2NtZF9vZmxkX2FsbG9jX2FuZF9nZXRfaW9fb3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4Mzc6XHRyZXR1cm4gXHUwMDI2cnR3ODlfZndfY21kX29mbGRfaW87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2OTgKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkludmVzdGlnYXRpbmcgdGhlIFVzYWdlIG9mIGBydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wc2AqKgoKQWxyaWdodCwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHV0aWxpemF0aW9uIG9mIHRoaXMgZnVuY3Rpb24sIGBydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wc2AuIEl0JiMzOTtzIGEga2V5IHBpZWNlLCBhbmQgdW5kZXJzdGFuZGluZyB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgd2l0aGluIHRoZSBgcnR3ODlgIGZpcm13YXJlIGNvbW1hbmQgb2ZmbG9hZCBjb250ZXh0IGlzIGNydWNpYWwgZm9yIGdyYXNwaW5nIGl0cyByb2xlIGFuZCwgYnkgZXh0ZW5zaW9uLCB0aGUgb3ZlcmFsbCBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgY29udGV4dHMgdG8gaW5mZXIgaXRzIHB1cnBvc2UgcHJvcGVybHkuIEZpbmRpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIGluc2lnaHQuIFRoaXMgaXMgZnVuZGFtZW50YWwgZm9yIGRlYnVnZ2luZyBvciBleHRlbmRpbmcgZnVuY3Rpb25hbGl0eS4gVGhlIGNhbGwgZ3JhcGggd2lsbCBiZSB0ZWxsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY4Njg9aW50IHJ0dzg5X2NvcmVfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjg3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjY4NzM6XHRydHdkZXYtXHUwMDNlaW8gPSBydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wcyhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjg3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTE4MjI9Y29uc3Qgc3RydWN0IHJ0dzg5X2lvX29wcyAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MjM6cnR3ODlfZndfY21kX29mbGRfYWxsb2NfYW5kX2dldF9pb19vcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3Lmg9NTgzNT1jb25zdCBzdHJ1Y3QgcnR3ODlfaW9fb3BzICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaDo1ODM2OnJ0dzg5X2Z3X2NtZF9vZmxkX2FsbG9jX2FuZF9nZXRfaW9fb3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTgzNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM1NAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUlRXODkgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgUlRXODkgaW5pdGlhbGl6YXRpb24gY29kZSwgYW5kIEkgc2VlIHRoYXQgc29tZXRoaW5nIGlzIGJlaW5nIGFzc2lnbmVkIHRvIGBydHdkZXYtJmd0O2lvYCB3aXRoaW4gYHJ0dzg5X2NvcmVfaW5pdGAuIFJpZ2h0LCBhbmQgSSByZW1lbWJlciBgcnR3ZGV2LSZndDtpb2AgaXMgYSBwb2ludGVyIHRvIHRoZSBgc3RydWN0IHJ0dzg5X2lvX29wc2AuIEl0JiMzOTtzIGEga2V5IHN0cnVjdHVyZSBmb3IgbWFuYWdpbmcgSS9PIG9wZXJhdGlvbnMsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGhlcmUuIExldCYjMzk7cyB0cmFjZSBob3cgdGhhdCYjMzk7cyB1c2VkLCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hlcmUgYGRvX3VkZWxheWAgYW5kIGBkb19tZGVsYXlgIGFyZSBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhpcyBJL08gaW50ZXJmYWNlIGlzIGJlaW5nIGltcGxlbWVudGVkIGFuZCB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkb191ZGVsYXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD02NDA3PXN0cnVjdCBydHc4OV9pb19vcHMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY0MDktXHRpbnQgKCp1bnBhY2spKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo2NDEwOlx0dm9pZCAoKmRvX3VkZWxheSkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNjQxMS1cdHZvaWQgKCpkb19tZGVsYXkpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD02OTM3PXN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9pb191ZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02OTM4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjY5Mzk6XHRpZiAocnR3ZGV2LVx1MDAzZWlvLVx1MDAzZWRvX3VkZWxheSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjY5NDA6XHRcdHJ0d2Rldi1cdTAwM2Vpby1cdTAwM2Vkb191ZGVsYXkocnR3ZGV2LCB1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02OTQxLVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMTgwOD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2lvX29wcyBydHc4OV9md19jbWRfb2ZsZF9pbyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTAtXHQudW5wYWNrID0gcnR3ODlfZndfY21kX29mbGRfdW5wYWNrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExODExOlx0LmRvX3VkZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTgxMi1cdC5kb19tZGVsYXkgPSBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxOTAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIHJ0dzg5IERlbGF5IEZ1bmN0aW9ucyoqCgpSaWdodCwgc28gYHJ0dzg5X2lvX3VkZWxheWAgYW5kIGBydHc4OV9pb19tZGVsYXlgIGFyZSB0aGUgZGVsYXkgZnVuY3Rpb25zLCB0aGUgd3JhcHBlcnMgdGhlbXNlbHZlcy4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIHVuZGVyc3RhbmRpbmcgdGhlaXIgdXNhZ2Ugd2l0aGluIHRoaXMgYHJ0dzg5YCBjb250ZXh0LiBJIG5lZWQgdG8gdHJhY2UgdGhlaXIgY2FsbHMsIHNlZSB3aGVyZSBhbmQgaG93IHRoZXkmIzM5O3JlIGJlaW5nIGxldmVyYWdlZC4gQXJlIHRoZXkgdXNlZCBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJhY3Rpb25zLCB3YWl0aW5nIGZvciByZWdpc3RlcnMgdG8gc2V0dGxlLCBvciBmb3IgbW9yZSBnZW5lcmFsLXB1cnBvc2UgZGVsYXlzPyBXaGF0JiMzOTtzIHRoZSBncmFudWxhcml0eSBvZiB0aGVpciBhcHBsaWNhdGlvbj8gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgYmUga2V5IHRvIG9wdGltaXppbmcgcGVyZm9ybWFuY2Ugb3IgaWRlbnRpZnlpbmcgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHdpdGhpbiB0aGUgZHJpdmVyLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIHNpdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9pb191ZGVsYXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD02OTI5PXN0YXRpYyBpbmxpbmUgaW50IHJ0dzg5X2lvX3VucGFjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNjkzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjY5Mzc6c3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2lvX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5Mzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM9MTM0Nz1zdGF0aWMgdm9pZCBydHc4OV9waHlfY29uZmlnX2JiX3JlZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xMzYwLVx0fSBlbHNlIGlmIChyZWctXHUwMDNlYWRkciA9PSAweGZiKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jOjEzNjE6XHRcdHJ0dzg5X2lvX3VkZWxheShydHdkZXYsIDUwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2Mi1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmYSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzYzOlx0XHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCA1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2NC1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmOSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzY1Olx0XHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2Ni1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWRhdGEgPT0gQllQQVNTX0NSX0RBVEEpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jPTE2ODk9dm9pZCBydHc4OV9waHlfY29uZmlnX3JmX3JlZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xNzAwLVx0fSBlbHNlIGlmIChyZWctXHUwMDNlYWRkciA9PSAweGZiKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jOjE3MDE6XHRcdHJ0dzg5X2lvX3VkZWxheShydHdkZXYsIDUwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTcwMi1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmYSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxNzAzOlx0XHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCA1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTcwNC1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmOSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxNzA1Olx0XHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTcwNi1cdH0gZWxzZSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyNTgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHNwZWFraW5nIGZyb20gdGhlIGZpcnN0IHBlcnNvbiBhcyB0aG91Z2ggaXQmIzM5O3MgbXkgb3duIGludGVybmFsIGRpYWxvZ3VlLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBgcnR3ODlfaW9fbWRlbGF5YCoqCgpIbW0sIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBydHc4OV9pb19tZGVsYXlgIG5vdywgYXJlIHdlPyBSaWdodCwgSSYjMzk7dmUgc2VlbiB0aGF0IGZ1bmN0aW9uIGEgaHVuZHJlZCB0aW1lcy4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGNvbnRleHQgYXJlIHdlIGNvbnNpZGVyaW5nIGl0IGluPyBJcyB0aGlzIGFib3V0IHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24/IE9yIG1heWJlIGluIGhhbmRsaW5nIHNvbWUga2luZCBvZiBkYXRhIHRyYW5zZmVyIG9yIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmU/IEtub3dpbmcgdGhhdCBpcyBrZXkuICpydHc4OV9pb19tZGVsYXkqIGl0c2VsZiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIC0gaXQmIzM5O3MgYSBkZWxheSBmdW5jdGlvbiBtZWFzdXJlZCBpbiBtaWxsaXNlY29uZHMuIFN0YW5kYXJkIHN0dWZmLiBXaGF0JiMzOTtzIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBwYXJ0aWN1bGFyIGNhbGw/IElzIGl0IGZvciBhIGNyaXRpY2FsIHRpbWluZyBsb29wIG9yIGlzIGl0IGp1c3Qgd2FpdGluZyBmb3IgYSBkZXZpY2UgcmVhZHkgc2lnbmFsLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8KCkkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBzaG91bGQgYmUgd29ycmllZCBhYm91dD8gRG9lcyB0aGlzIGRlbGF5IGludGVyYWN0IHdpdGggYW55IG90aGVyIHRpbWVycywgb3IgaW50ZXJydXB0cz8gSXMgdGhlIGRlbGF5IHZhbHVlIGZpeGVkIG9yIGNhbGN1bGF0ZWQgZHluYW1pY2FsbHk/IElmIGl0JiMzOTtzIHZhcmlhYmxlLCBob3cgaXMgdGhhdCB2YWx1ZSBkZXJpdmVkPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBvdmVyZmxvdyBpc3N1ZXM/CgpMZXQmIzM5O3MgbG9vayBhdCBob3cgdGhlIGRlbGF5IGlzIGltcGxlbWVudGVkIGluIHRoZSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgd2UgYXJlIHdvcmtpbmcgd2l0aC4uLiBpcyBpdCBidXN5IHdhaXRpbmcgb3IgZG9lcyBpdCB5aWVsZCB0aGUgQ1BVPyBIb3cgYWNjdXJhdGUgaXMgdGhpcyAqbWRlbGF5KiBpbXBsZW1lbnRhdGlvbj8gQXJlIHRoZXJlIGFueSBiZXR0ZXIsIG1vcmUgcHJlY2lzZSB0aW1pbmcgbWV0aG9kcyB3ZSBjb3VsZCB1c2UgaGVyZT8gUGVyaGFwcyBhIGhhcmR3YXJlIHRpbWVyLCBvciBhIG1vcmUgZ3JhbnVsYXIga2VybmVsLWxldmVsIGRlbGF5IGZ1bmN0aW9uIG1pZ2h0IGJlIG1vcmUgYXBwcm9wcmlhdGUsIGRlcGVuZGluZyBvbiB0aGUgcmVxdWlyZW1lbnRzLgoKT2theSwgbGV0JiMzOTtzIHRyYWNlIHRoaXMgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLiBUaW1lIHRvIGdldCB0byB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfaW9fbWRlbGF5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9NjkzNz1zdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfaW9fdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo2OTQ1OnN0YXRpYyBpbmxpbmUgdm9pZCBydHc4OV9pb19tZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbXMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02OTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jPTEzNDc9c3RhdGljIHZvaWQgcnR3ODlfcGh5X2NvbmZpZ19iYl9yZWcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1NC1cdGlmIChyZWctXHUwMDNlYWRkciA9PSAweGZlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jOjEzNTU6XHRcdHJ0dzg5X2lvX21kZWxheShydHdkZXYsIDUwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1Ni1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzU3Olx0XHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCA1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1OC1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmYykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzU5Olx0XHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCAxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2MC1cdH0gZWxzZSBpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmYikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM9MTY4OT12b2lkIHJ0dzg5X3BoeV9jb25maWdfcmZfcmVnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTQtXHRpZiAocmVnLVx1MDAzZWFkZHIgPT0gMHhmZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxNjk1Olx0XHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCA1MCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTYtXHR9IGVsc2UgaWYgKHJlZy1cdTAwM2VhZGRyID09IDB4ZmQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTY5NzpcdFx0cnR3ODlfaW9fbWRlbGF5KHJ0d2RldiwgNSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTgtXHR9IGVsc2UgaWYgKHJlZy1cdTAwM2VhZGRyID09IDB4ZmMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTY5OTpcdFx0cnR3ODlfaW9fbWRlbGF5KHJ0d2RldiwgMSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE3MDAtXHR9IGVsc2UgaWYgKHJlZy1cdTAwM2VhZGRyID09IDB4ZmIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jPTE3MTM9dm9pZCBydHc4OV9waHlfY29uZmlnX3JmX3JlZ192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xNzE4LVx0aWYgKHJlZy1cdTAwM2VhZGRyID09IDB4ZmUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTcxOTpcdFx0cnR3ODlfaW9fbWRlbGF5KHJ0d2RldiwgNTApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xNzIwLVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjkxCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoOiBGaXJtd2FyZSBDb21tdW5pY2F0aW9uIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyB0aGUgYHNyY2AgZmllbGQgd2l0aGluIHRoZSBgcnR3ODlfZndfY21kX29mbGRfYXJnYCBzdHJ1Y3QgdG8gYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUNgIHdoZW4gaXNzdWluZyBhIGRlbGF5IGNvbW1hbmQgdG8gdGhlIGZpcm13YXJlLiBUaGF0JiMzOTtzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgd2UmIzM5O3JlIGFsdGVyaW5nIHRoZSBkYXRhIHRoZSBkcml2ZXIgc2VuZHMgZG93biB0aGUgbGluZS4gVGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgYmUgZnV6emluZz8KCkl0JiMzOTtzIGEgbW9kaWZpY2F0aW9uIGluIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgZmlybXdhcmUsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gRGVsYXkgY29tbWFuZHMgYXJlbiYjMzk7dCB0eXBpY2FsbHkgdGhlIGp1aWNpZXN0IHRhcmdldHMsIGJ1dCBhbnkgZnVuY3Rpb25hbCBjaGFuZ2Ugd2FycmFudHMgYSBjbG9zZXIgbG9vay4KCkFoLCBidXQgaXMgdGhpcyBhY3R1YWxseSBmdXp6YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJZiB3ZSB1c2UgYSBkdW1teSBVU0IgSENELCBzb21ldGhpbmcgbGlrZSBgZHVtbXlfaGNkYCwgYW5kIGVtdWxhdGUgdGhlIFVTQiBkZXZpY2UsIHRoZW4gdGhlIGRyaXZlciAqd2lsbCogcHJvYmUgYW5kIHNlbmQgdGhlc2UgY29tbWFuZHMgdG8gdGhlIGVtdWxhdGVkIGZpcm13YXJlLiBUaGUgZnV6emVyIGNvdWxkIHRoZW4gaW50ZXJjZXB0IHRoZXNlIGNvbW1hbmRzIGFuZCBjcmFmdCByZXNwb25zZXMuIEV4Y2VsbGVudC4KClJpZ2h0LCBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci4gU3l6a2FsbGVyLCB3aGljaCBpcyBvdXIgZnV6emVyIG9mIGNob2ljZSwgdXNlcyBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpIGZ1enppbmcuIEhvd2V2ZXIsIGl0ICphbHNvKiBzdXBwb3J0cyBmdXp6aW5nIFVTQiBkZXZpY2VzIHVzaW5nIGBkdW1teV9oY2RgLgoKSWYgd2UmIzM5O3JlIGdvaW5nIHRvIHB1cnN1ZSB0aGlzLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGUgYXBwcm9wcmlhdGUgUlRXODkgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQuIExldCBtZSBtYWtlIGEgbWVudGFsIG5vdGUgdG8gY2hlY2sgdGhhdCBgQ09ORklHX1JUVzg5Xzg4NTFCVWAsIGBDT05GSUdfUlRXODlfODg1MkFVYCwgYENPTkZJR19SVFc4OV84ODUyQlVgLCBgQ09ORklHX1JUVzg5Xzg4NTJDVWAsIGFuZCBgQ09ORklHX1JUVzg5Xzg5MjJBVWAgYXJlIGFsbCBhY3RpdmF0ZWQuCgpIb2xkIG9uLCBJIHNob3VsZCBhbHNvIGNoZWNrIGlmIGBSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVJgIGlzIHVzZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZS4gR290dGEgZ2V0IHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTQwCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBSZW1vdmVkIEZpcm13YXJlIEVudW0qKgoKUmlnaHQsIHNvIHNvbWV0aGluZyB3YXMgcHVsbGVkIG91dCBvZiB0aGUgZW51bSBpbiBgZncuaGAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0ICp3aHkqIGFuZCB3aGF0IGltcGFjdCB0aGF0IHJlbW92YWwgbWlnaHQgaGF2ZS4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIGNvZGUgdG8gdHJhY2UgdGhlIGltcGxpY2F0aW9ucy4KCkZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHVzYWdlcyBvZiBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBhbmQgYHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheWAuIFRoZXNlIHNlZW0gbGlrZSByZWxhdGVkIGNvbW1hbmRzLiBXZXJlIHRoZXNlIHRoZSBzcGVjaWZpYyBlbGVtZW50cyBhZmZlY3RlZCBieSB0aGUgcmVtb3ZhbD8gQXJlIHRoZXkgc3RpbGwgYmVpbmcgdXNlZCBhbnl3aGVyZT8gQXJlIHRoZXJlIGFueSBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGNvbnNpZGVyPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhleSB3ZXJlIGJlaW5nIHVzZWQgYmVmb3JlIHRoZSBjaGFuZ2UgYW5kIHdoYXQgbW9kaWZpY2F0aW9ucywgaWYgYW55LCB3ZXJlIG1hZGUgdG8gc3Vic3RpdHV0ZSB0aGVpciByZW1vdmFsLiBUaGlzIGlzIGdvaW5nIHRvIGludm9sdmUgc29tZSBjYXJlZnVsIGdyZXBwaW5nIGFuZCBjb2RlIGRpdmluZywgYnV0IGl0JiMzOTtzIGEgY3JpdGljYWwgc3RlcCB0byB1bmRlcnN0YW5kaW5nIHRoZSByYW1pZmljYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYm90aCB0aGUga2VybmVsIGRyaXZlcnMgYW5kIHBvdGVudGlhbGx5IGFueSBhc3NvY2lhdGVkIHVzZXJzcGFjZSB0b29scyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmlybXdhcmUgbm93IGhhbmRsZXMgdGhlIG9wZXJhdGlvbnMgcHJldmlvdXNseSBoYW5kbGVkIGJ5IHdoYXRldmVyIHdhcyByZW1vdmVkIGZyb20gdGhlIGVudW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMTc1Nj1zdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF93cml0ZV9yZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExNzc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExNzgwOnN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTc4MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExODA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaW9fb3BzIHJ0dzg5X2Z3X2NtZF9vZmxkX2lvID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTgxMC1cdC51bnBhY2sgPSBydHc4OV9md19jbWRfb2ZsZF91bnBhY2ssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MTE6XHQuZG9fdWRlbGF5ID0gcnR3ODlfZndfY21kX29mbGRfdWRlbGF5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODEyLVx0LmRvX21kZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyNjIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IHJlbGV2YW50IGFyZSBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBhbmQgYHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheWAuIEFsc28sIGBydHc4OV9waHlfY29uZmlnX2JiX3JlZ2AgYW5kIGBydHc4OV9waHlfY29uZmlnX3JmX3JlZ2Agd2hpY2ggY2FsbCB0aG9zZSBkZWxheSBmdW5jdGlvbnMuCgpXYWl0IGEgc2Vjb25k4oCmdGhpcyBpcyBqdXN0IGNoYW5naW5nIHRoZSBgc3JjYCBmaWVsZCB3aXRoaW4gYSBkZWxheSBjb21tYW5kIHRvIHRoZSBmaXJtd2FyZS4gSG9uZXN0bHksIGlzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyBJdCBzZWVtcyBsaWtlIGEgcHJldHR5IHRhcmdldGVkIG1vZGlmaWNhdGlvbiB0byBqdXN0IG9uZSB2ZXJ5IHNwZWNpZmljIGNvbW1hbmQuIElmIHRoZSBmdXp6ZXIgaGl0cyB0aGlzLCBpdCYjMzk7bGwgcHJvYmFibHkganVzdCB0cmlnZ2VyIGEgZGVsYXksIHdoaWNoIGlzIG5vdCBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCAqaXMqIHRlY2huaWNhbGx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0IGRlc2VydmVzIHNvbWUgdGhvdWdodC4gTGV0IG1lIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgZ29pbmcgb24gaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE3ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE3ODA6XHRzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpXG4xMTc4MTpcdHtcbjExNzgyOlx0XHRzdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfYXJnIGNtZCA9IHtcbjExNzgzOlx0XHRcdC5zcmMgPSBSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDLFxuMTE3ODQ6XHRcdFx0LnR5cGUgPSBSVFc4OV9GV19DTURfT0ZMRF9ERUxBWSxcbjExNzg1Olx0XHRcdC52YWx1ZSA9IHVzLFxuMTE3ODY6XHRcdH07XG4xMTc4NzpcdFx0aW50IHJldDtcbjExNzg4Olx0XG4xMTc4OTpcdFx0cmV0ID0gcnR3ODlfZndfY21kX29mbGRfZW5xdWV1ZShydHdkZXYsIFx1MDAyNmNtZCk7XG4xMTc5MDpcdFx0aWYgKHJldClcbjExNzkxOlx0XHRcdHVkZWxheSh1cyk7XG4xMTc5MjpcdH1cbjExNzkzOlx0XG4xMTc5NDpcdHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcbjExNzk1Olx0e1xuMTE3OTY6XHRcdHN0cnVjdCBydHc4OV9md19jbWRfb2ZsZF9hcmcgY21kID0ge1xuMTE3OTc6XHRcdFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsXG4xMTc5ODpcdFx0XHQudHlwZSA9IFJUVzg5X0ZXX0NNRF9PRkxEX0RFTEFZLFxuMTE3OTk6XHRcdFx0LnZhbHVlID0gbXMgKiAxMDAwLFxuMTE4MDA6XHRcdH07XG4xMTgwMTpcdFx0aW50IHJldDtcbjExODAyOlx0XG4xMTgwMzpcdFx0cmV0ID0gcnR3ODlfZndfY21kX29mbGRfZW5xdWV1ZShydHdkZXYsIFx1MDAyNmNtZCk7XG4xMTgwNDpcdFx0aWYgKHJldClcbjExODA1Olx0XHRcdG1kZWxheShtcyk7XG4xMTgwNjpcdH1cbjExODA3Olx0XG4xMTgwODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaW9fb3BzIHJ0dzg5X2Z3X2NtZF9vZmxkX2lvID0ge1xuMTE4MDk6XHRcdC5wYWNrID0gcnR3ODlfZndfY21kX29mbGRfcGFjayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNjgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEZpcm13YXJlIENvbW1hbmQgRW5xdWV1ZWluZyoqCgpPa2F5LCBzbyB3aGF0IHdlIGhhdmUgaGVyZSBpcyBhIHByb2Nlc3MgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbGx5IGFib3V0IGdldHRpbmcgYSBjb21tYW5kIHRvIHRoZSBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIHRha2Vhd2F5IGlzIHRoYXQgdGhpcyBtZWNoYW5pc20gdXRpbGl6ZXMgYW4gZW5xdWV1ZSBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGBydHc4OV9md19jbWRfb2ZsZF9lbnF1ZXVlYC4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBwYXRoLiBJdCBzZWVtcyBwcmV0dHkgcm9idXN0LCBiZWNhdXNlIGlmIHRoYXQgZmFpbHMsIHRoZXJlJiMzOTtzIGEgZmFsbGJhY2sgc3RyYXRlZ3kgaW52b2x2aW5nIGB1ZGVsYXlgIGFuZCBgbWRlbGF5YCwgaW5kaWNhdGluZyB0aGV5IGFyZSB1c2luZyBhIGJhc2ljIGRlbGF5IGZhbGxiYWNrLCBwZXJoYXBzIGZvciBzdGFiaWxpdHkgaWYgZW5xdWV1ZSBmYWlscy4KCkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBJIGFtIGNvbmZpZGVudCB0aGF0IHRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIHRocm91Z2ggVVNCIGZ1enppbmcgLSB0aGF0JiMzOTtzIHZlcnkgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCwgYW5kIGluZm9ybXMgbXkgbGF0ZXIgcHJpb3JpdGllcy4gVGhpcyBpcyBhIHNvbGlkIHRhcmdldCBmb3IgaW52ZXN0aWdhdGlvbi4gVGhlIGNyaXRpY2FsIHN5bWJvbHMgdG8gc2NydXRpbml6ZSBhcmUsIG9idmlvdXNseSwgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBUaGV5IHJlcHJlc2VudCB0aGUgYmFja3VwIGRlbGF5cywgYW5kIGlmIHRoZSBtYWluIGVucXVldWUgZnVuY3Rpb24gZmFpbHMsIHNvbWV0aGluZyBjb3VsZCBnbyB2ZXJ5IHdyb25nLgoKUmVnYXJkaW5nIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLCBpdCBzZWVtcyB0aGlzIGNvZGUgaXMgZW5hYmxlZCBieSB0aGUgYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYCBjb25maWd1cmF0aW9ucy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBhZmZlY3QgdGhpcyBjb2RlIHBhdGguIEkgd2lsbCBuZWVkIHRvIHNlYXJjaCB0aGUgY29uZmlnIHRvIGRldGVybWluZSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTExPWlmIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM6Y29uZmlnIFJUVzg5X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMzpjb25maWcgUlRXODlfODg1MUJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjctXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI5OmNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMC1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzI6Y29uZmlnIFJUVzg5Xzg4NTJCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mzg6Y29uZmlnIFJUVzg5Xzg4NTJDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzktXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQxOmNvbmZpZyBSVFc4OV84OTIyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1NTpjb25maWcgUlRXODlfODg1MUJVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2Njpjb25maWcgUlRXODlfODg1MkFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzgtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4ODpjb25maWcgUlRXODlfODg1MkJFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDA6Y29uZmlnIFJUVzg5Xzg4NTJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTI0OmNvbmZpZyBSVFc4OV84ODUyQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjUtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzNTpjb25maWcgUlRXODlfODg1MkNVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYwOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjEtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTcyOmNvbmZpZyBSVFc4OV9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4NDpjb25maWcgUlRXODlfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4NS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxMzkKCQkJCQkJCW91dHB1dDogMTY0CgkJCQkJCQl0aG91Z2h0czogNDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBSVFc4OSBGaXJtd2FyZSBDb21tYW5kIE9mZmxvYWQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBnZXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQ7IGl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgUlRXODlfODg1MUJVYCwgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYW5kIGBSVFc4OV84OTIyQVVgIGFyZSBhbGwgc2V0LiBOb3csIHRoZSBtZWF0IG9mIGl0OiB0aGlzIHBhdGNoIGFsdGVycyB0aGUgYHNyY2AgZmllbGQgd2l0aGluIHRoZSBmaXJtd2FyZSBjb21tYW5kLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaXQgZnJvbSBgUlRXODlfRldfQ01EX09GTERfU1JDX09USEVSYCB0byBgUlRXODlfRldfQ01EX09GTERfU1JDX01BQ2AuIFRoaXMgaXMgYSBjbGVhciBkYXRhIGNoYW5nZSBzZW50IHRvIHRoZSBmaXJtd2FyZSBhbmQgaW1tZWRpYXRlbHkgc3BhcmtzIG15IGludGVyZXN0IGFzIGEgZnV6emluZyBjYW5kaWRhdGUuCgpJcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQ/IEFic29sdXRlbHkuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjb3NtZXRpYyBjaGFuZ2U7IGl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc2hpZnQgaW4gaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGZpcm13YXJlLiBBIGZ1enplciBjYW4gZGVmaW5pdGVseSBpbnRlcmNlcHQgdGhlc2UgY29tbWFuZHMgYW5kIGluamVjdCBtb2RpZmllZCByZXNwb25zZXMuIFRoaXMgaXMgYSBwcmltZSBleGFtcGxlIG9mIHdoZXJlIGZ1enppbmcgc2hpbmVzLgoKU28sIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enplciBvbiBhcmUgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBJIG5lZWQgdG8gY29uZmlybSBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBpcyByZWFjaGFibGUsIGhvd2V2ZXIuIExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgY2FsbGVkIGZyb20gYHJ0dzg5X2lvX3VkZWxheWAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYHJ0dzg5X3BoeV9jb25maWdfYmJfcmVnYCBhbmQgYHJ0dzg5X3BoeV9jb25maWdfcmZfcmVnYC4gUGVyZmVjdC4gVGhlc2Ugcm91dGluZXMgYXJlIGNsZWFybHkgcGFydCBvZiB0aGUgUEhZIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCB3aGljaCBoYXBwZW5zIGR1cmluZyBkZXZpY2UgcHJvYmUgb3IgaW50ZXJmYWNlIGJyaW5nLXVwLiBTbyB0aGUgdGFyZ2V0IGlzIGNsZWFybHkgcmVhY2hhYmxlLgoKVGhlcmVmb3JlLCB0byBzb2xpZGlmeSBteSB0aGlua2luZzoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gYmVjYXVzZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IHRoZSBkcml2ZXIgYW5kIGZpcm13YXJlIGNvbW11bmljYXRlLgoqICAgKipGb2N1c1N5bWJvbHM6KiogYFsmIzM0O3J0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSYjMzQ7LCAmIzM0O3J0dzg5X2Z3X2NtZF9vZmxkX21kZWxheSYjMzQ7XWAgLSBhcyB0aGV5IHJlbGF0ZSB0byB0aGUgdGFyZ2V0IGNvbW1hbmQuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYFsmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LCAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LCAmIzM0O1JUVzg5Xzg4NTJCVSYjMzQ7LCAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LCAmIzM0O1JUVzg5Xzg5MjJBVSYjMzQ7XWAgLSB0byBlbmFibGUgdGhlIHRhcmdldC4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc291cmNlIGZpZWxkIG9mIHRoZSBkZWxheSBjb21tYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLCBhbmQgaXQgaXMgZWFzaWx5IHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4gVGltZSB0byBmaXJlIHVwIHRoZSBmdXp6ZXIhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDEwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OV84ODUxQlUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQ1UmIzM0OywKICAgICYjMzQ7UlRXODlfODkyMkFVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfZndfY21kX29mbGRfdWRlbGF5JiMzNDssCiAgICAmIzM0O3J0dzg5X2Z3X2NtZF9vZmxkX21kZWxheSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc291cmNlIGZpZWxkIG9mIHRoZSBkZWxheSBjb21tYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLCByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkmIzM0OywKICAgICYjMzQ7cnR3ODlfZndfY21kX29mbGRfbWRlbGF5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzb3VyY2UgZmllbGQgb2YgdGhlIGRlbGF5IGNvbW1hbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM0OjAxLjk0OTQ4Mzg3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxODk1ODE3MTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84ODUyQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJDVVwiLFxuICAgIFwiUlRXODlfODkyMkFVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODlfZndfY21kX29mbGRfdWRlbGF5XCIsXG4gICAgXCJydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc291cmNlIGZpZWxkIG9mIHRoZSBkZWxheSBjb21tYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MDEuOTQ5NDkyMTE0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzY4MTczNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4OTA5MDZkNjJiNWEyM2EzYWZkM2JiZmU5MjliMzMyZWNhZWMzMmEzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDE0IDEwOjM0OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4xYzM3MDM0MTI1MzMyNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcXG5AQCAtMTE3ODAsNyArMTE3ODAsNyBAQCBzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF93cml0ZV9yZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfYXJnIGNtZCA9IHtcXG4tXFx0XFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcXG4rXFx0XFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsXFxuIFxcdFxcdC50eXBlID0gUlRXODlfRldfQ01EX09GTERfREVMQVksXFxuIFxcdFxcdC52YWx1ZSA9IHVzLFxcbiBcXHR9O1xcbkBAIC0xMTc5NCw3ICsxMTc5NCw3IEBAIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcXG4gc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfbWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKVxcbiB7XFxuIFxcdHN0cnVjdCBydHc4OV9md19jbWRfb2ZsZF9hcmcgY21kID0ge1xcbi1cXHRcXHQuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX09USEVSLFxcbitcXHRcXHQuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX01BQyxcXG4gXFx0XFx0LnR5cGUgPSBSVFc4OV9GV19DTURfT0ZMRF9ERUxBWSxcXG4gXFx0XFx0LnZhbHVlID0gbXMgKiAxMDAwLFxcbiBcXHR9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcXG5pbmRleCAyMDcyMWQ1MjA5YWEzYS4uM2ZjYjNhYzhjNzExNTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXFxuQEAgLTMxNDIsNyArMzE0Miw2IEBAIGVudW0gcnR3ODlfZndfY21kX29mbGRfYXJnX3NyYyB7XFxuIFxcdFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19SRixcXG4gXFx0UlRXODlfRldfQ01EX09GTERfU1JDX01BQyxcXG4gXFx0UlRXODlfRldfQ01EX09GTERfU1JDX1JGX0RESUUsXFxuLVxcdFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcXG4gfTtcXG4gXFxuIGVudW0gcnR3ODlfZndfY21kX29mbGRfYXJnX3R5cGUge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDozNDowMi40ODcyMjQyNzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMzU4MDYzMDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84ODUyQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJDVVwiLFxuICAgIFwiUlRXODlfODkyMkFVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODlfZndfY21kX29mbGRfdWRlbGF5XCIsXG4gICAgXCJydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc291cmNlIGZpZWxkIG9mIHRoZSBkZWxheSBjb21tYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUsIHJlYWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4OTA5MDZkNjJiNWEyM2EzYWZkM2JiZmU5MjliMzMyZWNhZWMzMmEzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTA6MzQ6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbmluZGV4IGQ2YTU5NGI3NWFiMjAyLi4xYzM3MDM0MTI1MzMyNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG5AQCAtMTE3ODAsNyArMTE3ODAsNyBAQCBzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF93cml0ZV9yZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxuIHtcbiBcdHN0cnVjdCBydHc4OV9md19jbWRfb2ZsZF9hcmcgY21kID0ge1xuLVx0XHQuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX09USEVSLFxuK1x0XHQuc3JjID0gUlRXODlfRldfQ01EX09GTERfU1JDX01BQyxcbiBcdFx0LnR5cGUgPSBSVFc4OV9GV19DTURfT0ZMRF9ERUxBWSxcbiBcdFx0LnZhbHVlID0gdXMsXG4gXHR9O1xuQEAgLTExNzk0LDcgKzExNzk0LDcgQEAgc3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxuIHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfZndfY21kX29mbGRfYXJnIGNtZCA9IHtcbi1cdFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUixcbitcdFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsXG4gXHRcdC50eXBlID0gUlRXODlfRldfQ01EX09GTERfREVMQVksXG4gXHRcdC52YWx1ZSA9IG1zICogMTAwMCxcbiBcdH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXG5pbmRleCAyMDcyMWQ1MjA5YWEzYS4uM2ZjYjNhYzhjNzExNTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxuQEAgLTMxNDIsNyArMzE0Miw2IEBAIGVudW0gcnR3ODlfZndfY21kX29mbGRfYXJnX3NyYyB7XG4gXHRSVFc4OV9GV19DTURfT0ZMRF9TUkNfUkYsXG4gXHRSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDLFxuIFx0UlRXODlfRldfQ01EX09GTERfU1JDX1JGX0RESUUsXG4tXHRSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVIsXG4gfTtcbiBcbiBlbnVtIHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZ190eXBlIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM0OjAyLjQ4NzIyNjIwM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NjM4MjM1NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBydHc4OS9mdy5jYCBhbmQgYHJ0dzg5L2Z3LmhgLiBTZWVtcyBsaWtlIHRoZXkncmUgcmVuYW1pbmcgYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUmAgdG8gYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUNgIGluIGEgY291cGxlIG9mIGZ1bmN0aW9ucyDigJMgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBUaGV5J3JlIGFsc28gcmVtb3ZpbmcgaXQgZnJvbSB0aGUgYGVudW0gcnR3ODlfZndfY21kX29mbGRfYXJnX3NyY2AuIEludGVyZXN0aW5nLiBJdCBsb29rcyBsaWtlIGl0IGNvdWxkIGJlIHNvbWUgc29ydCBvZiBvZmZsb2FkIGNvbW1hbmQgc291cmNlIHJlbGF0ZWQgdG8gTUFDIGFkZHJlc3Nlcy5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBJJ20gbm93IHRoaW5raW5nIGFib3V0IHdoZXJlIHRoaXMgY29kZSB3b3VsZCBldmVuIGJlIGV4ZXJjaXNlZC4gU3BlY2lmaWNhbGx5LCBJJ20gY3VyaW91cyBpZiB0aGlzIGNvZGUgcGF0aCBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgZHJpdmVyLCBgcnR3ODlgLCByaW5ncyBhIGJlbGwsIGJ1dCBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCBpdHMgYXJjaGl0ZWN0dXJlLiBJIGJlbGlldmUgaXQncyBmb3IgUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjYXJkcywgc28gSSBrbm93IGl0J3MgcmVsYXRlZCB0byBtb2Rlcm4gV2ktRmkuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQgYSBQQ0kgb3IgVVNCIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBkcml2ZXIuIExldCBtZSBkaWcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnYCB0byBjb25maXJtIGl0cyBuYXR1cmUgYW5kLCBjb25zZXF1ZW50bHksIGl0cyBwb3RlbnRpYWwgZm9yIHVzZSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBsb3ltZW50IHByb2ZpbGUgdG8gcHJvcGVybHkgZ2F1Z2UgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM0OjA4LjI1MTA1MTgyNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODI4NjE1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlRXODlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI6bWVudWNvbmZpZyBSVFc4OVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTE9aWYgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3OmNvbmZpZyBSVFc4OV9QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIzOmNvbmZpZyBSVFc4OV84ODUxQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjY6Y29uZmlnIFJUVzg5Xzg4NTJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMwLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozMjpjb25maWcgUlRXODlfODg1MkJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM1OmNvbmZpZyBSVFc4OV84ODUyQlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDE6Y29uZmlnIFJUVzg5Xzg5MjJBXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQyLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0NDpjb25maWcgUlRXODlfODg1MUJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NTU6Y29uZmlnIFJUVzg5Xzg4NTFCVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy01Ni1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjY2OmNvbmZpZyBSVFc4OV84ODUyQUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo3Nzpjb25maWcgUlRXODlfODg1MkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc4LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6ODg6Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04OS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEwMDpjb25maWcgUlRXODlfODg1MkJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMTI6Y29uZmlnIFJUVzg5Xzg4NTJCVEVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRS1WVCBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNDpjb25maWcgUlRXODlfODg1MkNFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyNS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM1OmNvbmZpZyBSVFc4OV84ODUyQ1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNDY6Y29uZmlnIFJUVzg5Xzg5MjJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkFFLzg5MjJBRS1WUyBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2MDpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2MS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzI6Y29uZmlnIFJUVzg5X0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3My1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc1OmNvbmZpZyBSVFc4OV9ERUJVR01TR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1ZyBtZXNzYWdlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxODQ6Y29uZmlnIFJUVzg5X0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTg1LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDozNDowOC4zNDkzNDcyNzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDE0NzI4NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQXR0YWNrIFN1cmZhY2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgaXQncyBnb3QgYSBmZXcgVVNCIGRyaXZlciBjb21wb25lbnRzIGxpc3RlZDogYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGVyZSdzIGEgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3IgdGhyb3VnaCBVU0IgZW11bGF0aW9uLCBzb21ldGhpbmcgbGlrZSB1c2luZyBgZHVtbXlfaGNkYC4gVGhhdCdzIGFsd2F5cyBhbiBpbnRlcmVzdGluZyBhcmVhIHRvIHByb2JlLlxuXG5Ob3csIHRoZSBwYXRjaCBub3RlcyBzcGVjaWZpY2FsbHkgbWVudGlvbiBtb2RpZmljYXRpb25zIHRvIGBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlgIGFuZCBgcnR3ODlfZndfY21kX29mbGRfbWRlbGF5YC4gVGhhdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhvc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB0b3VjaGVkLiBJIG5lZWQgdG8gbWFwIG91dCB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhlIG1vZGlmaWNhdGlvbnMgZG8sIGFuZCB0byBjaGVjayBmb3IgaW50cm9kdWNlZCBidWdzLiBUaW1lIHRvIHRyYWNlIHRoZWlyIGNhbGwgc2l0ZXMgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyOTgsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MTYuNzY0MDc4MTg3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTMyNDg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExNzU2PXN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3dyaXRlX3JmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTc3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE3ODA6c3RhdGljIHZvaWQgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTc4MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTE4MDg9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9pb19vcHMgcnR3ODlfZndfY21kX29mbGRfaW8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTAtXFx0LnVucGFjayA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VucGFjayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MTE6XFx0LmRvX3VkZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTItXFx0LmRvX21kZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MTYuODkzNDMxNTI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTcwMTE3NTg5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlOiBUcmFjaW5nIGBydHc4OV9md19jbWRfb2ZsZF9pb2AqKlxuXG5Pa2F5LCBzbyBJJ20gZGVhbGluZyB3aXRoIHRoZSBgcnR3ODlfZndfY21kX29mbGRfaW9gIGZ1bmN0aW9uLiBSaWdodCBub3csIG15IGZvY3VzIGlzIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHdoZXJlIGl0J3MgYmVpbmcgZW1wbG95ZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBkcml2ZXIuIEl0J3MgY2xlYXIgdGhhdCBpdCdzIGluIHVzZSwgYW5kIEkgbmVlZCB0byBlc3RhYmxpc2ggaXRzIGNvbnRleHQgd2l0aGluIHRoZSBsYXJnZXIgZnJhbWV3b3JrLiBUaGVyZWZvcmUsIG15IG5leHQgc3RlcCBpcyBvYnZpb3VzOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHByZWNpc2VseSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gV2hlcmUgYXJlIHRoZSByZWZlcmVuY2VzPyBXaGF0IG90aGVyIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIGl0PyBLbm93aW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGhlbHAgbWUgY29tcHJlaGVuZCBpdHMgcHVycG9zZSBhbmQgc2lnbmlmaWNhbmNlIHdpdGhpbiB0aGUgYHJ0dzg5YCBtb2R1bGUuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwODcsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDozNDoyNi41OTQ2MTAyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTkxMzA4NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfZndfY21kX29mbGRfaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExNzk0PXN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYy0xMTgwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MDg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9pb19vcHMgcnR3ODlfZndfY21kX29mbGRfaW8gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODA5LVxcdC5wYWNrID0gcnR3ODlfZndfY21kX29mbGRfcGFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMTgyMz1ydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wcyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExODM3OlxcdHJldHVybiBcXHUwMDI2cnR3ODlfZndfY21kX29mbGRfaW87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODM4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MjYuNzEzNzQ2MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjA4NzU1OTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBjb2RlLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFVzYWdlIG9mIGBydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wc2AqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgdXRpbGl6YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwgYHJ0dzg5X2Z3X2NtZF9vZmxkX2FsbG9jX2FuZF9nZXRfaW9fb3BzYC4gSXQncyBhIGtleSBwaWVjZSwgYW5kIHVuZGVyc3RhbmRpbmcgd2hlcmUgaXQncyBjYWxsZWQgd2l0aGluIHRoZSBgcnR3ODlgIGZpcm13YXJlIGNvbW1hbmQgb2ZmbG9hZCBjb250ZXh0IGlzIGNydWNpYWwgZm9yIGdyYXNwaW5nIGl0cyByb2xlIGFuZCwgYnkgZXh0ZW5zaW9uLCB0aGUgb3ZlcmFsbCBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0cyB0byBpbmZlciBpdHMgcHVycG9zZSBwcm9wZXJseS4gRmluZGluZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgaW5zaWdodC4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3IgZGVidWdnaW5nIG9yIGV4dGVuZGluZyBmdW5jdGlvbmFsaXR5LiBUaGUgY2FsbCBncmFwaCB3aWxsIGJlIHRlbGxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2OTgsIk91dHB1dFRva2VucyI6NTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMDozNDozMC4zMjI1MDM4MjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjU0MjgxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz02ODY4PWludCBydHc4OV9jb3JlX2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjg3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo2ODczOlxcdHJ0d2Rldi1cXHUwMDNlaW8gPSBydHc4OV9md19jbWRfb2ZsZF9hbGxvY19hbmRfZ2V0X2lvX29wcyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY4NzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTE4MjI9Y29uc3Qgc3RydWN0IHJ0dzg5X2lvX29wcyAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExODIzOnJ0dzg5X2Z3X2NtZF9vZmxkX2FsbG9jX2FuZF9nZXRfaW9fb3BzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oPTU4MzU9Y29uc3Qgc3RydWN0IHJ0dzg5X2lvX29wcyAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oOjU4MzY6cnR3ODlfZndfY21kX29mbGRfYWxsb2NfYW5kX2dldF9pb19vcHMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgtNTgzNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MzAuNDI5MDUxNzI4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzY0NTc5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSVFc4OSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUlRXODkgaW5pdGlhbGl6YXRpb24gY29kZSwgYW5kIEkgc2VlIHRoYXQgc29tZXRoaW5nIGlzIGJlaW5nIGFzc2lnbmVkIHRvIGBydHdkZXYtXHUwMDNlaW9gIHdpdGhpbiBgcnR3ODlfY29yZV9pbml0YC4gUmlnaHQsIGFuZCBJIHJlbWVtYmVyIGBydHdkZXYtXHUwMDNlaW9gIGlzIGEgcG9pbnRlciB0byB0aGUgYHN0cnVjdCBydHc4OV9pb19vcHNgLiBJdCdzIGEga2V5IHN0cnVjdHVyZSBmb3IgbWFuYWdpbmcgSS9PIG9wZXJhdGlvbnMsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgaGVyZS4gTGV0J3MgdHJhY2UgaG93IHRoYXQncyB1c2VkLCBJIG5lZWQgdG8gc2VlIGV4YWN0bHkgd2hlcmUgYGRvX3VkZWxheWAgYW5kIGBkb19tZGVsYXlgIGFyZSBjYWxsZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhpcyBJL08gaW50ZXJmYWNlIGlzIGJlaW5nIGltcGxlbWVudGVkIGFuZCB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzU0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MzMuNzA1NTExOTU5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI1MjYxODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG9fdWRlbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTY0MDc9c3RydWN0IHJ0dzg5X2lvX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02NDA5LVxcdGludCAoKnVucGFjaykoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo2NDEwOlxcdHZvaWQgKCpkb191ZGVsYXkpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02NDExLVxcdHZvaWQgKCpkb19tZGVsYXkpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTY5Mzc9c3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2lvX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC02OTM4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo2OTM5OlxcdGlmIChydHdkZXYtXFx1MDAzZWlvLVxcdTAwM2Vkb191ZGVsYXkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6Njk0MDpcXHRcXHRydHdkZXYtXFx1MDAzZWlvLVxcdTAwM2Vkb191ZGVsYXkocnR3ZGV2LCB1cyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNjk0MS1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM9MTE4MDg9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9pb19vcHMgcnR3ODlfZndfY21kX29mbGRfaW8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTAtXFx0LnVucGFjayA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VucGFjayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmM6MTE4MTE6XFx0LmRvX3VkZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE4MTItXFx0LmRvX21kZWxheSA9IHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MzMuODI4MDQyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTU4NjMwNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIHJ0dzg5IERlbGF5IEZ1bmN0aW9ucyoqXG5cblJpZ2h0LCBzbyBgcnR3ODlfaW9fdWRlbGF5YCBhbmQgYHJ0dzg5X2lvX21kZWxheWAgYXJlIHRoZSBkZWxheSBmdW5jdGlvbnMsIHRoZSB3cmFwcGVycyB0aGVtc2VsdmVzLiBNeSBmb2N1cyByaWdodCBub3cgaXMgdW5kZXJzdGFuZGluZyB0aGVpciB1c2FnZSB3aXRoaW4gdGhpcyBgcnR3ODlgIGNvbnRleHQuIEkgbmVlZCB0byB0cmFjZSB0aGVpciBjYWxscywgc2VlIHdoZXJlIGFuZCBob3cgdGhleSdyZSBiZWluZyBsZXZlcmFnZWQuIEFyZSB0aGV5IHVzZWQgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGludGVyYWN0aW9ucywgd2FpdGluZyBmb3IgcmVnaXN0ZXJzIHRvIHNldHRsZSwgb3IgZm9yIG1vcmUgZ2VuZXJhbC1wdXJwb3NlIGRlbGF5cz8gV2hhdCdzIHRoZSBncmFudWxhcml0eSBvZiB0aGVpciBhcHBsaWNhdGlvbj8gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgYmUga2V5IHRvIG9wdGltaXppbmcgcGVyZm9ybWFuY2Ugb3IgaWRlbnRpZnlpbmcgcG90ZW50aWFsIGJvdHRsZW5lY2tzIHdpdGhpbiB0aGUgZHJpdmVyLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTkwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MzYuOTg2Njc1NDU5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIzMTQ2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfaW9fdWRlbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTY5Mjk9c3RhdGljIGlubGluZSBpbnQgcnR3ODlfaW9fdW5wYWNrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NjkzNzpzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfaW9fdWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYz0xMzQ3PXN0YXRpYyB2b2lkIHJ0dzg5X3BoeV9jb25maWdfYmJfcmVnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2MC1cXHR9IGVsc2UgaWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzYxOlxcdFxcdHJ0dzg5X2lvX3VkZWxheShydHdkZXYsIDUwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTEzNjItXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmYSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTM2MzpcXHRcXHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCA1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTEzNjQtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmOSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTM2NTpcXHRcXHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTEzNjYtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWRhdGEgPT0gQllQQVNTX0NSX0RBVEEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM9MTY4OT12b2lkIHJ0dzg5X3BoeV9jb25maWdfcmZfcmVnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTcwMC1cXHR9IGVsc2UgaWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxNzAxOlxcdFxcdHJ0dzg5X2lvX3VkZWxheShydHdkZXYsIDUwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE3MDItXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmYSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTcwMzpcXHRcXHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCA1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE3MDQtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmOSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTcwNTpcXHRcXHRydHc4OV9pb191ZGVsYXkocnR3ZGV2LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE3MDYtXFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6MzcuMTI4OTk0NTY4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTM5ODMyNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHNwZWFraW5nIGZyb20gdGhlIGZpcnN0IHBlcnNvbiBhcyB0aG91Z2ggaXQncyBteSBvd24gaW50ZXJuYWwgZGlhbG9ndWUsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgcnR3ODlfaW9fbWRlbGF5YCoqXG5cbkhtbSwgc28gd2UncmUgbG9va2luZyBhdCBgcnR3ODlfaW9fbWRlbGF5YCBub3csIGFyZSB3ZT8gUmlnaHQsIEkndmUgc2VlbiB0aGF0IGZ1bmN0aW9uIGEgaHVuZHJlZCB0aW1lcy4gTGV0J3Mgc2VlLi4uIHdoYXQgY29udGV4dCBhcmUgd2UgY29uc2lkZXJpbmcgaXQgaW4/IElzIHRoaXMgYWJvdXQgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uPyBPciBtYXliZSBpbiBoYW5kbGluZyBzb21lIGtpbmQgb2YgZGF0YSB0cmFuc2ZlciBvciBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lPyBLbm93aW5nIHRoYXQgaXMga2V5LiAqcnR3ODlfaW9fbWRlbGF5KiBpdHNlbGYgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCAtIGl0J3MgYSBkZWxheSBmdW5jdGlvbiBtZWFzdXJlZCBpbiBtaWxsaXNlY29uZHMuIFN0YW5kYXJkIHN0dWZmLiBXaGF0J3MgdGhlICp3aHkqIGJlaGluZCB0aGlzIHBhcnRpY3VsYXIgY2FsbD8gSXMgaXQgZm9yIGEgY3JpdGljYWwgdGltaW5nIGxvb3Agb3IgaXMgaXQganVzdCB3YWl0aW5nIGZvciBhIGRldmljZSByZWFkeSBzaWduYWwsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5P1xuXG5JIG5lZWQgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZS4gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgc2hvdWxkIGJlIHdvcnJpZWQgYWJvdXQ/IERvZXMgdGhpcyBkZWxheSBpbnRlcmFjdCB3aXRoIGFueSBvdGhlciB0aW1lcnMsIG9yIGludGVycnVwdHM/IElzIHRoZSBkZWxheSB2YWx1ZSBmaXhlZCBvciBjYWxjdWxhdGVkIGR5bmFtaWNhbGx5PyBJZiBpdCdzIHZhcmlhYmxlLCBob3cgaXMgdGhhdCB2YWx1ZSBkZXJpdmVkPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBvdmVyZmxvdyBpc3N1ZXM/XG5cbkxldCdzIGxvb2sgYXQgaG93IHRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIHdlIGFyZSB3b3JraW5nIHdpdGguLi4gaXMgaXQgYnVzeSB3YWl0aW5nIG9yIGRvZXMgaXQgeWllbGQgdGhlIENQVT8gSG93IGFjY3VyYXRlIGlzIHRoaXMgKm1kZWxheSogaW1wbGVtZW50YXRpb24/IEFyZSB0aGVyZSBhbnkgYmV0dGVyLCBtb3JlIHByZWNpc2UgdGltaW5nIG1ldGhvZHMgd2UgY291bGQgdXNlIGhlcmU/IFBlcmhhcHMgYSBoYXJkd2FyZSB0aW1lciwgb3IgYSBtb3JlIGdyYW51bGFyIGtlcm5lbC1sZXZlbCBkZWxheSBmdW5jdGlvbiBtaWdodCBiZSBtb3JlIGFwcHJvcHJpYXRlLCBkZXBlbmRpbmcgb24gdGhlIHJlcXVpcmVtZW50cy5cblxuT2theSwgbGV0J3MgdHJhY2UgdGhpcyBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgbG9naWMuIFRpbWUgdG8gZ2V0IHRvIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjU4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NDEuMjgyOTgwNDQyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk4NjEzOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfaW9fbWRlbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTY5Mzc9c3RhdGljIGlubGluZSB2b2lkIHJ0dzg5X2lvX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5NDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6Njk0NTpzdGF0aWMgaW5saW5lIHZvaWQgcnR3ODlfaW9fbWRlbGF5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTY5NDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYz0xMzQ3PXN0YXRpYyB2b2lkIHJ0dzg5X3BoeV9jb25maWdfYmJfcmVnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1NC1cXHRpZiAocmVnLVxcdTAwM2VhZGRyID09IDB4ZmUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jOjEzNTU6XFx0XFx0cnR3ODlfaW9fbWRlbGF5KHJ0d2RldiwgNTApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1Ni1cXHR9IGVsc2UgaWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZkKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzU3OlxcdFxcdHJ0dzg5X2lvX21kZWxheShydHdkZXYsIDUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM1OC1cXHR9IGVsc2UgaWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZjKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxMzU5OlxcdFxcdHJ0dzg5X2lvX21kZWxheShydHdkZXYsIDEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmMtMTM2MC1cXHR9IGVsc2UgaWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZiKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jPTE2ODk9dm9pZCBydHc4OV9waHlfY29uZmlnX3JmX3JlZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTQtXFx0aWYgKHJlZy1cXHUwMDNlYWRkciA9PSAweGZlKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYzoxNjk1OlxcdFxcdHJ0dzg5X2lvX21kZWxheShydHdkZXYsIDUwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTYtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTY5NzpcXHRcXHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCA1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE2OTgtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmYykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTY5OTpcXHRcXHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCAxKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BoeS5jLTE3MDAtXFx0fSBlbHNlIGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmYikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYz0xNzEzPXZvaWQgcnR3ODlfcGh5X2NvbmZpZ19yZl9yZWdfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xNzE4LVxcdGlmIChyZWctXFx1MDAzZWFkZHIgPT0gMHhmZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcGh5LmM6MTcxOTpcXHRcXHRydHc4OV9pb19tZGVsYXkocnR3ZGV2LCA1MCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9waHkuYy0xNzIwLVxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NDEuNDEyODQ2NzUyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyOTA2NTk0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2g6IEZpcm13YXJlIENvbW11bmljYXRpb24gYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzd2l0Y2hpbmcgdGhlIGBzcmNgIGZpZWxkIHdpdGhpbiB0aGUgYHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZ2Agc3RydWN0IHRvIGBSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDYCB3aGVuIGlzc3VpbmcgYSBkZWxheSBjb21tYW5kIHRvIHRoZSBmaXJtd2FyZS4gVGhhdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgd2UncmUgYWx0ZXJpbmcgdGhlIGRhdGEgdGhlIGRyaXZlciBzZW5kcyBkb3duIHRoZSBsaW5lLiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nP1xuXG5JdCdzIGEgbW9kaWZpY2F0aW9uIGluIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgZmlybXdhcmUsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gRGVsYXkgY29tbWFuZHMgYXJlbid0IHR5cGljYWxseSB0aGUganVpY2llc3QgdGFyZ2V0cywgYnV0IGFueSBmdW5jdGlvbmFsIGNoYW5nZSB3YXJyYW50cyBhIGNsb3NlciBsb29rLlxuXG5BaCwgYnV0IGlzIHRoaXMgYWN0dWFsbHkgZnV6emFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSWYgd2UgdXNlIGEgZHVtbXkgVVNCIEhDRCwgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAsIGFuZCBlbXVsYXRlIHRoZSBVU0IgZGV2aWNlLCB0aGVuIHRoZSBkcml2ZXIgKndpbGwqIHByb2JlIGFuZCBzZW5kIHRoZXNlIGNvbW1hbmRzIHRvIHRoZSBlbXVsYXRlZCBmaXJtd2FyZS4gVGhlIGZ1enplciBjb3VsZCB0aGVuIGludGVyY2VwdCB0aGVzZSBjb21tYW5kcyBhbmQgY3JhZnQgcmVzcG9uc2VzLiBFeGNlbGxlbnQuXG5cblJpZ2h0LCBJIG5lZWQgdG8gcmVtaW5kIG15c2VsZiBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci4gU3l6a2FsbGVyLCB3aGljaCBpcyBvdXIgZnV6emVyIG9mIGNob2ljZSwgdXNlcyBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpIGZ1enppbmcuIEhvd2V2ZXIsIGl0ICphbHNvKiBzdXBwb3J0cyBmdXp6aW5nIFVTQiBkZXZpY2VzIHVzaW5nIGBkdW1teV9oY2RgLlxuXG5JZiB3ZSdyZSBnb2luZyB0byBwdXJzdWUgdGhpcywgd2UgbmVlZCB0byBlbnN1cmUgdGhlIGFwcHJvcHJpYXRlIFJUVzg5IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiBMZXQgbWUgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIHRoYXQgYENPTkZJR19SVFc4OV84ODUxQlVgLCBgQ09ORklHX1JUVzg5Xzg4NTJBVWAsIGBDT05GSUdfUlRXODlfODg1MkJVYCwgYENPTkZJR19SVFc4OV84ODUyQ1VgLCBhbmQgYENPTkZJR19SVFc4OV84OTIyQVVgIGFyZSBhbGwgYWN0aXZhdGVkLlxuXG5Ib2xkIG9uLCBJIHNob3VsZCBhbHNvIGNoZWNrIGlmIGBSVFc4OV9GV19DTURfT0ZMRF9TUkNfT1RIRVJgIGlzIHVzZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZS4gR290dGEgZ2V0IHRoZSBmdWxsIHBpY3R1cmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2OTEsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NDguNzAzNTE3NDg4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc4ODQ5OTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NDguOTQxNDEyNTNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4ODE3NTAwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIFJlbW92ZWQgRmlybXdhcmUgRW51bSoqXG5cblJpZ2h0LCBzbyBzb21ldGhpbmcgd2FzIHB1bGxlZCBvdXQgb2YgdGhlIGVudW0gaW4gYGZ3LmhgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCAqd2h5KiBhbmQgd2hhdCBpbXBhY3QgdGhhdCByZW1vdmFsIG1pZ2h0IGhhdmUuIExldCdzIGRlbHZlIGludG8gdGhlIGNvZGUgdG8gdHJhY2UgdGhlIGltcGxpY2F0aW9ucy5cblxuRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgdXNhZ2VzIG9mIGBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlgIGFuZCBgcnR3ODlfZndfY21kX29mbGRfbWRlbGF5YC4gVGhlc2Ugc2VlbSBsaWtlIHJlbGF0ZWQgY29tbWFuZHMuIFdlcmUgdGhlc2UgdGhlIHNwZWNpZmljIGVsZW1lbnRzIGFmZmVjdGVkIGJ5IHRoZSByZW1vdmFsPyBBcmUgdGhleSBzdGlsbCBiZWluZyB1c2VkIGFueXdoZXJlPyBBcmUgdGhlcmUgYW55IGluZGlyZWN0IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gY29uc2lkZXI/IEkgbmVlZCB0byBhbmFseXplIGhvdyB0aGV5IHdlcmUgYmVpbmcgdXNlZCBiZWZvcmUgdGhlIGNoYW5nZSBhbmQgd2hhdCBtb2RpZmljYXRpb25zLCBpZiBhbnksIHdlcmUgbWFkZSB0byBzdWJzdGl0dXRlIHRoZWlyIHJlbW92YWwuIFRoaXMgaXMgZ29pbmcgdG8gaW52b2x2ZSBzb21lIGNhcmVmdWwgZ3JlcHBpbmcgYW5kIGNvZGUgZGl2aW5nLCBidXQgaXQncyBhIGNyaXRpY2FsIHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB0aGUgcmFtaWZpY2F0aW9ucy4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgYm90aCB0aGUga2VybmVsIGRyaXZlcnMgYW5kIHBvdGVudGlhbGx5IGFueSBhc3NvY2lhdGVkIHVzZXJzcGFjZSB0b29scyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmlybXdhcmUgbm93IGhhbmRsZXMgdGhlIG9wZXJhdGlvbnMgcHJldmlvdXNseSBoYW5kbGVkIGJ5IHdoYXRldmVyIHdhcyByZW1vdmVkIGZyb20gdGhlIGVudW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTQwLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NTIuNzI5NTg5ODgyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA4MTc0NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODlfZndfY21kX29mbGRfdWRlbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuYz0xMTc1Nj1zdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF93cml0ZV9yZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE3NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExNzgwOnN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiB1cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMtMTE3ODEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jPTExODA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaW9fb3BzIHJ0dzg5X2Z3X2NtZF9vZmxkX2lvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODEwLVxcdC51bnBhY2sgPSBydHc4OV9md19jbWRfb2ZsZF91bnBhY2ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jOjExODExOlxcdC5kb191ZGVsYXkgPSBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jLTExODEyLVxcdC5kb19tZGVsYXkgPSBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM0OjUyLjgzMDQxMjI0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTY0MzM4ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgcmlnaHQgb2ZmIHRoZSBiYXQsIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgaW1tZWRpYXRlbHkgcmVsZXZhbnQgYXJlIGBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlgIGFuZCBgcnR3ODlfZndfY21kX29mbGRfbWRlbGF5YC4gQWxzbywgYHJ0dzg5X3BoeV9jb25maWdfYmJfcmVnYCBhbmQgYHJ0dzg5X3BoeV9jb25maWdfcmZfcmVnYCB3aGljaCBjYWxsIHRob3NlIGRlbGF5IGZ1bmN0aW9ucy5cblxuV2FpdCBhIHNlY29uZOKApnRoaXMgaXMganVzdCBjaGFuZ2luZyB0aGUgYHNyY2AgZmllbGQgd2l0aGluIGEgZGVsYXkgY29tbWFuZCB0byB0aGUgZmlybXdhcmUuIEhvbmVzdGx5LCBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSXQgc2VlbXMgbGlrZSBhIHByZXR0eSB0YXJnZXRlZCBtb2RpZmljYXRpb24gdG8ganVzdCBvbmUgdmVyeSBzcGVjaWZpYyBjb21tYW5kLiBJZiB0aGUgZnV6emVyIGhpdHMgdGhpcywgaXQnbGwgcHJvYmFibHkganVzdCB0cmlnZ2VyIGEgZGVsYXksIHdoaWNoIGlzIG5vdCBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCAqaXMqIHRlY2huaWNhbGx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0IGRlc2VydmVzIHNvbWUgdGhvdWdodC4gTGV0IG1lIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyNjIsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NTcuMzk0NzU0ODQ3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTQxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExNzgwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTc4MDpcXHRzdGF0aWMgdm9pZCBydHc4OV9md19jbWRfb2ZsZF91ZGVsYXkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgdXMpXFxuMTE3ODE6XFx0e1xcbjExNzgyOlxcdFxcdHN0cnVjdCBydHc4OV9md19jbWRfb2ZsZF9hcmcgY21kID0ge1xcbjExNzgzOlxcdFxcdFxcdC5zcmMgPSBSVFc4OV9GV19DTURfT0ZMRF9TUkNfTUFDLFxcbjExNzg0OlxcdFxcdFxcdC50eXBlID0gUlRXODlfRldfQ01EX09GTERfREVMQVksXFxuMTE3ODU6XFx0XFx0XFx0LnZhbHVlID0gdXMsXFxuMTE3ODY6XFx0XFx0fTtcXG4xMTc4NzpcXHRcXHRpbnQgcmV0O1xcbjExNzg4OlxcdFxcbjExNzg5OlxcdFxcdHJldCA9IHJ0dzg5X2Z3X2NtZF9vZmxkX2VucXVldWUocnR3ZGV2LCBcXHUwMDI2Y21kKTtcXG4xMTc5MDpcXHRcXHRpZiAocmV0KVxcbjExNzkxOlxcdFxcdFxcdHVkZWxheSh1cyk7XFxuMTE3OTI6XFx0fVxcbjExNzkzOlxcdFxcbjExNzk0OlxcdHN0YXRpYyB2b2lkIHJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcXG4xMTc5NTpcXHR7XFxuMTE3OTY6XFx0XFx0c3RydWN0IHJ0dzg5X2Z3X2NtZF9vZmxkX2FyZyBjbWQgPSB7XFxuMTE3OTc6XFx0XFx0XFx0LnNyYyA9IFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUMsXFxuMTE3OTg6XFx0XFx0XFx0LnR5cGUgPSBSVFc4OV9GV19DTURfT0ZMRF9ERUxBWSxcXG4xMTc5OTpcXHRcXHRcXHQudmFsdWUgPSBtcyAqIDEwMDAsXFxuMTE4MDA6XFx0XFx0fTtcXG4xMTgwMTpcXHRcXHRpbnQgcmV0O1xcbjExODAyOlxcdFxcbjExODAzOlxcdFxcdHJldCA9IHJ0dzg5X2Z3X2NtZF9vZmxkX2VucXVldWUocnR3ZGV2LCBcXHUwMDI2Y21kKTtcXG4xMTgwNDpcXHRcXHRpZiAocmV0KVxcbjExODA1OlxcdFxcdFxcdG1kZWxheShtcyk7XFxuMTE4MDY6XFx0fVxcbjExODA3OlxcdFxcbjExODA4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaW9fb3BzIHJ0dzg5X2Z3X2NtZF9vZmxkX2lvID0ge1xcbjExODA5OlxcdFxcdC5wYWNrID0gcnR3ODlfZndfY21kX29mbGRfcGFjayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzQ6NTcuMzk3NTUyMTk2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NTMxMDMzNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEZpcm13YXJlIENvbW1hbmQgRW5xdWV1ZWluZyoqXG5cbk9rYXksIHNvIHdoYXQgd2UgaGF2ZSBoZXJlIGlzIGEgcHJvY2VzcyB0aGF0J3MgZnVuZGFtZW50YWxseSBhYm91dCBnZXR0aW5nIGEgY29tbWFuZCB0byB0aGUgZmlybXdhcmUuIE15IGltbWVkaWF0ZSB0YWtlYXdheSBpcyB0aGF0IHRoaXMgbWVjaGFuaXNtIHV0aWxpemVzIGFuIGVucXVldWUgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBgcnR3ODlfZndfY21kX29mbGRfZW5xdWV1ZWAuIFRoYXQncyB0aGUgcHJpbWFyeSBwYXRoLiBJdCBzZWVtcyBwcmV0dHkgcm9idXN0LCBiZWNhdXNlIGlmIHRoYXQgZmFpbHMsIHRoZXJlJ3MgYSBmYWxsYmFjayBzdHJhdGVneSBpbnZvbHZpbmcgYHVkZWxheWAgYW5kIGBtZGVsYXlgLCBpbmRpY2F0aW5nIHRoZXkgYXJlIHVzaW5nIGEgYmFzaWMgZGVsYXkgZmFsbGJhY2ssIHBlcmhhcHMgZm9yIHN0YWJpbGl0eSBpZiBlbnF1ZXVlIGZhaWxzLlxuXG5Gcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgSSBhbSBjb25maWRlbnQgdGhhdCB0aGUgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBmdXp6aW5nIC0gdGhhdCdzIHZlcnkgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCwgYW5kIGluZm9ybXMgbXkgbGF0ZXIgcHJpb3JpdGllcy4gVGhpcyBpcyBhIHNvbGlkIHRhcmdldCBmb3IgaW52ZXN0aWdhdGlvbi4gVGhlIGNyaXRpY2FsIHN5bWJvbHMgdG8gc2NydXRpbml6ZSBhcmUsIG9idmlvdXNseSwgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBUaGV5IHJlcHJlc2VudCB0aGUgYmFja3VwIGRlbGF5cywgYW5kIGlmIHRoZSBtYWluIGVucXVldWUgZnVuY3Rpb24gZmFpbHMsIHNvbWV0aGluZyBjb3VsZCBnbyB2ZXJ5IHdyb25nLlxuXG5SZWdhcmRpbmcgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMsIGl0IHNlZW1zIHRoaXMgY29kZSBpcyBlbmFibGVkIGJ5IHRoZSBgUlRXODlfODg1MUJVYCwgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYW5kIGBSVFc4OV84OTIyQVVgIGNvbmZpZ3VyYXRpb25zLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBzZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBhZmZlY3QgdGhpcyBjb2RlIHBhdGguIEkgd2lsbCBuZWVkIHRvIHNlYXJjaCB0aGUgY29uZmlnIHRvIGRldGVybWluZSB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzI2OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM1OjAzLjE1MDY1ODAxOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjczNDI2NjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSVFc4OVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xMT1pZiBSVFc4OVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM6Y29uZmlnIFJUVzg5X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTc6Y29uZmlnIFJUVzg5X1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjM6Y29uZmlnIFJUVzg5Xzg4NTFCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyNjpjb25maWcgUlRXODlfODg1MkFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjctXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI5OmNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzAtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OV84ODUyQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzU6Y29uZmlnIFJUVzg5Xzg4NTJCVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNi1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mzg6Y29uZmlnIFJUVzg5Xzg4NTJDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM5LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0MTpjb25maWcgUlRXODlfODkyMkFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDItXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQ0OmNvbmZpZyBSVFc4OV84ODUxQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDUtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo1NTpjb25maWcgUlRXODlfODg1MUJVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU2LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NjY6Y29uZmlnIFJUVzg5Xzg4NTJBRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy02Ny1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjc3OmNvbmZpZyBSVFc4OV84ODUyQVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzgtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4ODpjb25maWcgUlRXODlfODg1MkJFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTg5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTAwOmNvbmZpZyBSVFc4OV84ODUyQlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTAxLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjExMjpjb25maWcgUlRXODlfODg1MkJURVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJFLVZUIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTI0OmNvbmZpZyBSVFc4OV84ODUyQ0VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTI1LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMzU6Y29uZmlnIFJUVzg5Xzg4NTJDVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE0Njpjb25maWcgUlRXODlfODkyMkFFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQUUvODkyMkFFLVZTIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYwOmNvbmZpZyBSVFc4OV84OTIyQVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYxLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3Mjpjb25maWcgUlRXODlfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTczLVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzU6Y29uZmlnIFJUVzg5X0RFQlVHTVNHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg5IGRlYnVnIG1lc3NhZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE4NDpjb25maWcgUlRXODlfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODUtXFx0Ym9vbCBcXFwiUmVhbHRlayBydHc4OSBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDEwOjM1OjAzLjQyNDA4ODc3OFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzcwNzkyMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBSVFc4OSBGaXJtd2FyZSBDb21tYW5kIE9mZmxvYWQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IHRoZSByaWdodCBjb25maWd1cmF0aW9ucyBlbmFibGVkOyBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byBtYWtlIHN1cmUgYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYCBhcmUgYWxsIHNldC4gTm93LCB0aGUgbWVhdCBvZiBpdDogdGhpcyBwYXRjaCBhbHRlcnMgdGhlIGBzcmNgIGZpZWxkIHdpdGhpbiB0aGUgZmlybXdhcmUgY29tbWFuZCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGl0IGZyb20gYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19PVEhFUmAgdG8gYFJUVzg5X0ZXX0NNRF9PRkxEX1NSQ19NQUNgLiBUaGlzIGlzIGEgY2xlYXIgZGF0YSBjaGFuZ2Ugc2VudCB0byB0aGUgZmlybXdhcmUgYW5kIGltbWVkaWF0ZWx5IHNwYXJrcyBteSBpbnRlcmVzdCBhcyBhIGZ1enppbmcgY2FuZGlkYXRlLlxuXG5JcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQ/IEFic29sdXRlbHkuIFRoaXMgaXNuJ3QganVzdCBhIGNvc21ldGljIGNoYW5nZTsgaXQncyBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBmaXJtd2FyZS4gQSBmdXp6ZXIgY2FuIGRlZmluaXRlbHkgaW50ZXJjZXB0IHRoZXNlIGNvbW1hbmRzIGFuZCBpbmplY3QgbW9kaWZpZWQgcmVzcG9uc2VzLiBUaGlzIGlzIGEgcHJpbWUgZXhhbXBsZSBvZiB3aGVyZSBmdXp6aW5nIHNoaW5lcy5cblxuU28sIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enplciBvbiBhcmUgYHJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheWAgYW5kIGBydHc4OV9md19jbWRfb2ZsZF9tZGVsYXlgLiBJIG5lZWQgdG8gY29uZmlybSBgcnR3ODlfZndfY21kX29mbGRfdWRlbGF5YCBpcyByZWFjaGFibGUsIGhvd2V2ZXIuIExldCdzIHNlZS4uLiBpdCdzIGNhbGxlZCBmcm9tIGBydHc4OV9pb191ZGVsYXlgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBmcm9tIGBydHc4OV9waHlfY29uZmlnX2JiX3JlZ2AgYW5kIGBydHc4OV9waHlfY29uZmlnX3JmX3JlZ2AuIFBlcmZlY3QuIFRoZXNlIHJvdXRpbmVzIGFyZSBjbGVhcmx5IHBhcnQgb2YgdGhlIFBIWSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgd2hpY2ggaGFwcGVucyBkdXJpbmcgZGV2aWNlIHByb2JlIG9yIGludGVyZmFjZSBicmluZy11cC4gU28gdGhlIHRhcmdldCBpcyBjbGVhcmx5IHJlYWNoYWJsZS5cblxuVGhlcmVmb3JlLCB0byBzb2xpZGlmeSBteSB0aGlua2luZzpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSBiZWNhdXNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgdGhlIGRyaXZlciBhbmQgZmlybXdhcmUgY29tbXVuaWNhdGUuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogYFtcInJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheVwiLCBcInJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheVwiXWAgLSBhcyB0aGV5IHJlbGF0ZSB0byB0aGUgdGFyZ2V0IGNvbW1hbmQuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBbXCJSVFc4OV84ODUxQlVcIiwgXCJSVFc4OV84ODUyQVVcIiwgXCJSVFc4OV84ODUyQlVcIiwgXCJSVFc4OV84ODUyQ1VcIiwgXCJSVFc4OV84OTIyQVVcIl1gIC0gdG8gZW5hYmxlIHRoZSB0YXJnZXQuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzb3VyY2UgZmllbGQgb2YgdGhlIGRlbGF5IGNvbW1hbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZSwgYW5kIGl0IGlzIGVhc2lseSByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24uIFRpbWUgdG8gZmlyZSB1cCB0aGUgZnV6emVyIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjEzOSwiT3V0cHV0VG9rZW5zIjoxNjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTA6MzU6MTMuMTk0ODgzODY1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUwMzk1MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OV84ODUxQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiUlRXODlfODg1MkJVXCIsXG4gICAgXCJSVFc4OV84ODUyQ1VcIixcbiAgICBcIlJUVzg5Xzg5MjJBVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2Z3X2NtZF9vZmxkX3VkZWxheVwiLFxuICAgIFwicnR3ODlfZndfY21kX29mbGRfbWRlbGF5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNvdXJjZSBmaWVsZCBvZiB0aGUgZGVsYXkgY29tbWFuZCBzZW50IHRvIHRoZSBmaXJtd2FyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGZpcm13YXJlLCByZWFjaGFibGUgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODlfODg1MUJVXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5Xzg4NTJCVVwiLFxuICAgIFwiUlRXODlfODg1MkNVXCIsXG4gICAgXCJSVFc4OV84OTIyQVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9md19jbWRfb2ZsZF91ZGVsYXlcIixcbiAgICBcInJ0dzg5X2Z3X2NtZF9vZmxkX21kZWxheVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzb3VyY2UgZmllbGQgb2YgdGhlIGRlbGF5IGNvbW1hbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZSwgcmVhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow76hxf[1] Phase: Succeeded StartedAt: 2026-07-14 10:35:46 +0000 UTC FinishedAt: 2026-07-14 10:35:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 10:35:46 +0000 UTC FinishedAt: 2026-07-14 10:35:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2] Phase: Succeeded StartedAt: 2026-07-14 10:35:46 +0000 UTC FinishedAt: 2026-07-14 12:02:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 10:35:46 +0000 UTC FinishedAt: 2026-07-14 12:02:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 10:35:46 +0000 UTC FinishedAt: 2026-07-14 10:36:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 10:35:46 +0000 UTC FinishedAt: 2026-07-14 10:35:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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-workflow76hxf/series-workflow76hxf-convert-artifact-2482760690/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 10:36:07 +0000 UTC FinishedAt: 2026-07-14 11:06:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 10:36:07 +0000 UTC FinishedAt: 2026-07-14 11:06:49 +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:*771a1d88-70d6-42b3-87ff-c77b6a979930,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-workflow76hxf/series-workflow76hxf-convert-artifact-2482760690/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": "52fc3847-f5ee-488c-8bc9-08c702588d03", "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-workflow76hxf/series-workflow76hxf-build-action-585986928/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 10:36:07 +0000 UTC FinishedAt: 2026-07-14 11:06:39 +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:*771a1d88-70d6-42b3-87ff-c77b6a979930,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-workflow76hxf/series-workflow76hxf-convert-artifact-2482760690/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": "52fc3847-f5ee-488c-8bc9-08c702588d03", "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-workflow76hxf/series-workflow76hxf-build-action-585986928/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:06:49 +0000 UTC FinishedAt: 2026-07-14 11:06:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:06:49 +0000 UTC FinishedAt: 2026-07-14 11:06:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:06:49 +0000 UTC FinishedAt: 2026-07-14 11:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:06:49 +0000 UTC FinishedAt: 2026-07-14 11:06:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-workflow76hxf/series-workflow76hxf-convert-artifact-2703630861/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:06:59 +0000 UTC FinishedAt: 2026-07-14 11:09:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:06:59 +0000 UTC FinishedAt: 2026-07-14 11:08:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52fc3847-f5ee-488c-8bc9-08c702588d03,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-workflow76hxf/series-workflow76hxf-build-action-585986928/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-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:09:01 +0000 UTC FinishedAt: 2026-07-14 11:09:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:09:01 +0000 UTC FinishedAt: 2026-07-14 11:09:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:09:01 +0000 UTC FinishedAt: 2026-07-14 11:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:09:01 +0000 UTC FinishedAt: 2026-07-14 11:57:49 +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:*771a1d88-70d6-42b3-87ff-c77b6a979930,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-workflow76hxf/series-workflow76hxf-convert-artifact-2703630861/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": "d15d68ab-b6c6-4693-8e4e-53730609cf34", "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-workflow76hxf/series-workflow76hxf-build-action-861319145/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:09:01 +0000 UTC FinishedAt: 2026-07-14 11:57:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*771a1d88-70d6-42b3-87ff-c77b6a979930,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-workflow76hxf/series-workflow76hxf-convert-artifact-2703630861/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": "d15d68ab-b6c6-4693-8e4e-53730609cf34", "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-workflow76hxf/series-workflow76hxf-build-action-861319145/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:57:49 +0000 UTC FinishedAt: 2026-07-14 11:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:57:49 +0000 UTC FinishedAt: 2026-07-14 11:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:57:49 +0000 UTC FinishedAt: 2026-07-14 12:00:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 11:57:49 +0000 UTC FinishedAt: 2026-07-14 12:00:13 +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:*d15d68ab-b6c6-4693-8e4e-53730609cf34,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-workflow76hxf/series-workflow76hxf-build-action-861319145/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-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 12:00:23 +0000 UTC FinishedAt: 2026-07-14 12:02:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 12:00:23 +0000 UTC FinishedAt: 2026-07-14 12:02:27 +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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"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:*52fc3847-f5ee-488c-8bc9-08c702588d03,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d15d68ab-b6c6-4693-8e4e-53730609cf34,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-workflow76hxf/series-workflow76hxf-build-action-585986928/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-workflow76hxf/series-workflow76hxf-build-action-861319145/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 12:00:23 +0000 UTC FinishedAt: 2026-07-14 12:00:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 12:00:23 +0000 UTC FinishedAt: 2026-07-14 12:00:28 +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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"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-workflow76hxf/series-workflow76hxf-convert-artifact-3058765298/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 12:00:23 +0000 UTC FinishedAt: 2026-07-14 12:00:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 12:00:23 +0000 UTC FinishedAt: 2026-07-14 12:00:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 12:00:23 +0000 UTC FinishedAt: 2026-07-14 12:00:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 12:00:33 +0000 UTC FinishedAt: 2026-07-14 12:02:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow76hxf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"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":["rtw89_fw_cmd_ofld_udelay","rtw89_fw_cmd_ofld_mdelay"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU"],"series_id":"4803a5ee-cb4c-4c16-bc11-79e18b894d87","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-14 12:00:33 +0000 UTC FinishedAt: 2026-07-14 12:02:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52fc3847-f5ee-488c-8bc9-08c702588d03,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d15d68ab-b6c6-4693-8e4e-53730609cf34,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-workflow76hxf/series-workflow76hxf-build-action-585986928/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-workflow76hxf/series-workflow76hxf-build-action-861319145/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-workflow76hxf/series-workflow76hxf-convert-artifact-3058765298/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,}