Name: series-workflowrqw4b Phase: Succeeded StartedAt: 2026-08-24 02:37:00 +0000 UTC FinishedAt: 2026-08-24 06:41:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[0] Phase: Succeeded StartedAt: 2026-08-24 02:37:00 +0000 UTC FinishedAt: 2026-08-24 02:52:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[0].run-triage Phase: Succeeded StartedAt: 2026-08-24 02:37:00 +0000 UTC FinishedAt: 2026-08-24 02:52:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_TEAM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_TEAM" ], "series_id": "0bdc3ffd-1278-42c2-b5ba-48635fc29d03" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bond_header_create", "team_header_create" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX1RFQU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2hlYWRlcl9jcmVhdGUmIzM0OywKICAgICYjMzQ7dGVhbV9oZWFkZXJfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIHNvY2tldCBidWZmZXIgKGBza2JgKSBoYXMgc3VmZmljaWVudCBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCBkZXZpY2UmIzM5O3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIHRvIGVuc3VyZSBzdWZmaWNpZW50IHNrYiBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCYjMzk7cyBjcmVhdGUgZnVuY3Rpb24sIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI3N2NhY2I0NjcyY2VmYjcyZGUzZDRiNTIyODUyODIxYmY4ZDUwNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAwMjo1MToyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuaW5kZXggNTIyZWFiMDYwZjllZC4uOWVjNjYzNjEwZGZkMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbkBAIC0xNTI0LDEwICYjNDM7MTUyNCwyNCBAQCBzdGF0aWMgaW50IGJvbmRfaGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXG4gXHRzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcbiBcdGlmIChzbGF2ZSkge1xuIFx0XHRzbGF2ZV9vcHMgPSBSRUFEX09OQ0Uoc2xhdmUtXHUwMDNlZGV2LVx1MDAzZWhlYWRlcl9vcHMpO1xuLVx0XHRpZiAoc2xhdmVfb3BzIFx1MDAyNlx1MDAyNiBzbGF2ZV9vcHMtXHUwMDNlY3JlYXRlKVxuJiM0MztcdFx0aWYgKHNsYXZlX29wcyBcdTAwMjZcdTAwMjYgc2xhdmVfb3BzLVx1MDAzZWNyZWF0ZSkge1xuJiM0MztcdFx0XHR1bnNpZ25lZCBpbnQgaGxlbiA9IFJFQURfT05DRShzbGF2ZS1cdTAwM2VkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKTtcbiYjNDM7XG4mIzQzO1x0XHRcdC8qIEhlYWRyb29tIHdhcyByZXNlcnZlZCBmcm9tIGEgc25hcHNob3Qgb2ZcbiYjNDM7XHRcdFx0ICogYm9uZF9kZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIHRoYXQgbWF5IHByZWRhdGUgdGhpc1xuJiM0MztcdFx0XHQgKiBzbGF2ZSAoY29uY3VycmVudCBib25kIHR5cGUgY2hhbmdlKTsgcmVqZWN0IGlmXG4mIzQzO1x0XHRcdCAqIGluc3VmZmljaWVudCBmb3IgdGhlIHNsYXZlJiMzOTtzIGNyZWF0ZSgpLCB3aGljaFxuJiM0MztcdFx0XHQgKiBwdXNoZXMgaXRzIG93biBobGVuLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKHNrYl9oZWFkcm9vbShza2IpIFx1MDAzYyBobGVuKSB7XG4mIzQzO1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHRnb3RvIHVubG9jaztcbiYjNDM7XHRcdFx0fVxuIFx0XHRcdHJldCA9IHNsYXZlX29wcy1cdTAwM2VjcmVhdGUoc2tiLCBzbGF2ZS1cdTAwM2VkZXYsXG4gXHRcdFx0XHRcdFx0dHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pO1xuJiM0MztcdFx0fVxuIFx0fVxuJiM0Mzt1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5pbmRleCBmZWFhNzVmYmY4ZmMyLi4yNzQyYTRiZmM5ZDBhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuQEAgLTIyNjksMTAgJiM0MzsyMjY5LDI0IEBAIHN0YXRpYyBpbnQgdGVhbV9oZWFkZXJfY3JlYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICp0ZWFtX2RldixcbiBcdHBvcnQgPSB0ZWFtX2hlYWRlcl9wb3J0X2dldF9yY3UodGVhbSwgdHJ1ZSk7XG4gXHRpZiAocG9ydCkge1xuIFx0XHRwb3J0X29wcyA9IFJFQURfT05DRShwb3J0LVx1MDAzZWRldi1cdTAwM2VoZWFkZXJfb3BzKTtcbi1cdFx0aWYgKHBvcnRfb3BzIFx1MDAyNlx1MDAyNiBwb3J0X29wcy1cdTAwM2VjcmVhdGUpXG4mIzQzO1x0XHRpZiAocG9ydF9vcHMgXHUwMDI2XHUwMDI2IHBvcnRfb3BzLVx1MDAzZWNyZWF0ZSkge1xuJiM0MztcdFx0XHR1bnNpZ25lZCBpbnQgaGxlbiA9IFJFQURfT05DRShwb3J0LVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuJiM0MztcbiYjNDM7XHRcdFx0LyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZlxuJiM0MztcdFx0XHQgKiB0ZWFtX2Rldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gdGhhdCBtYXkgcHJlZGF0ZSB0aGlzXG4mIzQzO1x0XHRcdCAqIHBvcnQgKGNvbmN1cnJlbnQgdGVhbSB0eXBlIGNoYW5nZSk7IHJlamVjdCBpZlxuJiM0MztcdFx0XHQgKiBpbnN1ZmZpY2llbnQgZm9yIHRoZSBwb3J0JiMzOTtzIGNyZWF0ZSgpLCB3aGljaFxuJiM0MztcdFx0XHQgKiBwdXNoZXMgaXRzIG93biBobGVuLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKHNrYl9oZWFkcm9vbShza2IpIFx1MDAzYyBobGVuKSB7XG4mIzQzO1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHRnb3RvIHVubG9jaztcbiYjNDM7XHRcdFx0fVxuIFx0XHRcdHJldCA9IHBvcnRfb3BzLVx1MDAzZWNyZWF0ZShza2IsIHBvcnQtXHUwMDNlZGV2LFxuIFx0XHRcdFx0XHQgICAgICAgdHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pO1xuJiM0MztcdFx0fVxuIFx0fVxuJiM0Mzt1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCT05ESU5HJiMzNDssCiAgICAmIzM0O05FVF9URUFNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym9uZF9oZWFkZXJfY3JlYXRlJiMzNDssCiAgICAmIzM0O3RlYW1faGVhZGVyX2NyZWF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIHRvIGVuc3VyZSBzdWZmaWNpZW50IHNrYiBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCYjMzk7cyBjcmVhdGUgZnVuY3Rpb24sIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI3N2NhY2I0NjcyY2VmYjcyZGUzZDRiNTIyODUyODIxYmY4ZDUwNzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAwMjo1MToyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCmluZGV4IDUyMmVhYjA2MGY5ZWQuLjllYzY2MzYxMGRmZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwpAQCAtMTUyNCwxMCAmIzQzOzE1MjQsMjQgQEAgc3RhdGljIGludCBib25kX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LAogCXNsYXZlID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtJmd0O2N1cnJfYWN0aXZlX3NsYXZlKTsKIAlpZiAoc2xhdmUpIHsKIAkJc2xhdmVfb3BzID0gUkVBRF9PTkNFKHNsYXZlLSZndDtkZXYtJmd0O2hlYWRlcl9vcHMpOwotCQlpZiAoc2xhdmVfb3BzICZhbXA7JmFtcDsgc2xhdmVfb3BzLSZndDtjcmVhdGUpCiYjNDM7CQlpZiAoc2xhdmVfb3BzICZhbXA7JmFtcDsgc2xhdmVfb3BzLSZndDtjcmVhdGUpIHsKJiM0MzsJCQl1bnNpZ25lZCBpbnQgaGxlbiA9IFJFQURfT05DRShzbGF2ZS0mZ3Q7ZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pOwomIzQzOwomIzQzOwkJCS8qIEhlYWRyb29tIHdhcyByZXNlcnZlZCBmcm9tIGEgc25hcHNob3Qgb2YKJiM0MzsJCQkgKiBib25kX2Rldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuIHRoYXQgbWF5IHByZWRhdGUgdGhpcwomIzQzOwkJCSAqIHNsYXZlIChjb25jdXJyZW50IGJvbmQgdHlwZSBjaGFuZ2UpOyByZWplY3QgaWYKJiM0MzsJCQkgKiBpbnN1ZmZpY2llbnQgZm9yIHRoZSBzbGF2ZSYjMzk7cyBjcmVhdGUoKSwgd2hpY2gKJiM0MzsJCQkgKiBwdXNoZXMgaXRzIG93biBobGVuLgomIzQzOwkJCSAqLwomIzQzOwkJCWlmIChza2JfaGVhZHJvb20oc2tiKSAmbHQ7IGhsZW4pIHsKJiM0MzsJCQkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCQkJZ290byB1bmxvY2s7CiYjNDM7CQkJfQogCQkJcmV0ID0gc2xhdmVfb3BzLSZndDtjcmVhdGUoc2tiLCBzbGF2ZS0mZ3Q7ZGV2LAogCQkJCQkJdHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pOwomIzQzOwkJfQogCX0KJiM0Mzt1bmxvY2s6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jCmluZGV4IGZlYWE3NWZiZjhmYzIuLjI3NDJhNGJmYzlkMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYwpAQCAtMjI2OSwxMCAmIzQzOzIyNjksMjQgQEAgc3RhdGljIGludCB0ZWFtX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnRlYW1fZGV2LAogCXBvcnQgPSB0ZWFtX2hlYWRlcl9wb3J0X2dldF9yY3UodGVhbSwgdHJ1ZSk7CiAJaWYgKHBvcnQpIHsKIAkJcG9ydF9vcHMgPSBSRUFEX09OQ0UocG9ydC0mZ3Q7ZGV2LSZndDtoZWFkZXJfb3BzKTsKLQkJaWYgKHBvcnRfb3BzICZhbXA7JmFtcDsgcG9ydF9vcHMtJmd0O2NyZWF0ZSkKJiM0MzsJCWlmIChwb3J0X29wcyAmYW1wOyZhbXA7IHBvcnRfb3BzLSZndDtjcmVhdGUpIHsKJiM0MzsJCQl1bnNpZ25lZCBpbnQgaGxlbiA9IFJFQURfT05DRShwb3J0LSZndDtkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbik7CiYjNDM7CiYjNDM7CQkJLyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZgomIzQzOwkJCSAqIHRlYW1fZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gdGhhdCBtYXkgcHJlZGF0ZSB0aGlzCiYjNDM7CQkJICogcG9ydCAoY29uY3VycmVudCB0ZWFtIHR5cGUgY2hhbmdlKTsgcmVqZWN0IGlmCiYjNDM7CQkJICogaW5zdWZmaWNpZW50IGZvciB0aGUgcG9ydCYjMzk7cyBjcmVhdGUoKSwgd2hpY2gKJiM0MzsJCQkgKiBwdXNoZXMgaXRzIG93biBobGVuLgomIzQzOwkJCSAqLwomIzQzOwkJCWlmIChza2JfaGVhZHJvb20oc2tiKSAmbHQ7IGhsZW4pIHsKJiM0MzsJCQkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCQkJZ290byB1bmxvY2s7CiYjNDM7CQkJfQogCQkJcmV0ID0gcG9ydF9vcHMtJmd0O2NyZWF0ZShza2IsIHBvcnQtJmd0O2RldiwKIAkJCQkJICAgICAgIHR5cGUsIGRhZGRyLCBzYWRkciwgbGVuKTsKJiM0MzsJCX0KIAl9CiYjNDM7dW5sb2NrOgogCXJjdV9yZWFkX3VubG9jaygpOwogCXJldHVybiByZXQ7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTUKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTmV0d29ya2luZyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBhIGNydWNpYWwgYWRqdXN0bWVudCB0byBwYWNrZXQgaGVhZGVyIGNyZWF0aW9uIHdpdGhpbiB0aGUgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzIOKAkyBzcGVjaWZpY2FsbHksIGBib25kX2hlYWRlcl9jcmVhdGVgIGluIGBib25kX21haW4uY2AgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGluIGB0ZWFtX2NvcmUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgYWRkaW5nIGEgc2FuaXR5IGNoZWNrOiBiZWZvcmUgd2UgY2FsbCB0aGUgdW5kZXJseWluZyBgc2xhdmVfb3BzLSZndDtjcmVhdGVgIG9yIGBwb3J0X29wcy0mZ3Q7Y3JlYXRlYCBmdW5jdGlvbnMsIHdlJiMzOTtyZSBub3cgdmVyaWZ5aW5nIHRoYXQgdGhlIFNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgU0tCIGhlYWRyb29tIGlzIHN1ZmZpY2llbnQgZm9yIHRoZSBoZWFkZXIgbGVuZ3RoIChgaGxlbmApLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4OyBpdCYjMzk7cyBkZXNpZ25lZCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGV2ZW4gc3lzdGVtIHBhbmljcyB3aGVuIHRoZSBhbGxvY2F0ZWQgaGVhZHJvb20gaW4gdGhlIHNvY2tldCBidWZmZXIgKFNLQikgaXNuJiMzOTt0IGxhcmdlIGVub3VnaCB0byBhY2NvbW1vZGF0ZSB0aGUgY3JlYXRlZCBwYWNrZXQgaGVhZGVyLiAgQSBkZWZpbml0ZSBpbXByb3ZlbWVudCwgYW5kIHRoZXNlIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycyBhcmUgdmVyeSByZWFjaGFibGUsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGdpdmVuIHRoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlLCB3ZSBhYnNvbHV0ZWx5ICptdXN0KiBmdXp6IHRlc3QgdGhvc2UgbW9kaWZpZWQgZnVuY3Rpb25zIOKAkyBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAg4oCTIHRvIGNhdGNoIGFueSBlZGdlIGNhc2VzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIEl0JiMzOTtzIGEga2V5IHBhcnQgb2YgY29uZmlybWluZyB0aGUgZml4IGlzIHJvYnVzdC4KCkJlZm9yZSBJIGRpdmUgdG9vIGRlZXBseSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSYjMzk7bGwgdXNlIGBncmVwcGVyYCBvciBlcXVpdmFsZW50IHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZmVhdHVyZXMgd2l0aGluIHRoZSBrZXJuZWwuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB1bmRlciB3aGF0IGNvbmZpZ3VyYXRpb24gZmxhZ3MgdGhlc2UgZnVuY3Rpb25zIHdvdWxkIGJlIGNvbXBpbGVkIGluLiBMZXQmIzM5O3MgbWFrZSBzdXJlIG91ciBmdXp6aW5nIGFuZCB0ZXN0aW5nIGNvdmVyYWdlIGlzIGNvbXBsZXRlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCT05ESU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9Mzk9aWYgTkVUX0NPUkVcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXG5kcml2ZXJzL25ldC9LY29uZmlnOjQxOmNvbmZpZyBCT05ESU5HXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVx0dHJpc3RhdGUgXCYjMzQ7Qm9uZGluZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfVEVBTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RXRoZXJuZXQgdGVhbSBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0xNj1pZiBORVRfVEVBTVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjE4OmNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjYXN0IG1vZGUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyOTpjb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDAtXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDE6Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gbW9kZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjUzOmNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjUtXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NjY6Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0xvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjMyCgkJCQkJCQlvdXRwdXQ6IDU4CgkJCQkJCQl0aG91Z2h0czogMzI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOZXR3b3JrIEhlYWRlciBDcmVhdGlvbiBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgbmV0d29yayBjb25maWd1cmF0aW9ucywgYEJPTkRJTkdgIGFuZCBgTkVUX1RFQU1gLCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgaGVhZGVyIGNyZWF0aW9uIGZ1bmN0aW9ucywgYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUgZm9yIGZ1enppbmcsIGFuZCB0aGUga2V5IGlzIGRldGVybWluaW5nIGlmIHRoZXkgYXJlIHN0YXRpYyBvciBleHBvcnRlZC4gSSBzZWUgdGhleSBhcmUgc3RhdGljIGZ1bmN0aW9ucywgYXNzaWduZWQgdG8gYGhlYWRlcl9vcHMtJmd0O2NyZWF0ZWAuCgpIbW0sIHN0YXRpYyBmdW5jdGlvbnMgYXJlIGEgYml0IHRyaWNreS4gVGhleSBtaWdodCBub3QgYmUgZGlyZWN0bHkgY2FsbGFibGUgYnkgbmFtZSBpbiBjZXJ0YWluIGZ1enppbmcgc2NlbmFyaW9zLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IHRoZXkmIzM5O3JlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBpbnZva2VkIHRocm91Z2ggYGRldi0mZ3Q7aGVhZGVyX29wcy0mZ3Q7Y3JlYXRlYCBpcyBpbXBvcnRhbnQuIFRoaXMgbWVhbnMgdG9vbHMgbGlrZSBTeXprYWxsZXIgY291bGQgc3RpbGwgdXNlIHRoZW0gZm9yIGNvdmVyYWdlIGd1aWRhbmNlLCAqaWYqIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkLgoKVGhlIGNvZGUgc2hvd3MgdGhhdCB0aGVpciBhZGRyZXNzIGlzIHRha2VuLCBzbyB0aGV5ICpjYW5ub3QqIGJlIGZ1bGx5IGlubGluZWQuIFBlcmZlY3QhIFRoYXQgbWVhbnMgdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIHdoaWNoIG1ha2VzIHRoZW0gdmlhYmxlIHRhcmdldHMgYmFzZWQgb24gdGhlIHByb21wdCYjMzk7cyBpbnN0cnVjdGlvbjogJiMzNDtQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMmIzM0Oy4KCk5vdywgZ2l2ZW4gdGhhdCB0aGV5IGFyZSBnb29kIGNhbmRpZGF0ZXMsIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGVtOyBzcGVjaWZpY2FsbHkgYGRldl9oYXJkX2hlYWRlcmAuIEJ1dCBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgdGhlbXNlbHZlcyBsb29rIHByb21pc2luZy4KCkZpbmFsbHksIEkgc2hvdWxkIHZlcmlmeSBpZiBgQk9ORElOR2AgYW5kIGBORVRfVEVBTWAgZGVwZW5kIG9uIG90aGVyIG1vZHVsZXMgb3Igc3Vic3lzdGVtcy4gTm8gcG9pbnQgaW4gZm9jdXNpbmcgb24gdGhlc2UgZnVuY3Rpb25zLCBpZiB0aGVpciBmdW5jdGlvbmFsaXR5IGlzIGdhdGVkIGJ5IHNvbWUgb2JzY3VyZSBwcmVyZXF1aXNpdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTE4PWNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjYXN0IG1vZGUgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjIwOlx0ZGVwZW5kcyBvbiBORVRfVEVBTVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTIxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0yOT1jb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzozMTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NDE9Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gbW9kZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIE5FVF9URUFNXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTUzPWNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo1NTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NjY9Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0xvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo2ODpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02OS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXG5kcml2ZXJzL25ldC9LY29uZmlnLTctXHRkZWZhdWx0IHkgaWYgVU1MXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy05LVx0Ym9vbCBcJiMzNDtOZXR3b3JrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00MT1jb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ6XHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNDUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz03ND1jb25maWcgV0lSRUdVQVJEXG5kcml2ZXJzL25ldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7V2lyZUd1YXJkIHNlY3VyZSBuZXR3b3JrIHR1bm5lbFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTc3LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz05Mj1jb25maWcgV0lSRUdVQVJEX0RFQlVHXG5kcml2ZXJzL25ldC9LY29uZmlnLTkzLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgY2hlY2tzIGFuZCB2ZXJib3NlIG1lc3NhZ2VzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjk0Olx0ZGVwZW5kcyBvbiBXSVJFR1VBUkRcbmRyaXZlcnMvbmV0L0tjb25maWctOTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7T3BlblZQTiBkYXRhIGNoYW5uZWwgb2ZmbG9hZFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxMDU6XHRkZXBlbmRzIG9uIE5FVCBcdTAwMjZcdTAwMjYgSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXHRzZWxlY3QgRFNUX0NBQ0hFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMzY9Y29uZmlnIE5FVF9GQ1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXHRib29sIFwmIzM0O0ZpYnJlIENoYW5uZWwgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MTM4Olx0ZGVwZW5kcyBvbiBTQ1NJIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L0tjb25maWctMTM5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZXJtZWRpYXRlIEZ1bmN0aW9uYWwgQmxvY2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxNTE6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfTUlSUkVEIHx8IE5GVF9GV0RfTkVUREVWXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cdHNlbGVjdCBORVRfUkVESVJFQ1Rcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xODAtXHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MTpcdGRlcGVuZHMgb24gTUFDVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZzoxODI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVx0c2VsZWN0IFRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NDpcdGRlcGVuZHMgb24gTkVURklMVEVSXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Ni1cdGRlZl9ib29sIHlcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE5OT1jb25maWcgSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMDE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcbmRyaXZlcnMvbmV0L0tjb25maWctMjE3LVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjIxODpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnOjIxOTpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXHRzZWxlY3QgVEFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjMzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNDU9Y29uZmlnIEdFTkVWRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDYtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ4LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVx0dHJpc3RhdGUgXCYjMzQ7QmFyZSBVRFAgRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNjI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzMtXHR0cmlzdGF0ZSBcJiMzNDtHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NDpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTAtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRm9yd2FyZGluZyBDb250cm9sIFByb3RvY29sIChQRkNQKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjkyLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXHR0cmlzdGF0ZSBcJiMzNDtBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozMDQ6XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElQX01VTFRJQ0FTVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMyNz1jb25maWcgTkVUQ09OU09MRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGNvbnNvbGUgbG9nZ2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMyOTpcdGRlcGVuZHMgb24gUFJJTlRLXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzNS1cdGJvb2wgXCYjMzQ7RHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMzNjpcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcdTAwMjZcdTAwMjYgU1lTRlMgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTIFx1MDAyNlx1MDAyNiBcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXHRcdFx0IShORVRDT05TT0xFPXkgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTPW0pXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNDU9Y29uZmlnIE5FVENPTlNPTEVfRVhURU5ERURfTE9HXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0Ni1cdGJvb2wgXCYjMzQ7U2V0IGtlcm5lbCBleHRlbmRlZCBtZXNzYWdlIGJ5IGRlZmF1bHRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBORVRDT05TT0xFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0OC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzU1PWNvbmZpZyBORVRDT05TT0xFX1BSRVBFTkRfUkVMRUFTRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXHRib29sIFwmIzM0O1ByZXBlbmQga2VybmVsIHJlbGVhc2UgdmVyc2lvbiBpbiB0aGUgbWVzc2FnZSBieSBkZWZhdWx0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM1NzpcdGRlcGVuZHMgb24gTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcbmRyaXZlcnMvbmV0L0tjb25maWctMzc0LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc1Olx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3Ni1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzc3PWNvbmZpZyBSSU9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVx0dHJpc3RhdGUgXCYjMzQ7UmFwaWRJTyBFdGhlcm5ldCBvdmVyIG1lc3NhZ2luZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozNzk6XHRkZXBlbmRzIG9uIFJBUElESU9cbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zODE9Y29uZmlnIFJJT05FVF9UWF9TSVpFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Mi1cdGludCBcJiMzNDtOdW1iZXIgb2Ygb3V0Ym91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODQtXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzg2PWNvbmZpZyBSSU9ORVRfUlhfU0laRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODctXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGluYm91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODktXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzkxPWNvbmZpZyBUVU5cbmRyaXZlcnMvbmV0L0tjb25maWctMzkyLVx0dHJpc3RhdGUgXCYjMzQ7VW5pdmVyc2FsIFRVTi9UQVAgZGV2aWNlIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTQtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gbmV0d29yayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ1Olx0ZGVwZW5kcyBvbiBWSVJUSU9cbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVx0c2VsZWN0IE5FVF9GQUlMT1ZFUlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDY0LVx0Ym9vbCBcJiMzNDtCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ2NTpcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbmRyaXZlcnMvbmV0L0tjb25maWctNDY2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDcyPWNvbmZpZyBORVRfVlJGXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgUm91dGluZyBhbmQgRm9yd2FyZGluZyAoTGl0ZSlcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0Olx0ZGVwZW5kcyBvbiBJUF9NVUxUSVBMRV9UQUJMRVNcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1Olx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzY6XHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ4Mi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDgzOlx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xuZHJpdmVycy9uZXQvS2NvbmZpZy00ODQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODk9Y29uZmlnIE1ISV9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDkwLVx0dHJpc3RhdGUgXCYjMzQ7TUhJIG5ldHdvcmsgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcdGRlcGVuZHMgb24gTUhJX0JVU1xuZHJpdmVycy9uZXQvS2NvbmZpZy00OTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVx0dHJpc3RhdGUgXCYjMzQ7WGVuIG5ldHdvcmsgZGV2aWNlIGZyb250ZW5kIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDY6XHRkZXBlbmRzIG9uIFhFTlxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7WGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTY0Olx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbmRyaXZlcnMvbmV0L0tjb25maWctNTg1LVx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIFZNWE5FVDMgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NzpcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xuZHJpdmVycy9uZXQvS2NvbmZpZy01OTUtXHR0cmlzdGF0ZSBcJiMzNDtGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTk2Olx0ZGVwZW5kcyBvbiBBQ1BJXG5kcml2ZXJzL25ldC9LY29uZmlnLTU5Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDg6XHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc4MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBLY29uZmlnIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgKipCT05ESU5HKiogaXMgZnVuZGFtZW50YWxseSByZWxpYW50IG9uICoqSU5FVCoqIGFuZCBlaXRoZXIgKipUTFMqKiBvciwgaWYgVExTIGlzbiYjMzk7dCBlbmFibGVkLCBhIHNwZWNpZmljIFRMUyBkZXZpY2UgdmFyaWFibGUgc2V0IHRvICYjMzk7biYjMzk7LiBNYWtlcyBzZW5zZS4gU3RhbmRhcmQgbmV0d29ya2luZyBkZXBlbmRlbmNpZXMuCgpOb3csICoqTkVUX1RFQU0qKiBpcyB3aGF0IEkmIzM5O20gZm9jdXNlZCBvbi4gVGhlIGRvY3VtZW50YXRpb24gc2F5cyBpdCBkZXBlbmRzIG9uICoqTkVUX0NPUkUqKiwgd2hpY2ggaXMgYWx3YXlzIGVuYWJsZWQgd2hlbiAqKk5FVERFVklDRVMqKiBpcyBlbmFibGVkLiBTdGFuZGFyZCBzdHVmZi4gV2FpdCBhIG1pbnV0ZS4uLiBJIHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0ICoqTkVUX1RFQU0qKiBsaXZpbmcgaW4gYGRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ2AuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBmaWxlLgoKQWxyaWdodCwgdGhlIGBkcml2ZXJzL25ldC90ZWFtL0tjb25maWdgIGZpbGUgbGlzdHMgYG1lbnVjb25maWcgTkVUX1RFQU1gLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBJdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYW55IGV4cGxpY2l0bHkgZGVjbGFyZWQgZGVwZW5kZW5jaWVzIGJleW9uZCBpdHMgaW5jbHVzaW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIEl0JiMzOTtzIGluY2x1ZGVkLCBzbyBpdCYjMzk7cyBhIG1lbnUgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIGNhbiBiZSB1c2VkIG9uIGl0cyBvd24sIGl0IHdvdWxkIHNlZW0uIEludGVyZXN0aW5nIHRvIGV4cGxvcmUgaG93IGl0IGlzIGluY2x1ZGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2Agbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UuKnRlYW0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTE0OT1jb25maWcgSUZCXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjItXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2Mzpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI1NgoJCQkJCQkJb3V0cHV0OiA2MgoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBOZXR3b3JrIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgdGhlIGBORVRfVEVBTWAgZnVuY3Rpb25hbGl0eSByZWxpZXMgZGlyZWN0bHkgb24gYm90aCBgTkVUREVWSUNFU2AgYW5kIGBORVRgLCBhIGNsZWFyIGRlcGVuZGVuY3kgY2hhaW4uIEZ1cnRoZXJtb3JlLCB0aGUgYEJPTkRJTkdgIGZlYXR1cmUgaXMgY29udGluZ2VudCBvbiBgSU5FVGAgYW5kIGVpdGhlciBgVExTYCBvciBgVExTX0RFVklDRWAgc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUuIEdpdmVuIHRoZXNlIGRlcGVuZGVuY2llcywgaXQgbWFrZXMgcGVyZmVjdCBzZW5zZSB0byBpbmNsdWRlIGJvdGggYEJPTkRJTkdgIGFuZCBgTkVUX1RFQU1gIGluIHRoZSBjb25maWd1cmF0aW9uLgoKTm93LCBpZiB3ZSByZWFsbHkgd2FudCBhIGNvbXByZWhlbnNpdmUgdGVzdCBzdWl0ZSBmb3IgdGhlIHRlYW0gZmVhdHVyZXMsIHdlJiMzOTtyZSBwcm9iYWJseSBnb2luZyB0byBuZWVkIHRvIGluY29ycG9yYXRlIGRpZmZlcmVudCB0ZWFtIG1vZGVzLiBJJiMzOTttIHRoaW5raW5nIHdlIHNob3VsZCBkZWZpbml0ZWx5IGFkZCBgTkVUX1RFQU1fTU9ERV9CUk9BRENBU1RgLCBgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOYCwgYE5FVF9URUFNX01PREVfUkFORE9NYCwgYE5FVF9URUFNX01PREVfQUNUSVZFQkFDS1VQYCwgYW5kIGBORVRfVEVBTV9NT0RFX0xPQURCQUxBTkNFYC4gVGhhdCBzaG91bGQgY292ZXIgYSBnb29kIHJhbmdlIG9mIHNjZW5hcmlvcy4KCkhvd2V2ZXIsIGV2ZW4gYSBtaW5pbWFsIGBORVRfVEVBTWAgZmxhZyBzaG91bGQgYmUgc3VmZmljaWVudCB0byBjb21waWxlIGB0ZWFtX2NvcmUuY2AsIHdoaWNoLCBhcyBJIHJlY2FsbCwgY29udGFpbnMgdGhlIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEga2V5IGluZGljYXRvciBvZiBpdHMgY29yZSByb2xlLgoKVG8gYmUgdGhvcm91Z2gsIGxldCYjMzk7cyBkaXZlIGludG8gYm90aCBgdGVhbV9jb3JlLmNgIGFuZCBgYm9uZF9tYWluLmNgLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlIG1pZ2h0IGJlIG90aGVyIGNyaXRpY2FsIGZ1bmN0aW9ucyBvciBhcmVhcyBpbiB0aG9zZSBmaWxlcyB0aGF0IHdhcnJhbnQgYSBjbG9zZXIgbG9vaywgZW5zdXJpbmcgd2UgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnkgaW1wb3J0YW50IGNvbnNpZGVyYXRpb25zIGluIG91ciBjb25maWd1cmF0aW9uIHN0cmF0ZWd5LiBJdCYjMzk7cyBiZXN0IHRvIGJlIGNvbXByZWhlbnNpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JvbmRfaGVhZGVyX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTQ5Mz1zdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3QgYm9uZF9maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE1MTMtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE1MTQ6c3RhdGljIGludCBib25kX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xNTE1LVx0XHRcdCAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUsIGNvbnN0IHZvaWQgKmRhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTU2OT1zdGF0aWMgY29uc3Qgc3RydWN0IGhlYWRlcl9vcHMgYm9uZF9oZWFkZXJfb3BzID0ge1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxNTcwOlx0LmNyZWF0ZVx0PSBib25kX2hlYWRlcl9jcmVhdGUsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE1NzEtXHQucGFyc2VcdD0gYm9uZF9oZWFkZXJfcGFyc2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RlYW1faGVhZGVyX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3RlYW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmM9MjI0Nj1zdGF0aWMgc3RydWN0IHRlYW1fcG9ydCAqdGVhbV9oZWFkZXJfcG9ydF9nZXRfcmN1KHN0cnVjdCB0ZWFtICp0ZWFtLFxuLS1cbmRyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMtMjI1OC1cbmRyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmM6MjI1OTpzdGF0aWMgaW50IHRlYW1faGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqdGVhbV9kZXYsXG5kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jLTIyNjAtXHRcdFx0ICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSwgY29uc3Qgdm9pZCAqZGFkZHIsXG4tLVxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYz0yMzE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGVhZGVyX29wcyB0ZWFtX2hlYWRlcl9vcHMgPSB7XG5kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jOjIzMTU6XHQuY3JlYXRlXHRcdD0gdGVhbV9oZWFkZXJfY3JlYXRlLFxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYy0yMzE2LVx0LnBhcnNlXHRcdD0gdGVhbV9oZWFkZXJfcGFyc2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMDMKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMzUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O3ZlIGdvdCBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAsIGFuZCB0aGV5JiMzOTtyZSBob29rZWQgaW50byBgLmNyZWF0ZWAgd2l0aGluIGBoZWFkZXJfb3BzYC4gVGhleSYjMzk7cmUgY2FsbGVkIGZyb20gYGRldl9oYXJkX2hlYWRlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgYXJlIHRoZXJlICphbnkqIG90aGVyIGZ1bmN0aW9ucyBpbXBhY3RlZD8gTm9wZSwganVzdCB0aG9zZSB0d28uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYHNrYl9oZWFkcm9vbShza2IpICZsdDsgaGxlbmAgY2hlY2ssIGEgY3JpdGljYWwgYWRkaXRpb24gdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gRGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJ1ZyBmaXguIFdvcnRoIGZ1enppbmcsIG5vIHF1ZXN0aW9uLgoKTm93LCB0byBvcmdhbml6ZSBteSBmaW5kaW5ncy4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBNeSByZWFzb25pbmc/IFRoZSBwYXRjaCBhZGRzIHRoaXMgaGVhZHJvb20gY2hlY2sgaW4gYm90aCBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgdG8gc3RvcCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCYjMzk7cyBjcmVhdGUgZnVuY3Rpb24uIFRoZXNlIGZ1bmN0aW9ucyBzaXQgcmlnaHQgaW4gdGhlIGNyaXRpY2FsIG5ldHdvcmsgcGF0aHMgZm9yIGJvdGggYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzIOKAkyBmdW5kYW1lbnRhbCBzdHVmZi4gYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBgJiMzNDtib25kX2hlYWRlcl9jcmVhdGUmIzM0O2AgYW5kIGAmIzM0O3RlYW1faGVhZGVyX2NyZWF0ZSYjMzQ7YC4gQW5kIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGNvbmZpZ3MgZm9yIGAmIzM0O0JPTkRJTkcmIzM0O2AgYW5kIGAmIzM0O05FVF9URUFNJiMzNDtgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGFyZSBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgc3RhdGljPyBZZXMsIHRoZXkgYXJlLiBCdXQgaG9sZCBvbiwgdGhlIHByb21wdCBzYXlzIHRvIHByZWZlciBub24tc3RhdGljIGZ1bmN0aW9ucy4gQmVjYXVzZSB0aGV5JiMzOTtyZSBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgc3RydWN0LCB0aGV5JiMzOTtyZSAqbm90KiBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgdGhlcmVmb3JlIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gUGVyZmVjdCEgVGhhdCBtYWtlcyB0aGVtIGlkZWFsIGZvciBpbmNsdXNpb24uCgpJJiMzOTttIGNvbWZvcnRhYmxlIHdpdGggdGhpcyBub3csIHNvIEkmIzM5O20gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk9ORElORyYjMzQ7LAogICAgJiMzNDtORVRfVEVBTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfaGVhZGVyX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDt0ZWFtX2hlYWRlcl9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCB0byBlbnN1cmUgc3VmZmljaWVudCBza2IgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQmIzM5O3MgY3JlYXRlIGZ1bmN0aW9uLCBmaXhpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIHBhdGhzIGZvciBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX1RFQU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2hlYWRlcl9jcmVhdGUmIzM0OywKICAgICYjMzQ7dGVhbV9oZWFkZXJfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgdG8gZW5zdXJlIHN1ZmZpY2llbnQgc2tiIGhlYWRyb29tIGJlZm9yZSBjYWxsaW5nIHRoZSBzbGF2ZS9wb3J0JiMzOTtzIGNyZWF0ZSBmdW5jdGlvbiwgZml4aW5nIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBwYXRocyBmb3IgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCBieSBlbnN1cmluZyB0aGF0IHRoZSBzb2NrZXQgYnVmZmVyIChgc2tiYCkgaGFzIHN1ZmZpY2llbnQgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQgZGV2aWNlJiMzOTtzIGBjcmVhdGVgIGZ1bmN0aW9uLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgY29uY3VycmVudCBib25kL3RlYW0gdHlwZSBjaGFuZ2UgY291bGQgcmVzdWx0IGluIGFuIGBza2JgIHdpdGggaW5zdWZmaWNpZW50IGhlYWRyb29tLCBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gdGhlIGhlYWRlciBpcyBwdXNoZWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGJlaW5nIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjc3Y2FjYjQ2NzJjZWZiNzJkZTNkNGI1MjI4NTI4MjFiZjhkNTA3NwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDI0IDAyOjUxOjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKaW5kZXggNTIyZWFiMDYwZjllZC4uOWVjNjYzNjEwZGZkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCkBAIC0xNTI0LDEwICYjNDM7MTUyNCwyNCBAQCBzdGF0aWMgaW50IGJvbmRfaGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsCiAJc2xhdmUgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC0mZ3Q7Y3Vycl9hY3RpdmVfc2xhdmUpOwogCWlmIChzbGF2ZSkgewogCQlzbGF2ZV9vcHMgPSBSRUFEX09OQ0Uoc2xhdmUtJmd0O2Rldi0mZ3Q7aGVhZGVyX29wcyk7Ci0JCWlmIChzbGF2ZV9vcHMgJmFtcDsmYW1wOyBzbGF2ZV9vcHMtJmd0O2NyZWF0ZSkKJiM0MzsJCWlmIChzbGF2ZV9vcHMgJmFtcDsmYW1wOyBzbGF2ZV9vcHMtJmd0O2NyZWF0ZSkgewomIzQzOwkJCXVuc2lnbmVkIGludCBobGVuID0gUkVBRF9PTkNFKHNsYXZlLSZndDtkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbik7CiYjNDM7CiYjNDM7CQkJLyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZgomIzQzOwkJCSAqIGJvbmRfZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gdGhhdCBtYXkgcHJlZGF0ZSB0aGlzCiYjNDM7CQkJICogc2xhdmUgKGNvbmN1cnJlbnQgYm9uZCB0eXBlIGNoYW5nZSk7IHJlamVjdCBpZgomIzQzOwkJCSAqIGluc3VmZmljaWVudCBmb3IgdGhlIHNsYXZlJiMzOTtzIGNyZWF0ZSgpLCB3aGljaAomIzQzOwkJCSAqIHB1c2hlcyBpdHMgb3duIGhsZW4uCiYjNDM7CQkJICovCiYjNDM7CQkJaWYgKHNrYl9oZWFkcm9vbShza2IpICZsdDsgaGxlbikgewomIzQzOwkJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIHVubG9jazsKJiM0MzsJCQl9CiAJCQlyZXQgPSBzbGF2ZV9vcHMtJmd0O2NyZWF0ZShza2IsIHNsYXZlLSZndDtkZXYsCiAJCQkJCQl0eXBlLCBkYWRkciwgc2FkZHIsIGxlbik7CiYjNDM7CQl9CiAJfQomIzQzO3VubG9jazoKIAlyY3VfcmVhZF91bmxvY2soKTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMKaW5kZXggZmVhYTc1ZmJmOGZjMi4uMjc0MmE0YmZjOWQwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jCkBAIC0yMjY5LDEwICYjNDM7MjI2OSwyNCBAQCBzdGF0aWMgaW50IHRlYW1faGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqdGVhbV9kZXYsCiAJcG9ydCA9IHRlYW1faGVhZGVyX3BvcnRfZ2V0X3JjdSh0ZWFtLCB0cnVlKTsKIAlpZiAocG9ydCkgewogCQlwb3J0X29wcyA9IFJFQURfT05DRShwb3J0LSZndDtkZXYtJmd0O2hlYWRlcl9vcHMpOwotCQlpZiAocG9ydF9vcHMgJmFtcDsmYW1wOyBwb3J0X29wcy0mZ3Q7Y3JlYXRlKQomIzQzOwkJaWYgKHBvcnRfb3BzICZhbXA7JmFtcDsgcG9ydF9vcHMtJmd0O2NyZWF0ZSkgewomIzQzOwkJCXVuc2lnbmVkIGludCBobGVuID0gUkVBRF9PTkNFKHBvcnQtJmd0O2Rldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsKJiM0MzsJCQkvKiBIZWFkcm9vbSB3YXMgcmVzZXJ2ZWQgZnJvbSBhIHNuYXBzaG90IG9mCiYjNDM7CQkJICogdGVhbV9kZXYtJmd0O2hhcmRfaGVhZGVyX2xlbiB0aGF0IG1heSBwcmVkYXRlIHRoaXMKJiM0MzsJCQkgKiBwb3J0IChjb25jdXJyZW50IHRlYW0gdHlwZSBjaGFuZ2UpOyByZWplY3QgaWYKJiM0MzsJCQkgKiBpbnN1ZmZpY2llbnQgZm9yIHRoZSBwb3J0JiMzOTtzIGNyZWF0ZSgpLCB3aGljaAomIzQzOwkJCSAqIHB1c2hlcyBpdHMgb3duIGhsZW4uCiYjNDM7CQkJICovCiYjNDM7CQkJaWYgKHNrYl9oZWFkcm9vbShza2IpICZsdDsgaGxlbikgewomIzQzOwkJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIHVubG9jazsKJiM0MzsJCQl9CiAJCQlyZXQgPSBwb3J0X29wcy0mZ3Q7Y3JlYXRlKHNrYiwgcG9ydC0mZ3Q7ZGV2LAogCQkJCQkgICAgICAgdHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pOwomIzQzOwkJfQogCX0KJiM0Mzt1bmxvY2s6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIHJldDsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTIKCQkJCQkJCW91dHB1dDogMTY0CgkJCQkJCQl0aG91Z2h0czogMzkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHByZXZlbnRpbmcgc29tZSBwb3RlbnRpYWwgaGVhZGFjaGVzIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYC4gV2hhdCBpdCBkb2VzIGlzIHNpbXBsZTogaXQgYWRkcyBhIGNydWNpYWwgY2hlY2suIEJlZm9yZSB3ZSBldmVuIHRoaW5rIGFib3V0IGNhbGxpbmcgYHNsYXZlX29wcy0mZ3Q7Y3JlYXRlKClgIG9yIGBwb3J0X29wcy0mZ3Q7Y3JlYXRlKClgLCBpdCBtYWtlcyBzdXJlIHRoZSBTb2NrZXQgQnVmZmVyIChgc2tiYCkgaGFzIGVub3VnaCBoZWFkcm9vbSB1c2luZyBgc2tiX2hlYWRyb29tKHNrYikgJmx0OyBobGVuYC4gVGhhdCBgaGxlbmAgaXMgdGhlIGhlYWRlciBsZW5ndGggdGhhdCB3ZSBhcmUgYWJvdXQgdG8gcHVzaCB0byB0aGUgc2tiLiBJZiB0aGVyZSYjMzk7cyBub3QgZW5vdWdoIHNwYWNlLCBpdCBiYWlscyBvdXQgd2l0aCBhbiBgLUVJTlZBTGAuIFRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcHJvdGVjdGlvbiBtZWFzdXJlLCBhbmQgaXQmIzM5O3MgZWxlZ2FudCBpbiBpdHMgc2ltcGxpY2l0eS4KCk15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSB2ZXJ5IHNwZWNpZmljIHZ1bG5lcmFiaWxpdHkuICBUaGUgY29uY2VybiBoZXJlIGlzIHRoYXQgYSBjb25jdXJyZW50IGJvbmQgb3IgdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCBsZWF2ZSB1cyB3aXRoIGFuIHNrYiB0aGF0IGRvZXNuJiMzOTt0IGhhdmUgZW5vdWdoIGhlYWRyb29tLiAgQXR0ZW1wdGluZyB0byBwdXNoIGEgaGVhZGVyIG9udG8gdGhhdCB1bmRlci1zaXplZCBza2Igd291bGQgdGhlbiBsZWFkIHRvIGVpdGhlciB3cml0aW5nIHBhc3QgdGhlIHNrYiBib3VuZGFyeSAoYSB3cml0ZSksIG9yIHBvdGVudGlhbGx5IHRyeWluZyB0byByZWFkIHNvbWV0aGluZyBmcm9tIHRoZSBzYW1lIG91dC1vZi1ib3VuZHMgbG9jYXRpb24sIGlmIHRoZSBgY3JlYXRlYCBmdW5jdGlvbiB0cmllcyB0byB1c2UgdGhvc2UgYnl0ZXMuIFRoZSByZXN1bHRpbmcgY3Jhc2ggb3IgYWNjZXNzIHZpb2xhdGlvbiBpcyB0aGVuIHRyaWdnZXJlZCB3aXRoaW4gYHNrYl9wdXNoYCBvciB0aGUgY3VzdG9tIGBjcmVhdGVgIGZ1bmN0aW9uLCBhbmQgS0FTQU4gc2hvdWxkIGhhdmUgYWJzb2x1dGVseSBubyBwcm9ibGVtIGNhdGNoaW5nIHRoaXMuIEtBU0FOIGlzIHRoZSB0b29sIGZvciBkZXRlY3Rpbmcgb3V0LW9mLWJvdW5kcyBtZW1vcnkgaXNzdWVzLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgd2UmIzM5O3JlIHNvbHZpbmcgZm9yLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGNvbmNlcm4sIHRoZXJlJiMzOTtzIG5vIHJlYXNvbiB0byB3b3JyeSBhYm91dCBLTVNBTi4gS01TQU4gaXMgdGhlIHRvb2wgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB3aGljaCBpc24mIzM5O3QgdGhlIGlzc3VlIGhlcmUuIEkgY2FuIGNvbmZpZGVudGx5IHN0YXRlIHRoYXQgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgdW5uZWNlc3NhcnksIGJlY2F1c2UgdGhlcmUgaXMgbm8gY2hhbmNlIHRoYXQgaXQgd2lsbCBleHBvc2UgYW55IG5ldyBpc3N1ZXMuIFRoaXMgaXMgYSBjbGVhciwgdGFyZ2V0ZWQgZml4IHRoYXQgYWRkcmVzc2VzIGEgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBzYWZldHkgcHJvYmxlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIHNvY2tldCBidWZmZXIgKGBza2JgKSBoYXMgc3VmZmljaWVudCBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCBkZXZpY2UmIzM5O3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIHNvY2tldCBidWZmZXIgKGBza2JgKSBoYXMgc3VmZmljaWVudCBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCBkZXZpY2UmIzM5O3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MToyOC44ODc5NDYxMTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc3NjQ2MDk4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfVEVBTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfaGVhZGVyX2NyZWF0ZVwiLFxuICAgIFwidGVhbV9oZWFkZXJfY3JlYXRlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBpbiBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgYnkgZW5zdXJpbmcgdGhhdCB0aGUgc29ja2V0IGJ1ZmZlciAoYHNrYmApIGhhcyBzdWZmaWNpZW50IGhlYWRyb29tIGJlZm9yZSBjYWxsaW5nIHRoZSBzbGF2ZS9wb3J0IGRldmljZSdzIGBjcmVhdGVgIGZ1bmN0aW9uLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgY29uY3VycmVudCBib25kL3RlYW0gdHlwZSBjaGFuZ2UgY291bGQgcmVzdWx0IGluIGFuIGBza2JgIHdpdGggaW5zdWZmaWNpZW50IGhlYWRyb29tLCBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gdGhlIGhlYWRlciBpcyBwdXNoZWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGJlaW5nIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIHRvIGVuc3VyZSBzdWZmaWNpZW50IHNrYiBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCdzIGNyZWF0ZSBmdW5jdGlvbiwgZml4aW5nIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBwYXRocyBmb3IgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MToyOC44ODc5NTE1MDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MDQyOTE4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI3N2NhY2I0NjcyY2VmYjcyZGUzZDRiNTIyODUyODIxYmY4ZDUwNzdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMjQgMDI6NTE6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG5pbmRleCA1MjJlYWIwNjBmOWVkLi45ZWM2NjM2MTBkZmQzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXFxuQEAgLTE1MjQsMTAgKzE1MjQsMjQgQEAgc3RhdGljIGludCBib25kX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxcbiBcXHRzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVxcdTAwM2VjdXJyX2FjdGl2ZV9zbGF2ZSk7XFxuIFxcdGlmIChzbGF2ZSkge1xcbiBcXHRcXHRzbGF2ZV9vcHMgPSBSRUFEX09OQ0Uoc2xhdmUtXFx1MDAzZWRldi1cXHUwMDNlaGVhZGVyX29wcyk7XFxuLVxcdFxcdGlmIChzbGF2ZV9vcHMgXFx1MDAyNlxcdTAwMjYgc2xhdmVfb3BzLVxcdTAwM2VjcmVhdGUpXFxuK1xcdFxcdGlmIChzbGF2ZV9vcHMgXFx1MDAyNlxcdTAwMjYgc2xhdmVfb3BzLVxcdTAwM2VjcmVhdGUpIHtcXG4rXFx0XFx0XFx0dW5zaWduZWQgaW50IGhsZW4gPSBSRUFEX09OQ0Uoc2xhdmUtXFx1MDAzZWRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuKTtcXG4rXFxuK1xcdFxcdFxcdC8qIEhlYWRyb29tIHdhcyByZXNlcnZlZCBmcm9tIGEgc25hcHNob3Qgb2ZcXG4rXFx0XFx0XFx0ICogYm9uZF9kZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiB0aGF0IG1heSBwcmVkYXRlIHRoaXNcXG4rXFx0XFx0XFx0ICogc2xhdmUgKGNvbmN1cnJlbnQgYm9uZCB0eXBlIGNoYW5nZSk7IHJlamVjdCBpZlxcbitcXHRcXHRcXHQgKiBpbnN1ZmZpY2llbnQgZm9yIHRoZSBzbGF2ZSdzIGNyZWF0ZSgpLCB3aGljaFxcbitcXHRcXHRcXHQgKiBwdXNoZXMgaXRzIG93biBobGVuLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKHNrYl9oZWFkcm9vbShza2IpIFxcdTAwM2MgaGxlbikge1xcbitcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRyZXQgPSBzbGF2ZV9vcHMtXFx1MDAzZWNyZWF0ZShza2IsIHNsYXZlLVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdHR5cGUsIGRhZGRyLCBzYWRkciwgbGVuKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuK3VubG9jazpcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmNcXG5pbmRleCBmZWFhNzVmYmY4ZmMyLi4yNzQyYTRiZmM5ZDBhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXFxuQEAgLTIyNjksMTAgKzIyNjksMjQgQEAgc3RhdGljIGludCB0ZWFtX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnRlYW1fZGV2LFxcbiBcXHRwb3J0ID0gdGVhbV9oZWFkZXJfcG9ydF9nZXRfcmN1KHRlYW0sIHRydWUpO1xcbiBcXHRpZiAocG9ydCkge1xcbiBcXHRcXHRwb3J0X29wcyA9IFJFQURfT05DRShwb3J0LVxcdTAwM2VkZXYtXFx1MDAzZWhlYWRlcl9vcHMpO1xcbi1cXHRcXHRpZiAocG9ydF9vcHMgXFx1MDAyNlxcdTAwMjYgcG9ydF9vcHMtXFx1MDAzZWNyZWF0ZSlcXG4rXFx0XFx0aWYgKHBvcnRfb3BzIFxcdTAwMjZcXHUwMDI2IHBvcnRfb3BzLVxcdTAwM2VjcmVhdGUpIHtcXG4rXFx0XFx0XFx0dW5zaWduZWQgaW50IGhsZW4gPSBSRUFEX09OQ0UocG9ydC1cXHUwMDNlZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xcbitcXG4rXFx0XFx0XFx0LyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZlxcbitcXHRcXHRcXHQgKiB0ZWFtX2Rldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuIHRoYXQgbWF5IHByZWRhdGUgdGhpc1xcbitcXHRcXHRcXHQgKiBwb3J0IChjb25jdXJyZW50IHRlYW0gdHlwZSBjaGFuZ2UpOyByZWplY3QgaWZcXG4rXFx0XFx0XFx0ICogaW5zdWZmaWNpZW50IGZvciB0aGUgcG9ydCdzIGNyZWF0ZSgpLCB3aGljaFxcbitcXHRcXHRcXHQgKiBwdXNoZXMgaXRzIG93biBobGVuLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKHNrYl9oZWFkcm9vbShza2IpIFxcdTAwM2MgaGxlbikge1xcbitcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRyZXQgPSBwb3J0X29wcy1cXHUwMDNlY3JlYXRlKHNrYiwgcG9ydC1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgdHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4rdW5sb2NrOlxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MToyOS4yNjkxNTI2NTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2ODM3ODM0Nzc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfVEVBTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfaGVhZGVyX2NyZWF0ZVwiLFxuICAgIFwidGVhbV9oZWFkZXJfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCB0byBlbnN1cmUgc3VmZmljaWVudCBza2IgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQncyBjcmVhdGUgZnVuY3Rpb24sIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjc3Y2FjYjQ2NzJjZWZiNzJkZTNkNGI1MjI4NTI4MjFiZjhkNTA3N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDAyOjUxOjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbmluZGV4IDUyMmVhYjA2MGY5ZWQuLjllYzY2MzYxMGRmZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5AQCAtMTUyNCwxMCArMTUyNCwyNCBAQCBzdGF0aWMgaW50IGJvbmRfaGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXG4gXHRzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcbiBcdGlmIChzbGF2ZSkge1xuIFx0XHRzbGF2ZV9vcHMgPSBSRUFEX09OQ0Uoc2xhdmUtXHUwMDNlZGV2LVx1MDAzZWhlYWRlcl9vcHMpO1xuLVx0XHRpZiAoc2xhdmVfb3BzIFx1MDAyNlx1MDAyNiBzbGF2ZV9vcHMtXHUwMDNlY3JlYXRlKVxuK1x0XHRpZiAoc2xhdmVfb3BzIFx1MDAyNlx1MDAyNiBzbGF2ZV9vcHMtXHUwMDNlY3JlYXRlKSB7XG4rXHRcdFx0dW5zaWduZWQgaW50IGhsZW4gPSBSRUFEX09OQ0Uoc2xhdmUtXHUwMDNlZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4rXG4rXHRcdFx0LyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZlxuK1x0XHRcdCAqIGJvbmRfZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiB0aGF0IG1heSBwcmVkYXRlIHRoaXNcbitcdFx0XHQgKiBzbGF2ZSAoY29uY3VycmVudCBib25kIHR5cGUgY2hhbmdlKTsgcmVqZWN0IGlmXG4rXHRcdFx0ICogaW5zdWZmaWNpZW50IGZvciB0aGUgc2xhdmUncyBjcmVhdGUoKSwgd2hpY2hcbitcdFx0XHQgKiBwdXNoZXMgaXRzIG93biBobGVuLlxuK1x0XHRcdCAqL1xuK1x0XHRcdGlmIChza2JfaGVhZHJvb20oc2tiKSBcdTAwM2MgaGxlbikge1xuK1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0XHRcdGdvdG8gdW5sb2NrO1xuK1x0XHRcdH1cbiBcdFx0XHRyZXQgPSBzbGF2ZV9vcHMtXHUwMDNlY3JlYXRlKHNrYiwgc2xhdmUtXHUwMDNlZGV2LFxuIFx0XHRcdFx0XHRcdHR5cGUsIGRhZGRyLCBzYWRkciwgbGVuKTtcbitcdFx0fVxuIFx0fVxuK3VubG9jazpcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmNcbmluZGV4IGZlYWE3NWZiZjhmYzIuLjI3NDJhNGJmYzlkMGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5AQCAtMjI2OSwxMCArMjI2OSwyNCBAQCBzdGF0aWMgaW50IHRlYW1faGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqdGVhbV9kZXYsXG4gXHRwb3J0ID0gdGVhbV9oZWFkZXJfcG9ydF9nZXRfcmN1KHRlYW0sIHRydWUpO1xuIFx0aWYgKHBvcnQpIHtcbiBcdFx0cG9ydF9vcHMgPSBSRUFEX09OQ0UocG9ydC1cdTAwM2VkZXYtXHUwMDNlaGVhZGVyX29wcyk7XG4tXHRcdGlmIChwb3J0X29wcyBcdTAwMjZcdTAwMjYgcG9ydF9vcHMtXHUwMDNlY3JlYXRlKVxuK1x0XHRpZiAocG9ydF9vcHMgXHUwMDI2XHUwMDI2IHBvcnRfb3BzLVx1MDAzZWNyZWF0ZSkge1xuK1x0XHRcdHVuc2lnbmVkIGludCBobGVuID0gUkVBRF9PTkNFKHBvcnQtXHUwMDNlZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4rXG4rXHRcdFx0LyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZlxuK1x0XHRcdCAqIHRlYW1fZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiB0aGF0IG1heSBwcmVkYXRlIHRoaXNcbitcdFx0XHQgKiBwb3J0IChjb25jdXJyZW50IHRlYW0gdHlwZSBjaGFuZ2UpOyByZWplY3QgaWZcbitcdFx0XHQgKiBpbnN1ZmZpY2llbnQgZm9yIHRoZSBwb3J0J3MgY3JlYXRlKCksIHdoaWNoXG4rXHRcdFx0ICogcHVzaGVzIGl0cyBvd24gaGxlbi5cbitcdFx0XHQgKi9cbitcdFx0XHRpZiAoc2tiX2hlYWRyb29tKHNrYikgXHUwMDNjIGhsZW4pIHtcbitcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdFx0XHRnb3RvIHVubG9jaztcbitcdFx0XHR9XG4gXHRcdFx0cmV0ID0gcG9ydF9vcHMtXHUwMDNlY3JlYXRlKHNrYiwgcG9ydC1cdTAwM2VkZXYsXG4gXHRcdFx0XHRcdCAgICAgICB0eXBlLCBkYWRkciwgc2FkZHIsIGxlbik7XG4rXHRcdH1cbiBcdH1cbit1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTE6MjkuMjY5MTU0MTI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUyNDcyMDA1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXR3b3JraW5nIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgbWFraW5nIGEgY3J1Y2lhbCBhZGp1c3RtZW50IHRvIHBhY2tldCBoZWFkZXIgY3JlYXRpb24gd2l0aGluIHRoZSBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMg4oCTIHNwZWNpZmljYWxseSwgYGJvbmRfaGVhZGVyX2NyZWF0ZWAgaW4gYGJvbmRfbWFpbi5jYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgaW4gYHRlYW1fY29yZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYSBzYW5pdHkgY2hlY2s6IGJlZm9yZSB3ZSBjYWxsIHRoZSB1bmRlcmx5aW5nIGBzbGF2ZV9vcHMtXHUwMDNlY3JlYXRlYCBvciBgcG9ydF9vcHMtXHUwMDNlY3JlYXRlYCBmdW5jdGlvbnMsIHdlJ3JlIG5vdyB2ZXJpZnlpbmcgdGhhdCB0aGUgU3BhY2UgYXZhaWxhYmxlIGluIHRoZSBTS0IgaGVhZHJvb20gaXMgc3VmZmljaWVudCBmb3IgdGhlIGhlYWRlciBsZW5ndGggKGBobGVuYCkuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeDsgaXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGV2ZW4gc3lzdGVtIHBhbmljcyB3aGVuIHRoZSBhbGxvY2F0ZWQgaGVhZHJvb20gaW4gdGhlIHNvY2tldCBidWZmZXIgKFNLQikgaXNuJ3QgbGFyZ2UgZW5vdWdoIHRvIGFjY29tbW9kYXRlIHRoZSBjcmVhdGVkIHBhY2tldCBoZWFkZXIuICBBIGRlZmluaXRlIGltcHJvdmVtZW50LCBhbmQgdGhlc2UgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzIGFyZSB2ZXJ5IHJlYWNoYWJsZSwgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBnaXZlbiB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBpc3N1ZSwgd2UgYWJzb2x1dGVseSAqbXVzdCogZnV6eiB0ZXN0IHRob3NlIG1vZGlmaWVkIGZ1bmN0aW9ucyDigJMgYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIOKAkyB0byBjYXRjaCBhbnkgZWRnZSBjYXNlcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBJdCdzIGEga2V5IHBhcnQgb2YgY29uZmlybWluZyB0aGUgZml4IGlzIHJvYnVzdC5cblxuQmVmb3JlIEkgZGl2ZSB0b28gZGVlcGx5IGludG8gdGhlIGNvZGUgaXRzZWxmLCBJJ2xsIHVzZSBgZ3JlcHBlcmAgb3IgZXF1aXZhbGVudCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBib25kaW5nIGFuZCB0ZWFtIGZlYXR1cmVzIHdpdGhpbiB0aGUga2VybmVsLiBJdOKAmXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdW5kZXIgd2hhdCBjb25maWd1cmF0aW9uIGZsYWdzIHRoZXNlIGZ1bmN0aW9ucyB3b3VsZCBiZSBjb21waWxlZCBpbi4gTGV0J3MgbWFrZSBzdXJlIG91ciBmdXp6aW5nIGFuZCB0ZXN0aW5nIGNvdmVyYWdlIGlzIGNvbXBsZXRlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTk1LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTE6MzQuNzkzODc3MzQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDYzNjY0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zOT1pZiBORVRfQ09SRVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIkJvbmRpbmcgZHJpdmVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUxOjM0Ljk0ODUxNzA5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg2OTQyODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9URUFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkV0aGVybmV0IHRlYW0gZHJpdmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9MTY9aWYgTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjE4OmNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjYXN0IG1vZGUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6Mjk6Y29uZmlnIE5FVF9URUFNX01PREVfUk9VTkRST0JJTlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZSBcXFwiUm91bmQtcm9iaW4gbW9kZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo0MTpjb25maWcgTkVUX1RFQU1fTU9ERV9SQU5ET01cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIlJhbmRvbSBtb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNTItXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjUzOmNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiQWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjY2OmNvbmZpZyBORVRfVEVBTV9NT0RFX0xPQURCQUxBTkNFXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJMb2FkLWJhbGFuY2UgbW9kZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MTozNS4wNzcyMjE4NThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjU0MDY3MjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOZXR3b3JrIEhlYWRlciBDcmVhdGlvbiBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG5ldHdvcmsgY29uZmlndXJhdGlvbnMsIGBCT05ESU5HYCBhbmQgYE5FVF9URUFNYCwgYW5kIHNwZWNpZmljYWxseSwgdGhlIGhlYWRlciBjcmVhdGlvbiBmdW5jdGlvbnMsIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nLCBhbmQgdGhlIGtleSBpcyBkZXRlcm1pbmluZyBpZiB0aGV5IGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIEkgc2VlIHRoZXkgYXJlIHN0YXRpYyBmdW5jdGlvbnMsIGFzc2lnbmVkIHRvIGBoZWFkZXJfb3BzLVx1MDAzZWNyZWF0ZWAuXG5cbkhtbSwgc3RhdGljIGZ1bmN0aW9ucyBhcmUgYSBiaXQgdHJpY2t5LiBUaGV5IG1pZ2h0IG5vdCBiZSBkaXJlY3RseSBjYWxsYWJsZSBieSBuYW1lIGluIGNlcnRhaW4gZnV6emluZyBzY2VuYXJpb3MuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgdGhleSdyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyBhbmQgaW52b2tlZCB0aHJvdWdoIGBkZXYtXHUwMDNlaGVhZGVyX29wcy1cdTAwM2VjcmVhdGVgIGlzIGltcG9ydGFudC4gVGhpcyBtZWFucyB0b29scyBsaWtlIFN5emthbGxlciBjb3VsZCBzdGlsbCB1c2UgdGhlbSBmb3IgY292ZXJhZ2UgZ3VpZGFuY2UsICppZiogdGhleSBhcmVuJ3QgaW5saW5lZC5cblxuVGhlIGNvZGUgc2hvd3MgdGhhdCB0aGVpciBhZGRyZXNzIGlzIHRha2VuLCBzbyB0aGV5ICpjYW5ub3QqIGJlIGZ1bGx5IGlubGluZWQuIFBlcmZlY3QhIFRoYXQgbWVhbnMgdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIHdoaWNoIG1ha2VzIHRoZW0gdmlhYmxlIHRhcmdldHMgYmFzZWQgb24gdGhlIHByb21wdCdzIGluc3RydWN0aW9uOiBcIlByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1wiLlxuXG5Ob3csIGdpdmVuIHRoYXQgdGhleSBhcmUgZ29vZCBjYW5kaWRhdGVzLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IHRyaWdnZXIgdGhlbTsgc3BlY2lmaWNhbGx5IGBkZXZfaGFyZF9oZWFkZXJgLiBCdXQgYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIHRoZW1zZWx2ZXMgbG9vayBwcm9taXNpbmcuXG5cbkZpbmFsbHksIEkgc2hvdWxkIHZlcmlmeSBpZiBgQk9ORElOR2AgYW5kIGBORVRfVEVBTWAgZGVwZW5kIG9uIG90aGVyIG1vZHVsZXMgb3Igc3Vic3lzdGVtcy4gTm8gcG9pbnQgaW4gZm9jdXNpbmcgb24gdGhlc2UgZnVuY3Rpb25zLCBpZiB0aGVpciBmdW5jdGlvbmFsaXR5IGlzIGdhdGVkIGJ5IHNvbWUgb2JzY3VyZSBwcmVyZXF1aXNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjMyLCJPdXRwdXRUb2tlbnMiOjU4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MTo0My4zMzEyOTE3OTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE3ODAwNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTE4PWNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjYXN0IG1vZGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6MjA6XFx0ZGVwZW5kcyBvbiBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0yMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9Mjk9Y29uZmlnIE5FVF9URUFNX01PREVfUk9VTkRST0JJTlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZSBcXFwiUm91bmQtcm9iaW4gbW9kZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzozMTpcXHRkZXBlbmRzIG9uIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTMyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz00MT1jb25maWcgTkVUX1RFQU1fTU9ERV9SQU5ET01cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIlJhbmRvbSBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjQzOlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTUzPWNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiQWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjU1OlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTY2PWNvbmZpZyBORVRfVEVBTV9NT0RFX0xPQURCQUxBTkNFXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJMb2FkLWJhbGFuY2UgbW9kZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo2ODpcXHRkZXBlbmRzIG9uIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTY5LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTE6NDMuNDAzMDc4NzAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDYxNzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03LVxcdGRlZmF1bHQgeSBpZiBVTUxcXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTktXFx0Ym9vbCBcXFwiTmV0d29yayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDE9Y29uZmlnIEJPTkRJTkdcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJCb25kaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDpcXHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NzQ9Y29uZmlnIFdJUkVHVUFSRFxcbmRyaXZlcnMvbmV0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIldpcmVHdWFyZCBzZWN1cmUgbmV0d29yayB0dW5uZWxcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03Ny1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9OTI9Y29uZmlnIFdJUkVHVUFSRF9ERUJVR1xcbmRyaXZlcnMvbmV0L0tjb25maWctOTMtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGNoZWNrcyBhbmQgdmVyYm9zZSBtZXNzYWdlc1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjk0OlxcdGRlcGVuZHMgb24gV0lSRUdVQVJEXFxuZHJpdmVycy9uZXQvS2NvbmZpZy05NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEwMz1jb25maWcgT1ZQTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJPcGVuVlBOIGRhdGEgY2hhbm5lbCBvZmZsb2FkXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA1OlxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cXHRzZWxlY3QgRFNUX0NBQ0hFXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEzNj1jb25maWcgTkVUX0ZDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXFx0Ym9vbCBcXFwiRmlicmUgQ2hhbm5lbCBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjEzODpcXHRkZXBlbmRzIG9uIFNDU0kgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNDk9Y29uZmlnIElGQlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVxcdHRyaXN0YXRlIFxcXCJJbnRlcm1lZGlhdGUgRnVuY3Rpb25hbCBCbG9jayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTUxOlxcdGRlcGVuZHMgb24gTkVUX0FDVF9NSVJSRUQgfHwgTkZUX0ZXRF9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cXHRzZWxlY3QgTkVUX1JFRElSRUNUXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgwLVxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgxOlxcdGRlcGVuZHMgb24gTUFDVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVxcdHNlbGVjdCBUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTQ6XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcXHRkZXBlbmRzIG9uIElQVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk2LVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTk5PWNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjAxOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIxNy1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjE4OlxcdGRlcGVuZHMgb24gSVBWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMTk6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXFx0c2VsZWN0IFRBUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMy1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ni1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDgtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVxcdHRyaXN0YXRlIFxcXCJCYXJlIFVEUCBFbmNhcHN1bGF0aW9uXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVxcdHRyaXN0YXRlIFxcXCJHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc0OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjc1LVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1BcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MC1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEZvcndhcmRpbmcgQ29udHJvbCBQcm90b2NvbCAoUEZDUClcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTItXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXFx0dHJpc3RhdGUgXFxcIkF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nIChBTVQpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1RcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNS1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzI3PWNvbmZpZyBORVRDT05TT0xFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMjk6XFx0ZGVwZW5kcyBvbiBQUklOVEtcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzUtXFx0Ym9vbCBcXFwiRHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzM2OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcXHUwMDI2XFx1MDAyNiBTWVNGUyBcXHUwMDI2XFx1MDAyNiBDT05GSUdGU19GUyBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXFx0XFx0XFx0IShORVRDT05TT0xFPXkgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlM9bSlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzQ1PWNvbmZpZyBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIlNldCBrZXJuZWwgZXh0ZW5kZWQgbWVzc2FnZSBieSBkZWZhdWx0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNTU9Y29uZmlnIE5FVENPTlNPTEVfUFJFUEVORF9SRUxFQVNFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXFx0Ym9vbCBcXFwiUHJlcGVuZCBrZXJuZWwgcmVsZWFzZSB2ZXJzaW9uIGluIHRoZSBtZXNzYWdlIGJ5IGRlZmF1bHRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNTc6XFx0ZGVwZW5kcyBvbiBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNzU6XFx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzYtXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzc9Y29uZmlnIFJJT05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVxcdHRyaXN0YXRlIFxcXCJSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc5OlxcdGRlcGVuZHMgb24gUkFQSURJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzgxPWNvbmZpZyBSSU9ORVRfVFhfU0laRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzgyLVxcdGludCBcXFwiTnVtYmVyIG9mIG91dGJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4NC1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM4Nj1jb25maWcgUklPTkVUX1JYX1NJWkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Ny1cXHRpbnQgXFxcIk51bWJlciBvZiBpbmJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4OS1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM5MT1jb25maWcgVFVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTItXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM5NC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0NTpcXHRkZXBlbmRzIG9uIFZJUlRJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVxcdHNlbGVjdCBORVRfRkFJTE9WRVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2NC1cXHRib29sIFxcXCJCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDY1OlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ3Mj1jb25maWcgTkVUX1ZSRlxcbmRyaXZlcnMvbmV0L0tjb25maWctNDczLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFJvdXRpbmcgYW5kIEZvcndhcmRpbmcgKExpdGUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0OlxcdGRlcGVuZHMgb24gSVBfTVVMVElQTEVfVEFCTEVTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzU6XFx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc2OlxcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMgfHwgSVBWNj1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00ODItXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0ODM6XFx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDg0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDg5PWNvbmZpZyBNSElfTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGUgXFxcIk1ISSBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcXHRkZXBlbmRzIG9uIE1ISV9CVVNcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ5Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVxcdHRyaXN0YXRlIFxcXCJYZW4gbmV0d29yayBkZXZpY2UgZnJvbnRlbmQgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ2OlxcdGRlcGVuZHMgb24gWEVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXFx0c2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU2My1cXHR0cmlzdGF0ZSBcXFwiWGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NjQ6XFx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTY1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODUtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSBWTVhORVQzIGV0aGVybmV0IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODc6XFx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xcbmRyaXZlcnMvbmV0L0tjb25maWctNTk1LVxcdHRyaXN0YXRlIFxcXCJGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1OTY6XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01OTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA3OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA4OlxcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUxOjQzLjQ0NzU0NjUyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyMTgyMDI0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS2NvbmZpZyBDb25maWd1cmF0aW9uIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSAqKkJPTkRJTkcqKiBpcyBmdW5kYW1lbnRhbGx5IHJlbGlhbnQgb24gKipJTkVUKiogYW5kIGVpdGhlciAqKlRMUyoqIG9yLCBpZiBUTFMgaXNuJ3QgZW5hYmxlZCwgYSBzcGVjaWZpYyBUTFMgZGV2aWNlIHZhcmlhYmxlIHNldCB0byAnbicuIE1ha2VzIHNlbnNlLiBTdGFuZGFyZCBuZXR3b3JraW5nIGRlcGVuZGVuY2llcy5cblxuTm93LCAqKk5FVF9URUFNKiogaXMgd2hhdCBJJ20gZm9jdXNlZCBvbi4gVGhlIGRvY3VtZW50YXRpb24gc2F5cyBpdCBkZXBlbmRzIG9uICoqTkVUX0NPUkUqKiwgd2hpY2ggaXMgYWx3YXlzIGVuYWJsZWQgd2hlbiAqKk5FVERFVklDRVMqKiBpcyBlbmFibGVkLiBTdGFuZGFyZCBzdHVmZi4gV2FpdCBhIG1pbnV0ZS4uLiBJIHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0ICoqTkVUX1RFQU0qKiBsaXZpbmcgaW4gYGRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ2AuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBmaWxlLlxuXG5BbHJpZ2h0LCB0aGUgYGRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ2AgZmlsZSBsaXN0cyBgbWVudWNvbmZpZyBORVRfVEVBTWAuIFRoYXQncyBpbnRlcmVzdGluZy4gSXQgZG9lc24ndCBzZWVtIHRvIGhhdmUgYW55IGV4cGxpY2l0bHkgZGVjbGFyZWQgZGVwZW5kZW5jaWVzIGJleW9uZCBpdHMgaW5jbHVzaW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIEl0J3MgaW5jbHVkZWQsIHNvIGl0J3MgYSBtZW51IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFuZCBjYW4gYmUgdXNlZCBvbiBpdHMgb3duLCBpdCB3b3VsZCBzZWVtLiBJbnRlcmVzdGluZyB0byBleHBsb3JlIGhvdyBpdCBpcyBpbmNsdWRlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L0tjb25maWdgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc4MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTE6NTEuNjY1NzUyMTUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI0NDMyMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlLip0ZWFtL0tjb25maWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTYyLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTYzOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MTo1MS44NDgyMDAyOTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1ODI4ODQ1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIHRoZSBgTkVUX1RFQU1gIGZ1bmN0aW9uYWxpdHkgcmVsaWVzIGRpcmVjdGx5IG9uIGJvdGggYE5FVERFVklDRVNgIGFuZCBgTkVUYCwgYSBjbGVhciBkZXBlbmRlbmN5IGNoYWluLiBGdXJ0aGVybW9yZSwgdGhlIGBCT05ESU5HYCBmZWF0dXJlIGlzIGNvbnRpbmdlbnQgb24gYElORVRgIGFuZCBlaXRoZXIgYFRMU2Agb3IgYFRMU19ERVZJQ0VgIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlLiBHaXZlbiB0aGVzZSBkZXBlbmRlbmNpZXMsIGl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gaW5jbHVkZSBib3RoIGBCT05ESU5HYCBhbmQgYE5FVF9URUFNYCBpbiB0aGUgY29uZmlndXJhdGlvbi5cblxuTm93LCBpZiB3ZSByZWFsbHkgd2FudCBhIGNvbXByZWhlbnNpdmUgdGVzdCBzdWl0ZSBmb3IgdGhlIHRlYW0gZmVhdHVyZXMsIHdlJ3JlIHByb2JhYmx5IGdvaW5nIHRvIG5lZWQgdG8gaW5jb3Jwb3JhdGUgZGlmZmVyZW50IHRlYW0gbW9kZXMuIEknbSB0aGlua2luZyB3ZSBzaG91bGQgZGVmaW5pdGVseSBhZGQgYE5FVF9URUFNX01PREVfQlJPQURDQVNUYCwgYE5FVF9URUFNX01PREVfUk9VTkRST0JJTmAsIGBORVRfVEVBTV9NT0RFX1JBTkRPTWAsIGBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUGAsIGFuZCBgTkVUX1RFQU1fTU9ERV9MT0FEQkFMQU5DRWAuIFRoYXQgc2hvdWxkIGNvdmVyIGEgZ29vZCByYW5nZSBvZiBzY2VuYXJpb3MuXG5cbkhvd2V2ZXIsIGV2ZW4gYSBtaW5pbWFsIGBORVRfVEVBTWAgZmxhZyBzaG91bGQgYmUgc3VmZmljaWVudCB0byBjb21waWxlIGB0ZWFtX2NvcmUuY2AsIHdoaWNoLCBhcyBJIHJlY2FsbCwgY29udGFpbnMgdGhlIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGZ1bmN0aW9uLiBUaGF0J3MgYSBrZXkgaW5kaWNhdG9yIG9mIGl0cyBjb3JlIHJvbGUuXG5cblRvIGJlIHRob3JvdWdoLCBsZXQncyBkaXZlIGludG8gYm90aCBgdGVhbV9jb3JlLmNgIGFuZCBgYm9uZF9tYWluLmNgLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlIG1pZ2h0IGJlIG90aGVyIGNyaXRpY2FsIGZ1bmN0aW9ucyBvciBhcmVhcyBpbiB0aG9zZSBmaWxlcyB0aGF0IHdhcnJhbnQgYSBjbG9zZXIgbG9vaywgZW5zdXJpbmcgd2UgaGF2ZW4ndCBvdmVybG9va2VkIGFueSBpbXBvcnRhbnQgY29uc2lkZXJhdGlvbnMgaW4gb3VyIGNvbmZpZ3VyYXRpb24gc3RyYXRlZ3kuIEl0J3MgYmVzdCB0byBiZSBjb21wcmVoZW5zaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjU2LCJPdXRwdXRUb2tlbnMiOjYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUyOjI5LjQzMTA4NzM2OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMxMjc3MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYm9uZF9oZWFkZXJfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTQ5Mz1zdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3QgYm9uZF9maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTUxMy1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE1MTQ6c3RhdGljIGludCBib25kX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTUxNS1cXHRcXHRcXHQgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlLCBjb25zdCB2b2lkICpkYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTU2OT1zdGF0aWMgY29uc3Qgc3RydWN0IGhlYWRlcl9vcHMgYm9uZF9oZWFkZXJfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTU3MDpcXHQuY3JlYXRlXFx0PSBib25kX2hlYWRlcl9jcmVhdGUsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xNTcxLVxcdC5wYXJzZVxcdD0gYm9uZF9oZWFkZXJfcGFyc2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUyOjI5LjQ4NDIxOTY1MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwMjI1ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVhbV9oZWFkZXJfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3RlYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmM9MjI0Nj1zdGF0aWMgc3RydWN0IHRlYW1fcG9ydCAqdGVhbV9oZWFkZXJfcG9ydF9nZXRfcmN1KHN0cnVjdCB0ZWFtICp0ZWFtLFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYy0yMjU4LVxcbmRyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmM6MjI1OTpzdGF0aWMgaW50IHRlYW1faGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqdGVhbV9kZXYsXFxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYy0yMjYwLVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUsIGNvbnN0IHZvaWQgKmRhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYz0yMzE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGVhZGVyX29wcyB0ZWFtX2hlYWRlcl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYzoyMzE1OlxcdC5jcmVhdGVcXHRcXHQ9IHRlYW1faGVhZGVyX2NyZWF0ZSxcXG5kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jLTIzMTYtXFx0LnBhcnNlXFx0XFx0PSB0ZWFtX2hlYWRlcl9wYXJzZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTI6MjkuNTI5MjQ5NjA4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzcxNjUwMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkndmUgZ290IGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCwgYW5kIHRoZXkncmUgaG9va2VkIGludG8gYC5jcmVhdGVgIHdpdGhpbiBgaGVhZGVyX29wc2AuIFRoZXkncmUgY2FsbGVkIGZyb20gYGRldl9oYXJkX2hlYWRlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgYXJlIHRoZXJlICphbnkqIG90aGVyIGZ1bmN0aW9ucyBpbXBhY3RlZD8gTm9wZSwganVzdCB0aG9zZSB0d28uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYHNrYl9oZWFkcm9vbShza2IpIFx1MDAzYyBobGVuYCBjaGVjaywgYSBjcml0aWNhbCBhZGRpdGlvbiB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBEZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYnVnIGZpeC4gV29ydGggZnV6emluZywgbm8gcXVlc3Rpb24uXG5cbk5vdywgdG8gb3JnYW5pemUgbXkgZmluZGluZ3MuIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBNeSByZWFzb25pbmc/IFRoZSBwYXRjaCBhZGRzIHRoaXMgaGVhZHJvb20gY2hlY2sgaW4gYm90aCBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgdG8gc3RvcCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCdzIGNyZWF0ZSBmdW5jdGlvbi4gVGhlc2UgZnVuY3Rpb25zIHNpdCByaWdodCBpbiB0aGUgY3JpdGljYWwgbmV0d29yayBwYXRocyBmb3IgYm90aCBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMg4oCTIGZ1bmRhbWVudGFsIHN0dWZmLiBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGBcImJvbmRfaGVhZGVyX2NyZWF0ZVwiYCBhbmQgYFwidGVhbV9oZWFkZXJfY3JlYXRlXCJgLiBBbmQgSSdsbCBuZWVkIHRvIGVuYWJsZSBjb25maWdzIGZvciBgXCJCT05ESU5HXCJgIGFuZCBgXCJORVRfVEVBTVwiYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGFyZSBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgc3RhdGljPyBZZXMsIHRoZXkgYXJlLiBCdXQgaG9sZCBvbiwgdGhlIHByb21wdCBzYXlzIHRvIHByZWZlciBub24tc3RhdGljIGZ1bmN0aW9ucy4gQmVjYXVzZSB0aGV5J3JlIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBzdHJ1Y3QsIHRoZXkncmUgKm5vdCogaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIHRoZXJlZm9yZSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFBlcmZlY3QhIFRoYXQgbWFrZXMgdGhlbSBpZGVhbCBmb3IgaW5jbHVzaW9uLlxuXG5JJ20gY29tZm9ydGFibGUgd2l0aCB0aGlzIG5vdywgc28gSSdtIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTMwMywiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUyOjM3LjU2NjQxNzA3MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDgwNTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfVEVBTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfaGVhZGVyX2NyZWF0ZVwiLFxuICAgIFwidGVhbV9oZWFkZXJfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCB0byBlbnN1cmUgc3VmZmljaWVudCBza2IgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQncyBjcmVhdGUgZnVuY3Rpb24sIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfVEVBTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfaGVhZGVyX2NyZWF0ZVwiLFxuICAgIFwidGVhbV9oZWFkZXJfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCB0byBlbnN1cmUgc3VmZmljaWVudCBza2IgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQncyBjcmVhdGUgZnVuY3Rpb24sIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTI6MzcuNjQ3NTAzODUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDE2ODkwNjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTI6MzcuNjQ4MDkzNjIzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkwMTYyOTcxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCBieSBlbnN1cmluZyB0aGF0IHRoZSBzb2NrZXQgYnVmZmVyIChgc2tiYCkgaGFzIHN1ZmZpY2llbnQgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQgZGV2aWNlJ3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI3N2NhY2I0NjcyY2VmYjcyZGUzZDRiNTIyODUyODIxYmY4ZDUwNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAwMjo1MToyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5pbmRleCA1MjJlYWIwNjBmOWVkLi45ZWM2NjM2MTBkZmQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuQEAgLTE1MjQsMTAgKzE1MjQsMjQgQEAgc3RhdGljIGludCBib25kX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxuIFx0c2xhdmUgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC1cdTAwM2VjdXJyX2FjdGl2ZV9zbGF2ZSk7XG4gXHRpZiAoc2xhdmUpIHtcbiBcdFx0c2xhdmVfb3BzID0gUkVBRF9PTkNFKHNsYXZlLVx1MDAzZWRldi1cdTAwM2VoZWFkZXJfb3BzKTtcbi1cdFx0aWYgKHNsYXZlX29wcyBcdTAwMjZcdTAwMjYgc2xhdmVfb3BzLVx1MDAzZWNyZWF0ZSlcbitcdFx0aWYgKHNsYXZlX29wcyBcdTAwMjZcdTAwMjYgc2xhdmVfb3BzLVx1MDAzZWNyZWF0ZSkge1xuK1x0XHRcdHVuc2lnbmVkIGludCBobGVuID0gUkVBRF9PTkNFKHNsYXZlLVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuK1xuK1x0XHRcdC8qIEhlYWRyb29tIHdhcyByZXNlcnZlZCBmcm9tIGEgc25hcHNob3Qgb2ZcbitcdFx0XHQgKiBib25kX2Rldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gdGhhdCBtYXkgcHJlZGF0ZSB0aGlzXG4rXHRcdFx0ICogc2xhdmUgKGNvbmN1cnJlbnQgYm9uZCB0eXBlIGNoYW5nZSk7IHJlamVjdCBpZlxuK1x0XHRcdCAqIGluc3VmZmljaWVudCBmb3IgdGhlIHNsYXZlJ3MgY3JlYXRlKCksIHdoaWNoXG4rXHRcdFx0ICogcHVzaGVzIGl0cyBvd24gaGxlbi5cbitcdFx0XHQgKi9cbitcdFx0XHRpZiAoc2tiX2hlYWRyb29tKHNrYikgXHUwMDNjIGhsZW4pIHtcbitcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdFx0XHRnb3RvIHVubG9jaztcbitcdFx0XHR9XG4gXHRcdFx0cmV0ID0gc2xhdmVfb3BzLVx1MDAzZWNyZWF0ZShza2IsIHNsYXZlLVx1MDAzZWRldixcbiBcdFx0XHRcdFx0XHR0eXBlLCBkYWRkciwgc2FkZHIsIGxlbik7XG4rXHRcdH1cbiBcdH1cbit1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5pbmRleCBmZWFhNzVmYmY4ZmMyLi4yNzQyYTRiZmM5ZDBhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuQEAgLTIyNjksMTAgKzIyNjksMjQgQEAgc3RhdGljIGludCB0ZWFtX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnRlYW1fZGV2LFxuIFx0cG9ydCA9IHRlYW1faGVhZGVyX3BvcnRfZ2V0X3JjdSh0ZWFtLCB0cnVlKTtcbiBcdGlmIChwb3J0KSB7XG4gXHRcdHBvcnRfb3BzID0gUkVBRF9PTkNFKHBvcnQtXHUwMDNlZGV2LVx1MDAzZWhlYWRlcl9vcHMpO1xuLVx0XHRpZiAocG9ydF9vcHMgXHUwMDI2XHUwMDI2IHBvcnRfb3BzLVx1MDAzZWNyZWF0ZSlcbitcdFx0aWYgKHBvcnRfb3BzIFx1MDAyNlx1MDAyNiBwb3J0X29wcy1cdTAwM2VjcmVhdGUpIHtcbitcdFx0XHR1bnNpZ25lZCBpbnQgaGxlbiA9IFJFQURfT05DRShwb3J0LVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuK1xuK1x0XHRcdC8qIEhlYWRyb29tIHdhcyByZXNlcnZlZCBmcm9tIGEgc25hcHNob3Qgb2ZcbitcdFx0XHQgKiB0ZWFtX2Rldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gdGhhdCBtYXkgcHJlZGF0ZSB0aGlzXG4rXHRcdFx0ICogcG9ydCAoY29uY3VycmVudCB0ZWFtIHR5cGUgY2hhbmdlKTsgcmVqZWN0IGlmXG4rXHRcdFx0ICogaW5zdWZmaWNpZW50IGZvciB0aGUgcG9ydCdzIGNyZWF0ZSgpLCB3aGljaFxuK1x0XHRcdCAqIHB1c2hlcyBpdHMgb3duIGhsZW4uXG4rXHRcdFx0ICovXG4rXHRcdFx0aWYgKHNrYl9oZWFkcm9vbShza2IpIFx1MDAzYyBobGVuKSB7XG4rXHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdFx0Z290byB1bmxvY2s7XG4rXHRcdFx0fVxuIFx0XHRcdHJldCA9IHBvcnRfb3BzLVx1MDAzZWNyZWF0ZShza2IsIHBvcnQtXHUwMDNlZGV2LFxuIFx0XHRcdFx0XHQgICAgICAgdHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pO1xuK1x0XHR9XG4gXHR9XG4rdW5sb2NrOlxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUyOjM3LjY0ODA5NDYyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDE2Mjc1MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgcHJldmVudGluZyBzb21lIHBvdGVudGlhbCBoZWFkYWNoZXMgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgLiBXaGF0IGl0IGRvZXMgaXMgc2ltcGxlOiBpdCBhZGRzIGEgY3J1Y2lhbCBjaGVjay4gQmVmb3JlIHdlIGV2ZW4gdGhpbmsgYWJvdXQgY2FsbGluZyBgc2xhdmVfb3BzLVx1MDAzZWNyZWF0ZSgpYCBvciBgcG9ydF9vcHMtXHUwMDNlY3JlYXRlKClgLCBpdCBtYWtlcyBzdXJlIHRoZSBTb2NrZXQgQnVmZmVyIChgc2tiYCkgaGFzIGVub3VnaCBoZWFkcm9vbSB1c2luZyBgc2tiX2hlYWRyb29tKHNrYikgXHUwMDNjIGhsZW5gLiBUaGF0IGBobGVuYCBpcyB0aGUgaGVhZGVyIGxlbmd0aCB0aGF0IHdlIGFyZSBhYm91dCB0byBwdXNoIHRvIHRoZSBza2IuIElmIHRoZXJlJ3Mgbm90IGVub3VnaCBzcGFjZSwgaXQgYmFpbHMgb3V0IHdpdGggYW4gYC1FSU5WQUxgLiBUaGlzIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHByb3RlY3Rpb24gbWVhc3VyZSwgYW5kIGl0J3MgZWxlZ2FudCBpbiBpdHMgc2ltcGxpY2l0eS5cblxuTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHZlcnkgc3BlY2lmaWMgdnVsbmVyYWJpbGl0eS4gIFRoZSBjb25jZXJuIGhlcmUgaXMgdGhhdCBhIGNvbmN1cnJlbnQgYm9uZCBvciB0ZWFtIHR5cGUgY2hhbmdlIGNvdWxkIGxlYXZlIHVzIHdpdGggYW4gc2tiIHRoYXQgZG9lc24ndCBoYXZlIGVub3VnaCBoZWFkcm9vbS4gIEF0dGVtcHRpbmcgdG8gcHVzaCBhIGhlYWRlciBvbnRvIHRoYXQgdW5kZXItc2l6ZWQgc2tiIHdvdWxkIHRoZW4gbGVhZCB0byBlaXRoZXIgd3JpdGluZyBwYXN0IHRoZSBza2IgYm91bmRhcnkgKGEgd3JpdGUpLCBvciBwb3RlbnRpYWxseSB0cnlpbmcgdG8gcmVhZCBzb21ldGhpbmcgZnJvbSB0aGUgc2FtZSBvdXQtb2YtYm91bmRzIGxvY2F0aW9uLCBpZiB0aGUgYGNyZWF0ZWAgZnVuY3Rpb24gdHJpZXMgdG8gdXNlIHRob3NlIGJ5dGVzLiBUaGUgcmVzdWx0aW5nIGNyYXNoIG9yIGFjY2VzcyB2aW9sYXRpb24gaXMgdGhlbiB0cmlnZ2VyZWQgd2l0aGluIGBza2JfcHVzaGAgb3IgdGhlIGN1c3RvbSBgY3JlYXRlYCBmdW5jdGlvbiwgYW5kIEtBU0FOIHNob3VsZCBoYXZlIGFic29sdXRlbHkgbm8gcHJvYmxlbSBjYXRjaGluZyB0aGlzLiBLQVNBTiBpcyB0aGUgdG9vbCBmb3IgZGV0ZWN0aW5nIG91dC1vZi1ib3VuZHMgbWVtb3J5IGlzc3Vlcywgd2hpY2ggaXMgZXhhY3RseSB3aGF0IHdlJ3JlIHNvbHZpbmcgZm9yLlxuXG5HaXZlbiB0aGF0IHRoaXMgaXMgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgY29uY2VybiwgdGhlcmUncyBubyByZWFzb24gdG8gd29ycnkgYWJvdXQgS01TQU4uIEtNU0FOIGlzIHRoZSB0b29sIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgd2hpY2ggaXNuJ3QgdGhlIGlzc3VlIGhlcmUuIEkgY2FuIGNvbmZpZGVudGx5IHN0YXRlIHRoYXQgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgdW5uZWNlc3NhcnksIGJlY2F1c2UgdGhlcmUgaXMgbm8gY2hhbmNlIHRoYXQgaXQgd2lsbCBleHBvc2UgYW55IG5ldyBpc3N1ZXMuIFRoaXMgaXMgYSBjbGVhciwgdGFyZ2V0ZWQgZml4IHRoYXQgYWRkcmVzc2VzIGEgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBzYWZldHkgcHJvYmxlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5MiwiT3V0cHV0VG9rZW5zIjoxNjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1Mjo0Ni42NjQzNzI1NjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCBieSBlbnN1cmluZyB0aGF0IHRoZSBzb2NrZXQgYnVmZmVyIChgc2tiYCkgaGFzIHN1ZmZpY2llbnQgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQgZGV2aWNlJ3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCBieSBlbnN1cmluZyB0aGF0IHRoZSBzb2NrZXQgYnVmZmVyIChgc2tiYCkgaGFzIHN1ZmZpY2llbnQgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQgZGV2aWNlJ3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowrqw4b[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-24 02:37:00 +0000 UTC FinishedAt: 2026-08-24 02:52:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_TEAM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING", "NET_TEAM" ], "series_id": "0bdc3ffd-1278-42c2-b5ba-48635fc29d03" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bond_header_create", "team_header_create" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX1RFQU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2hlYWRlcl9jcmVhdGUmIzM0OywKICAgICYjMzQ7dGVhbV9oZWFkZXJfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIHNvY2tldCBidWZmZXIgKGBza2JgKSBoYXMgc3VmZmljaWVudCBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCBkZXZpY2UmIzM5O3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIHRvIGVuc3VyZSBzdWZmaWNpZW50IHNrYiBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCYjMzk7cyBjcmVhdGUgZnVuY3Rpb24sIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI3N2NhY2I0NjcyY2VmYjcyZGUzZDRiNTIyODUyODIxYmY4ZDUwNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAwMjo1MToyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuaW5kZXggNTIyZWFiMDYwZjllZC4uOWVjNjYzNjEwZGZkMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbkBAIC0xNTI0LDEwICYjNDM7MTUyNCwyNCBAQCBzdGF0aWMgaW50IGJvbmRfaGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXG4gXHRzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcbiBcdGlmIChzbGF2ZSkge1xuIFx0XHRzbGF2ZV9vcHMgPSBSRUFEX09OQ0Uoc2xhdmUtXHUwMDNlZGV2LVx1MDAzZWhlYWRlcl9vcHMpO1xuLVx0XHRpZiAoc2xhdmVfb3BzIFx1MDAyNlx1MDAyNiBzbGF2ZV9vcHMtXHUwMDNlY3JlYXRlKVxuJiM0MztcdFx0aWYgKHNsYXZlX29wcyBcdTAwMjZcdTAwMjYgc2xhdmVfb3BzLVx1MDAzZWNyZWF0ZSkge1xuJiM0MztcdFx0XHR1bnNpZ25lZCBpbnQgaGxlbiA9IFJFQURfT05DRShzbGF2ZS1cdTAwM2VkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuKTtcbiYjNDM7XG4mIzQzO1x0XHRcdC8qIEhlYWRyb29tIHdhcyByZXNlcnZlZCBmcm9tIGEgc25hcHNob3Qgb2ZcbiYjNDM7XHRcdFx0ICogYm9uZF9kZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuIHRoYXQgbWF5IHByZWRhdGUgdGhpc1xuJiM0MztcdFx0XHQgKiBzbGF2ZSAoY29uY3VycmVudCBib25kIHR5cGUgY2hhbmdlKTsgcmVqZWN0IGlmXG4mIzQzO1x0XHRcdCAqIGluc3VmZmljaWVudCBmb3IgdGhlIHNsYXZlJiMzOTtzIGNyZWF0ZSgpLCB3aGljaFxuJiM0MztcdFx0XHQgKiBwdXNoZXMgaXRzIG93biBobGVuLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKHNrYl9oZWFkcm9vbShza2IpIFx1MDAzYyBobGVuKSB7XG4mIzQzO1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHRnb3RvIHVubG9jaztcbiYjNDM7XHRcdFx0fVxuIFx0XHRcdHJldCA9IHNsYXZlX29wcy1cdTAwM2VjcmVhdGUoc2tiLCBzbGF2ZS1cdTAwM2VkZXYsXG4gXHRcdFx0XHRcdFx0dHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pO1xuJiM0MztcdFx0fVxuIFx0fVxuJiM0Mzt1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5pbmRleCBmZWFhNzVmYmY4ZmMyLi4yNzQyYTRiZmM5ZDBhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuQEAgLTIyNjksMTAgJiM0MzsyMjY5LDI0IEBAIHN0YXRpYyBpbnQgdGVhbV9oZWFkZXJfY3JlYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICp0ZWFtX2RldixcbiBcdHBvcnQgPSB0ZWFtX2hlYWRlcl9wb3J0X2dldF9yY3UodGVhbSwgdHJ1ZSk7XG4gXHRpZiAocG9ydCkge1xuIFx0XHRwb3J0X29wcyA9IFJFQURfT05DRShwb3J0LVx1MDAzZWRldi1cdTAwM2VoZWFkZXJfb3BzKTtcbi1cdFx0aWYgKHBvcnRfb3BzIFx1MDAyNlx1MDAyNiBwb3J0X29wcy1cdTAwM2VjcmVhdGUpXG4mIzQzO1x0XHRpZiAocG9ydF9vcHMgXHUwMDI2XHUwMDI2IHBvcnRfb3BzLVx1MDAzZWNyZWF0ZSkge1xuJiM0MztcdFx0XHR1bnNpZ25lZCBpbnQgaGxlbiA9IFJFQURfT05DRShwb3J0LVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuJiM0MztcbiYjNDM7XHRcdFx0LyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZlxuJiM0MztcdFx0XHQgKiB0ZWFtX2Rldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gdGhhdCBtYXkgcHJlZGF0ZSB0aGlzXG4mIzQzO1x0XHRcdCAqIHBvcnQgKGNvbmN1cnJlbnQgdGVhbSB0eXBlIGNoYW5nZSk7IHJlamVjdCBpZlxuJiM0MztcdFx0XHQgKiBpbnN1ZmZpY2llbnQgZm9yIHRoZSBwb3J0JiMzOTtzIGNyZWF0ZSgpLCB3aGljaFxuJiM0MztcdFx0XHQgKiBwdXNoZXMgaXRzIG93biBobGVuLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKHNrYl9oZWFkcm9vbShza2IpIFx1MDAzYyBobGVuKSB7XG4mIzQzO1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHRnb3RvIHVubG9jaztcbiYjNDM7XHRcdFx0fVxuIFx0XHRcdHJldCA9IHBvcnRfb3BzLVx1MDAzZWNyZWF0ZShza2IsIHBvcnQtXHUwMDNlZGV2LFxuIFx0XHRcdFx0XHQgICAgICAgdHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pO1xuJiM0MztcdFx0fVxuIFx0fVxuJiM0Mzt1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCT05ESU5HJiMzNDssCiAgICAmIzM0O05FVF9URUFNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym9uZF9oZWFkZXJfY3JlYXRlJiMzNDssCiAgICAmIzM0O3RlYW1faGVhZGVyX2NyZWF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIHRvIGVuc3VyZSBzdWZmaWNpZW50IHNrYiBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCYjMzk7cyBjcmVhdGUgZnVuY3Rpb24sIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI3N2NhY2I0NjcyY2VmYjcyZGUzZDRiNTIyODUyODIxYmY4ZDUwNzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAwMjo1MToyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCmluZGV4IDUyMmVhYjA2MGY5ZWQuLjllYzY2MzYxMGRmZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwpAQCAtMTUyNCwxMCAmIzQzOzE1MjQsMjQgQEAgc3RhdGljIGludCBib25kX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LAogCXNsYXZlID0gcmN1X2RlcmVmZXJlbmNlKGJvbmQtJmd0O2N1cnJfYWN0aXZlX3NsYXZlKTsKIAlpZiAoc2xhdmUpIHsKIAkJc2xhdmVfb3BzID0gUkVBRF9PTkNFKHNsYXZlLSZndDtkZXYtJmd0O2hlYWRlcl9vcHMpOwotCQlpZiAoc2xhdmVfb3BzICZhbXA7JmFtcDsgc2xhdmVfb3BzLSZndDtjcmVhdGUpCiYjNDM7CQlpZiAoc2xhdmVfb3BzICZhbXA7JmFtcDsgc2xhdmVfb3BzLSZndDtjcmVhdGUpIHsKJiM0MzsJCQl1bnNpZ25lZCBpbnQgaGxlbiA9IFJFQURfT05DRShzbGF2ZS0mZ3Q7ZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4pOwomIzQzOwomIzQzOwkJCS8qIEhlYWRyb29tIHdhcyByZXNlcnZlZCBmcm9tIGEgc25hcHNob3Qgb2YKJiM0MzsJCQkgKiBib25kX2Rldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuIHRoYXQgbWF5IHByZWRhdGUgdGhpcwomIzQzOwkJCSAqIHNsYXZlIChjb25jdXJyZW50IGJvbmQgdHlwZSBjaGFuZ2UpOyByZWplY3QgaWYKJiM0MzsJCQkgKiBpbnN1ZmZpY2llbnQgZm9yIHRoZSBzbGF2ZSYjMzk7cyBjcmVhdGUoKSwgd2hpY2gKJiM0MzsJCQkgKiBwdXNoZXMgaXRzIG93biBobGVuLgomIzQzOwkJCSAqLwomIzQzOwkJCWlmIChza2JfaGVhZHJvb20oc2tiKSAmbHQ7IGhsZW4pIHsKJiM0MzsJCQkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCQkJZ290byB1bmxvY2s7CiYjNDM7CQkJfQogCQkJcmV0ID0gc2xhdmVfb3BzLSZndDtjcmVhdGUoc2tiLCBzbGF2ZS0mZ3Q7ZGV2LAogCQkJCQkJdHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pOwomIzQzOwkJfQogCX0KJiM0Mzt1bmxvY2s6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jCmluZGV4IGZlYWE3NWZiZjhmYzIuLjI3NDJhNGJmYzlkMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYwpAQCAtMjI2OSwxMCAmIzQzOzIyNjksMjQgQEAgc3RhdGljIGludCB0ZWFtX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnRlYW1fZGV2LAogCXBvcnQgPSB0ZWFtX2hlYWRlcl9wb3J0X2dldF9yY3UodGVhbSwgdHJ1ZSk7CiAJaWYgKHBvcnQpIHsKIAkJcG9ydF9vcHMgPSBSRUFEX09OQ0UocG9ydC0mZ3Q7ZGV2LSZndDtoZWFkZXJfb3BzKTsKLQkJaWYgKHBvcnRfb3BzICZhbXA7JmFtcDsgcG9ydF9vcHMtJmd0O2NyZWF0ZSkKJiM0MzsJCWlmIChwb3J0X29wcyAmYW1wOyZhbXA7IHBvcnRfb3BzLSZndDtjcmVhdGUpIHsKJiM0MzsJCQl1bnNpZ25lZCBpbnQgaGxlbiA9IFJFQURfT05DRShwb3J0LSZndDtkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbik7CiYjNDM7CiYjNDM7CQkJLyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZgomIzQzOwkJCSAqIHRlYW1fZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gdGhhdCBtYXkgcHJlZGF0ZSB0aGlzCiYjNDM7CQkJICogcG9ydCAoY29uY3VycmVudCB0ZWFtIHR5cGUgY2hhbmdlKTsgcmVqZWN0IGlmCiYjNDM7CQkJICogaW5zdWZmaWNpZW50IGZvciB0aGUgcG9ydCYjMzk7cyBjcmVhdGUoKSwgd2hpY2gKJiM0MzsJCQkgKiBwdXNoZXMgaXRzIG93biBobGVuLgomIzQzOwkJCSAqLwomIzQzOwkJCWlmIChza2JfaGVhZHJvb20oc2tiKSAmbHQ7IGhsZW4pIHsKJiM0MzsJCQkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCQkJZ290byB1bmxvY2s7CiYjNDM7CQkJfQogCQkJcmV0ID0gcG9ydF9vcHMtJmd0O2NyZWF0ZShza2IsIHBvcnQtJmd0O2RldiwKIAkJCQkJICAgICAgIHR5cGUsIGRhZGRyLCBzYWRkciwgbGVuKTsKJiM0MzsJCX0KIAl9CiYjNDM7dW5sb2NrOgogCXJjdV9yZWFkX3VubG9jaygpOwogCXJldHVybiByZXQ7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTUKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAxODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTmV0d29ya2luZyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBhIGNydWNpYWwgYWRqdXN0bWVudCB0byBwYWNrZXQgaGVhZGVyIGNyZWF0aW9uIHdpdGhpbiB0aGUgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzIOKAkyBzcGVjaWZpY2FsbHksIGBib25kX2hlYWRlcl9jcmVhdGVgIGluIGBib25kX21haW4uY2AgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGluIGB0ZWFtX2NvcmUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgYWRkaW5nIGEgc2FuaXR5IGNoZWNrOiBiZWZvcmUgd2UgY2FsbCB0aGUgdW5kZXJseWluZyBgc2xhdmVfb3BzLSZndDtjcmVhdGVgIG9yIGBwb3J0X29wcy0mZ3Q7Y3JlYXRlYCBmdW5jdGlvbnMsIHdlJiMzOTtyZSBub3cgdmVyaWZ5aW5nIHRoYXQgdGhlIFNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgU0tCIGhlYWRyb29tIGlzIHN1ZmZpY2llbnQgZm9yIHRoZSBoZWFkZXIgbGVuZ3RoIChgaGxlbmApLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4OyBpdCYjMzk7cyBkZXNpZ25lZCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGV2ZW4gc3lzdGVtIHBhbmljcyB3aGVuIHRoZSBhbGxvY2F0ZWQgaGVhZHJvb20gaW4gdGhlIHNvY2tldCBidWZmZXIgKFNLQikgaXNuJiMzOTt0IGxhcmdlIGVub3VnaCB0byBhY2NvbW1vZGF0ZSB0aGUgY3JlYXRlZCBwYWNrZXQgaGVhZGVyLiAgQSBkZWZpbml0ZSBpbXByb3ZlbWVudCwgYW5kIHRoZXNlIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycyBhcmUgdmVyeSByZWFjaGFibGUsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGdpdmVuIHRoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlLCB3ZSBhYnNvbHV0ZWx5ICptdXN0KiBmdXp6IHRlc3QgdGhvc2UgbW9kaWZpZWQgZnVuY3Rpb25zIOKAkyBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAg4oCTIHRvIGNhdGNoIGFueSBlZGdlIGNhc2VzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIEl0JiMzOTtzIGEga2V5IHBhcnQgb2YgY29uZmlybWluZyB0aGUgZml4IGlzIHJvYnVzdC4KCkJlZm9yZSBJIGRpdmUgdG9vIGRlZXBseSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSYjMzk7bGwgdXNlIGBncmVwcGVyYCBvciBlcXVpdmFsZW50IHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZmVhdHVyZXMgd2l0aGluIHRoZSBrZXJuZWwuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB1bmRlciB3aGF0IGNvbmZpZ3VyYXRpb24gZmxhZ3MgdGhlc2UgZnVuY3Rpb25zIHdvdWxkIGJlIGNvbXBpbGVkIGluLiBMZXQmIzM5O3MgbWFrZSBzdXJlIG91ciBmdXp6aW5nIGFuZCB0ZXN0aW5nIGNvdmVyYWdlIGlzIGNvbXBsZXRlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCT05ESU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9Mzk9aWYgTkVUX0NPUkVcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXG5kcml2ZXJzL25ldC9LY29uZmlnOjQxOmNvbmZpZyBCT05ESU5HXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVx0dHJpc3RhdGUgXCYjMzQ7Qm9uZGluZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfVEVBTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RXRoZXJuZXQgdGVhbSBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0xNj1pZiBORVRfVEVBTVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjE4OmNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjYXN0IG1vZGUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzoyOTpjb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDAtXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDE6Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gbW9kZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjUzOmNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjUtXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NjY6Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0xvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjMyCgkJCQkJCQlvdXRwdXQ6IDU4CgkJCQkJCQl0aG91Z2h0czogMzI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOZXR3b3JrIEhlYWRlciBDcmVhdGlvbiBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgbmV0d29yayBjb25maWd1cmF0aW9ucywgYEJPTkRJTkdgIGFuZCBgTkVUX1RFQU1gLCBhbmQgc3BlY2lmaWNhbGx5LCB0aGUgaGVhZGVyIGNyZWF0aW9uIGZ1bmN0aW9ucywgYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjY2Vzc2libGUgZm9yIGZ1enppbmcsIGFuZCB0aGUga2V5IGlzIGRldGVybWluaW5nIGlmIHRoZXkgYXJlIHN0YXRpYyBvciBleHBvcnRlZC4gSSBzZWUgdGhleSBhcmUgc3RhdGljIGZ1bmN0aW9ucywgYXNzaWduZWQgdG8gYGhlYWRlcl9vcHMtJmd0O2NyZWF0ZWAuCgpIbW0sIHN0YXRpYyBmdW5jdGlvbnMgYXJlIGEgYml0IHRyaWNreS4gVGhleSBtaWdodCBub3QgYmUgZGlyZWN0bHkgY2FsbGFibGUgYnkgbmFtZSBpbiBjZXJ0YWluIGZ1enppbmcgc2NlbmFyaW9zLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IHRoZXkmIzM5O3JlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBpbnZva2VkIHRocm91Z2ggYGRldi0mZ3Q7aGVhZGVyX29wcy0mZ3Q7Y3JlYXRlYCBpcyBpbXBvcnRhbnQuIFRoaXMgbWVhbnMgdG9vbHMgbGlrZSBTeXprYWxsZXIgY291bGQgc3RpbGwgdXNlIHRoZW0gZm9yIGNvdmVyYWdlIGd1aWRhbmNlLCAqaWYqIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkLgoKVGhlIGNvZGUgc2hvd3MgdGhhdCB0aGVpciBhZGRyZXNzIGlzIHRha2VuLCBzbyB0aGV5ICpjYW5ub3QqIGJlIGZ1bGx5IGlubGluZWQuIFBlcmZlY3QhIFRoYXQgbWVhbnMgdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIHdoaWNoIG1ha2VzIHRoZW0gdmlhYmxlIHRhcmdldHMgYmFzZWQgb24gdGhlIHByb21wdCYjMzk7cyBpbnN0cnVjdGlvbjogJiMzNDtQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMmIzM0Oy4KCk5vdywgZ2l2ZW4gdGhhdCB0aGV5IGFyZSBnb29kIGNhbmRpZGF0ZXMsIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGVtOyBzcGVjaWZpY2FsbHkgYGRldl9oYXJkX2hlYWRlcmAuIEJ1dCBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgdGhlbXNlbHZlcyBsb29rIHByb21pc2luZy4KCkZpbmFsbHksIEkgc2hvdWxkIHZlcmlmeSBpZiBgQk9ORElOR2AgYW5kIGBORVRfVEVBTWAgZGVwZW5kIG9uIG90aGVyIG1vZHVsZXMgb3Igc3Vic3lzdGVtcy4gTm8gcG9pbnQgaW4gZm9jdXNpbmcgb24gdGhlc2UgZnVuY3Rpb25zLCBpZiB0aGVpciBmdW5jdGlvbmFsaXR5IGlzIGdhdGVkIGJ5IHNvbWUgb2JzY3VyZSBwcmVyZXF1aXNpdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTE4PWNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjYXN0IG1vZGUgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjIwOlx0ZGVwZW5kcyBvbiBORVRfVEVBTVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTIxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz0yOT1jb25maWcgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtSb3VuZC1yb2JpbiBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzozMTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NDE9Y29uZmlnIE5FVF9URUFNX01PREVfUkFORE9NXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtSYW5kb20gbW9kZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIE5FVF9URUFNXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTUzPWNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7QWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo1NTpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9NjY9Y29uZmlnIE5FVF9URUFNX01PREVfTE9BREJBTEFOQ0VcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02Ny1cdHRyaXN0YXRlIFwmIzM0O0xvYWQtYmFsYW5jZSBtb2RlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo2ODpcdGRlcGVuZHMgb24gTkVUX1RFQU1cbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy02OS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXG5kcml2ZXJzL25ldC9LY29uZmlnLTctXHRkZWZhdWx0IHkgaWYgVU1MXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy05LVx0Ym9vbCBcJiMzNDtOZXR3b3JrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00MT1jb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ6XHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNDUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz03ND1jb25maWcgV0lSRUdVQVJEXG5kcml2ZXJzL25ldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7V2lyZUd1YXJkIHNlY3VyZSBuZXR3b3JrIHR1bm5lbFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTc3LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz05Mj1jb25maWcgV0lSRUdVQVJEX0RFQlVHXG5kcml2ZXJzL25ldC9LY29uZmlnLTkzLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgY2hlY2tzIGFuZCB2ZXJib3NlIG1lc3NhZ2VzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjk0Olx0ZGVwZW5kcyBvbiBXSVJFR1VBUkRcbmRyaXZlcnMvbmV0L0tjb25maWctOTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7T3BlblZQTiBkYXRhIGNoYW5uZWwgb2ZmbG9hZFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxMDU6XHRkZXBlbmRzIG9uIE5FVCBcdTAwMjZcdTAwMjYgSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXHRzZWxlY3QgRFNUX0NBQ0hFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMzY9Y29uZmlnIE5FVF9GQ1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXHRib29sIFwmIzM0O0ZpYnJlIENoYW5uZWwgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MTM4Olx0ZGVwZW5kcyBvbiBTQ1NJIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L0tjb25maWctMTM5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZXJtZWRpYXRlIEZ1bmN0aW9uYWwgQmxvY2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxNTE6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfTUlSUkVEIHx8IE5GVF9GV0RfTkVUREVWXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cdHNlbGVjdCBORVRfUkVESVJFQ1Rcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xODAtXHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MTpcdGRlcGVuZHMgb24gTUFDVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZzoxODI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVx0c2VsZWN0IFRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NDpcdGRlcGVuZHMgb24gTkVURklMVEVSXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Ni1cdGRlZl9ib29sIHlcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE5OT1jb25maWcgSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMDE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcbmRyaXZlcnMvbmV0L0tjb25maWctMjE3LVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjIxODpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnOjIxOTpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXHRzZWxlY3QgVEFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjMzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNDU9Y29uZmlnIEdFTkVWRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDYtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ4LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVx0dHJpc3RhdGUgXCYjMzQ7QmFyZSBVRFAgRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNjI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzMtXHR0cmlzdGF0ZSBcJiMzNDtHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NDpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTAtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRm9yd2FyZGluZyBDb250cm9sIFByb3RvY29sIChQRkNQKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjkyLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXHR0cmlzdGF0ZSBcJiMzNDtBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozMDQ6XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElQX01VTFRJQ0FTVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMyNz1jb25maWcgTkVUQ09OU09MRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGNvbnNvbGUgbG9nZ2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMyOTpcdGRlcGVuZHMgb24gUFJJTlRLXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzNS1cdGJvb2wgXCYjMzQ7RHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMzNjpcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcdTAwMjZcdTAwMjYgU1lTRlMgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTIFx1MDAyNlx1MDAyNiBcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXHRcdFx0IShORVRDT05TT0xFPXkgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTPW0pXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNDU9Y29uZmlnIE5FVENPTlNPTEVfRVhURU5ERURfTE9HXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0Ni1cdGJvb2wgXCYjMzQ7U2V0IGtlcm5lbCBleHRlbmRlZCBtZXNzYWdlIGJ5IGRlZmF1bHRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBORVRDT05TT0xFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0OC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzU1PWNvbmZpZyBORVRDT05TT0xFX1BSRVBFTkRfUkVMRUFTRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXHRib29sIFwmIzM0O1ByZXBlbmQga2VybmVsIHJlbGVhc2UgdmVyc2lvbiBpbiB0aGUgbWVzc2FnZSBieSBkZWZhdWx0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM1NzpcdGRlcGVuZHMgb24gTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcbmRyaXZlcnMvbmV0L0tjb25maWctMzc0LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc1Olx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3Ni1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzc3PWNvbmZpZyBSSU9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVx0dHJpc3RhdGUgXCYjMzQ7UmFwaWRJTyBFdGhlcm5ldCBvdmVyIG1lc3NhZ2luZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozNzk6XHRkZXBlbmRzIG9uIFJBUElESU9cbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zODE9Y29uZmlnIFJJT05FVF9UWF9TSVpFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Mi1cdGludCBcJiMzNDtOdW1iZXIgb2Ygb3V0Ym91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODQtXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzg2PWNvbmZpZyBSSU9ORVRfUlhfU0laRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODctXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGluYm91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODktXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzkxPWNvbmZpZyBUVU5cbmRyaXZlcnMvbmV0L0tjb25maWctMzkyLVx0dHJpc3RhdGUgXCYjMzQ7VW5pdmVyc2FsIFRVTi9UQVAgZGV2aWNlIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTQtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gbmV0d29yayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ1Olx0ZGVwZW5kcyBvbiBWSVJUSU9cbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVx0c2VsZWN0IE5FVF9GQUlMT1ZFUlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDY0LVx0Ym9vbCBcJiMzNDtCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ2NTpcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbmRyaXZlcnMvbmV0L0tjb25maWctNDY2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDcyPWNvbmZpZyBORVRfVlJGXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgUm91dGluZyBhbmQgRm9yd2FyZGluZyAoTGl0ZSlcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0Olx0ZGVwZW5kcyBvbiBJUF9NVUxUSVBMRV9UQUJMRVNcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1Olx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzY6XHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ4Mi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDgzOlx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xuZHJpdmVycy9uZXQvS2NvbmZpZy00ODQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODk9Y29uZmlnIE1ISV9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDkwLVx0dHJpc3RhdGUgXCYjMzQ7TUhJIG5ldHdvcmsgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcdGRlcGVuZHMgb24gTUhJX0JVU1xuZHJpdmVycy9uZXQvS2NvbmZpZy00OTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVx0dHJpc3RhdGUgXCYjMzQ7WGVuIG5ldHdvcmsgZGV2aWNlIGZyb250ZW5kIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDY6XHRkZXBlbmRzIG9uIFhFTlxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7WGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTY0Olx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbmRyaXZlcnMvbmV0L0tjb25maWctNTg1LVx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIFZNWE5FVDMgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NzpcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xuZHJpdmVycy9uZXQvS2NvbmZpZy01OTUtXHR0cmlzdGF0ZSBcJiMzNDtGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTk2Olx0ZGVwZW5kcyBvbiBBQ1BJXG5kcml2ZXJzL25ldC9LY29uZmlnLTU5Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDg6XHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc4MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBLY29uZmlnIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgKipCT05ESU5HKiogaXMgZnVuZGFtZW50YWxseSByZWxpYW50IG9uICoqSU5FVCoqIGFuZCBlaXRoZXIgKipUTFMqKiBvciwgaWYgVExTIGlzbiYjMzk7dCBlbmFibGVkLCBhIHNwZWNpZmljIFRMUyBkZXZpY2UgdmFyaWFibGUgc2V0IHRvICYjMzk7biYjMzk7LiBNYWtlcyBzZW5zZS4gU3RhbmRhcmQgbmV0d29ya2luZyBkZXBlbmRlbmNpZXMuCgpOb3csICoqTkVUX1RFQU0qKiBpcyB3aGF0IEkmIzM5O20gZm9jdXNlZCBvbi4gVGhlIGRvY3VtZW50YXRpb24gc2F5cyBpdCBkZXBlbmRzIG9uICoqTkVUX0NPUkUqKiwgd2hpY2ggaXMgYWx3YXlzIGVuYWJsZWQgd2hlbiAqKk5FVERFVklDRVMqKiBpcyBlbmFibGVkLiBTdGFuZGFyZCBzdHVmZi4gV2FpdCBhIG1pbnV0ZS4uLiBJIHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0ICoqTkVUX1RFQU0qKiBsaXZpbmcgaW4gYGRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ2AuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBmaWxlLgoKQWxyaWdodCwgdGhlIGBkcml2ZXJzL25ldC90ZWFtL0tjb25maWdgIGZpbGUgbGlzdHMgYG1lbnVjb25maWcgTkVUX1RFQU1gLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLiBJdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYW55IGV4cGxpY2l0bHkgZGVjbGFyZWQgZGVwZW5kZW5jaWVzIGJleW9uZCBpdHMgaW5jbHVzaW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIEl0JiMzOTtzIGluY2x1ZGVkLCBzbyBpdCYjMzk7cyBhIG1lbnUgY29uZmlndXJhdGlvbiBvcHRpb24gYW5kIGNhbiBiZSB1c2VkIG9uIGl0cyBvd24sIGl0IHdvdWxkIHNlZW0uIEludGVyZXN0aW5nIHRvIGV4cGxvcmUgaG93IGl0IGlzIGluY2x1ZGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2Agbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UuKnRlYW0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTE0OT1jb25maWcgSUZCXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjItXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2Mzpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI1NgoJCQkJCQkJb3V0cHV0OiA2MgoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBOZXR3b3JrIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgdGhlIGBORVRfVEVBTWAgZnVuY3Rpb25hbGl0eSByZWxpZXMgZGlyZWN0bHkgb24gYm90aCBgTkVUREVWSUNFU2AgYW5kIGBORVRgLCBhIGNsZWFyIGRlcGVuZGVuY3kgY2hhaW4uIEZ1cnRoZXJtb3JlLCB0aGUgYEJPTkRJTkdgIGZlYXR1cmUgaXMgY29udGluZ2VudCBvbiBgSU5FVGAgYW5kIGVpdGhlciBgVExTYCBvciBgVExTX0RFVklDRWAgc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUuIEdpdmVuIHRoZXNlIGRlcGVuZGVuY2llcywgaXQgbWFrZXMgcGVyZmVjdCBzZW5zZSB0byBpbmNsdWRlIGJvdGggYEJPTkRJTkdgIGFuZCBgTkVUX1RFQU1gIGluIHRoZSBjb25maWd1cmF0aW9uLgoKTm93LCBpZiB3ZSByZWFsbHkgd2FudCBhIGNvbXByZWhlbnNpdmUgdGVzdCBzdWl0ZSBmb3IgdGhlIHRlYW0gZmVhdHVyZXMsIHdlJiMzOTtyZSBwcm9iYWJseSBnb2luZyB0byBuZWVkIHRvIGluY29ycG9yYXRlIGRpZmZlcmVudCB0ZWFtIG1vZGVzLiBJJiMzOTttIHRoaW5raW5nIHdlIHNob3VsZCBkZWZpbml0ZWx5IGFkZCBgTkVUX1RFQU1fTU9ERV9CUk9BRENBU1RgLCBgTkVUX1RFQU1fTU9ERV9ST1VORFJPQklOYCwgYE5FVF9URUFNX01PREVfUkFORE9NYCwgYE5FVF9URUFNX01PREVfQUNUSVZFQkFDS1VQYCwgYW5kIGBORVRfVEVBTV9NT0RFX0xPQURCQUxBTkNFYC4gVGhhdCBzaG91bGQgY292ZXIgYSBnb29kIHJhbmdlIG9mIHNjZW5hcmlvcy4KCkhvd2V2ZXIsIGV2ZW4gYSBtaW5pbWFsIGBORVRfVEVBTWAgZmxhZyBzaG91bGQgYmUgc3VmZmljaWVudCB0byBjb21waWxlIGB0ZWFtX2NvcmUuY2AsIHdoaWNoLCBhcyBJIHJlY2FsbCwgY29udGFpbnMgdGhlIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEga2V5IGluZGljYXRvciBvZiBpdHMgY29yZSByb2xlLgoKVG8gYmUgdGhvcm91Z2gsIGxldCYjMzk7cyBkaXZlIGludG8gYm90aCBgdGVhbV9jb3JlLmNgIGFuZCBgYm9uZF9tYWluLmNgLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlIG1pZ2h0IGJlIG90aGVyIGNyaXRpY2FsIGZ1bmN0aW9ucyBvciBhcmVhcyBpbiB0aG9zZSBmaWxlcyB0aGF0IHdhcnJhbnQgYSBjbG9zZXIgbG9vaywgZW5zdXJpbmcgd2UgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnkgaW1wb3J0YW50IGNvbnNpZGVyYXRpb25zIGluIG91ciBjb25maWd1cmF0aW9uIHN0cmF0ZWd5LiBJdCYjMzk7cyBiZXN0IHRvIGJlIGNvbXByZWhlbnNpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JvbmRfaGVhZGVyX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTQ5Mz1zdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3QgYm9uZF9maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE1MTMtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE1MTQ6c3RhdGljIGludCBib25kX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xNTE1LVx0XHRcdCAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUsIGNvbnN0IHZvaWQgKmRhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTU2OT1zdGF0aWMgY29uc3Qgc3RydWN0IGhlYWRlcl9vcHMgYm9uZF9oZWFkZXJfb3BzID0ge1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYzoxNTcwOlx0LmNyZWF0ZVx0PSBib25kX2hlYWRlcl9jcmVhdGUsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jLTE1NzEtXHQucGFyc2VcdD0gYm9uZF9oZWFkZXJfcGFyc2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RlYW1faGVhZGVyX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3RlYW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmM9MjI0Nj1zdGF0aWMgc3RydWN0IHRlYW1fcG9ydCAqdGVhbV9oZWFkZXJfcG9ydF9nZXRfcmN1KHN0cnVjdCB0ZWFtICp0ZWFtLFxuLS1cbmRyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMtMjI1OC1cbmRyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmM6MjI1OTpzdGF0aWMgaW50IHRlYW1faGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqdGVhbV9kZXYsXG5kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jLTIyNjAtXHRcdFx0ICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSwgY29uc3Qgdm9pZCAqZGFkZHIsXG4tLVxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYz0yMzE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGVhZGVyX29wcyB0ZWFtX2hlYWRlcl9vcHMgPSB7XG5kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jOjIzMTU6XHQuY3JlYXRlXHRcdD0gdGVhbV9oZWFkZXJfY3JlYXRlLFxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYy0yMzE2LVx0LnBhcnNlXHRcdD0gdGVhbV9oZWFkZXJfcGFyc2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMDMKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMzUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O3ZlIGdvdCBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAsIGFuZCB0aGV5JiMzOTtyZSBob29rZWQgaW50byBgLmNyZWF0ZWAgd2l0aGluIGBoZWFkZXJfb3BzYC4gVGhleSYjMzk7cmUgY2FsbGVkIGZyb20gYGRldl9oYXJkX2hlYWRlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgYXJlIHRoZXJlICphbnkqIG90aGVyIGZ1bmN0aW9ucyBpbXBhY3RlZD8gTm9wZSwganVzdCB0aG9zZSB0d28uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYHNrYl9oZWFkcm9vbShza2IpICZsdDsgaGxlbmAgY2hlY2ssIGEgY3JpdGljYWwgYWRkaXRpb24gdG8gcHJldmVudCBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gRGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJ1ZyBmaXguIFdvcnRoIGZ1enppbmcsIG5vIHF1ZXN0aW9uLgoKTm93LCB0byBvcmdhbml6ZSBteSBmaW5kaW5ncy4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBNeSByZWFzb25pbmc/IFRoZSBwYXRjaCBhZGRzIHRoaXMgaGVhZHJvb20gY2hlY2sgaW4gYm90aCBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgdG8gc3RvcCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCYjMzk7cyBjcmVhdGUgZnVuY3Rpb24uIFRoZXNlIGZ1bmN0aW9ucyBzaXQgcmlnaHQgaW4gdGhlIGNyaXRpY2FsIG5ldHdvcmsgcGF0aHMgZm9yIGJvdGggYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzIOKAkyBmdW5kYW1lbnRhbCBzdHVmZi4gYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBgJiMzNDtib25kX2hlYWRlcl9jcmVhdGUmIzM0O2AgYW5kIGAmIzM0O3RlYW1faGVhZGVyX2NyZWF0ZSYjMzQ7YC4gQW5kIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGNvbmZpZ3MgZm9yIGAmIzM0O0JPTkRJTkcmIzM0O2AgYW5kIGAmIzM0O05FVF9URUFNJiMzNDtgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGFyZSBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgc3RhdGljPyBZZXMsIHRoZXkgYXJlLiBCdXQgaG9sZCBvbiwgdGhlIHByb21wdCBzYXlzIHRvIHByZWZlciBub24tc3RhdGljIGZ1bmN0aW9ucy4gQmVjYXVzZSB0aGV5JiMzOTtyZSBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIgc3RydWN0LCB0aGV5JiMzOTtyZSAqbm90KiBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgdGhlcmVmb3JlIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gUGVyZmVjdCEgVGhhdCBtYWtlcyB0aGVtIGlkZWFsIGZvciBpbmNsdXNpb24uCgpJJiMzOTttIGNvbWZvcnRhYmxlIHdpdGggdGhpcyBub3csIHNvIEkmIzM5O20gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk9ORElORyYjMzQ7LAogICAgJiMzNDtORVRfVEVBTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfaGVhZGVyX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDt0ZWFtX2hlYWRlcl9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCB0byBlbnN1cmUgc3VmZmljaWVudCBza2IgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQmIzM5O3MgY3JlYXRlIGZ1bmN0aW9uLCBmaXhpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIHBhdGhzIGZvciBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OywKICAgICYjMzQ7TkVUX1RFQU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kX2hlYWRlcl9jcmVhdGUmIzM0OywKICAgICYjMzQ7dGVhbV9oZWFkZXJfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayBpbiBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgdG8gZW5zdXJlIHN1ZmZpY2llbnQgc2tiIGhlYWRyb29tIGJlZm9yZSBjYWxsaW5nIHRoZSBzbGF2ZS9wb3J0JiMzOTtzIGNyZWF0ZSBmdW5jdGlvbiwgZml4aW5nIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBwYXRocyBmb3IgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAwMjo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCBieSBlbnN1cmluZyB0aGF0IHRoZSBzb2NrZXQgYnVmZmVyIChgc2tiYCkgaGFzIHN1ZmZpY2llbnQgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQgZGV2aWNlJiMzOTtzIGBjcmVhdGVgIGZ1bmN0aW9uLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgY29uY3VycmVudCBib25kL3RlYW0gdHlwZSBjaGFuZ2UgY291bGQgcmVzdWx0IGluIGFuIGBza2JgIHdpdGggaW5zdWZmaWNpZW50IGhlYWRyb29tLCBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gdGhlIGhlYWRlciBpcyBwdXNoZWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGJlaW5nIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjc3Y2FjYjQ2NzJjZWZiNzJkZTNkNGI1MjI4NTI4MjFiZjhkNTA3NwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDI0IDAyOjUxOjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKaW5kZXggNTIyZWFiMDYwZjllZC4uOWVjNjYzNjEwZGZkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCkBAIC0xNTI0LDEwICYjNDM7MTUyNCwyNCBAQCBzdGF0aWMgaW50IGJvbmRfaGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsCiAJc2xhdmUgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC0mZ3Q7Y3Vycl9hY3RpdmVfc2xhdmUpOwogCWlmIChzbGF2ZSkgewogCQlzbGF2ZV9vcHMgPSBSRUFEX09OQ0Uoc2xhdmUtJmd0O2Rldi0mZ3Q7aGVhZGVyX29wcyk7Ci0JCWlmIChzbGF2ZV9vcHMgJmFtcDsmYW1wOyBzbGF2ZV9vcHMtJmd0O2NyZWF0ZSkKJiM0MzsJCWlmIChzbGF2ZV9vcHMgJmFtcDsmYW1wOyBzbGF2ZV9vcHMtJmd0O2NyZWF0ZSkgewomIzQzOwkJCXVuc2lnbmVkIGludCBobGVuID0gUkVBRF9PTkNFKHNsYXZlLSZndDtkZXYtJmd0O2hhcmRfaGVhZGVyX2xlbik7CiYjNDM7CiYjNDM7CQkJLyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZgomIzQzOwkJCSAqIGJvbmRfZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gdGhhdCBtYXkgcHJlZGF0ZSB0aGlzCiYjNDM7CQkJICogc2xhdmUgKGNvbmN1cnJlbnQgYm9uZCB0eXBlIGNoYW5nZSk7IHJlamVjdCBpZgomIzQzOwkJCSAqIGluc3VmZmljaWVudCBmb3IgdGhlIHNsYXZlJiMzOTtzIGNyZWF0ZSgpLCB3aGljaAomIzQzOwkJCSAqIHB1c2hlcyBpdHMgb3duIGhsZW4uCiYjNDM7CQkJICovCiYjNDM7CQkJaWYgKHNrYl9oZWFkcm9vbShza2IpICZsdDsgaGxlbikgewomIzQzOwkJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIHVubG9jazsKJiM0MzsJCQl9CiAJCQlyZXQgPSBzbGF2ZV9vcHMtJmd0O2NyZWF0ZShza2IsIHNsYXZlLSZndDtkZXYsCiAJCQkJCQl0eXBlLCBkYWRkciwgc2FkZHIsIGxlbik7CiYjNDM7CQl9CiAJfQomIzQzO3VubG9jazoKIAlyY3VfcmVhZF91bmxvY2soKTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMKaW5kZXggZmVhYTc1ZmJmOGZjMi4uMjc0MmE0YmZjOWQwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jCkBAIC0yMjY5LDEwICYjNDM7MjI2OSwyNCBAQCBzdGF0aWMgaW50IHRlYW1faGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqdGVhbV9kZXYsCiAJcG9ydCA9IHRlYW1faGVhZGVyX3BvcnRfZ2V0X3JjdSh0ZWFtLCB0cnVlKTsKIAlpZiAocG9ydCkgewogCQlwb3J0X29wcyA9IFJFQURfT05DRShwb3J0LSZndDtkZXYtJmd0O2hlYWRlcl9vcHMpOwotCQlpZiAocG9ydF9vcHMgJmFtcDsmYW1wOyBwb3J0X29wcy0mZ3Q7Y3JlYXRlKQomIzQzOwkJaWYgKHBvcnRfb3BzICZhbXA7JmFtcDsgcG9ydF9vcHMtJmd0O2NyZWF0ZSkgewomIzQzOwkJCXVuc2lnbmVkIGludCBobGVuID0gUkVBRF9PTkNFKHBvcnQtJmd0O2Rldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuKTsKJiM0MzsKJiM0MzsJCQkvKiBIZWFkcm9vbSB3YXMgcmVzZXJ2ZWQgZnJvbSBhIHNuYXBzaG90IG9mCiYjNDM7CQkJICogdGVhbV9kZXYtJmd0O2hhcmRfaGVhZGVyX2xlbiB0aGF0IG1heSBwcmVkYXRlIHRoaXMKJiM0MzsJCQkgKiBwb3J0IChjb25jdXJyZW50IHRlYW0gdHlwZSBjaGFuZ2UpOyByZWplY3QgaWYKJiM0MzsJCQkgKiBpbnN1ZmZpY2llbnQgZm9yIHRoZSBwb3J0JiMzOTtzIGNyZWF0ZSgpLCB3aGljaAomIzQzOwkJCSAqIHB1c2hlcyBpdHMgb3duIGhsZW4uCiYjNDM7CQkJICovCiYjNDM7CQkJaWYgKHNrYl9oZWFkcm9vbShza2IpICZsdDsgaGxlbikgewomIzQzOwkJCQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIHVubG9jazsKJiM0MzsJCQl9CiAJCQlyZXQgPSBwb3J0X29wcy0mZ3Q7Y3JlYXRlKHNrYiwgcG9ydC0mZ3Q7ZGV2LAogCQkJCQkgICAgICAgdHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pOwomIzQzOwkJfQogCX0KJiM0Mzt1bmxvY2s6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJcmV0dXJuIHJldDsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDAyOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTIKCQkJCQkJCW91dHB1dDogMTY0CgkJCQkJCQl0aG91Z2h0czogMzkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IHByZXZlbnRpbmcgc29tZSBwb3RlbnRpYWwgaGVhZGFjaGVzIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYC4gV2hhdCBpdCBkb2VzIGlzIHNpbXBsZTogaXQgYWRkcyBhIGNydWNpYWwgY2hlY2suIEJlZm9yZSB3ZSBldmVuIHRoaW5rIGFib3V0IGNhbGxpbmcgYHNsYXZlX29wcy0mZ3Q7Y3JlYXRlKClgIG9yIGBwb3J0X29wcy0mZ3Q7Y3JlYXRlKClgLCBpdCBtYWtlcyBzdXJlIHRoZSBTb2NrZXQgQnVmZmVyIChgc2tiYCkgaGFzIGVub3VnaCBoZWFkcm9vbSB1c2luZyBgc2tiX2hlYWRyb29tKHNrYikgJmx0OyBobGVuYC4gVGhhdCBgaGxlbmAgaXMgdGhlIGhlYWRlciBsZW5ndGggdGhhdCB3ZSBhcmUgYWJvdXQgdG8gcHVzaCB0byB0aGUgc2tiLiBJZiB0aGVyZSYjMzk7cyBub3QgZW5vdWdoIHNwYWNlLCBpdCBiYWlscyBvdXQgd2l0aCBhbiBgLUVJTlZBTGAuIFRoaXMgaXMgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcHJvdGVjdGlvbiBtZWFzdXJlLCBhbmQgaXQmIzM5O3MgZWxlZ2FudCBpbiBpdHMgc2ltcGxpY2l0eS4KCk15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSB2ZXJ5IHNwZWNpZmljIHZ1bG5lcmFiaWxpdHkuICBUaGUgY29uY2VybiBoZXJlIGlzIHRoYXQgYSBjb25jdXJyZW50IGJvbmQgb3IgdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCBsZWF2ZSB1cyB3aXRoIGFuIHNrYiB0aGF0IGRvZXNuJiMzOTt0IGhhdmUgZW5vdWdoIGhlYWRyb29tLiAgQXR0ZW1wdGluZyB0byBwdXNoIGEgaGVhZGVyIG9udG8gdGhhdCB1bmRlci1zaXplZCBza2Igd291bGQgdGhlbiBsZWFkIHRvIGVpdGhlciB3cml0aW5nIHBhc3QgdGhlIHNrYiBib3VuZGFyeSAoYSB3cml0ZSksIG9yIHBvdGVudGlhbGx5IHRyeWluZyB0byByZWFkIHNvbWV0aGluZyBmcm9tIHRoZSBzYW1lIG91dC1vZi1ib3VuZHMgbG9jYXRpb24sIGlmIHRoZSBgY3JlYXRlYCBmdW5jdGlvbiB0cmllcyB0byB1c2UgdGhvc2UgYnl0ZXMuIFRoZSByZXN1bHRpbmcgY3Jhc2ggb3IgYWNjZXNzIHZpb2xhdGlvbiBpcyB0aGVuIHRyaWdnZXJlZCB3aXRoaW4gYHNrYl9wdXNoYCBvciB0aGUgY3VzdG9tIGBjcmVhdGVgIGZ1bmN0aW9uLCBhbmQgS0FTQU4gc2hvdWxkIGhhdmUgYWJzb2x1dGVseSBubyBwcm9ibGVtIGNhdGNoaW5nIHRoaXMuIEtBU0FOIGlzIHRoZSB0b29sIGZvciBkZXRlY3Rpbmcgb3V0LW9mLWJvdW5kcyBtZW1vcnkgaXNzdWVzLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgd2UmIzM5O3JlIHNvbHZpbmcgZm9yLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGNvbmNlcm4sIHRoZXJlJiMzOTtzIG5vIHJlYXNvbiB0byB3b3JyeSBhYm91dCBLTVNBTi4gS01TQU4gaXMgdGhlIHRvb2wgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCB3aGljaCBpc24mIzM5O3QgdGhlIGlzc3VlIGhlcmUuIEkgY2FuIGNvbmZpZGVudGx5IHN0YXRlIHRoYXQgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgdW5uZWNlc3NhcnksIGJlY2F1c2UgdGhlcmUgaXMgbm8gY2hhbmNlIHRoYXQgaXQgd2lsbCBleHBvc2UgYW55IG5ldyBpc3N1ZXMuIFRoaXMgaXMgYSBjbGVhciwgdGFyZ2V0ZWQgZml4IHRoYXQgYWRkcmVzc2VzIGEgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBzYWZldHkgcHJvYmxlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMDI6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIHNvY2tldCBidWZmZXIgKGBza2JgKSBoYXMgc3VmZmljaWVudCBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCBkZXZpY2UmIzM5O3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIHNvY2tldCBidWZmZXIgKGBza2JgKSBoYXMgc3VmZmljaWVudCBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCBkZXZpY2UmIzM5O3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MToyOC44ODc5NDYxMTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc3NjQ2MDk4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfVEVBTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfaGVhZGVyX2NyZWF0ZVwiLFxuICAgIFwidGVhbV9oZWFkZXJfY3JlYXRlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBpbiBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgYnkgZW5zdXJpbmcgdGhhdCB0aGUgc29ja2V0IGJ1ZmZlciAoYHNrYmApIGhhcyBzdWZmaWNpZW50IGhlYWRyb29tIGJlZm9yZSBjYWxsaW5nIHRoZSBzbGF2ZS9wb3J0IGRldmljZSdzIGBjcmVhdGVgIGZ1bmN0aW9uLiBXaXRob3V0IHRoaXMgY2hlY2ssIGEgY29uY3VycmVudCBib25kL3RlYW0gdHlwZSBjaGFuZ2UgY291bGQgcmVzdWx0IGluIGFuIGBza2JgIHdpdGggaW5zdWZmaWNpZW50IGhlYWRyb29tLCBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gdGhlIGhlYWRlciBpcyBwdXNoZWQuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIGJlaW5nIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGlzIHBhdGNoLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIHRvIGVuc3VyZSBzdWZmaWNpZW50IHNrYiBoZWFkcm9vbSBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCdzIGNyZWF0ZSBmdW5jdGlvbiwgZml4aW5nIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBwYXRocyBmb3IgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MToyOC44ODc5NTE1MDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MDQyOTE4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI3N2NhY2I0NjcyY2VmYjcyZGUzZDRiNTIyODUyODIxYmY4ZDUwNzdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMjQgMDI6NTE6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG5pbmRleCA1MjJlYWIwNjBmOWVkLi45ZWM2NjM2MTBkZmQzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXFxuQEAgLTE1MjQsMTAgKzE1MjQsMjQgQEAgc3RhdGljIGludCBib25kX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxcbiBcXHRzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVxcdTAwM2VjdXJyX2FjdGl2ZV9zbGF2ZSk7XFxuIFxcdGlmIChzbGF2ZSkge1xcbiBcXHRcXHRzbGF2ZV9vcHMgPSBSRUFEX09OQ0Uoc2xhdmUtXFx1MDAzZWRldi1cXHUwMDNlaGVhZGVyX29wcyk7XFxuLVxcdFxcdGlmIChzbGF2ZV9vcHMgXFx1MDAyNlxcdTAwMjYgc2xhdmVfb3BzLVxcdTAwM2VjcmVhdGUpXFxuK1xcdFxcdGlmIChzbGF2ZV9vcHMgXFx1MDAyNlxcdTAwMjYgc2xhdmVfb3BzLVxcdTAwM2VjcmVhdGUpIHtcXG4rXFx0XFx0XFx0dW5zaWduZWQgaW50IGhsZW4gPSBSRUFEX09OQ0Uoc2xhdmUtXFx1MDAzZWRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuKTtcXG4rXFxuK1xcdFxcdFxcdC8qIEhlYWRyb29tIHdhcyByZXNlcnZlZCBmcm9tIGEgc25hcHNob3Qgb2ZcXG4rXFx0XFx0XFx0ICogYm9uZF9kZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiB0aGF0IG1heSBwcmVkYXRlIHRoaXNcXG4rXFx0XFx0XFx0ICogc2xhdmUgKGNvbmN1cnJlbnQgYm9uZCB0eXBlIGNoYW5nZSk7IHJlamVjdCBpZlxcbitcXHRcXHRcXHQgKiBpbnN1ZmZpY2llbnQgZm9yIHRoZSBzbGF2ZSdzIGNyZWF0ZSgpLCB3aGljaFxcbitcXHRcXHRcXHQgKiBwdXNoZXMgaXRzIG93biBobGVuLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKHNrYl9oZWFkcm9vbShza2IpIFxcdTAwM2MgaGxlbikge1xcbitcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRyZXQgPSBzbGF2ZV9vcHMtXFx1MDAzZWNyZWF0ZShza2IsIHNsYXZlLVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdHR5cGUsIGRhZGRyLCBzYWRkciwgbGVuKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuK3VubG9jazpcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmNcXG5pbmRleCBmZWFhNzVmYmY4ZmMyLi4yNzQyYTRiZmM5ZDBhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXFxuQEAgLTIyNjksMTAgKzIyNjksMjQgQEAgc3RhdGljIGludCB0ZWFtX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnRlYW1fZGV2LFxcbiBcXHRwb3J0ID0gdGVhbV9oZWFkZXJfcG9ydF9nZXRfcmN1KHRlYW0sIHRydWUpO1xcbiBcXHRpZiAocG9ydCkge1xcbiBcXHRcXHRwb3J0X29wcyA9IFJFQURfT05DRShwb3J0LVxcdTAwM2VkZXYtXFx1MDAzZWhlYWRlcl9vcHMpO1xcbi1cXHRcXHRpZiAocG9ydF9vcHMgXFx1MDAyNlxcdTAwMjYgcG9ydF9vcHMtXFx1MDAzZWNyZWF0ZSlcXG4rXFx0XFx0aWYgKHBvcnRfb3BzIFxcdTAwMjZcXHUwMDI2IHBvcnRfb3BzLVxcdTAwM2VjcmVhdGUpIHtcXG4rXFx0XFx0XFx0dW5zaWduZWQgaW50IGhsZW4gPSBSRUFEX09OQ0UocG9ydC1cXHUwMDNlZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xcbitcXG4rXFx0XFx0XFx0LyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZlxcbitcXHRcXHRcXHQgKiB0ZWFtX2Rldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuIHRoYXQgbWF5IHByZWRhdGUgdGhpc1xcbitcXHRcXHRcXHQgKiBwb3J0IChjb25jdXJyZW50IHRlYW0gdHlwZSBjaGFuZ2UpOyByZWplY3QgaWZcXG4rXFx0XFx0XFx0ICogaW5zdWZmaWNpZW50IGZvciB0aGUgcG9ydCdzIGNyZWF0ZSgpLCB3aGljaFxcbitcXHRcXHRcXHQgKiBwdXNoZXMgaXRzIG93biBobGVuLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKHNrYl9oZWFkcm9vbShza2IpIFxcdTAwM2MgaGxlbikge1xcbitcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIHVubG9jaztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRyZXQgPSBwb3J0X29wcy1cXHUwMDNlY3JlYXRlKHNrYiwgcG9ydC1cXHUwMDNlZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgdHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4rdW5sb2NrOlxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MToyOS4yNjkxNTI2NTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2ODM3ODM0Nzc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfVEVBTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfaGVhZGVyX2NyZWF0ZVwiLFxuICAgIFwidGVhbV9oZWFkZXJfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCB0byBlbnN1cmUgc3VmZmljaWVudCBza2IgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQncyBjcmVhdGUgZnVuY3Rpb24sIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjc3Y2FjYjQ2NzJjZWZiNzJkZTNkNGI1MjI4NTI4MjFiZjhkNTA3N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDAyOjUxOjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmNcbmluZGV4IDUyMmVhYjA2MGY5ZWQuLjllYzY2MzYxMGRmZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5AQCAtMTUyNCwxMCArMTUyNCwyNCBAQCBzdGF0aWMgaW50IGJvbmRfaGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqYm9uZF9kZXYsXG4gXHRzbGF2ZSA9IHJjdV9kZXJlZmVyZW5jZShib25kLVx1MDAzZWN1cnJfYWN0aXZlX3NsYXZlKTtcbiBcdGlmIChzbGF2ZSkge1xuIFx0XHRzbGF2ZV9vcHMgPSBSRUFEX09OQ0Uoc2xhdmUtXHUwMDNlZGV2LVx1MDAzZWhlYWRlcl9vcHMpO1xuLVx0XHRpZiAoc2xhdmVfb3BzIFx1MDAyNlx1MDAyNiBzbGF2ZV9vcHMtXHUwMDNlY3JlYXRlKVxuK1x0XHRpZiAoc2xhdmVfb3BzIFx1MDAyNlx1MDAyNiBzbGF2ZV9vcHMtXHUwMDNlY3JlYXRlKSB7XG4rXHRcdFx0dW5zaWduZWQgaW50IGhsZW4gPSBSRUFEX09OQ0Uoc2xhdmUtXHUwMDNlZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4rXG4rXHRcdFx0LyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZlxuK1x0XHRcdCAqIGJvbmRfZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiB0aGF0IG1heSBwcmVkYXRlIHRoaXNcbitcdFx0XHQgKiBzbGF2ZSAoY29uY3VycmVudCBib25kIHR5cGUgY2hhbmdlKTsgcmVqZWN0IGlmXG4rXHRcdFx0ICogaW5zdWZmaWNpZW50IGZvciB0aGUgc2xhdmUncyBjcmVhdGUoKSwgd2hpY2hcbitcdFx0XHQgKiBwdXNoZXMgaXRzIG93biBobGVuLlxuK1x0XHRcdCAqL1xuK1x0XHRcdGlmIChza2JfaGVhZHJvb20oc2tiKSBcdTAwM2MgaGxlbikge1xuK1x0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0XHRcdGdvdG8gdW5sb2NrO1xuK1x0XHRcdH1cbiBcdFx0XHRyZXQgPSBzbGF2ZV9vcHMtXHUwMDNlY3JlYXRlKHNrYiwgc2xhdmUtXHUwMDNlZGV2LFxuIFx0XHRcdFx0XHRcdHR5cGUsIGRhZGRyLCBzYWRkciwgbGVuKTtcbitcdFx0fVxuIFx0fVxuK3VubG9jazpcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmNcbmluZGV4IGZlYWE3NWZiZjhmYzIuLjI3NDJhNGJmYzlkMGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5AQCAtMjI2OSwxMCArMjI2OSwyNCBAQCBzdGF0aWMgaW50IHRlYW1faGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqdGVhbV9kZXYsXG4gXHRwb3J0ID0gdGVhbV9oZWFkZXJfcG9ydF9nZXRfcmN1KHRlYW0sIHRydWUpO1xuIFx0aWYgKHBvcnQpIHtcbiBcdFx0cG9ydF9vcHMgPSBSRUFEX09OQ0UocG9ydC1cdTAwM2VkZXYtXHUwMDNlaGVhZGVyX29wcyk7XG4tXHRcdGlmIChwb3J0X29wcyBcdTAwMjZcdTAwMjYgcG9ydF9vcHMtXHUwMDNlY3JlYXRlKVxuK1x0XHRpZiAocG9ydF9vcHMgXHUwMDI2XHUwMDI2IHBvcnRfb3BzLVx1MDAzZWNyZWF0ZSkge1xuK1x0XHRcdHVuc2lnbmVkIGludCBobGVuID0gUkVBRF9PTkNFKHBvcnQtXHUwMDNlZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbik7XG4rXG4rXHRcdFx0LyogSGVhZHJvb20gd2FzIHJlc2VydmVkIGZyb20gYSBzbmFwc2hvdCBvZlxuK1x0XHRcdCAqIHRlYW1fZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiB0aGF0IG1heSBwcmVkYXRlIHRoaXNcbitcdFx0XHQgKiBwb3J0IChjb25jdXJyZW50IHRlYW0gdHlwZSBjaGFuZ2UpOyByZWplY3QgaWZcbitcdFx0XHQgKiBpbnN1ZmZpY2llbnQgZm9yIHRoZSBwb3J0J3MgY3JlYXRlKCksIHdoaWNoXG4rXHRcdFx0ICogcHVzaGVzIGl0cyBvd24gaGxlbi5cbitcdFx0XHQgKi9cbitcdFx0XHRpZiAoc2tiX2hlYWRyb29tKHNrYikgXHUwMDNjIGhsZW4pIHtcbitcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdFx0XHRnb3RvIHVubG9jaztcbitcdFx0XHR9XG4gXHRcdFx0cmV0ID0gcG9ydF9vcHMtXHUwMDNlY3JlYXRlKHNrYiwgcG9ydC1cdTAwM2VkZXYsXG4gXHRcdFx0XHRcdCAgICAgICB0eXBlLCBkYWRkciwgc2FkZHIsIGxlbik7XG4rXHRcdH1cbiBcdH1cbit1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTE6MjkuMjY5MTU0MTI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUyNDcyMDA1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXR3b3JraW5nIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgbWFraW5nIGEgY3J1Y2lhbCBhZGp1c3RtZW50IHRvIHBhY2tldCBoZWFkZXIgY3JlYXRpb24gd2l0aGluIHRoZSBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMg4oCTIHNwZWNpZmljYWxseSwgYGJvbmRfaGVhZGVyX2NyZWF0ZWAgaW4gYGJvbmRfbWFpbi5jYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgaW4gYHRlYW1fY29yZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYSBzYW5pdHkgY2hlY2s6IGJlZm9yZSB3ZSBjYWxsIHRoZSB1bmRlcmx5aW5nIGBzbGF2ZV9vcHMtXHUwMDNlY3JlYXRlYCBvciBgcG9ydF9vcHMtXHUwMDNlY3JlYXRlYCBmdW5jdGlvbnMsIHdlJ3JlIG5vdyB2ZXJpZnlpbmcgdGhhdCB0aGUgU3BhY2UgYXZhaWxhYmxlIGluIHRoZSBTS0IgaGVhZHJvb20gaXMgc3VmZmljaWVudCBmb3IgdGhlIGhlYWRlciBsZW5ndGggKGBobGVuYCkuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGZpeDsgaXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIGV2ZW4gc3lzdGVtIHBhbmljcyB3aGVuIHRoZSBhbGxvY2F0ZWQgaGVhZHJvb20gaW4gdGhlIHNvY2tldCBidWZmZXIgKFNLQikgaXNuJ3QgbGFyZ2UgZW5vdWdoIHRvIGFjY29tbW9kYXRlIHRoZSBjcmVhdGVkIHBhY2tldCBoZWFkZXIuICBBIGRlZmluaXRlIGltcHJvdmVtZW50LCBhbmQgdGhlc2UgYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzIGFyZSB2ZXJ5IHJlYWNoYWJsZSwgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBnaXZlbiB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBpc3N1ZSwgd2UgYWJzb2x1dGVseSAqbXVzdCogZnV6eiB0ZXN0IHRob3NlIG1vZGlmaWVkIGZ1bmN0aW9ucyDigJMgYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIOKAkyB0byBjYXRjaCBhbnkgZWRnZSBjYXNlcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBJdCdzIGEga2V5IHBhcnQgb2YgY29uZmlybWluZyB0aGUgZml4IGlzIHJvYnVzdC5cblxuQmVmb3JlIEkgZGl2ZSB0b28gZGVlcGx5IGludG8gdGhlIGNvZGUgaXRzZWxmLCBJJ2xsIHVzZSBgZ3JlcHBlcmAgb3IgZXF1aXZhbGVudCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBib25kaW5nIGFuZCB0ZWFtIGZlYXR1cmVzIHdpdGhpbiB0aGUga2VybmVsLiBJdOKAmXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdW5kZXIgd2hhdCBjb25maWd1cmF0aW9uIGZsYWdzIHRoZXNlIGZ1bmN0aW9ucyB3b3VsZCBiZSBjb21waWxlZCBpbi4gTGV0J3MgbWFrZSBzdXJlIG91ciBmdXp6aW5nIGFuZCB0ZXN0aW5nIGNvdmVyYWdlIGlzIGNvbXBsZXRlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTk1LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTE6MzQuNzkzODc3MzQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDYzNjY0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zOT1pZiBORVRfQ09SRVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIkJvbmRpbmcgZHJpdmVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUxOjM0Ljk0ODUxNzA5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg2OTQyODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9URUFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6MjptZW51Y29uZmlnIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkV0aGVybmV0IHRlYW0gZHJpdmVyIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9MTY9aWYgTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjE4OmNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjYXN0IG1vZGUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6Mjk6Y29uZmlnIE5FVF9URUFNX01PREVfUk9VTkRST0JJTlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZSBcXFwiUm91bmQtcm9iaW4gbW9kZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo0MTpjb25maWcgTkVUX1RFQU1fTU9ERV9SQU5ET01cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIlJhbmRvbSBtb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNTItXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjUzOmNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiQWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjY2OmNvbmZpZyBORVRfVEVBTV9NT0RFX0xPQURCQUxBTkNFXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJMb2FkLWJhbGFuY2UgbW9kZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MTozNS4wNzcyMjE4NThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjU0MDY3MjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOZXR3b3JrIEhlYWRlciBDcmVhdGlvbiBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG5ldHdvcmsgY29uZmlndXJhdGlvbnMsIGBCT05ESU5HYCBhbmQgYE5FVF9URUFNYCwgYW5kIHNwZWNpZmljYWxseSwgdGhlIGhlYWRlciBjcmVhdGlvbiBmdW5jdGlvbnMsIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nLCBhbmQgdGhlIGtleSBpcyBkZXRlcm1pbmluZyBpZiB0aGV5IGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIEkgc2VlIHRoZXkgYXJlIHN0YXRpYyBmdW5jdGlvbnMsIGFzc2lnbmVkIHRvIGBoZWFkZXJfb3BzLVx1MDAzZWNyZWF0ZWAuXG5cbkhtbSwgc3RhdGljIGZ1bmN0aW9ucyBhcmUgYSBiaXQgdHJpY2t5LiBUaGV5IG1pZ2h0IG5vdCBiZSBkaXJlY3RseSBjYWxsYWJsZSBieSBuYW1lIGluIGNlcnRhaW4gZnV6emluZyBzY2VuYXJpb3MuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgdGhleSdyZSBhc3NpZ25lZCB0byBmdW5jdGlvbiBwb2ludGVycyBhbmQgaW52b2tlZCB0aHJvdWdoIGBkZXYtXHUwMDNlaGVhZGVyX29wcy1cdTAwM2VjcmVhdGVgIGlzIGltcG9ydGFudC4gVGhpcyBtZWFucyB0b29scyBsaWtlIFN5emthbGxlciBjb3VsZCBzdGlsbCB1c2UgdGhlbSBmb3IgY292ZXJhZ2UgZ3VpZGFuY2UsICppZiogdGhleSBhcmVuJ3QgaW5saW5lZC5cblxuVGhlIGNvZGUgc2hvd3MgdGhhdCB0aGVpciBhZGRyZXNzIGlzIHRha2VuLCBzbyB0aGV5ICpjYW5ub3QqIGJlIGZ1bGx5IGlubGluZWQuIFBlcmZlY3QhIFRoYXQgbWVhbnMgdGhleSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMsIHdoaWNoIG1ha2VzIHRoZW0gdmlhYmxlIHRhcmdldHMgYmFzZWQgb24gdGhlIHByb21wdCdzIGluc3RydWN0aW9uOiBcIlByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1wiLlxuXG5Ob3csIGdpdmVuIHRoYXQgdGhleSBhcmUgZ29vZCBjYW5kaWRhdGVzLCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IHRyaWdnZXIgdGhlbTsgc3BlY2lmaWNhbGx5IGBkZXZfaGFyZF9oZWFkZXJgLiBCdXQgYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIHRoZW1zZWx2ZXMgbG9vayBwcm9taXNpbmcuXG5cbkZpbmFsbHksIEkgc2hvdWxkIHZlcmlmeSBpZiBgQk9ORElOR2AgYW5kIGBORVRfVEVBTWAgZGVwZW5kIG9uIG90aGVyIG1vZHVsZXMgb3Igc3Vic3lzdGVtcy4gTm8gcG9pbnQgaW4gZm9jdXNpbmcgb24gdGhlc2UgZnVuY3Rpb25zLCBpZiB0aGVpciBmdW5jdGlvbmFsaXR5IGlzIGdhdGVkIGJ5IHNvbWUgb2JzY3VyZSBwcmVyZXF1aXNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjMyLCJPdXRwdXRUb2tlbnMiOjU4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MTo0My4zMzEyOTE3OTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE3ODAwNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTE4PWNvbmZpZyBORVRfVEVBTV9NT0RFX0JST0FEQ0FTVFxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjYXN0IG1vZGUgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc6MjA6XFx0ZGVwZW5kcyBvbiBORVRfVEVBTVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0yMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWc9Mjk9Y29uZmlnIE5FVF9URUFNX01PREVfUk9VTkRST0JJTlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZSBcXFwiUm91bmQtcm9iaW4gbW9kZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzozMTpcXHRkZXBlbmRzIG9uIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTMyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZz00MT1jb25maWcgTkVUX1RFQU1fTU9ERV9SQU5ET01cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIlJhbmRvbSBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjQzOlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNDQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTUzPWNvbmZpZyBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUFxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiQWN0aXZlLWJhY2t1cCBtb2RlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnOjU1OlxcdGRlcGVuZHMgb24gTkVUX1RFQU1cXG5kcml2ZXJzL25ldC90ZWFtL0tjb25maWctNTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnPTY2PWNvbmZpZyBORVRfVEVBTV9NT0RFX0xPQURCQUxBTkNFXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJMb2FkLWJhbGFuY2UgbW9kZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZzo2ODpcXHRkZXBlbmRzIG9uIE5FVF9URUFNXFxuZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnLTY5LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTE6NDMuNDAzMDc4NzAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDYxNzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03LVxcdGRlZmF1bHQgeSBpZiBVTUxcXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTktXFx0Ym9vbCBcXFwiTmV0d29yayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDE9Y29uZmlnIEJPTkRJTkdcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJCb25kaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDpcXHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NzQ9Y29uZmlnIFdJUkVHVUFSRFxcbmRyaXZlcnMvbmV0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIldpcmVHdWFyZCBzZWN1cmUgbmV0d29yayB0dW5uZWxcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03Ny1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9OTI9Y29uZmlnIFdJUkVHVUFSRF9ERUJVR1xcbmRyaXZlcnMvbmV0L0tjb25maWctOTMtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGNoZWNrcyBhbmQgdmVyYm9zZSBtZXNzYWdlc1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjk0OlxcdGRlcGVuZHMgb24gV0lSRUdVQVJEXFxuZHJpdmVycy9uZXQvS2NvbmZpZy05NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEwMz1jb25maWcgT1ZQTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJPcGVuVlBOIGRhdGEgY2hhbm5lbCBvZmZsb2FkXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA1OlxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cXHRzZWxlY3QgRFNUX0NBQ0hFXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEzNj1jb25maWcgTkVUX0ZDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXFx0Ym9vbCBcXFwiRmlicmUgQ2hhbm5lbCBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjEzODpcXHRkZXBlbmRzIG9uIFNDU0kgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNDk9Y29uZmlnIElGQlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVxcdHRyaXN0YXRlIFxcXCJJbnRlcm1lZGlhdGUgRnVuY3Rpb25hbCBCbG9jayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTUxOlxcdGRlcGVuZHMgb24gTkVUX0FDVF9NSVJSRUQgfHwgTkZUX0ZXRF9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cXHRzZWxlY3QgTkVUX1JFRElSRUNUXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgwLVxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgxOlxcdGRlcGVuZHMgb24gTUFDVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVxcdHNlbGVjdCBUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTQ6XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcXHRkZXBlbmRzIG9uIElQVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk2LVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTk5PWNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjAxOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIxNy1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjE4OlxcdGRlcGVuZHMgb24gSVBWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMTk6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXFx0c2VsZWN0IFRBUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMy1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ni1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDgtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVxcdHRyaXN0YXRlIFxcXCJCYXJlIFVEUCBFbmNhcHN1bGF0aW9uXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVxcdHRyaXN0YXRlIFxcXCJHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc0OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjc1LVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1BcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MC1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEZvcndhcmRpbmcgQ29udHJvbCBQcm90b2NvbCAoUEZDUClcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTItXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXFx0dHJpc3RhdGUgXFxcIkF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nIChBTVQpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1RcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNS1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzI3PWNvbmZpZyBORVRDT05TT0xFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMjk6XFx0ZGVwZW5kcyBvbiBQUklOVEtcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzUtXFx0Ym9vbCBcXFwiRHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzM2OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcXHUwMDI2XFx1MDAyNiBTWVNGUyBcXHUwMDI2XFx1MDAyNiBDT05GSUdGU19GUyBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXFx0XFx0XFx0IShORVRDT05TT0xFPXkgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlM9bSlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzQ1PWNvbmZpZyBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIlNldCBrZXJuZWwgZXh0ZW5kZWQgbWVzc2FnZSBieSBkZWZhdWx0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNTU9Y29uZmlnIE5FVENPTlNPTEVfUFJFUEVORF9SRUxFQVNFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXFx0Ym9vbCBcXFwiUHJlcGVuZCBrZXJuZWwgcmVsZWFzZSB2ZXJzaW9uIGluIHRoZSBtZXNzYWdlIGJ5IGRlZmF1bHRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNTc6XFx0ZGVwZW5kcyBvbiBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNzU6XFx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzYtXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzc9Y29uZmlnIFJJT05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVxcdHRyaXN0YXRlIFxcXCJSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc5OlxcdGRlcGVuZHMgb24gUkFQSURJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzgxPWNvbmZpZyBSSU9ORVRfVFhfU0laRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzgyLVxcdGludCBcXFwiTnVtYmVyIG9mIG91dGJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4NC1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM4Nj1jb25maWcgUklPTkVUX1JYX1NJWkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Ny1cXHRpbnQgXFxcIk51bWJlciBvZiBpbmJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4OS1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM5MT1jb25maWcgVFVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTItXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM5NC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0NTpcXHRkZXBlbmRzIG9uIFZJUlRJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVxcdHNlbGVjdCBORVRfRkFJTE9WRVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2NC1cXHRib29sIFxcXCJCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDY1OlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ3Mj1jb25maWcgTkVUX1ZSRlxcbmRyaXZlcnMvbmV0L0tjb25maWctNDczLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFJvdXRpbmcgYW5kIEZvcndhcmRpbmcgKExpdGUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0OlxcdGRlcGVuZHMgb24gSVBfTVVMVElQTEVfVEFCTEVTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzU6XFx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc2OlxcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMgfHwgSVBWNj1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00ODItXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0ODM6XFx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDg0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDg5PWNvbmZpZyBNSElfTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGUgXFxcIk1ISSBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcXHRkZXBlbmRzIG9uIE1ISV9CVVNcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ5Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVxcdHRyaXN0YXRlIFxcXCJYZW4gbmV0d29yayBkZXZpY2UgZnJvbnRlbmQgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ2OlxcdGRlcGVuZHMgb24gWEVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXFx0c2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU2My1cXHR0cmlzdGF0ZSBcXFwiWGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NjQ6XFx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTY1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODUtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSBWTVhORVQzIGV0aGVybmV0IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODc6XFx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xcbmRyaXZlcnMvbmV0L0tjb25maWctNTk1LVxcdHRyaXN0YXRlIFxcXCJGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1OTY6XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01OTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA3OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA4OlxcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUxOjQzLjQ0NzU0NjUyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyMTgyMDI0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS2NvbmZpZyBDb25maWd1cmF0aW9uIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSAqKkJPTkRJTkcqKiBpcyBmdW5kYW1lbnRhbGx5IHJlbGlhbnQgb24gKipJTkVUKiogYW5kIGVpdGhlciAqKlRMUyoqIG9yLCBpZiBUTFMgaXNuJ3QgZW5hYmxlZCwgYSBzcGVjaWZpYyBUTFMgZGV2aWNlIHZhcmlhYmxlIHNldCB0byAnbicuIE1ha2VzIHNlbnNlLiBTdGFuZGFyZCBuZXR3b3JraW5nIGRlcGVuZGVuY2llcy5cblxuTm93LCAqKk5FVF9URUFNKiogaXMgd2hhdCBJJ20gZm9jdXNlZCBvbi4gVGhlIGRvY3VtZW50YXRpb24gc2F5cyBpdCBkZXBlbmRzIG9uICoqTkVUX0NPUkUqKiwgd2hpY2ggaXMgYWx3YXlzIGVuYWJsZWQgd2hlbiAqKk5FVERFVklDRVMqKiBpcyBlbmFibGVkLiBTdGFuZGFyZCBzdHVmZi4gV2FpdCBhIG1pbnV0ZS4uLiBJIHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0ICoqTkVUX1RFQU0qKiBsaXZpbmcgaW4gYGRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ2AuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBmaWxlLlxuXG5BbHJpZ2h0LCB0aGUgYGRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ2AgZmlsZSBsaXN0cyBgbWVudWNvbmZpZyBORVRfVEVBTWAuIFRoYXQncyBpbnRlcmVzdGluZy4gSXQgZG9lc24ndCBzZWVtIHRvIGhhdmUgYW55IGV4cGxpY2l0bHkgZGVjbGFyZWQgZGVwZW5kZW5jaWVzIGJleW9uZCBpdHMgaW5jbHVzaW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIEl0J3MgaW5jbHVkZWQsIHNvIGl0J3MgYSBtZW51IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFuZCBjYW4gYmUgdXNlZCBvbiBpdHMgb3duLCBpdCB3b3VsZCBzZWVtLiBJbnRlcmVzdGluZyB0byBleHBsb3JlIGhvdyBpdCBpcyBpbmNsdWRlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L0tjb25maWdgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc4MCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTE6NTEuNjY1NzUyMTUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI0NDMyMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlLip0ZWFtL0tjb25maWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTYyLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTYzOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvdGVhbS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1MTo1MS44NDgyMDAyOTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc1ODI4ODQ1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEknbSBzZWVpbmcsIHRoZSBgTkVUX1RFQU1gIGZ1bmN0aW9uYWxpdHkgcmVsaWVzIGRpcmVjdGx5IG9uIGJvdGggYE5FVERFVklDRVNgIGFuZCBgTkVUYCwgYSBjbGVhciBkZXBlbmRlbmN5IGNoYWluLiBGdXJ0aGVybW9yZSwgdGhlIGBCT05ESU5HYCBmZWF0dXJlIGlzIGNvbnRpbmdlbnQgb24gYElORVRgIGFuZCBlaXRoZXIgYFRMU2Agb3IgYFRMU19ERVZJQ0VgIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlLiBHaXZlbiB0aGVzZSBkZXBlbmRlbmNpZXMsIGl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gaW5jbHVkZSBib3RoIGBCT05ESU5HYCBhbmQgYE5FVF9URUFNYCBpbiB0aGUgY29uZmlndXJhdGlvbi5cblxuTm93LCBpZiB3ZSByZWFsbHkgd2FudCBhIGNvbXByZWhlbnNpdmUgdGVzdCBzdWl0ZSBmb3IgdGhlIHRlYW0gZmVhdHVyZXMsIHdlJ3JlIHByb2JhYmx5IGdvaW5nIHRvIG5lZWQgdG8gaW5jb3Jwb3JhdGUgZGlmZmVyZW50IHRlYW0gbW9kZXMuIEknbSB0aGlua2luZyB3ZSBzaG91bGQgZGVmaW5pdGVseSBhZGQgYE5FVF9URUFNX01PREVfQlJPQURDQVNUYCwgYE5FVF9URUFNX01PREVfUk9VTkRST0JJTmAsIGBORVRfVEVBTV9NT0RFX1JBTkRPTWAsIGBORVRfVEVBTV9NT0RFX0FDVElWRUJBQ0tVUGAsIGFuZCBgTkVUX1RFQU1fTU9ERV9MT0FEQkFMQU5DRWAuIFRoYXQgc2hvdWxkIGNvdmVyIGEgZ29vZCByYW5nZSBvZiBzY2VuYXJpb3MuXG5cbkhvd2V2ZXIsIGV2ZW4gYSBtaW5pbWFsIGBORVRfVEVBTWAgZmxhZyBzaG91bGQgYmUgc3VmZmljaWVudCB0byBjb21waWxlIGB0ZWFtX2NvcmUuY2AsIHdoaWNoLCBhcyBJIHJlY2FsbCwgY29udGFpbnMgdGhlIGB0ZWFtX2hlYWRlcl9jcmVhdGVgIGZ1bmN0aW9uLiBUaGF0J3MgYSBrZXkgaW5kaWNhdG9yIG9mIGl0cyBjb3JlIHJvbGUuXG5cblRvIGJlIHRob3JvdWdoLCBsZXQncyBkaXZlIGludG8gYm90aCBgdGVhbV9jb3JlLmNgIGFuZCBgYm9uZF9tYWluLmNgLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlIG1pZ2h0IGJlIG90aGVyIGNyaXRpY2FsIGZ1bmN0aW9ucyBvciBhcmVhcyBpbiB0aG9zZSBmaWxlcyB0aGF0IHdhcnJhbnQgYSBjbG9zZXIgbG9vaywgZW5zdXJpbmcgd2UgaGF2ZW4ndCBvdmVybG9va2VkIGFueSBpbXBvcnRhbnQgY29uc2lkZXJhdGlvbnMgaW4gb3VyIGNvbmZpZ3VyYXRpb24gc3RyYXRlZ3kuIEl0J3MgYmVzdCB0byBiZSBjb21wcmVoZW5zaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjU2LCJPdXRwdXRUb2tlbnMiOjYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUyOjI5LjQzMTA4NzM2OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMxMjc3MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYm9uZF9oZWFkZXJfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTQ5Mz1zdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3QgYm9uZF9maXhfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTUxMy1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jOjE1MTQ6c3RhdGljIGludCBib25kX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMtMTUxNS1cXHRcXHRcXHQgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlLCBjb25zdCB2b2lkICpkYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM9MTU2OT1zdGF0aWMgY29uc3Qgc3RydWN0IGhlYWRlcl9vcHMgYm9uZF9oZWFkZXJfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmM6MTU3MDpcXHQuY3JlYXRlXFx0PSBib25kX2hlYWRlcl9jcmVhdGUsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYy0xNTcxLVxcdC5wYXJzZVxcdD0gYm9uZF9oZWFkZXJfcGFyc2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUyOjI5LjQ4NDIxOTY1MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwMjI1ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVhbV9oZWFkZXJfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3RlYW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmM9MjI0Nj1zdGF0aWMgc3RydWN0IHRlYW1fcG9ydCAqdGVhbV9oZWFkZXJfcG9ydF9nZXRfcmN1KHN0cnVjdCB0ZWFtICp0ZWFtLFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYy0yMjU4LVxcbmRyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmM6MjI1OTpzdGF0aWMgaW50IHRlYW1faGVhZGVyX2NyZWF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqdGVhbV9kZXYsXFxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYy0yMjYwLVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUsIGNvbnN0IHZvaWQgKmRhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYz0yMzE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGVhZGVyX29wcyB0ZWFtX2hlYWRlcl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuYzoyMzE1OlxcdC5jcmVhdGVcXHRcXHQ9IHRlYW1faGVhZGVyX2NyZWF0ZSxcXG5kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jLTIzMTYtXFx0LnBhcnNlXFx0XFx0PSB0ZWFtX2hlYWRlcl9wYXJzZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTI6MjkuNTI5MjQ5NjA4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzcxNjUwMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkndmUgZ290IGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCwgYW5kIHRoZXkncmUgaG9va2VkIGludG8gYC5jcmVhdGVgIHdpdGhpbiBgaGVhZGVyX29wc2AuIFRoZXkncmUgY2FsbGVkIGZyb20gYGRldl9oYXJkX2hlYWRlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgYXJlIHRoZXJlICphbnkqIG90aGVyIGZ1bmN0aW9ucyBpbXBhY3RlZD8gTm9wZSwganVzdCB0aG9zZSB0d28uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgYHNrYl9oZWFkcm9vbShza2IpIFx1MDAzYyBobGVuYCBjaGVjaywgYSBjcml0aWNhbCBhZGRpdGlvbiB0byBwcmV2ZW50IGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBEZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYnVnIGZpeC4gV29ydGggZnV6emluZywgbm8gcXVlc3Rpb24uXG5cbk5vdywgdG8gb3JnYW5pemUgbXkgZmluZGluZ3MuIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBNeSByZWFzb25pbmc/IFRoZSBwYXRjaCBhZGRzIHRoaXMgaGVhZHJvb20gY2hlY2sgaW4gYm90aCBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgdG8gc3RvcCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkcyBiZWZvcmUgY2FsbGluZyB0aGUgc2xhdmUvcG9ydCdzIGNyZWF0ZSBmdW5jdGlvbi4gVGhlc2UgZnVuY3Rpb25zIHNpdCByaWdodCBpbiB0aGUgY3JpdGljYWwgbmV0d29yayBwYXRocyBmb3IgYm90aCBib25kaW5nIGFuZCB0ZWFtIGRyaXZlcnMg4oCTIGZ1bmRhbWVudGFsIHN0dWZmLiBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGBcImJvbmRfaGVhZGVyX2NyZWF0ZVwiYCBhbmQgYFwidGVhbV9oZWFkZXJfY3JlYXRlXCJgLiBBbmQgSSdsbCBuZWVkIHRvIGVuYWJsZSBjb25maWdzIGZvciBgXCJCT05ESU5HXCJgIGFuZCBgXCJORVRfVEVBTVwiYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGFyZSBgYm9uZF9oZWFkZXJfY3JlYXRlYCBhbmQgYHRlYW1faGVhZGVyX2NyZWF0ZWAgc3RhdGljPyBZZXMsIHRoZXkgYXJlLiBCdXQgaG9sZCBvbiwgdGhlIHByb21wdCBzYXlzIHRvIHByZWZlciBub24tc3RhdGljIGZ1bmN0aW9ucy4gQmVjYXVzZSB0aGV5J3JlIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBzdHJ1Y3QsIHRoZXkncmUgKm5vdCogaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIHRoZXJlZm9yZSBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFBlcmZlY3QhIFRoYXQgbWFrZXMgdGhlbSBpZGVhbCBmb3IgaW5jbHVzaW9uLlxuXG5JJ20gY29tZm9ydGFibGUgd2l0aCB0aGlzIG5vdywgc28gSSdtIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTMwMywiT3V0cHV0VG9rZW5zIjoxMTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUyOjM3LjU2NjQxNzA3MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDgwNTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfVEVBTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfaGVhZGVyX2NyZWF0ZVwiLFxuICAgIFwidGVhbV9oZWFkZXJfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCB0byBlbnN1cmUgc3VmZmljaWVudCBza2IgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQncyBjcmVhdGUgZnVuY3Rpb24sIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCIsXG4gICAgXCJORVRfVEVBTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfaGVhZGVyX2NyZWF0ZVwiLFxuICAgIFwidGVhbV9oZWFkZXJfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCB0byBlbnN1cmUgc3VmZmljaWVudCBza2IgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQncyBjcmVhdGUgZnVuY3Rpb24sIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgcGF0aHMgZm9yIGJvbmRpbmcgYW5kIHRlYW0gZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTI6MzcuNjQ3NTAzODUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDE2ODkwNjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMDI6NTI6MzcuNjQ4MDkzNjIzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkwMTYyOTcxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCBieSBlbnN1cmluZyB0aGF0IHRoZSBzb2NrZXQgYnVmZmVyIChgc2tiYCkgaGFzIHN1ZmZpY2llbnQgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQgZGV2aWNlJ3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI3N2NhY2I0NjcyY2VmYjcyZGUzZDRiNTIyODUyODIxYmY4ZDUwNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAwMjo1MToyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jXG5pbmRleCA1MjJlYWIwNjBmOWVkLi45ZWM2NjM2MTBkZmQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uY1xuQEAgLTE1MjQsMTAgKzE1MjQsMjQgQEAgc3RhdGljIGludCBib25kX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LFxuIFx0c2xhdmUgPSByY3VfZGVyZWZlcmVuY2UoYm9uZC1cdTAwM2VjdXJyX2FjdGl2ZV9zbGF2ZSk7XG4gXHRpZiAoc2xhdmUpIHtcbiBcdFx0c2xhdmVfb3BzID0gUkVBRF9PTkNFKHNsYXZlLVx1MDAzZWRldi1cdTAwM2VoZWFkZXJfb3BzKTtcbi1cdFx0aWYgKHNsYXZlX29wcyBcdTAwMjZcdTAwMjYgc2xhdmVfb3BzLVx1MDAzZWNyZWF0ZSlcbitcdFx0aWYgKHNsYXZlX29wcyBcdTAwMjZcdTAwMjYgc2xhdmVfb3BzLVx1MDAzZWNyZWF0ZSkge1xuK1x0XHRcdHVuc2lnbmVkIGludCBobGVuID0gUkVBRF9PTkNFKHNsYXZlLVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuK1xuK1x0XHRcdC8qIEhlYWRyb29tIHdhcyByZXNlcnZlZCBmcm9tIGEgc25hcHNob3Qgb2ZcbitcdFx0XHQgKiBib25kX2Rldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gdGhhdCBtYXkgcHJlZGF0ZSB0aGlzXG4rXHRcdFx0ICogc2xhdmUgKGNvbmN1cnJlbnQgYm9uZCB0eXBlIGNoYW5nZSk7IHJlamVjdCBpZlxuK1x0XHRcdCAqIGluc3VmZmljaWVudCBmb3IgdGhlIHNsYXZlJ3MgY3JlYXRlKCksIHdoaWNoXG4rXHRcdFx0ICogcHVzaGVzIGl0cyBvd24gaGxlbi5cbitcdFx0XHQgKi9cbitcdFx0XHRpZiAoc2tiX2hlYWRyb29tKHNrYikgXHUwMDNjIGhsZW4pIHtcbitcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdFx0XHRnb3RvIHVubG9jaztcbitcdFx0XHR9XG4gXHRcdFx0cmV0ID0gc2xhdmVfb3BzLVx1MDAzZWNyZWF0ZShza2IsIHNsYXZlLVx1MDAzZWRldixcbiBcdFx0XHRcdFx0XHR0eXBlLCBkYWRkciwgc2FkZHIsIGxlbik7XG4rXHRcdH1cbiBcdH1cbit1bmxvY2s6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbV9jb3JlLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW1fY29yZS5jXG5pbmRleCBmZWFhNzVmYmY4ZmMyLi4yNzQyYTRiZmM5ZDBhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvdGVhbS90ZWFtX2NvcmUuY1xuQEAgLTIyNjksMTAgKzIyNjksMjQgQEAgc3RhdGljIGludCB0ZWFtX2hlYWRlcl9jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnRlYW1fZGV2LFxuIFx0cG9ydCA9IHRlYW1faGVhZGVyX3BvcnRfZ2V0X3JjdSh0ZWFtLCB0cnVlKTtcbiBcdGlmIChwb3J0KSB7XG4gXHRcdHBvcnRfb3BzID0gUkVBRF9PTkNFKHBvcnQtXHUwMDNlZGV2LVx1MDAzZWhlYWRlcl9vcHMpO1xuLVx0XHRpZiAocG9ydF9vcHMgXHUwMDI2XHUwMDI2IHBvcnRfb3BzLVx1MDAzZWNyZWF0ZSlcbitcdFx0aWYgKHBvcnRfb3BzIFx1MDAyNlx1MDAyNiBwb3J0X29wcy1cdTAwM2VjcmVhdGUpIHtcbitcdFx0XHR1bnNpZ25lZCBpbnQgaGxlbiA9IFJFQURfT05DRShwb3J0LVx1MDAzZWRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4pO1xuK1xuK1x0XHRcdC8qIEhlYWRyb29tIHdhcyByZXNlcnZlZCBmcm9tIGEgc25hcHNob3Qgb2ZcbitcdFx0XHQgKiB0ZWFtX2Rldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW4gdGhhdCBtYXkgcHJlZGF0ZSB0aGlzXG4rXHRcdFx0ICogcG9ydCAoY29uY3VycmVudCB0ZWFtIHR5cGUgY2hhbmdlKTsgcmVqZWN0IGlmXG4rXHRcdFx0ICogaW5zdWZmaWNpZW50IGZvciB0aGUgcG9ydCdzIGNyZWF0ZSgpLCB3aGljaFxuK1x0XHRcdCAqIHB1c2hlcyBpdHMgb3duIGhsZW4uXG4rXHRcdFx0ICovXG4rXHRcdFx0aWYgKHNrYl9oZWFkcm9vbShza2IpIFx1MDAzYyBobGVuKSB7XG4rXHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRcdFx0Z290byB1bmxvY2s7XG4rXHRcdFx0fVxuIFx0XHRcdHJldCA9IHBvcnRfb3BzLVx1MDAzZWNyZWF0ZShza2IsIHBvcnQtXHUwMDNlZGV2LFxuIFx0XHRcdFx0XHQgICAgICAgdHlwZSwgZGFkZHIsIHNhZGRyLCBsZW4pO1xuK1x0XHR9XG4gXHR9XG4rdW5sb2NrOlxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDAyOjUyOjM3LjY0ODA5NDYyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDE2Mjc1MjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgcHJldmVudGluZyBzb21lIHBvdGVudGlhbCBoZWFkYWNoZXMgaW4gYGJvbmRfaGVhZGVyX2NyZWF0ZWAgYW5kIGB0ZWFtX2hlYWRlcl9jcmVhdGVgLiBXaGF0IGl0IGRvZXMgaXMgc2ltcGxlOiBpdCBhZGRzIGEgY3J1Y2lhbCBjaGVjay4gQmVmb3JlIHdlIGV2ZW4gdGhpbmsgYWJvdXQgY2FsbGluZyBgc2xhdmVfb3BzLVx1MDAzZWNyZWF0ZSgpYCBvciBgcG9ydF9vcHMtXHUwMDNlY3JlYXRlKClgLCBpdCBtYWtlcyBzdXJlIHRoZSBTb2NrZXQgQnVmZmVyIChgc2tiYCkgaGFzIGVub3VnaCBoZWFkcm9vbSB1c2luZyBgc2tiX2hlYWRyb29tKHNrYikgXHUwMDNjIGhsZW5gLiBUaGF0IGBobGVuYCBpcyB0aGUgaGVhZGVyIGxlbmd0aCB0aGF0IHdlIGFyZSBhYm91dCB0byBwdXNoIHRvIHRoZSBza2IuIElmIHRoZXJlJ3Mgbm90IGVub3VnaCBzcGFjZSwgaXQgYmFpbHMgb3V0IHdpdGggYW4gYC1FSU5WQUxgLiBUaGlzIGlzIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHByb3RlY3Rpb24gbWVhc3VyZSwgYW5kIGl0J3MgZWxlZ2FudCBpbiBpdHMgc2ltcGxpY2l0eS5cblxuTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHZlcnkgc3BlY2lmaWMgdnVsbmVyYWJpbGl0eS4gIFRoZSBjb25jZXJuIGhlcmUgaXMgdGhhdCBhIGNvbmN1cnJlbnQgYm9uZCBvciB0ZWFtIHR5cGUgY2hhbmdlIGNvdWxkIGxlYXZlIHVzIHdpdGggYW4gc2tiIHRoYXQgZG9lc24ndCBoYXZlIGVub3VnaCBoZWFkcm9vbS4gIEF0dGVtcHRpbmcgdG8gcHVzaCBhIGhlYWRlciBvbnRvIHRoYXQgdW5kZXItc2l6ZWQgc2tiIHdvdWxkIHRoZW4gbGVhZCB0byBlaXRoZXIgd3JpdGluZyBwYXN0IHRoZSBza2IgYm91bmRhcnkgKGEgd3JpdGUpLCBvciBwb3RlbnRpYWxseSB0cnlpbmcgdG8gcmVhZCBzb21ldGhpbmcgZnJvbSB0aGUgc2FtZSBvdXQtb2YtYm91bmRzIGxvY2F0aW9uLCBpZiB0aGUgYGNyZWF0ZWAgZnVuY3Rpb24gdHJpZXMgdG8gdXNlIHRob3NlIGJ5dGVzLiBUaGUgcmVzdWx0aW5nIGNyYXNoIG9yIGFjY2VzcyB2aW9sYXRpb24gaXMgdGhlbiB0cmlnZ2VyZWQgd2l0aGluIGBza2JfcHVzaGAgb3IgdGhlIGN1c3RvbSBgY3JlYXRlYCBmdW5jdGlvbiwgYW5kIEtBU0FOIHNob3VsZCBoYXZlIGFic29sdXRlbHkgbm8gcHJvYmxlbSBjYXRjaGluZyB0aGlzLiBLQVNBTiBpcyB0aGUgdG9vbCBmb3IgZGV0ZWN0aW5nIG91dC1vZi1ib3VuZHMgbWVtb3J5IGlzc3Vlcywgd2hpY2ggaXMgZXhhY3RseSB3aGF0IHdlJ3JlIHNvbHZpbmcgZm9yLlxuXG5HaXZlbiB0aGF0IHRoaXMgaXMgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgY29uY2VybiwgdGhlcmUncyBubyByZWFzb24gdG8gd29ycnkgYWJvdXQgS01TQU4uIEtNU0FOIGlzIHRoZSB0b29sIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgd2hpY2ggaXNuJ3QgdGhlIGlzc3VlIGhlcmUuIEkgY2FuIGNvbmZpZGVudGx5IHN0YXRlIHRoYXQgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgdW5uZWNlc3NhcnksIGJlY2F1c2UgdGhlcmUgaXMgbm8gY2hhbmNlIHRoYXQgaXQgd2lsbCBleHBvc2UgYW55IG5ldyBpc3N1ZXMuIFRoaXMgaXMgYSBjbGVhciwgdGFyZ2V0ZWQgZml4IHRoYXQgYWRkcmVzc2VzIGEgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBzYWZldHkgcHJvYmxlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU5MiwiT3V0cHV0VG9rZW5zIjoxNjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQwMjo1Mjo0Ni42NjQzNzI1NjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCBieSBlbnN1cmluZyB0aGF0IHRoZSBzb2NrZXQgYnVmZmVyIChgc2tiYCkgaGFzIHN1ZmZpY2llbnQgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQgZGV2aWNlJ3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIGBib25kX2hlYWRlcl9jcmVhdGVgIGFuZCBgdGVhbV9oZWFkZXJfY3JlYXRlYCBieSBlbnN1cmluZyB0aGF0IHRoZSBzb2NrZXQgYnVmZmVyIChgc2tiYCkgaGFzIHN1ZmZpY2llbnQgaGVhZHJvb20gYmVmb3JlIGNhbGxpbmcgdGhlIHNsYXZlL3BvcnQgZGV2aWNlJ3MgYGNyZWF0ZWAgZnVuY3Rpb24uIFdpdGhvdXQgdGhpcyBjaGVjaywgYSBjb25jdXJyZW50IGJvbmQvdGVhbSB0eXBlIGNoYW5nZSBjb3VsZCByZXN1bHQgaW4gYW4gYHNrYmAgd2l0aCBpbnN1ZmZpY2llbnQgaGVhZHJvb20sIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiB0aGUgaGVhZGVyIGlzIHB1c2hlZC4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgYmVpbmcgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoaXMgcGF0Y2gsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowrqw4b[1] Phase: Succeeded StartedAt: 2026-08-24 02:52:58 +0000 UTC FinishedAt: 2026-08-24 02:52:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-24 02:52:58 +0000 UTC FinishedAt: 2026-08-24 02:52:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2] Phase: Succeeded StartedAt: 2026-08-24 02:52:58 +0000 UTC FinishedAt: 2026-08-24 06:41:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-24 02:52:58 +0000 UTC FinishedAt: 2026-08-24 06:41:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-24 02:52:58 +0000 UTC FinishedAt: 2026-08-24 02:53:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-24 02:52:58 +0000 UTC FinishedAt: 2026-08-24 02:53:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrqw4b/series-workflowrqw4b-convert-artifact-3231190885/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-24 02:53:08 +0000 UTC FinishedAt: 2026-08-24 03:09:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-24 02:53:08 +0000 UTC FinishedAt: 2026-08-24 03:09:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b2cdac83-c0ae-4cb6-b859-c04e8946798b,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-workflowrqw4b/series-workflowrqw4b-convert-artifact-3231190885/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": "154f79e9-042f-4f24-9063-babd4390a006", "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-workflowrqw4b/series-workflowrqw4b-build-action-4011527051/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-24 02:53:08 +0000 UTC FinishedAt: 2026-08-24 03:09:21 +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:*b2cdac83-c0ae-4cb6-b859-c04e8946798b,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-workflowrqw4b/series-workflowrqw4b-convert-artifact-3231190885/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": "154f79e9-042f-4f24-9063-babd4390a006", "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-workflowrqw4b/series-workflowrqw4b-build-action-4011527051/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-24 03:09:31 +0000 UTC FinishedAt: 2026-08-24 03:09:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-24 03:09:31 +0000 UTC FinishedAt: 2026-08-24 03:09:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-24 03:09:31 +0000 UTC FinishedAt: 2026-08-24 03:09:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-24 03:09:31 +0000 UTC FinishedAt: 2026-08-24 03:09:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrqw4b/series-workflowrqw4b-convert-artifact-4241054272/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-24 03:09:42 +0000 UTC FinishedAt: 2026-08-24 03:11:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-24 03:09:42 +0000 UTC FinishedAt: 2026-08-24 03:11:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*154f79e9-042f-4f24-9063-babd4390a006,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-workflowrqw4b/series-workflowrqw4b-build-action-4011527051/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-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-24 03:11:40 +0000 UTC FinishedAt: 2026-08-24 03:11:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-24 03:11:40 +0000 UTC FinishedAt: 2026-08-24 03:11:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-24 03:11:40 +0000 UTC FinishedAt: 2026-08-24 03:35:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-24 03:11:40 +0000 UTC FinishedAt: 2026-08-24 03:35:46 +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:*b2cdac83-c0ae-4cb6-b859-c04e8946798b,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-workflowrqw4b/series-workflowrqw4b-convert-artifact-4241054272/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": "2e9bb549-0cfc-4161-a33c-ce4ea128442e", "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-workflowrqw4b/series-workflowrqw4b-build-action-1264895996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-24 03:11:40 +0000 UTC FinishedAt: 2026-08-24 03:35:35 +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:*b2cdac83-c0ae-4cb6-b859-c04e8946798b,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-workflowrqw4b/series-workflowrqw4b-convert-artifact-4241054272/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": "2e9bb549-0cfc-4161-a33c-ce4ea128442e", "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-workflowrqw4b/series-workflowrqw4b-build-action-1264895996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-24 03:35:46 +0000 UTC FinishedAt: 2026-08-24 03:35:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-24 03:35:46 +0000 UTC FinishedAt: 2026-08-24 03:35:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-24 03:35:46 +0000 UTC FinishedAt: 2026-08-24 03:37:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-24 03:35:46 +0000 UTC FinishedAt: 2026-08-24 03:37:42 +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:*2e9bb549-0cfc-4161-a33c-ce4ea128442e,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-workflowrqw4b/series-workflowrqw4b-build-action-1264895996/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-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-24 03:37:53 +0000 UTC FinishedAt: 2026-08-24 06:41:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-24 03:37:53 +0000 UTC FinishedAt: 2026-08-24 06:41:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"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:*154f79e9-042f-4f24-9063-babd4390a006,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2e9bb549-0cfc-4161-a33c-ce4ea128442e,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-workflowrqw4b/series-workflowrqw4b-build-action-4011527051/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-workflowrqw4b/series-workflowrqw4b-build-action-1264895996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-24 03:37:53 +0000 UTC FinishedAt: 2026-08-24 03:38:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-24 03:37:53 +0000 UTC FinishedAt: 2026-08-24 03:38:00 +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":["bond_header_create","team_header_create"],"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-workflowrqw4b/series-workflowrqw4b-convert-artifact-4143990681/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-24 03:37:53 +0000 UTC FinishedAt: 2026-08-24 03:37:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-24 03:37:53 +0000 UTC FinishedAt: 2026-08-24 03:37:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-24 03:37:53 +0000 UTC FinishedAt: 2026-08-24 03:37:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-24 03:38:04 +0000 UTC FinishedAt: 2026-08-24 06:41:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqw4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_header_create","team_header_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING","NET_TEAM"],"series_id":"0bdc3ffd-1278-42c2-b5ba-48635fc29d03","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-24 03:38:04 +0000 UTC FinishedAt: 2026-08-24 06:41:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*154f79e9-042f-4f24-9063-babd4390a006,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2e9bb549-0cfc-4161-a33c-ce4ea128442e,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-workflowrqw4b/series-workflowrqw4b-build-action-4011527051/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-workflowrqw4b/series-workflowrqw4b-build-action-1264895996/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-workflowrqw4b/series-workflowrqw4b-convert-artifact-4143990681/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,}